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

БЛОКпост


Nomadec

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

Есть проблема со схемой напарников. На 4 патче всё работает отлично. При переходе на 6 патч вылетает при вступлении в диалог с НПС использующим диалоги из схемы напарников Actor_need_help.xml  с одной единственной строкой stack_trace.

Единственное, что смог выяснить что это происходит из за строчки в ветке диалога actor_give_command (приказ напарникам ждать на месте ГГ)

Если эту строку удалить всё нормально работает. Но тогда нет возможности отдавать напарникам приказы.

Подозреваю ,что это из за того ,что сам диалог с приказами выведен из XML диалогов в сам скрипт. Что изменили в 6 патче такого, что стало вылетать.. И как возможно это исправить? Возможно, что то в коде надо поменять....

function init_commands_dialog(dlg)


mylog("init cmd dlg")
local phr, scr
phr=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")
end


function show_dialog()
-- local spwn=ui_cheat.cheat(get_hud())
-- spwn:SetClGame(level.main_input_receiver())
-- level.start_stop_menu(spwn,true)
end

local cur_movstate=0

function anh_set_state_wait()
if db.tc then
db.tc:set_center_point(db.actor:position(),db.actor:level_vertex_id())
end
cur_movstate=1
xr_logic.pstor_store(db.actor,"wait_level",level.name())
store_movstate()
end

function anh_set_state_normal()
if db.tc then
db.tc:set_center_point(nil,nil)
end
cur_movstate=2
xr_logic.pstor_store(db.actor,"wait_level",nil)
store_movstate()
end

function anh_movstate_is_wait()
return cur_movstate~=nil and cur_movstate==1
end

function anh_movstate_is_normal()
return cur_movstate~=nil and cur_movstate==2
end

function anh_movstate_is_unknown()
return not (anh_movstate_is_wait() or anh_movstate_is_normal())
end

function store_movstate()
xr_logic.pstor_store(db.actor,"movstate",cur_movstate)
end

function get_movstate()
if db.actor then
return xr_logic.pstro_retrieve(db.actor,"movstate",0)
end
return 0 -- ХЗ
end

function restore_scheme_state()
local movstate=xr_logic.pstor_retrieve(db.actor,"movstate",0)
if movstate==1 then
anh_set_state_wait()
elseif movstate==2 then
anh_set_state_normal()
else
anh_set_state_normal()
end
end

 

Изменено пользователем dromundus
  • Нравится 1
  • Не нравится 1

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


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

@CRAZY_STALKER666,

хм..тЕМКА ИНТЕРЕСНАЯ ковырялся с ней- было время.Но сам в скриптах разбираюсь не очень..Интересно было бы на твою схемку взглянуть.

а вот что сам нахимичил, но со скриптами ещё надо работать..новые классы делать...

 

 

Изменено пользователем Kirgudu
  • Нравится 1

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


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

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