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

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


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

Vano_Santuri, ну о "смерти из подствольника" не стОит говорить. :-)

Смерть может наступить от разрыва заряда, выпущенного из подствольника, но это лирика ...

1. Штатных методов определения активен ли подствольник (установлен режим стрельбы из него), нет.

2. Собственно "виновником" смерти скрипты/движек считает не дочерний объект, а родительский. Т.е. не сам подствольник "виновник", и даже не оружие, на котором он установлен, и тем более не заряд/пуля, выпущенные из оружия - а владелец этого оружия. Иначе: если есть parent_id у "смертельного объекта" - то этот парент и считается "виновником" смерти.

При наличии коллбэка все конечно проще: определяем кто стрелял -> определяем тип оружия в его руках -> определяем вид/тип стрельбы (grenade_mode == 1) и тогда можно предполагать, что смерть наступила от выстрела из подствольника.

Для определения grenade_mode придется воспользоваться чтением этого параметра из нет-пакета оружия.

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

И вообще:

Ну нафига такие заморочки для новостей? Как можно утверждать, не будучи судебным экспертом иль паталого-анатомом, что смерть наступила именно от осколка заряда подствольника? Чем осколчное ранение подствольного заряда отличается от того же 'осколка гранаты? Что, нельзя быть посеченным/раненым осколками, а погибнуть от "последней" пули иль зубов монстра или даже от радиации?

Не будучи очевидцем собственно выстрела-взрыва-смерти, глупо утверждать иль говорить о "смерти из подствольника". ИМХО.

 

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Немного дополню свой предыдущий пост:

2 проблемы искоренили(в последствии такой баг стал очень редким, но все же).

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

Второй причиной было то, что зоны убора оружия имели тип 0(restrictor_type = 0), после исправления всех типов зон на 3, частота бага еще больше понизилась, но опять таки полностью избавиться от него не удалось.

ЗЫ Пробовали убирать все скрипты, но это не вариант, да и на чистом ЗП они норм работают, как мне говорят с тимы, такое с зонами убирания оружия и дверьми было еще в самом начале, когда на локации небыло ничего кроме них.

ЗЫЫ Повторю суть проблемы еще раз:) Если поиграть/побегать по локе, то через время, прийдя в зону убора оружия, оно не убирается, в добавок двери не пашут, в смысле нету надписи открыть/закрыть, их можно толкать, а они будут шататься... С чем это может быть связано, прошу знающих людей подсказать/помочь, заранее спасибо.

ЗЫЫЫ Мде, вышло что не дополнил пост, а переписал с дополнением, заранее извиняюсь.

 

Сорри не видел, что Artos ответил, но все же может быть сюда зайдет кто то, кто сталкивался с такой проблемой.

Изменено пользователем ColR_iT
Ссылка на комментарий

Viнt@rь

Тут скорее проблема с движковой функцией. Я вот примеры уже не помню, но тут ошибки вида "local obj = level.object_by_id(пусто)"

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

Давайте НЕ заниматься погадалками. --/Artos

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Viнt@rь, тебе уже дал *Shoker* краткий ответ в #3998, но ты продолжаешь по сути "лить воду", да еще и в два топика.

Вместо того, чтобы переадресовать именно частный для версии игры CoP вопрос по Сидоровичу и своим изменениям, ты "размазываеешь" общий для многих вопрос о битых сэйвах уже по двум топикам, не приводя никакой конкретики/логов.

Не следует искать товарищей по несчастью "кто сталкивался с такой проблемой"! С "этой" проблемой сталкивался и/или сталкивается любой модмейкер. Вот только вварианты решения у каждого разные. Кто-то ищет и исправляет ошибки в кодах, кто-то "вслепую" изменяя коды иль усекая/заменяя куски - обходит возникновение ошибки. Кто-то забивает на ошибку и или отказывается от своих модификаций иль берет чье-то готовое ...

Пойми, суть:

В твоих кодах где-то имеется ошибка. Она может быть самой разной, так что единого конкретного рецепта не существует! Это может быть вызов некорректного метода/функции, это может быть вызов с некорректными аргументами или применение метода к неподходящему объекту и т.д. и т.п. Общее: это то, что в игре НЕ возникает ситуации, которая обрушивает движек игры, а "зависает" только некий поток (thread) Lua. В итоге, игра продолжается вроде как и прерывания с ошибкой в логе не видно, но какой-то участок алгритма прекращает свою работу. У кого-то на худе останавливаются часы, у кого-то перестают работать двери иль летать вертолеты. Проявления могут быть самыми разными и порой малозаметными.

Если в такие моменты, как ты выражаешься после "поиграть/побегать по локе" попытаться сделать сохранение - то велика вероятность того, что в сэйв НЕ попадут все необходимые данные или попавшие будут искажены. Твоя строка лога однозначно говорит о БИТОМ сэйве, т.к. уже первые байты из пакета актора не соответствуют допустимому уровню сложности игры.

Можно много далее приводить примеров иль описаний, но не собираюсь засорять топик.

Как же бороться с этим? Только два варианта: или вернуть коды в ситуацию ДО внесения в них ошибки или искать и исправлять ошибку.

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

Во-первых, необходимо организовать нормальный вывод в лог технологических сообщений.

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

В твоем же случае, можно даже идти с конца, проверяя перед записью в сэйв все необходимые данные и контролируя собственно то, что может приводить к битым сэйвам. Определив что же является некорректным - искать в соотв. скрипте/модуле ...

 

Итого, никто тебе не укажет конкретно на ошибку и не даст нужные строки кода для ее устранения. ТОЛЬКО по твоим кодам можно определить что же за ошибка и что требуется для ее исправления. Ну а без логов - то вообще никто ничего не скажет, кроме общих уже высказанных рекомендаций.

 

Ну и не стОит самому повторять собственно достаточно бессмысленные вещи о переполнении таблицы иль о типе рестрикторов. Объемы таблиц могут в Lau любыми (по сути ограничены ресурсами выделенными для всей игры). От типов рестрикторов не рушатся сэйвы. А то, что внося какие-то изменения несколько меняется характер проявления ошибки - так в игре ой как много всег взаимосвязанного. Заканчивай погадалки и ищи конкретную ошибку или хотя бы указания ни нее в логах иль еще где.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos

Вечно ты всё усложняешь, то что я уложил в пару предложений, ты тут расписал на буклет :D

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

Так что давай НЕ усложнять.

Нарываешься на полный игнор с моей стороны как отвечающего и на предупреждение как от куратора. --/Artos

 

Viнt@rь

Пока не исправишь ошибки с зависном скриптов, что либо дальше делать не советую. В том числе и Сидоровича.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий
Artos, ну так проблема в том что и вылета с логом нет(даже нечего показать), тоесть даже не заметно когда что то повисает в игре, игра продолжает функционировать, скрипты проверял все на чистом ЗП работают безотказно. К тому же, как говорят свои же, такая проблема появилась/была замечена еще как только были расставлены зоны убора оружия на локации(но они не обратили внимания), тогда скриптов в моде почти небыло... Сам я пришел в команду, когда локация была заселена, и при тестировании/прохождении для себя, я не заметил такого бага, столкнулся с ним при повторном тестировании всего и вся, по завершению работ на локации(сюжета), если бы хотя бы не повисал какой то процесс, то мне бы легче было найти причину ошибки... Логику проверили раз 10... ЗЫ если чесно, то я бага не заметил после тех двух изменений, но сегодня тестировал еще один член команды, он раз 10 наткнулся на такой баг, при том в самом начале игры, я же натыкался на него когда как. Я понимаю, что без логов гадать нечего, но и лога то нету, был бы я бы выложил... В последствии не знания что делать, я в надежде получить хотя бы какой то ответ обратился сюда. И еще раз повторюсь, проблемой является поломка зон убора оружия/работы дверей, следуя из этого можно сказать, что повисает биндер актора, так как останавливаются все таймера, не проверяется на то, в зоне ли убора оружия актор, бьются сейвы...
Ссылка на комментарий

Проблема: Если поиграть/побегать по локе, то через время, прийдя в зону убора оружия, оно не убирается, в добавок двери не пашут, в смысле нету надписи открыть/закрыть, их можно толкать, а они будут шататься... С чем это может быть связано, прошу знающих людей подсказать/помочь, заранее спасибо.

ЗЫ:

2 проблемы искоренили(в последствии такой баг стал очень редким, но все же).

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

Второй причиной было то, что зоны убора оружия имели тип 0(restrictor_type = 0), после исправления всех типов зон на 3, частота бага еще больше понизилась, но опять таки полностью избавиться от него не удалось.

ЗЫ Пробовали убирать все скрипты, но это не вариант, да и на чистом ЗП они норм работают, как мне говорят с тимы, такое с зонами убирания оружия и дверьми было еще в самом начале, когда на локации небыло ничего кроме них.

 

Добавлено через 33 мин.:

Artos,(по поводу Сидора) потряс я эту тему поиском, нашел адаптацию на ЗП, НО! это все и я сам могу сделать(вернее сделал), в ней нет адаптации фраз Сидора, а именно при торговле, к примеру про консервные банки...

А теперь перенеси сюда свой вопрос по Сидоровичу (чтобы другим ясно было о чем речь) и приложи то, что по нему сделано и у тебя не работает. --/Artos

 

Upd(перенес)

ЗЫ мб еще кто подскажет: подключил Сидора к моду, все ок, хочу настроить фразы при торговле, но заметил что коллбэки start_trade и end_trade из mob_trade.script не вызываются.. вродь подключил все правильно... Вот почему эти коллбэки не вызываются и как их заставить вызываться, если же никак, то как отследить что окно торговли открыто?

 

сделано все то, что и сдесь http://www.amk-team.ru/forum/index.php?sho...483#entry622209. Вот только в логике сидора расскоментировал несколько строк:

[logic]
active =  mob_trader@new_idle1
on_trade = mob_trade@new
trade = misc\trade\escape\shop_escape_trader.ltx
level_spot = trader

;--------------------------
;---First Meet-------------
;--------------------------
[mob_trader@hello_first]
anim_global = hello
anim_head = normal
sound_phrase = trader_greet_first
on_signal = animation_end | mob_trader@new_idle2 

;------------------------------
;---------Wait player----------
;------------------------------
[mob_trader@angry_1]
anim_global = desk_idle
anim_head = normal
sound_phrase = trader_wait
on_signal = sound_phrase_end | {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1 

[mob_trader@angry_2]
anim_global = diagonal_idle
anim_head = normal
sound_phrase = trader_wait
on_signal = sound_phrase_end | {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2

[mob_trader@angry_3]
anim_global = chair_hack_idle
anim_head = normal
sound_phrase = trader_wait
on_signal = sound_phrase_end | {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3

[mob_trader@angry_4]
anim_global = compute_idle
anim_head = normal
sound_phrase = trader_wait
on_signal = sound_phrase_end | {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4

;----------------------------------
;------------- Idle ---------------
;----------------------------------
;Основной idle (1) - за столом
[mob_trader@new_idle1]
anim_global = desk_idle
on_signal = animation_end | {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1
on_info = {=talking} mob_trader@new_idle1_to_idle3 %+esc_skip_angry%
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_1 %-esc_player_sleeps%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Idle (2) - по диагонали
[mob_trader@new_idle2]
anim_global = diagonal_idle
on_signal = animation_end | {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2
on_info = {=talking} mob_trader@new_idle2_to_idle3 %+esc_skip_angry%
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_2 %-esc_player_sleeps%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Idle (3) - откинувшись на спинку
[mob_trader@new_idle3]
anim_global = chair_hack_idle
on_signal = animation_end | {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3
on_info = {=talking} mob_trader@new_talking %+esc_skip_angry%
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_3 %-esc_player_sleeps%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Idle (4) - за компьютером
[mob_trader@new_idle4]
anim_global = compute_idle
on_signal = animation_end | {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4
on_info = {=talking} mob_trader@new_idle4_to_idle2 %+esc_skip_angry%
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_4 %-esc_player_sleeps%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Idle (5) - читает
[mob_trader@new_idle5]
anim_global = listen_idle
on_signal = animation_end | {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5
on_info = {=talking} mob_trader@new_idle5_to_idle1 %+esc_skip_angry%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait


;----------------------------------
;--------   Автопереходы   --------
;----------------------------------
; Стол - стол (промежуточная)
[mob_trader@new_idle1_to_idle1]
anim_global = desk_idle
on_signal = animation_end| mob_trader@new_idle1
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Диагональ - диагональ (промежуточная)
[mob_trader@new_idle2_to_idle2]
anim_global = diagonal_idle
on_signal = animation_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Спинка - спинка (промежуточная)
[mob_trader@new_idle3_to_idle3]
anim_global = chair_hack_idle
on_signal = animation_end | mob_trader@new_idle3
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Компьютер - компьютер (промежуточная)
[mob_trader@new_idle4_to_idle4]
anim_global = compute_idle
on_signal = animation_end | mob_trader@new_idle4
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Читает - читает (промежуточная)
[mob_trader@new_idle5_to_idle5]
anim_global = listen_idle
on_signal = animation_end | mob_trader@new_idle5
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

;----------------------------------
;----- Переходы  между idle-ми ----
;----------------------------------
; Диагональ - компьютер
[mob_trader@new_idle2_to_idle4]
anim_global = diagonal_to_compute
on_signal = animation_end | mob_trader@new_idle4
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Компьютер - диагональ
[mob_trader@new_idle4_to_idle2]
anim_global = compute_idle_to_diagonal
on_signal = animation_end| mob_trader@new_idle2
;on_info = {+esc_player_sleeps} mob_trader@angry %-esc_player_sleeps%
on_actor_dist_le_nvis = 5 | {+esc_player_sleeps} mob_trader@angry_2 %-esc_player_sleeps%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Диагональ - спинка
[mob_trader@new_idle2_to_idle3]
anim_global = diagonal_to_chair_hack
on_signal = animation_end| {=talking} mob_trader@new_talking %+esc_skip_angry%, mob_trader@new_idle3
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Спинка - диагональ
[mob_trader@new_idle3_to_idle2]
anim_global = chair_hack_to_diagonal
on_signal = animation_end| mob_trader@new_idle2
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait


; Стол - спинка
[mob_trader@new_idle1_to_idle3]
anim_global = desk_to_chair_hack
on_signal = animation_end|{=talking} mob_trader@new_talking %+esc_skip_angry%, mob_trader@new_idle3
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Спинка - стол
[mob_trader@new_idle3_to_idle1]
anim_global = chair_hack_to_desk
on_signal = animation_end| mob_trader@new_idle1
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Стол - диагональ
[mob_trader@new_idle1_to_idle2]
anim_global = desk_to_diagonal
on_signal = animation_end| mob_trader@new_idle2
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Диагональ - стол
[mob_trader@new_idle2_to_idle1]
anim_global = diagonal_to_desk
on_signal = animation_end| mob_trader@new_idle1
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Стол - читает
[mob_trader@new_idle1_to_idle5]
anim_global = desk_to_listen
on_signal = animation_end| mob_trader@new_idle5
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

; Читает - стол
[mob_trader@new_idle5_to_idle1]
anim_global = listen_to_desk
on_signal = animation_end| mob_trader@new_idle1
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played +esc_bring_habar_complete} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {+esc_actor_inside_traders_dung -esc_trader_bye_search_played -esc_trader_bye_first_search_played -esc_take_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played +esc_trader_bye_first_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | mob_trader@new_wait

;--------------------------------------
;------------- Разговор ---------------
;--------------------------------------
[mob_trader@new_talking]
anim_global = chair_hack_talk
anim_head = normal
on_info = {!talking} mob_trader@new_idle3 %+esc_skip_angry%

;--------------------------------------
;------------ Торговля ----------------
;--------------------------------------
[mob_trade@new]
anim_global = chair_hack_idle
on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged
on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good
on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad

[mob_trader@new_trade_bad]
anim_global = diagonal_talk
anim_global = chair_hack_idle
anim_head = angry
sound_phrase = trader_bad_trade
on_signal = sound_phrase_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait

[mob_trader@new_trade_exchanged]
anim_global = diagonal_talk
anim_global = chair_hack_idle
anim_head = normal
sound_phrase = trader_exchanged
on_signal = sound_phrase_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait

[mob_trader@new_trade_good]
anim_global = diagonal_talk
anim_global = chair_hack_idle
anim_head = good
sound_phrase = trader_good_trade
on_signal = sound_phrase_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait

;-------------------------------------
;---------- Приветствия --------------
;-------------------------------------
[mob_trader@new_hello]
anim_global = hello
anim_head = normal
sound_phrase = trader_hello_what_have_you_got
on_signal = animation_end | mob_trader@new_idle2

[mob_trader@hello_search]
anim_global = hello
anim_head = normal
sound_phrase = trader_wait_habar_greet
on_signal = animation_end | mob_trader@new_idle2

[mob_trader@hello_return]
anim_global = hello
anim_head = normal
sound_phrase = trader_greet_habar
on_signal = animation_end | mob_trader@new_idle2

[mob_trader@new_bye]
on_actor_dist_ge_nvis = 11| mob_trader@new_wait
anim_global = hello
anim_head = normal
sound_phrase = trader_bye
on_signal = animation_end | mob_trader@new_idle2

[mob_trader@bye_search]
on_actor_dist_ge_nvis = 11 | mob_trader@new_idle2
anim_global = hello
anim_head = normal
sound_phrase = trader_wait_habar_bye
on_signal = animation_end | mob_trader@new_idle1

[mob_trader@bye_garbage]
on_actor_dist_ge_nvis = 11 | mob_trader@new_wait
anim_global = hello
anim_head = normal
sound_phrase = trader_bye_garbage
on_signal = animation_end | mob_trader@new_idle2


[mob_trader@new_wait]
anim_global = diagonal_idle_short
on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played +esc_actor_inside_traders_dung +esc_bring_habar_complete +esc_trader_hello_first_played} mob_trader@new_hello %+esc_trader_hello_played%, {-esc_trader_hello_played -esc_actor_inside_traders_dung -esc_take_habar_complete +esc_trader_hello_first_played} mob_trader@new_hello %+esc_trader_hello_played%, {-esc_trader_hello_first_played +esc_actor_come_first} mob_trader@hello_first %+esc_trader_hello_first_played +esc_trader_hello_played%, {-esc_trader_hello_search_played +esc_actor_inside_traders_dung +esc_trader_hello_first_played -esc_take_habar_complete} mob_trader@hello_search %+esc_trader_hello_search_played%, {-esc_trader_hello_return_played +esc_take_habar_complete} mob_trader@hello_return %+esc_trader_hello_return_played%
on_actor_dist_ge_nvis = 7 | {-esc_trader_bye_played +esc_trader_hello_played +esc_actor_inside_traders_dung +esc_bring_habar_complete +esc_trader_hello_first_played} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_played +esc_trader_hello_played -esc_actor_inside_traders_dung -esc_take_habar_complete +esc_trader_hello_first_played} mob_trader@new_bye %+esc_trader_bye_played%, {-esc_trader_bye_search_played +esc_trader_hello_search_played +esc_trader_hello_first_played +esc_actor_inside_traders_dung -esc_bring_habar_complete} mob_trader@bye_search %+esc_trader_bye_search_played%, {-esc_trader_bye_garbage_played +esc_trader_hello_return_played +esc_bring_habar_complete} mob_trader@bye_garbage %+esc_trader_bye_garbage_played%
on_actor_dist_ge_nvis2 = 11 | %-esc_trader_hello_played -esc_trader_bye_played -esc_trader_hello_search_played -esc_trader_bye_search_played%

 

в db.script добавил переменную trader = nil

в mob_sound.script в таблицу snd добавил пути к звукам

 

 

Изменено пользователем ColR_iT
Ссылка на комментарий

Viнt@rь, видно ты не любитель читать ранее написанное в топиках.

1. Уже не раз давались коды, которые позволяют выводить в лог все что хочет модмейкер.

2. Уже давался вариант, когда даже при "безлоговом" вылете игры, у модмейкера остается дублирующий лог-файл.

 

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

То, что у вас в кодах подвисает биндер актора - наиболее вероятно, хотя и не факт. Если так, то и искать вту сторону нужно. Вариантов немало, но требует навыков в скриптах и соответственнно потрудиться.

1. Воспользоваться вариантом АМК (SoC), которые организовали именно для биндера актора систему watchdog'а, которая позвояет отловить место/модуль возникновения ошибки.

2. Воспользоваться тем, что обсуждалось в топике "Язык Lua. Общие вопросы программирования." по поводу вариантов создания песочницы или "signals and slots system". В этом случае можно поймать момент возникновения ошибки.

... ну и др.

Если подобное не по силам, то варианта два: или идти Shoker'овским путем погадалог по "конкретным" предполагалкам или дать все неоходимое для воспроизведения ошибки (коды мода) кому-то, кому по силам выяснить ошибку и кто располагает временем и желанием помочь.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
Artos, про песочницу и тп я знаю, но а вдруг ошибка не в скриптах(даже не вдруг, а скорей всего)? И тогда получится, что то место, на котором прервался лог, будет ложным, так как глюкнула логики или что-то еще, ну а пока я занимаюсь тестированием, у меня лично (с момента правок) такого бага небыло... и за всю игру всего 1 вылет, с которым пытаюсь разобраться... Изменено пользователем Viнt@rь
Ссылка на комментарий

Viнt@rь, ты продолжаешь гадать, там где или нужны факты/информация и их анализ или просто вслепую тыкаться носом ... авось ткнешься в нужное место когда-нить ...

Само собою, тебе никакая песочница не даст конкретное указание на ошибку (такое почти невероятно). Но как раз предназначение ее в том, чтобы постепенно выделить место/модуль и в нем функцию, в которой возникает ошибка. Вполне может быть ошибка тянется еще ранее откуда-то, но только начав приближаться к нужной строке кода можно найти ошибку и решение для ее исправления.

Ну а раз, по твоим словам, эта ошибка и не у тебя и всего 1 раз за игру - то ... вообще есть ли смысл искать черную кошку в темной комнате при том, что ее там может и не быть. И, вполне может быть уже у вас кто-то исправил (может и не догадываясь) причину ошибки или даже ошибка возникла из-за внешних условий (комп-железо-ОС-память-...). Погадалки прекращаем.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Всем здравия желаю! Прошу прощения за глупый вопрос, но как нужно вызывать функцию levwl.set_weather? Пытаюсь вызвать из логики рестриктора:

[logic]
active = sr_idle@in

[sr_idle@in]
on_actor_in_zone = agr_weather_indoor | sr_idle@out %=change_weather_indoor%

[sr_idle@out]
on_actor_not_in_zone = agr_weather_indoor | sr_idle@in

 

А вот функция:

function change_weather_indoor()
        level.set_weather(indoor)
end

Заранее благодарю за ответ.

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

Legend of Stalker

Ссылка на комментарий

ziStam, функция set_weather должна вызываться со строчным аргументом, т.е. в твем случае или внутри твоей change_weather_indoor должен быть вызов:

level.set_weather("indoor")

- где "indoor" соотв. секция погоды

или же из логики ты должен эту секцию передавать типа:

%=change_weather_indoor("indoor")%

и тогда:

function change_weather_indoor(obj1, obj2, p)
        level.set_weather(p[1]) --/ тут: p[1] == "indoor"
end

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
Artos, увы, но не работает. :( Попробовал оба варианта. Если важно, то размер рестриктора 3х3х4(x.y.z соттветственно). И еще. Функцию эту вызываю из xr_effects.script

Legend of Stalker

Ссылка на комментарий

ziStam, ты задал вопрос по функции set_weather, приведя по сути неверный код (аргумент был неопределен).

Тебе был дан вариант, как этой функцией воспользоваться в твоем случае, чтобы она заработала. И естественно эта функция должна быть в xr_effects.script, иначе бы получал вылет на ругань об ее отсутсвии.

 

Ну а то, что у тебя могут быть иные причины того, что логика не срабатывает - ищи и исправляй.

Проверяй правильность имени твоего agr_weather_indoor, проверяй срабатывает ли он (точнее условие) на появление в нем актора и т.п.

Извини, но я не телепат, чтобы все это видеть.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

А в ЗП xr_detector.script работает?

Просто сделал такой код -

local rh
local st_rh
local sm_rh
local time = level.get_time_hours()
rh.power         = 0.0011
rh.direction     = vector():set(0, 0, 1)
rh.impulse     = 0
rh.draftsman     = db.actor
rh.type     = hit.radiation

st_rh.power         = 0.0111
st_rh.direction     = vector():set(0, 0, 1)
st_rh.impulse     = 0
st_rh.draftsman     = db.actor
st_rh.type     = hit.radiation

sm_rh.power         = 0.0111
sm_rh.direction     = vector():set(0, 0, 1)
sm_rh.impulse     = 0
sm_rh.draftsman     = db.actor
sm_rh.type     = hit.radiation

function upd()
this.groza_weather()
this.rain_weather()
this.def_weather()
end

function rain_weather()
if level.get_weather("default_weather_rain") and not surge_manager.actor_in_cover() then
db.actor:hit(rh)
end
end

function groza_weather()
if level.get_weather("default_weather_rain") and not surge_manager.actor_in_cover() then
db.actor:hit(st_rh)
end
end

function def_weather()
if level.get_weather("default_weather") and not surge_manager.actor_in_cover() then
if time == 1 then db.actor:hit(sm_rh) end
if time == 12 then db.actor:hit(sm_rh) end
if time == 16 then db.actor:hit(sm_rh) end
if time == 17 then db.actor:hit(sm_rh) end
end
end

 

 

Поставил код на апдейт там - не работает, в бинд_сталкере - attemp to call field

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

Ссылка на комментарий

Уважаемые, такая вот проблема, при исправлении нечёткости текстур зова, при помощи утилиты Stalker Loader столкнулся с такой ошибкой...

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

 

Ошибка:

Точка входа в процедуру ?pLog@@3P6AXPAD@ZA не найдена в библиотеке DLL OpenAL32.dll

Усердно пилю Кордон...

Ссылка на комментарий

Wookie, а что ты вообще делаешь и каким образом написанное тобою относится к xr_detector.script?

Ты для переменных со значениями nil, поскольку они не определены явно, изменяешь их свойства... Свойства можно изменить у объектов класса, если таковые имеются. Вот на примере для объекта класса hit:

hit = hit() -- создание объекта класса hit
-- далее изменяем свойства класса для этого объекта
hit.direction = vector():set(1,0,0) -- направление
hit.draftsman = db.actor -- кто нанёс урон
hit.impulse = 600 -- импульс
hit.power = 1.45 -- хит
hit.type = 2 -- тип урона - выстрел
hit:bone("bip01_head") -- удар приходится на голову
obj:hit(hit) -- наносим объекту obj хит с заданными параметрами

Ты же делаешь что-то несуразное, уж просите.

 

P.S. Да, и вопрос больше в тему скриптования, нежели сюда...

Изменено пользователем ColR_iT
Ссылка на комментарий
ColR_iT, я делаю радиоактивный дождь на ЗП, наверное просто делал хит на ТЧ. А можно изменить хит на радиоационный, и переделать заменить хит на который ннаноситься урон ГГ?

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

Ссылка на комментарий
Wookie, выше уже готовый пример нанесения хита. Подставляй нужные значения и вызывай в нужный момент. Тип хита можешь взглянуть в lua_help.script, а именно в классе hit, в качестве obj передавай актора и хит будет наносится ГГ.
Ссылка на комментарий

Вопрос глуповатый, но все же, подскажите пожалуйста, зачем регать инфопоршни в спец. файлах? И обязательно ли это, проверял на ЗП, разницу между зареганым и не зареганым инфопоршнями не заметил, так в чем же подвох, обьясните плз)))

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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