dromundus 90 Опубликовано 8 Октября 2015 (изменено) Есть проблема со схемой напарников. На 4 патче всё работает отлично. При переходе на 6 патч вылетает при вступлении в диалог с НПС использующим диалоги из схемы напарников Actor_need_help.xml с одной единственной строкой stack_trace. Единственное, что смог выяснить что это происходит из за строчки в ветке диалога actor_give_command (приказ напарникам ждать на месте ГГ) Если эту строку удалить всё нормально работает. Но тогда нет возможности отдавать напарникам приказы. Подозреваю ,что это из за того ,что сам диалог с приказами выведен из XML диалогов в сам скрипт. Что изменили в 6 патче такого, что стало вылетать.. И как возможно это исправить? Возможно, что то в коде надо поменять.... function init_commands_dialog(dlg) mylog("init cmd dlg")local phr, scrphr=dlg:AddPhrase("Обращаюсь ко всем!",0,-1,0)phr=dlg:AddPhrase("",1,0,0)phr=dlg:AddPhrase("Двигаемся в таком порядке...",10,1,0)phr=dlg:AddPhrase("Если увидел врага, то ",20,1,0)phr=dlg:AddPhrase("Отбой. ",30,1,0)phr=dlg:AddPhrase("",11,10,0)phr=dlg:AddPhrase("",21,20,0)phr=dlg:AddPhrase("я иду первым, вы за мной уступом.",100,11,0)phr=dlg:AddPhrase("Никак нет, трщ командир. Выполнить не могу.",1000,100,0)phr=dlg:AddPhrase("Это ещё почему?",10000,1000,0)phr=dlg:AddPhrase("Не имею возможности! Туповат-с. Но обещаю исправится.",10001,10000,0)phr=dlg:AddPhrase("идёте впереди, я сзади прикрываю.",101,11,0)phr=dlg:AddPhrase("Товарищ командир разрешите обратиться!",1010,101,0)phr=dlg:AddPhrase("Обращайтесь.",10100,1010,0)phr=dlg:AddPhrase("Отставить разговорчики в строю!",10101,1010,0)phr=dlg:AddPhrase("Команду выполнить не могу по причине мозговой травмы. Но скоро выздоровею.",10105,10100,0)phr=dlg:AddPhrase("Есть!",10106,10101,0)phr=dlg:AddPhrase("ждите меня здесь.",102,11,0)phr=dlg:AddPhrase("Есть!",1020,102,0)scr=phr:GetPhraseScript(phr)scr:AddAction("actor_need_help.anh_set_state_wait")phr=dlg:AddPhrase("как толпа баранов.",103,11,0)phr=dlg:AddPhrase("Есть! Можно вопрос?",1030,103,0)scr=phr:GetPhraseScript(phr)scr:AddAction("actor_need_help.anh_set_state_normal")phr=dlg:AddPhrase("Можно машку за ляжку. А тут... кх-кх. Спрашивай.",10300,1030,0)phr=dlg:AddPhrase("Не 'можно', а 'разрешите обратиться'. Не разрешаю.",10301,1030,0)phr=dlg:AddPhrase("А как это толпой баранов?",10395,10300,0)phr=dlg:AddPhrase("Объясняю для тупых. Это значит организованно бегать вокруг меня взад-назад. Эта тактическая схема была разработана генш... Эээ... Разговорчики в строю! Выполнять приказ!",10396,10395,0)phr=dlg:AddPhrase("Есть!",10397,10396,0)phr=dlg:AddPhrase("без изменений, двигаемся как сейчас.",104,11,0)phr=dlg:AddPhrase("Есть!",1040,104,0)phr=dlg:AddPhrase("Рядовой, доложить порядок движения.",105,1,0)phr=dlg:AddPhrase("Порядок движения - ждать здесь, трщ командир.",1050,105,0)scr=phr:GetPhraseScript(phr)scr:AddPrecondition("actor_need_help.anh_movstate_is_wait")phr=dlg:AddPhrase("Молодец! Чего нам теперь ещё не хватает?",10500,1050,0)phr=dlg:AddPhrase("Банки бодрящего и соленой рыбки, господин капрал! Э... Трщ командир!",10595,10500,0)phr=dlg:AddPhrase("Ну мы это... как стадо баранов, в общем.",1051,105,0)scr=phr:GetPhraseScript(phr)scr:AddPrecondition("actor_need_help.anh_movstate_is_normal")phr=dlg:AddPhrase("Никак нет! Приказа не имеем!",1052,105,0)scr=phr:GetPhraseScript(phr)scr:AddPrecondition("actor_need_help.anh_movstate_is_unknown")phr=dlg:AddPhrase("убей вражину.",200,21,0)phr=dlg:AddPhrase("открывай огонь только после меня.",201,21,0)phr=dlg:AddPhrase("открывай огонь только если тебя заметили.",202,21,0)phr=dlg:AddPhrase("реагируй как было сказано.",203,21,0)phr=dlg:AddPhrase("Приказываю доложить ваши действия при появлении врага!",204,21,0)-- scr=phr:GetPhraseScript(phr)-- scr:AddAction("actor_need_help.show_dialog")endfunction show_dialog()-- local spwn=ui_cheat.cheat(get_hud())-- spwn:SetClGame(level.main_input_receiver())-- level.start_stop_menu(spwn,true)endlocal cur_movstate=0function anh_set_state_wait()if db.tc thendb.tc:set_center_point(db.actor:position(),db.actor:level_vertex_id())endcur_movstate=1xr_logic.pstor_store(db.actor,"wait_level",level.name())store_movstate()endfunction anh_set_state_normal()if db.tc thendb.tc:set_center_point(nil,nil)endcur_movstate=2xr_logic.pstor_store(db.actor,"wait_level",nil)store_movstate()endfunction anh_movstate_is_wait()return cur_movstate~=nil and cur_movstate==1endfunction anh_movstate_is_normal()return cur_movstate~=nil and cur_movstate==2endfunction anh_movstate_is_unknown()return not (anh_movstate_is_wait() or anh_movstate_is_normal())endfunction store_movstate()xr_logic.pstor_store(db.actor,"movstate",cur_movstate)endfunction get_movstate()if db.actor thenreturn xr_logic.pstro_retrieve(db.actor,"movstate",0)endreturn 0 -- ХЗendfunction restore_scheme_state()local movstate=xr_logic.pstor_retrieve(db.actor,"movstate",0)if movstate==1 thenanh_set_state_wait()elseif movstate==2 thenanh_set_state_normal()elseanh_set_state_normal()endend Изменено 8 Октября 2015 пользователем dromundus 1 1 Поделиться этим сообщением Ссылка на сообщение
dromundus 90 Опубликовано 22 Июля 2016 (изменено) @CRAZY_STALKER666, хм..тЕМКА ИНТЕРЕСНАЯ ковырялся с ней- было время.Но сам в скриптах разбираюсь не очень..Интересно было бы на твою схемку взглянуть. а вот что сам нахимичил, но со скриптами ещё надо работать..новые классы делать... Изменено 22 Июля 2016 пользователем Kirgudu 1 Поделиться этим сообщением Ссылка на сообщение