Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

 

 

Я работаю без SDK по этому не могу поставить смарты для новых мутантов

Зачем тебе новые смарты ? Разбери\собери all.spawn, увеличь емкость уже существующих...

Насчет ночной активности монстрятины: спавнить а потом удалять - не самый разумный вариант. Если тебе надо, чтоб монстры ночью гуляли а на день пропадали (типа спят по логовам своим) - создай в ихних гулагах работы на день и на ночь, для дневных выставь online = false и при переходе на дневные работы они будут уходить в офф-лайн.


Вопрос по модулю нет-пакетов от Artos.

Как правильно прописать кастом-дату с его использованием ?

Пробовал так:

local set_smart = "custom_data = <<END\\n[smart_terrains]\\ngar_angar = true\\nEND"
   local pk = m_netpk.get(ser_obj) -- запрос нет-пакета
   if pk and pk:isOk() then
    local data = pk:get() -- читаем данные из нет-пакета
    if data then
     data.story_id = 125
     data.custom_data:setString(set_smart)
     pk:set(data)
    end
   end

Story_ID устанавливается а вот кастом_дата нет. Где косяк, подскажите ?

Поделиться этим сообщением


Ссылка на сообщение

@mifares

Ответ выше, те строки, что синим цветом....

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

 

 

Как вообще поворачивать объект партикла?

Попробовать посмотреть в сторону классов

particle_params и его методов:

    particle_params (const vector&);
    particle_params (const vector&, const vector&);
    particle_params (const vector&, const vector&, const vector&);

particle и его методов:

    particle (string, string, const particle_params&);
    particle (string, string, const particle_params&, boolean);
    particle (string, const particle_params&);
    particle (string, const particle_params&, boolean);

Поделиться этим сообщением


Ссылка на сообщение

Такой вот вопросик: можно-ли для конкретного НПСа получить смарт(гулаг) под которым он работает ?

Поделиться этим сообщением


Ссылка на сообщение

[smart_terrains]
gar_angar = {+agroprom_military_case_done} never, {+gar_seryi_change_st} never, true

 

Поясните, плиз, назначение never в данном примере.

  • Не нравится 1
  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение

 

 

Уже сотни раз обсуждалось, поиск то не пользуем, да?

поиск по "never" - результат "Поиск не дал результатов"....

 

 

 

что-бы игнорировать условия, но не игнорировать действия
как-то подробнее бы, не очень понял что значит игнорировать действия ?

Поделиться этим сообщением


Ссылка на сообщение

 

 

В чем может быть проблема???

В путях, прописанных глюкавому братку. Если движок не сможет их правильно прочитать\построить, то НПС будет просто отпущен под движковое управление, со всеми вытекающими...

Поделиться этим сообщением


Ссылка на сообщение

Вопрос по логике НПСов: к примеру имеем непися, который работает в каком-то гулаге. Если уйти от этого непися подальше, чтоб он ушел в офф-лайн а затем вернуться - с какого места, по возврату в он-лайн, будет работать логика непися ? С самого начала(т.е. от секции [logic@......]) или же с той секции, в которой непись был на момент ухода в офф-лайн ?


В общем случае - с начала. Можно посмотреть на Шустрого, для примера. dc

Изменено пользователем Dennis_Chikin

Поделиться этим сообщением


Ссылка на сообщение

В SDK посмотрел: сетка в вагончике есть, только проход через дверь - всего одна AI-клетка и визуально есть разрыв между этой клеткой и клетками снаружи вагончика. Может в этом причина ? Проверь: сделай какому-нить долговцу стандартно путь в вагончик и глянь - зайдет нормально или нет.

Поделиться этим сообщением


Ссылка на сообщение

Ну так все понятно теперь - есть какой-то баг в AI-сетке. Тут SDK в помощь, загружаем уровень, смотрим что не так, правим.

Поделиться этим сообщением


Ссылка на сообщение
Флаг no_move_in_offline выключи, и будет тебе счастье

Данный флаг - это из SDK?

А если непись спавнится скриптом, то надо править object_flags с помощью нет-пакета ?

Попробовал так:

local ser_obj = alife():create("gar_stalker_breakthrough", vector():set(-41.7293,2.1,8.4143), 146514, 295)
  if ser_obj then
   local pk = m_netpk.get(ser_obj)
   if pk and pk:isOk() then
    local data = pk:get()
    if data then
     data.object_flags = bit_not(64)
     pk:set(data)
    end
   end
end

64 - это

flOfflineNoMove  0000001000000  64 - по идее должен отвечать за отсутствие движения в оффлайне, но не используется

 

Вот только не помогло - неписи все одно, пока в офф-лайне, не идут куда им прописано.

 

 

 

то артефакт попросту не ставится в слот

Тут, наверное, поможет только использование фейковых артефактов. Т.е. объект не на классе арта, но с его визуалом и описанием - соответственно в слот ставиться не будет. По выдаче инфо-порции подменять его на нормальный арт...

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

 

 

"Куда им прописано" указано в логике, а логика действует только в онлайне

это не верное утверждение...

 

Проблема в том, чтоб разрешить неписям движение в офф-лайне.


 

 

Можно попробовать использовать метод объекта set_nonscript_usable(bool),

Заинтересовало, решил проверить. В actor_binder:on_item_take добавил:

if obj:section() == "af_vyvert" then
   obj:set_nonscript_usable(false) -- пробовал и false и true
end

результат отрицательный - после взятия в инвентарь, арт спокойно вешается на пояс и дает прописанные ему эффекты.

Поделиться этим сообщением


Ссылка на сообщение

 

 

но вот непись не хочет стреляться, так и сидит, подскажите пож. как его заставить застрелиться?

Анимация умертвить непися не может. Это просто визуальное действие, требуемой последовательности, которое отыгрывает непись.

Убивать непися придется тебе, как автору этой сцены. Как ? Ну к примеру, по завершении собственно анимации прикладывания ствола к башке - наносить неписю хит. Этот вариант уже обсуждался, ищи поиском...

Поделиться этим сообщением


Ссылка на сообщение

 

 

как в эту функцию передать айди непися

Как, будет зависеть от того, откуда вызывается ф-ция умервщления непися: если из логики, то сама ф-ция может быть(должна быть) прописана в xr_effects.script. Все ф-ции в этом скрипте имеют прототип:

function ........(actor, npc, p)
.............
end

Что есть actor и npc думаю расписывать не надо ? Соответственно - npc:id()...

Поделиться этим сообщением


Ссылка на сообщение
Открытое окно диалога, я не запускаю никакой диалог, мне просто нужно получить факт отрытого диалога, и по нему непися с которым это окно открыто

Интересно, как это может быть открыто окно диалога, но не запущен никакой диалог ?

В зависимости от текущего состояния логики НПСа, для него будет запущен соответствующий или start_dialog или actor_dialog.

Вы когда начинаете диалог с НПСом, что видите в появившемся окне ? Фразы произнесенные неписем и фразы доступные для ответа актеру. Так они по Вашему откуда берутся ?

Если Вам нужен объект непися для конкретного диалога\конкретного непися, то подойдет вариант с action, а вот если нужен общий вариант для любого непися - тогда указанный выще способ через xr_motivator.

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение

 

 

зачем мучать апдейт, когда на инфопоршнях все нормально делается

Поделитесь реализацией, я думаю всем будет интересно.

  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение
Как из диалога понизить или повысить репутацию после диалога?

В нужной фразе диалога вызвать <action>, в котором прописать изменение репутации стандартными ф-циями. Т.е. change_character_reputation вызвать из ф-ции прописанной в <action>.

Изменено пользователем AndreySol

Поделиться этим сообщением


Ссылка на сообщение
Но сделать можно? Или оно того не стоит?

Можно. Это тебе решать - если респавн в OGSE нравиться тебе больше чем в Солянке, то о чем разговор ?

Насчет

local t_common = system_ini():r_s32("options","t_common")- в конфиге должны быть эти самые options.

smart_terrain.prot_smt_td - ссылается на соответствующий файл из ogse.

то вместо чтения базового времени респавна из конфига(system_ini():r_s32("options","t_common")), можно просто сразу указать значение: local t_common = 24.

smart_terrain.script есть и в чистой ТЧ, но prot_smt_td - это действительно из  OGSE. Если хочешь - выложи smart_terrain.script из OGSE, глянуть что там они добавили.

 

Изменено пользователем AndreySol
  • Не согласен 1

Поделиться этим сообщением


Ссылка на сообщение
use = true

use_wpn = true

попробуй вместо true поставить self

При установке значения self NPC сам юзнет игрока, как только сможет дотянуться

это с stalkerin.gameru.net из статьи "Настройка логики".

 

Вопрос по логике.

К примеру есть такая работа в гулаге:

[logic@gar_angar_drug3]
active = walker@gar_angar_drug3

[walker@gar_angar_drug3]
path_walk = drug3_walk
path_look = drug3_look
on_info = {+gar_breakthrough_rush} walker@gar_angar_rush_drug3
on_info2 = {+gar_breakthrough_complete} kamp@gar_angar_drug3
on_info3 = {+gar_breakthrough_on_point} walker@gar_angar_point_drug3

[и т.д...]

Вопрос такой - с какого момента непись считается заступившим на эту работу ? В моих тестах, в ситуации, когда место в котором непись попадает под эту работу находится довольно далеко от первой точки пути заданного в path_walk, он начинает топать к первой точке path_walk, и только добравшись до нее, начинает отрабатывать все прописанное в первой секции логики, т.е переключается на следующую, разрешенную инфо-порциями. Можно ли как-то указать, чтоб он сразу переключался в следующую секцию, не перемещаясь в начало path_walk ?

 

 

"local job_position_threshold = 120 --'50  -- расстояние до места работы при котором персонаж в онлайне считается достигшим места работы" - xr_gulag.script, внезапно. В офлайне - по вертексам. dc

Изменено пользователем Dennis_Chikin

Поделиться этим сообщением


Ссылка на сообщение

 

 

Если движок ругается, значит у вас нет секции на которую вы хотите переключить логику нпс. Или же не читается ваш файл с логикой.
[logic@gar_angar_drug2]
active = walker@gar_angar_drug2
 
[walker@gar_angar_drug2]
..........
 
[kamp@gar_angar_drug2]
..........

в таком виде все прекрасно. Делаю так:

[logic@gar_angar_drug2]
active = {+gar_breakthrough_complete} kamp@gar_angar_drug2, walker@gar_angar_drug2

[walker@gar_angar_drug2]
..........

[kamp@gar_angar_drug2]
..........

при загрузке сохранения и при начале НИ вылет, с вышеописанной руганью. Тестю это на 1.0005, похоже что для тега active такой способ не поддерживается. Может в 1.0006 добавлено ? Вы на какой версии это проверяли ?

  • Не нравится 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...