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

Скриптование


Svoboда

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

По проблеме из поста #8024.

На бессмертных НПЦ не срабатывала схема xr_hit.

Вот полный скрипт нового xr_hit. Вдруг кто еще с такой проблемой столкнется...

 

 

class "action_process_hit"

function action_process_hit:__init(obj, storage)
self.object = obj
self.st = storage
end

function action_process_hit:hit_callback(obj, amount, local_direction, who, bone_index)
--if amount == 0 then
-- FIXME if_then_else
-- --printf("[%s] hit by [%s]: 0 damage, ignoring", obj:name(), if_then_else(who, who:name(), ""))
---db.storage[obj:id()].hit.who = who:id()
--return
--end
if who or amount == 0 then
printf("[%s] hit by [%s]", obj:name(), who:name())
news_manager.send_tip(db.actor, "!!"..obj:name().." hit by "..who:name().."!!", 0, "default", 10000)
db.storage[obj:id()].hit.who = who:id()
else
printf("[%s] hit by [unknown]", victim:name())
db.storage[obj:id()].hit.who = -1
end
if db.storage[self.object:id()].active_scheme then
if xr_logic.try_switch_to_another_section(obj, self.st, db.actor) then
return
end
end
end

----------------------------------------------------------------------------------------------------------------------
-- binder
----------------------------------------------------------------------------------------------------------------------
function add_to_binder(npc, ini, scheme, section, storage)
local new_action = this.action_process_hit(npc, storage)
storage.action = new_action
end

function set_hit_checker(npc, ini, scheme, section)
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)

-- НЕ СТАВИТЬ hit callback напрямую - получаем его из motivator-а через
-- event в подписанном на него action-е:
--npc:set_callback(callback.hit, st.action.hit_callback, st.action)
xr_logic.subscribe_action_for_events(npc, st, st.action)
end

function disable_scheme(npc, scheme)
-- При отключении схемы, нужно снять подписку, чтобы hit callback перестал
-- передаваться:
--npc:set_callback(callback.hit, nil)
local st = db.storage[npc:id()][scheme]
if st then
xr_logic.unsubscribe_action_from_events(npc, st, st.action)
end
end

 

Не соответствует правилам.

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


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

Такие вопросы:

1. Каков номер слота под артефакты в ТЧ. Пробовал 0, -1. В system.ltx вообще упоминания не нашел, да и там пояснения к слотам какие-то неверные...

2. Как соранить набор вещей ГГ, а потом выдать их ему в ящике? Знаю, что так работает Арена, но я немного не разобрался...

Не соответствует правилам.

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


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

Тогда перефразирую вопрос - как отследить появление определенного артефакта на поясе у ГГ?

Не соответствует правилам.

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


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

Большое спасибо! Но увы, такие дикие костыли использовать не могу в моде, народ обидеться)

Не соответствует правилам.

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


Ссылка на сообщение
Разумеется в приведёном примере надо выкинуть98% кода, но такой подход активно используется в модах. Вы же не думаете, что являетесь единственным, кто сталкивался с такой задачей?

 

Ладно, объясню.

Любому методу можно найти замену.

И я нашел, в моем случае артефакт просто работает из рюкзака(что вполне реалистично), а скрипты лишний раз не грузят апдейт актора.

И да, знаю что не я 1 с этим сталкивался. Но раз суть проблемы такова - подойдем к ней с другой стороны.

Не в обиду автора сего кода, но костыли использовать не очень хочется. Ну понятно дело без них никак, но чем меньше тем лучше.

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

Не соответствует правилам.

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


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

 

 

Я только не понял, - ты хочешь узнать почему так? Или уже знаешь? Ну или, как вариант, не хочешь знать?

Эмм... Отвечу:

Почему так получилось - не знаю. Узнать хочу. 


 

 

Вы мне не объясните, что такое "костыли"?

Костыль - метод-затычка, который помогает дойти до цели не самым умным\оптимальным\разумным\глюченым путём.

В данном случае, лично мне, не очень понравилось то что игре придется каждую итерацию цикла инвертарь ГГ перебирать. А вдруг там гора всего лежит?

Была бы возможность использовать X-Ray Extentions - было бы замечательно, но увы, такой возможности нет...

Не соответствует правилам.

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


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

Народ, помогите обьяснить магию Lua-кода. Имеем такую штучку:

 

function bar_bandit_death_cut()

if db.actor:has_info("bar_cutbandit_death_l") and
db.actor:has_info("bar_cutbandit_death_1") and
db.actor:has_info("bar_cutbandit_death_2") then
return true and
db.actor:give_info_portion("bar_bandit_death_all")
end 
end

Она рабочая, задачу свою выполняет. НО На сколько я вижу, тут у нас лишний END. Мы закрываем функцию и условие if, но почему должно быть их 2, а их 3? Далее, если засунуть после строки "return true and" допустим:

 

news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) 

То получим код, который уже не работает! По крайней мере чекер синтаксиса ругаеться непонятно на что...

Может я просто слепой, и не вижу очевидной вещи? Подскажите, пожалуйста.

Не соответствует правилам.

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


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

 

 

без каких-либо загвоздок адаптировать к Зову Чернобыля?

Без загвоздок не прокатит.

watcher_act.script

Не соответствует правилам.

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


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

@evg, что-то я не понял. Предпологается использовать разные снаряды для одной пушки? Тогда без ковыряний движка не обойтись, а это геморрой...

Не соответствует правилам.

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


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

Забежал на форум спустя пол года - вдруг интересно стало.
Один и тот же НПЦ, при неизменяемых параметрах спавна (т.е прописал спавн непися и больше файлы игры не трогал) появляется то в одном месте, то в другом. Причем такая "аномальщина" замечена только для тех, у кого точки walk\look находятся на территории бара(именно подвал).

Быть может, у кого догадки есть? Просто спустя пол года от релиза Эпилога мне вдруг интересно стало, где я накосячил(

Не соответствует правилам.

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


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

 

 

Попробуй поменять координаты walk и look,

Менял, переносил. Толку нет)

Не соответствует правилам.

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


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

Такой вопрос. Работаю с ТЧ 1.0007 rc1. В логе наблюдаю такое.

Цитата

[06/27/17 15:36:16]    FATAL ERROR
[06/27/17 15:36:16]     
[06/27/17 15:36:16]    [error]Expression    : xml_doc.NavigateToNode(path,index)
[06/27/17 15:36:16]    [error]Function      : CUIXmlInit::InitWindow
[06/27/17 15:36:16]    [error]File          : ui\UIXmlInit.cpp
[06/27/17 15:36:16]    [error]Line          : 87
[06/27/17 15:36:16]    [error]Description   : XML node not found
[06/27/17 15:36:16]    [error]Arguments     : newspaper_video

Как бы тут всё ясно, по строке я проблему проверил.

Но вопрос в другом. Игра не вылетает. А в логи еррор. Есть ли смысл фиксить, заплаточки пилить?

Не соответствует правилам.

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


Ссылка на сообщение
3 часа назад, UnLoaded сказал:

У меня к примеру эта секция присутствует в двух конфигах. И что фиксить ?

Да, отсутствует. Но игра не вылетает.

На кто знает этот втулкер, у меня на тестах "эпилога" на калькуляторе всё хорошо было, а после релиза началось...

 

Ну, если не сложно - скинь, пожалуйста, саму секцию.

Не соответствует правилам.

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


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

[logic]
active = remark@1

[remark@1]
no_move = true
target = actor
on_info = {+start_pas} remark@p

 

[remark@p]
anim = guard_rac
snd = esc_pash
;target = nil
on_signal = sound_end| remark@vodka

 

[remark@vodka]
anim = eat_vodka
no_move = true
target = nil

Вылетает при переходе на remark@p с логом:

Цитата

! Unknown command:  dbg:!-!-!-_Принудительный_Вылет_-!-!-!
[07/16/17 13:09:31]    ! Unknown command:  ERROR:_ERROR:_ILLEGAL_PLAY_SOUND!!!_esc_pash_for_esc_pashal_stalker
[07/16/17 13:09:31]    * Log file has been saved successfully!
[07/16/17 13:09:31]     
[07/16/17 13:09:31]    FATAL ERROR
[07/16/17 13:09:31]     
[07/16/17 13:09:31]    [error]Expression    : fatal error
[07/16/17 13:09:31]    [error]Function      : CScriptEngine::lua_error
[07/16/17 13:09:31]    [error]File          : script_engine.cpp
[07/16/17 13:09:31]    [error]Line          : 73
[07/16/17 13:09:31]    [error]Description   : <no expression>
[07/16/17 13:09:31]    [error]Arguments     : LUA error: e:\monolith_core\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (no value)

Вижу, что ругается на трек проигруемый. Но я без понятий, что с ним не так. Звуковую тему  esc_pash прописал в sound_theme как положено. Так в чем трабл?

Не соответствует правилам.

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


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

@Fagot. знаю, что не предназначен. Но это абсолютно не критично в моём случае.

Проблему пофиксил - не так работал с sound_theme(забыл что, да как).

Не соответствует правилам.

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


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

Как в ТЧ форсировать начало диалога от лица НПЦ? Тоесть НПЦ подходит, и диалоговое окно открывается по его воле. 

В ЗП такую фишку помню, а вот для SoC не припоминаю. Но вдруг есть "костыли"? 

Не соответствует правилам.

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


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

Привет, народ. Напомните, пожалуйста, как удалить все вещи из инвертаря ГГ, не трогая ПДА, Нож, Бинокль(в общем не трогая определенные item-ы).

Не соответствует правилам.

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


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

@KURT2013 В диалог, например. А вообще - куда хочешь... Не забудь границы функции определить.

  • Нравится 1

Не соответствует правилам.

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


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

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