Artos 99 Опубликовано 10 Марта 2012 Поделиться Опубликовано 10 Марта 2012 (изменено) Vano_Santuri, ну о "смерти из подствольника" не стОит говорить. :-) Смерть может наступить от разрыва заряда, выпущенного из подствольника, но это лирика ... 1. Штатных методов определения активен ли подствольник (установлен режим стрельбы из него), нет. 2. Собственно "виновником" смерти скрипты/движек считает не дочерний объект, а родительский. Т.е. не сам подствольник "виновник", и даже не оружие, на котором он установлен, и тем более не заряд/пуля, выпущенные из оружия - а владелец этого оружия. Иначе: если есть parent_id у "смертельного объекта" - то этот парент и считается "виновником" смерти. При наличии коллбэка все конечно проще: определяем кто стрелял -> определяем тип оружия в его руках -> определяем вид/тип стрельбы (grenade_mode == 1) и тогда можно предполагать, что смерть наступила от выстрела из подствольника. Для определения grenade_mode придется воспользоваться чтением этого параметра из нет-пакета оружия. Ну а если коллбэка нет, то ... все похуже, хотя алгоритм по сути тот же, но из-за задержки по времени - вполне может быть что "виновник" иль сменил тип иль даже вид оружия или вообже сам погиб и оружие уже не в руках ... И вообще: Ну нафига такие заморочки для новостей? Как можно утверждать, не будучи судебным экспертом иль паталого-анатомом, что смерть наступила именно от осколка заряда подствольника? Чем осколчное ранение подствольного заряда отличается от того же 'осколка гранаты? Что, нельзя быть посеченным/раненым осколками, а погибнуть от "последней" пули иль зубов монстра или даже от радиации? Не будучи очевидцем собственно выстрела-взрыва-смерти, глупо утверждать иль говорить о "смерти из подствольника". ИМХО. Изменено 10 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Viнt@rь 50 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Немного дополню свой предыдущий пост: 2 проблемы искоренили(в последствии такой баг стал очень редким, но все же). Первой причиной было, как мне кажется, переполнение таблицы в скрипте(точно не ясно, что именно было причиной, но за комментировав все вызовы скрипта, частота получения бага понизилась, но все же... и остался тот же вылет, при загрузке сейва, сделанного во время бага) Второй причиной было то, что зоны убора оружия имели тип 0(restrictor_type = 0), после исправления всех типов зон на 3, частота бага еще больше понизилась, но опять таки полностью избавиться от него не удалось. ЗЫ Пробовали убирать все скрипты, но это не вариант, да и на чистом ЗП они норм работают, как мне говорят с тимы, такое с зонами убирания оружия и дверьми было еще в самом начале, когда на локации небыло ничего кроме них. ЗЫЫ Повторю суть проблемы еще раз Если поиграть/побегать по локе, то через время, прийдя в зону убора оружия, оно не убирается, в добавок двери не пашут, в смысле нету надписи открыть/закрыть, их можно толкать, а они будут шататься... С чем это может быть связано, прошу знающих людей подсказать/помочь, заранее спасибо. ЗЫЫЫ Мде, вышло что не дополнил пост, а переписал с дополнением, заранее извиняюсь. Сорри не видел, что Artos ответил, но все же может быть сюда зайдет кто то, кто сталкивался с такой проблемой. Изменено 12 Марта 2012 пользователем ColR_iT GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Viнt@rь Тут скорее проблема с движковой функцией. Я вот примеры уже не помню, но тут ошибки вида "local obj = level.object_by_id(пусто)" Тоесть вылета не будет, но и работать перестанет. Мой пример не точен, но чаще всего ошибка именно из за похожих вещей вылетает при работе с движковыми функциями, копай в этом направлении. Давайте НЕ заниматься погадалками. --/Artos Изменено 11 Марта 2012 пользователем Artos Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Viнt@rь, тебе уже дал *Shoker* краткий ответ в #3998, но ты продолжаешь по сути "лить воду", да еще и в два топика. Вместо того, чтобы переадресовать именно частный для версии игры CoP вопрос по Сидоровичу и своим изменениям, ты "размазываеешь" общий для многих вопрос о битых сэйвах уже по двум топикам, не приводя никакой конкретики/логов. Не следует искать товарищей по несчастью "кто сталкивался с такой проблемой"! С "этой" проблемой сталкивался и/или сталкивается любой модмейкер. Вот только вварианты решения у каждого разные. Кто-то ищет и исправляет ошибки в кодах, кто-то "вслепую" изменяя коды иль усекая/заменяя куски - обходит возникновение ошибки. Кто-то забивает на ошибку и или отказывается от своих модификаций иль берет чье-то готовое ... Пойми, суть: В твоих кодах где-то имеется ошибка. Она может быть самой разной, так что единого конкретного рецепта не существует! Это может быть вызов некорректного метода/функции, это может быть вызов с некорректными аргументами или применение метода к неподходящему объекту и т.д. и т.п. Общее: это то, что в игре НЕ возникает ситуации, которая обрушивает движек игры, а "зависает" только некий поток (thread) Lua. В итоге, игра продолжается вроде как и прерывания с ошибкой в логе не видно, но какой-то участок алгритма прекращает свою работу. У кого-то на худе останавливаются часы, у кого-то перестают работать двери иль летать вертолеты. Проявления могут быть самыми разными и порой малозаметными. Если в такие моменты, как ты выражаешься после "поиграть/побегать по локе" попытаться сделать сохранение - то велика вероятность того, что в сэйв НЕ попадут все необходимые данные или попавшие будут искажены. Твоя строка лога однозначно говорит о БИТОМ сэйве, т.к. уже первые байты из пакета актора не соответствуют допустимому уровню сложности игры. Можно много далее приводить примеров иль описаний, но не собираюсь засорять топик. Как же бороться с этим? Только два варианта: или вернуть коды в ситуацию ДО внесения в них ошибки или искать и исправлять ошибку. Искать ошибку очень тяжело, особенно если в моде немало новых изменений/скриптов. Во-первых, необходимо организовать нормальный вывод в лог технологических сообщений. Далее, необходимо в ключевых точках кодов, коллбэках, схемах и т.п. расставить вывод в лог технологических сообщений о прохождении точки и о важных параметрах. Тогда, анализируя лог-файл, можно заметить моменты, когда что-то перестает работать или важные параметры не соответствуют требуемым. В твоем же случае, можно даже идти с конца, проверяя перед записью в сэйв все необходимые данные и контролируя собственно то, что может приводить к битым сэйвам. Определив что же является некорректным - искать в соотв. скрипте/модуле ... Итого, никто тебе не укажет конкретно на ошибку и не даст нужные строки кода для ее устранения. ТОЛЬКО по твоим кодам можно определить что же за ошибка и что требуется для ее исправления. Ну а без логов - то вообще никто ничего не скажет, кроме общих уже высказанных рекомендаций. Ну и не стОит самому повторять собственно достаточно бессмысленные вещи о переполнении таблицы иль о типе рестрикторов. Объемы таблиц могут в Lau любыми (по сути ограничены ресурсами выделенными для всей игры). От типов рестрикторов не рушатся сэйвы. А то, что внося какие-то изменения несколько меняется характер проявления ошибки - так в игре ой как много всег взаимосвязанного. Заканчивай погадалки и ищи конкретную ошибку или хотя бы указания ни нее в логах иль еще где. Изменено 11 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Artos Вечно ты всё усложняешь, то что я уложил в пару предложений, ты тут расписал на буклет Никаких погадалок тут нету, даются конкретные указания куда копать дабы найти решение. Кашпировских тут конечно нету, но многие ошибки вполне можно и с такими данными помочь отловить. Так что давай НЕ усложнять. Нарываешься на полный игнор с моей стороны как отвечающего и на предупреждение как от куратора. --/Artos Viнt@rь Пока не исправишь ошибки с зависном скриптов, что либо дальше делать не советую. В том числе и Сидоровича. Изменено 11 Марта 2012 пользователем Artos Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Viнt@rь 50 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 Artos, ну так проблема в том что и вылета с логом нет(даже нечего показать), тоесть даже не заметно когда что то повисает в игре, игра продолжает функционировать, скрипты проверял все на чистом ЗП работают безотказно. К тому же, как говорят свои же, такая проблема появилась/была замечена еще как только были расставлены зоны убора оружия на локации(но они не обратили внимания), тогда скриптов в моде почти небыло... Сам я пришел в команду, когда локация была заселена, и при тестировании/прохождении для себя, я не заметил такого бага, столкнулся с ним при повторном тестировании всего и вся, по завершению работ на локации(сюжета), если бы хотя бы не повисал какой то процесс, то мне бы легче было найти причину ошибки... Логику проверили раз 10... ЗЫ если чесно, то я бага не заметил после тех двух изменений, но сегодня тестировал еще один член команды, он раз 10 наткнулся на такой баг, при том в самом начале игры, я же натыкался на него когда как. Я понимаю, что без логов гадать нечего, но и лога то нету, был бы я бы выложил... В последствии не знания что делать, я в надежде получить хотя бы какой то ответ обратился сюда. И еще раз повторюсь, проблемой является поломка зон убора оружия/работы дверей, следуя из этого можно сказать, что повисает биндер актора, так как останавливаются все таймера, не проверяется на то, в зоне ли убора оружия актор, бьются сейвы... GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Viнt@rь 50 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Проблема: Если поиграть/побегать по локе, то через время, прийдя в зону убора оружия, оно не убирается, в добавок двери не пашут, в смысле нету надписи открыть/закрыть, их можно толкать, а они будут шататься... С чем это может быть связано, прошу знающих людей подсказать/помочь, заранее спасибо. ЗЫ: 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 добавил пути к звукам Изменено 12 Марта 2012 пользователем ColR_iT GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Artos 99 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Viнt@rь, видно ты не любитель читать ранее написанное в топиках. 1. Уже не раз давались коды, которые позволяют выводить в лог все что хочет модмейкер. 2. Уже давался вариант, когда даже при "безлоговом" вылете игры, у модмейкера остается дублирующий лог-файл. То, что у тебя нет ничего в логе - говорит только о том, что ты сам ничего не сделал для того, чтобы найти ошибку, а ждешь что или она сама исправится или по какой-то случаности явно проявит себы чем-то или кто-то не увидит в кодах явный ляп. То, что у вас в кодах подвисает биндер актора - наиболее вероятно, хотя и не факт. Если так, то и искать вту сторону нужно. Вариантов немало, но требует навыков в скриптах и соответственнно потрудиться. 1. Воспользоваться вариантом АМК (SoC), которые организовали именно для биндера актора систему watchdog'а, которая позвояет отловить место/модуль возникновения ошибки. 2. Воспользоваться тем, что обсуждалось в топике "Язык Lua. Общие вопросы программирования." по поводу вариантов создания песочницы или "signals and slots system". В этом случае можно поймать момент возникновения ошибки. ... ну и др. Если подобное не по силам, то варианта два: или идти Shoker'овским путем погадалог по "конкретным" предполагалкам или дать все неоходимое для воспроизведения ошибки (коды мода) кому-то, кому по силам выяснить ошибку и кто располагает временем и желанием помочь. Изменено 11 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Viнt@rь 50 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Artos, про песочницу и тп я знаю, но а вдруг ошибка не в скриптах(даже не вдруг, а скорей всего)? И тогда получится, что то место, на котором прервался лог, будет ложным, так как глюкнула логики или что-то еще, ну а пока я занимаюсь тестированием, у меня лично (с момента правок) такого бага небыло... и за всю игру всего 1 вылет, с которым пытаюсь разобраться... Изменено 11 Марта 2012 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Artos 99 Опубликовано 11 Марта 2012 Поделиться Опубликовано 11 Марта 2012 (изменено) Viнt@rь, ты продолжаешь гадать, там где или нужны факты/информация и их анализ или просто вслепую тыкаться носом ... авось ткнешься в нужное место когда-нить ... Само собою, тебе никакая песочница не даст конкретное указание на ошибку (такое почти невероятно). Но как раз предназначение ее в том, чтобы постепенно выделить место/модуль и в нем функцию, в которой возникает ошибка. Вполне может быть ошибка тянется еще ранее откуда-то, но только начав приближаться к нужной строке кода можно найти ошибку и решение для ее исправления. Ну а раз, по твоим словам, эта ошибка и не у тебя и всего 1 раз за игру - то ... вообще есть ли смысл искать черную кошку в темной комнате при том, что ее там может и не быть. И, вполне может быть уже у вас кто-то исправил (может и не догадываясь) причину ошибки или даже ошибка возникла из-за внешних условий (комп-железо-ОС-память-...). Погадалки прекращаем. Изменено 11 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ziStam 1 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 (изменено) Всем здравия желаю! Прошу прощения за глупый вопрос, но как нужно вызывать функцию 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 Заранее благодарю за ответ. Изменено 12 Марта 2012 пользователем ziStam Legend of Stalker Ссылка на комментарий
Artos 99 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 (изменено) 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 Изменено 12 Марта 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
ziStam 1 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 Artos, увы, но не работает. Попробовал оба варианта. Если важно, то размер рестриктора 3х3х4(x.y.z соттветственно). И еще. Функцию эту вызываю из xr_effects.script Legend of Stalker Ссылка на комментарий
Artos 99 Опубликовано 12 Марта 2012 Поделиться Опубликовано 12 Марта 2012 ziStam, ты задал вопрос по функции set_weather, приведя по сути неверный код (аргумент был неопределен). Тебе был дан вариант, как этой функцией воспользоваться в твоем случае, чтобы она заработала. И естественно эта функция должна быть в xr_effects.script, иначе бы получал вылет на ругань об ее отсутсвии. Ну а то, что у тебя могут быть иные причины того, что логика не срабатывает - ищи и исправляй. Проверяй правильность имени твоего agr_weather_indoor, проверяй срабатывает ли он (точнее условие) на появление в нем актора и т.п. Извини, но я не телепат, чтобы все это видеть. "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Wookie 7 Опубликовано 14 Марта 2012 Поделиться Опубликовано 14 Марта 2012 А в ЗП 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 Канал на "Трубе" Ссылка на комментарий
Самогоныч 0 Опубликовано 14 Марта 2012 Поделиться Опубликовано 14 Марта 2012 Уважаемые, такая вот проблема, при исправлении нечёткости текстур зова, при помощи утилиты Stalker Loader столкнулся с такой ошибкой... Вот уже второй день чешу репу, что делать? Решения пока не нашёл... Заранее спасибо за помощь. Ошибка: Точка входа в процедуру ?pLog@@3P6AXPAD@ZA не найдена в библиотеке DLL OpenAL32.dll Усердно пилю Кордон... Ссылка на комментарий
ColR_iT 171 Опубликовано 14 Марта 2012 Поделиться Опубликовано 14 Марта 2012 (изменено) 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. Да, и вопрос больше в тему скриптования, нежели сюда... Изменено 14 Марта 2012 пользователем ColR_iT Ссылка на комментарий
Wookie 7 Опубликовано 14 Марта 2012 Поделиться Опубликовано 14 Марта 2012 ColR_iT, я делаю радиоактивный дождь на ЗП, наверное просто делал хит на ТЧ. А можно изменить хит на радиоационный, и переделать заменить хит на который ннаноситься урон ГГ? https://www.youtube.com/embed/U0no-6tCxhU Канал на "Трубе" Ссылка на комментарий
ColR_iT 171 Опубликовано 14 Марта 2012 Поделиться Опубликовано 14 Марта 2012 Wookie, выше уже готовый пример нанесения хита. Подставляй нужные значения и вызывай в нужный момент. Тип хита можешь взглянуть в lua_help.script, а именно в классе hit, в качестве obj передавай актора и хит будет наносится ГГ. Ссылка на комментарий
Viнt@rь 50 Опубликовано 15 Марта 2012 Поделиться Опубликовано 15 Марта 2012 Вопрос глуповатый, но все же, подскажите пожалуйста, зачем регать инфопоршни в спец. файлах? И обязательно ли это, проверял на ЗП, разницу между зареганым и не зареганым инфопоршнями не заметил, так в чем же подвох, обьясните плз))) GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти