Старлей 88 Опубликовано 4 Апреля 2013 Есть вылет: Log (Показать) FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: ...stalker clear sky\gamedata\scripts\os_respawn.script:49: attempt to call method 'alive' (a nil value) stack trace:FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : <no expression> [error]Arguments : LUA error: ...stalker clear sky\gamedata\scripts\os_respawn.script:49: attempt to call method 'alive' (a nil value) stack trace: Вот фрагмент из os_respawn: local obj = alife():object(k) --получаем объект по его Id local name = oldstory.get_npc_character(obj) --тут получаем имя профиля сталкера(100% работает) if obj and name==p_name then -- if obj это типа проверка что obj не равен nil? Вылет > if obj:alive() then --по вылету выходит, что не может применить alive к obj = nil ? cnt = cnt+1 elselocal obj = alife():object(k) --получаем объект по его Id local name = oldstory.get_npc_character(obj) --тут получаем имя профиля сталкера(100% работает) if obj and name==p_name then -- if obj это типа проверка что obj не равен nil? Вылет > if obj:alive() then --по вылету выходит, что не может применить alive к obj = nil ? cnt = cnt+1 else И что же тут не так? Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 19 Июня 2013 Подскажите пожалуйста как добавить свою схему логики. Допустим xr_walker_klon. 1. Грубо говоря копия xr_walker. 2. Зарегестрировать в modules: load_scheme("xr_walker_klon", "walker_klon", stype_stalker)load_scheme("xr_walker_klon", "walker_klon", stype_stalker) Нужно что-то еще? Схема как бы работает, вот только "как бы". В основном в схеме меняются состояния передвижения сталкера через "state_mgr.set_state" и "move_mgr", а вот в игре они почти не меняются. Может ли какая-нибудь другая схема препятствовать этим изменениям? Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 19 Июня 2013 P.S. Разобрался - косяк был в том, что забыл занести апдейт таймеров, отвечающих за состояние передвижения, в actor_binder:update(delta) Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 5 Июля 2013 Народ, подскажите пожалуйста: делаю я переборку объектов: for i=1,65535 do local obj = alife():object(i) for i=1,65535 do local obj = alife():object(i) и хочу затем сделать кое-что с этим объектом, а именно со сталкером: if obj then if obj:section() == "stalker" then if obj then if obj:section() == "stalker" then Однако получаю вылет из-за: attempt to call method 'section' (a nil value)attempt to call method 'section' (a nil value) То бишь у объекта нет такого метода, однако на stalkerin написано: ...Эти методы подходят к объектам любого класса... string section() const возвращает имя секции объекта. Аргументов не принимает. Вообще я что хочу сделать: узнать какие из этих объектов сталкеры, желательно без нет-пакетов можно это осуществить? Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 22 Сентября 2013 (изменено) Всем привет, возникла проблема при спавне вертолета через скрипт в Чистом небе. С вероятностью 80% будет получен вылет: Лог (Показать) * MEMORY USAGE: 317715 K * End of synchronization A[1] R[1] FATAL ERROR [error]Expression : motion_ID.valid() [error]Function : CKinematicsAnimated::ID_Cycle [error]File : E:\priquel\sources\engine\Layers\xrRender\SkeletonAnimated.cpp [error]Line : 208 [error]Description : ! MODEL: can't find cycle: [error]Arguments : $editor stack trace:* MEMORY USAGE: 317715 K * End of synchronization A[1] R[1] FATAL ERROR [error]Expression : motion_ID.valid() [error]Function : CKinematicsAnimated::ID_Cycle [error]File : E:\priquel\sources\engine\Layers\xrRender\SkeletonAnimated.cpp [error]Line : 208 [error]Description : ! MODEL: can't find cycle: [error]Arguments : $editor stack trace: Функция спавна: Показать function heli(section,posx,posy,posz,lvid,gvid,logic) local obj = alife():create(section,vector():set(posx,posy,posz),lvid,gvid) local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_s32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_s32 = packet:r_s32() -- свойства cse_visual local model_visual = packet:r_stringZ() local cse_visual__unk1_u8 = packet:r_u8() -- свойства cse_motion local motion_name = packet:r_stringZ() -- свойства cse_ph_skeleton local skeleton_name = packet:r_stringZ() local cse_ph_skeleton__unk1_u8 = packet:r_u8() local cse_ph_skeleton__unk2_u16 = packet:r_u16() -- свойства cse_alife_helicopter local cse_alife_helicopter__unk1_sz = packet:r_stringZ() local engine_sound = packet:r_stringZ() --устанавливаем логику custom_data = "[logic]\ncfg = scripts\\heli\\"..logic..".ltx" -- теперь заполняем нужные параметры -- свойства cse_alife_object packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_s32) packet:w_s32(level_vertex_id) object_flags = bit_not(5) -- ~5 = 0xfffffffa packet:w_s32(object_flags) packet:w_stringZ(custom_data) packet:w_s32(-1) packet:w_s32(cse_alife_object__unk3_s32) -- свойства cse_visual packet:w_stringZ(model_visual) packet:w_u8(cse_visual__unk1_u8) -- свойства cse_motion packet:w_stringZ(motion_name) -- свойства cse_ph_skeleton skeleton_name = "idle" packet:w_stringZ(skeleton_name) packet:w_u8(cse_ph_skeleton__unk1_u8) packet:w_u16(cse_ph_skeleton__unk2_u16) -- свойства cse_alife_helicopter cse_alife_helicopter__unk1_sz = "idle" engine_sound = "alexmx\\helicopter" packet:w_stringZ(cse_alife_helicopter__unk1_sz) packet:w_stringZ(engine_sound) -- считываем скорректированные параметры packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) return obj endfunction heli(section,posx,posy,posz,lvid,gvid,logic) local obj = alife():create(section,vector():set(posx,posy,posz),lvid,gvid) local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_s32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_s32 = packet:r_s32() -- свойства cse_visual local model_visual = packet:r_stringZ() local cse_visual__unk1_u8 = packet:r_u8() -- свойства cse_motion local motion_name = packet:r_stringZ() -- свойства cse_ph_skeleton local skeleton_name = packet:r_stringZ() local cse_ph_skeleton__unk1_u8 = packet:r_u8() local cse_ph_skeleton__unk2_u16 = packet:r_u16() -- свойства cse_alife_helicopter local cse_alife_helicopter__unk1_sz = packet:r_stringZ() local engine_sound = packet:r_stringZ() --устанавливаем логику custom_data = "[logic]\ncfg = scripts\\heli\\"..logic..".ltx" -- теперь заполняем нужные параметры -- свойства cse_alife_object packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_s32) packet:w_s32(level_vertex_id) object_flags = bit_not(5) -- ~5 = 0xfffffffa packet:w_s32(object_flags) packet:w_stringZ(custom_data) packet:w_s32(-1) packet:w_s32(cse_alife_object__unk3_s32) -- свойства cse_visual packet:w_stringZ(model_visual) packet:w_u8(cse_visual__unk1_u8) -- свойства cse_motion packet:w_stringZ(motion_name) -- свойства cse_ph_skeleton skeleton_name = "idle" packet:w_stringZ(skeleton_name) packet:w_u8(cse_ph_skeleton__unk1_u8) packet:w_u16(cse_ph_skeleton__unk2_u16) -- свойства cse_alife_helicopter cse_alife_helicopter__unk1_sz = "idle" engine_sound = "alexmx\\helicopter" packet:w_stringZ(cse_alife_helicopter__unk1_sz) packet:w_stringZ(engine_sound) -- считываем скорректированные параметры packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) return obj end Также используется функция спавна пары этому вертолета: Показать function heli_copy(section,pos,lvid,gvid,id,logic) --читаем данные из прототипа local prototype = alife():object(id) local packet1 = net_packet() prototype:STATE_Write(packet1) -- свойства cse_alife_object local game_vertex_id1 = packet1:r_u16() local cse_alife_object1__unk1_f32 = packet1:r_float() local cse_alife_object1__unk2_s32 = packet1:r_s32() local level_vertex_id1 = packet1:r_s32() local object_flags1 = packet1:r_s32() local custom_data1 = packet1:r_stringZ() local obj = alife():create(section,pos,lvid,gvid) local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_s32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_s32 = packet:r_s32() -- свойства cse_visual local model_visual = packet:r_stringZ() local cse_visual__unk1_u8 = packet:r_u8() -- свойства cse_motion local motion_name = packet:r_stringZ() -- свойства cse_ph_skeleton local skeleton_name = packet:r_stringZ() local cse_ph_skeleton__unk1_u8 = packet:r_u8() local cse_ph_skeleton__unk2_u16 = packet:r_u16() -- свойства cse_alife_helicopter local cse_alife_helicopter__unk1_sz = packet:r_stringZ() local engine_sound = packet:r_stringZ() --устанавливаем логику game_vertex_id = game_vertex_id1 level_vertex_id = level_vertex_id1 object_flags = object_flags1 if not logic then custom_data = custom_data1 else custom_data = "[logic]\ncfg = scripts\\heli\\"..logic..".ltx" end -- теперь заполняем нужные параметры -- свойства cse_alife_object packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_s32) packet:w_s32(level_vertex_id) object_flags = bit_not(5) -- ~5 = 0xfffffffa packet:w_s32(object_flags) packet:w_stringZ(custom_data) packet:w_s32(-1) packet:w_s32(cse_alife_object__unk3_s32) -- свойства cse_visual packet:w_stringZ(model_visual) packet:w_u8(cse_visual__unk1_u8) -- свойства cse_motion packet:w_stringZ(motion_name) -- свойства cse_ph_skeleton skeleton_name = "idle" packet:w_stringZ(skeleton_name) packet:w_u8(cse_ph_skeleton__unk1_u8) packet:w_u16(cse_ph_skeleton__unk2_u16) -- свойства cse_alife_helicopter cse_alife_helicopter__unk1_sz = "idle" engine_sound = "alexmx\\helicopter" packet:w_stringZ(cse_alife_helicopter__unk1_sz) packet:w_stringZ(engine_sound) -- считываем скорректированные параметры packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) return obj endfunction heli_copy(section,pos,lvid,gvid,id,logic) --читаем данные из прототипа local prototype = alife():object(id) local packet1 = net_packet() prototype:STATE_Write(packet1) -- свойства cse_alife_object local game_vertex_id1 = packet1:r_u16() local cse_alife_object1__unk1_f32 = packet1:r_float() local cse_alife_object1__unk2_s32 = packet1:r_s32() local level_vertex_id1 = packet1:r_s32() local object_flags1 = packet1:r_s32() local custom_data1 = packet1:r_stringZ() local obj = alife():create(section,pos,lvid,gvid) local packet = net_packet() obj:STATE_Write(packet) -- свойства cse_alife_object local game_vertex_id = packet:r_u16() local cse_alife_object__unk1_f32 = packet:r_float() local cse_alife_object__unk2_s32 = packet:r_s32() local level_vertex_id = packet:r_s32() local object_flags = packet:r_s32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local cse_alife_object__unk3_s32 = packet:r_s32() -- свойства cse_visual local model_visual = packet:r_stringZ() local cse_visual__unk1_u8 = packet:r_u8() -- свойства cse_motion local motion_name = packet:r_stringZ() -- свойства cse_ph_skeleton local skeleton_name = packet:r_stringZ() local cse_ph_skeleton__unk1_u8 = packet:r_u8() local cse_ph_skeleton__unk2_u16 = packet:r_u16() -- свойства cse_alife_helicopter local cse_alife_helicopter__unk1_sz = packet:r_stringZ() local engine_sound = packet:r_stringZ() --устанавливаем логику game_vertex_id = game_vertex_id1 level_vertex_id = level_vertex_id1 object_flags = object_flags1 if not logic then custom_data = custom_data1 else custom_data = "[logic]\ncfg = scripts\\heli\\"..logic..".ltx" end -- теперь заполняем нужные параметры -- свойства cse_alife_object packet:w_begin(game_vertex_id) packet:w_float(cse_alife_object__unk1_f32) packet:w_s32(cse_alife_object__unk2_s32) packet:w_s32(level_vertex_id) object_flags = bit_not(5) -- ~5 = 0xfffffffa packet:w_s32(object_flags) packet:w_stringZ(custom_data) packet:w_s32(-1) packet:w_s32(cse_alife_object__unk3_s32) -- свойства cse_visual packet:w_stringZ(model_visual) packet:w_u8(cse_visual__unk1_u8) -- свойства cse_motion packet:w_stringZ(motion_name) -- свойства cse_ph_skeleton skeleton_name = "idle" packet:w_stringZ(skeleton_name) packet:w_u8(cse_ph_skeleton__unk1_u8) packet:w_u16(cse_ph_skeleton__unk2_u16) -- свойства cse_alife_helicopter cse_alife_helicopter__unk1_sz = "idle" engine_sound = "alexmx\\helicopter" packet:w_stringZ(cse_alife_helicopter__unk1_sz) packet:w_stringZ(engine_sound) -- считываем скорректированные параметры packet:r_seek(0) obj:STATE_Read(packet, packet:w_tell()) return obj end В связи с этим вопрос какова причина вылета? P.S. Используется AI-вертолетов, во время спавна вертолеты будут переведены в online(спавнятся недалеко от ГГ). Изменено 22 Сентября 2013 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 22 Сентября 2013 ShredderПробовал, будет получаться вылет, какой не помню, со ссылкой на 431 строчку. При загрузке квик-сэйвов, поэтому был вынужден отказаться, обновленный m_netpk вышел недавно насколько я знаю. *Shoker*Сейчас попробую. Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 22 Сентября 2013 (изменено) *Shoker* 3/6 тестов прошли успешно, правда тут такая фишка с тестами... Тест 1: Запускаю сталкер, загружаю сейв, пытаюсь заспавнить - все хорошо спавнится. Тест 2: продолжаю Тест 1, не выходя из игры, загружаю этот же сейв - получаю вылет, указанный выше. Тест 3: запускаю заново сталкер, загружаю тот же сейв, вертолеты спавнятся на ура. Тест 4: опять же не выходя из игры, загружаю этот же сейв, при спавне вылет Тест 5 и 6 в том же духе. Artos Сейчас попробую, в принципе ты объясняешь почему, происходит вылет при загрузке сейва, не выходя из игры. Может быть и вправду где байт лишний затесался. =============== Artos Ты неправильно понял. Смотри: захожу я в сталкер, загружаю сейв, где я стою перед нпс, после диалога с котрым спавнятся вертушки, поговрил с ним - птички заспавнились, затем я загружаю этот же сейв, не выходя из игры, и во время нажатия фразы, после которой у меня должен спавниться вертолет - происходит вылет. Изменено 22 Сентября 2013 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 22 Сентября 2013 (изменено) Цитата Если вылет при перезапуске сэйва (не выходя из игры) связан Он с этим не связан, я могу перезапустить сейв и играть себе спокойно дальше, хоть всю игру пройти, НО если я начну диалог после которого спавнится вертолет, то будет вылет. И параметр 'startup_animation' я изменил, как сказал Shoker, если раньше вылеты были практически всегда, то сейчас только так, как я описал выше. P.S. По этому поводу у меня только одна мысль, что дело в том что, как ты сказал из-за того что попадает "лишний" байт, завтра я попробую принудительно "очистить" пакет, как ты написал, думаю поможет Изменено 22 Сентября 2013 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 28 Сентября 2013 Подскажите пожалуйста, еще вот в чем: требуется от ГГ передать НПС 2 артефакта. Для этого я использую функции ColR_iT(в посте под спойлером), однако от ГГ передается НПС только 1 артефакт, сделал не большую эхо-печать в лог, для проверки счетчика - все правильно, вот только вылазиет одна строчка странная: ! Cannot find saved game ~:psi:__i_=_1,_count_=_2 * Log file has been saved successfully! ! Cannot find saved game ~:psi:__i_=_2,_count_=_2 * Log file has been saved successfully! ! ERROR: SV: can't find children [39427] of parent [270253968] ! Cannot find saved game ~:psi:__i_=_1,_count_=_2 * Log file has been saved successfully! ! Cannot find saved game ~:psi:__i_=_2,_count_=_2 * Log file has been saved successfully! ! ERROR: SV: can't find children [39425] of parent [270253968]! Cannot find saved game ~:psi:__i_=_1,_count_=_2 * Log file has been saved successfully! ! Cannot find saved game ~:psi:__i_=_2,_count_=_2 * Log file has been saved successfully! ! ERROR: SV: can't find children [39427] of parent [270253968] ! Cannot find saved game ~:psi:__i_=_1,_count_=_2 * Log file has been saved successfully! ! Cannot find saved game ~:psi:__i_=_2,_count_=_2 * Log file has been saved successfully! ! ERROR: SV: can't find children [39425] of parent [270253968] Я нашел в этой же теме, год назад такой вопрос задавал *Shoker*, только он пытался переместить предмет с земли нпс, и у предмета не было родителя и т.д., поэтому как сказали и вылазили эти ошибки. Но у меня 2 вопроса: 1. Почему перемещается только 1 предмет. 2. Почему вылазиют сообщения, ведь изначально родитель артефакта ГГ, потом НПС? P.S. Или поделитесь своими функциями Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 28 Сентября 2013 (изменено) ArtosУстановил твой lua_helper, пытаюсь вызвать функцию: Relocate_Items(npc, phraseID, 2) Relocate_Items(npc, sect, 1, "in")Relocate_Items(npc, phraseID, 2) Relocate_Items(npc, sect, 1, "in") Получаю вылет: Показать Expression : fatal error Function : CScriptEngine::lua_error File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp Line : 180 Description : Arguments : LUA error: ...stalker clear sky\gamedata\scripts\lua_helper.script:45: attempt to call field 'exformat' (a nil value)Expression : fatal error Function : CScriptEngine::lua_error File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp Line : 180 Description : Arguments : LUA error: ...stalker clear sky\gamedata\scripts\lua_helper.script:45: attempt to call field 'exformat' (a nil value) Но суть не в этом, вылет происходит из-за этой строчки 1324 там printf вызывается, так ведь предметы то не передаются! Получается что предмет ГГ не проходит условие if soItem and not oActor:marked_dropped(oItem) and oItem:parent() and oItem:parent():id() == idActor thenif soItem and not oActor:marked_dropped(oItem) and oItem:parent() and oItem:parent():id() == idActor then ======= P.S. Удалил ограничение все нормально стало с "отдачей" предмета. Изменено 28 Сентября 2013 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 20 Октября 2013 Привет всем, есть скриптовый диалог. Вот кусок: txt=game.translate_string("dialog_os_psi_artefact_1") phrase = dialog:AddPhrase(txt,"info","0",0) txt=game.translate_string("dialog_os_psi_artefact_1") phrase = dialog:AddPhrase(txt,"info","0",0) Игра крешиться: Expression : fatal error Function : xray::core::detail::strconcat_error::process File : E:\priquel\sources\engine\xrCore\string_concatenations.cpp Line : 34 Description : <no expression> Arguments : buffer overflow: cannot concatenate strings(1): [d:\stalker clear sky\gamedata\sounds\][ characters_voice\dialogs\{тут идет текст диалога непонятными символами}..ogg] Expression : fatal error Function : xray::core::detail::strconcat_error::process File : E:\priquel\sources\engine\xrCore\string_concatenations.cpp Line : 34 Description : <no expression> Arguments : buffer overflow: cannot concatenate strings(1): [d:\stalker clear sky\gamedata\sounds\][ characters_voice\dialogs\{тут идет текст диалога непонятными символами}..ogg] Строка dialog_os_psi_artefact_1 есть в .xml файле с переводом, длина строки 421 символ, 2 точки перед ogg в логе, я так понимаю, потому что в конце предложения есть точка. Как это исправить? Я видел диалоги гораздо большей длины, которые не вылетали... Вылет встречал как-то и в обычном диалоге... А этот появился из неоткуда, работало, работало - да перестало. P.S. А что движок так с каждой репликой что-ли? Проверяет есть ли файл с текстом диалога? Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 10 Ноября 2013 (изменено) Stalkersof Попробуй так: game_relations.set_factions_community(p[1], p[2], p[3])game_relations.set_factions_community(p[1], p[2], p[3]) p[1], p[2] - группировки p[3] - отношение(enemy, neutral, friend) P.S. Попробуй во втором параметре записать "actor" Изменено 10 Ноября 2013 пользователем Старлей 1 Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 24 Марта 2014 (изменено) Уважаемые знатоки, подскажите пожалуйста, а за кого мы играем в мультиплеере? Если более подробно, то ковыряюсь я в SOProject. (Да я знаю, что туда мне и идти со своими расспросами, но хотя бы дайте ссылку на теорию или выскажите свои догадки). Проблема в том, что actor изначально должен быть в спавн-файле. Потом его можно удалить db.del_actor(...). И все как бы работает, единственное что не получится снять координаты позиции актора(логично, ведь мы его удалили). И я вот не пойму кем же мы бегаем то? В db.script ничего не увидел... При спавне(возрождение после смерти) пишется к примеру Ник[65535] respawned as actor. Но мы не actor... А кто тогда?! ==== local sim = alife() -- получаем сам объект класса alife_simulator local sactor = sim:actor() -- получаем серверный объект для актора Попробовал так еще. Пока непонятно ====== Но это получается серверный объект... А тот что в db.actor изначально клиентский что ли? ========= Стоп, а какие тогда методы и функции есть у серверных объектов? И возможно ли перегнать серверный объект в GameObject? Изменено 24 Марта 2014 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 1 Мая 2014 28.04.2014 в 20:50, malandrinus сказал: На очереди net_packet. Простой, но весьма важный класс. .......... Несколько замечаний: - Надо знать структуру нетпакета для того объекта, который Вы собираетесь изменить. При таких хирургических операциях запросто можно всё испортить. Это цитата от поста про object_binder и net_packet. Собственно вопрос: а как узнать структуру нет-пакета? Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 15 Мая 2014 Всем привет . Все еще не нашел решение следующей проблемы: "при спавне предмета на каком-нибудь этаже здания на столе(или другом объекте) он оказывается на земле. Координаты взяты из all.spawn. Спавн произвожу скриптом. P.S. Объекты "physic_destroyable_object" и "physic_object" спавнятся тютелька в тютельку." Как мне подсказал Сталкер Лом: Цитата предмет начинает использовать позицию низ\верхлежащей АИ-ноды. В СДК это выключается галками use_ai_location иvisible_for_ai, а вот как в аллспавне это делается - что то не припомню...Хотя можно попробовать убрать строки начинающиеся со слова upd: , они, обычно, в конце блока спавна объекта располагаются. Однако повторюсь, я пытаюсь спавнить через скрипт. Как быть не знаю... В lua_help нашел такой метод: function use_ai_locations(boolean); function use_ai_locations(boolean); Однако он не применим к классу game_object, то бишь к заспавненной вещице. Вроде бы и ситуация то простая совсем, но не знаю в каком напрвлении копать... Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 15 Мая 2014 Цитата "дырявых" местах Случайно не те места, где работает баг "лифт"? А по поводу не спавнить - не могу понять: сколько же уже модов было сделано на сталкер(причем людьми с разным опытом в модмейкерстве), так ведь спавнили скриптом все время и везде - никуда не проваливалось... Бред какой-то. Конечно на крайняк могу попробовать АИ-сетку пересобрать, но подставлять Node для каждой точки спавна - как-то примитивно. P.S. Спавню через скрипт, ибо мой спавн динамический, с постоянным обновлением и спавном по обстоятельствам. Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 15 Мая 2014 Dennis_Chikin,"game_object - это который создался в онлайне" - А это как?)) local obj = alife():create(item, pos_vector[1], pos_vector[2], pos_vector[3])local obj = alife():create(item, pos_vector[1], pos_vector[2], pos_vector[3]) obj - будет серверный объект, так ведь? Еще знаю можно клиентский получить так: obj = level.object_by_id(k)obj = level.object_by_id(k) А вот можешь подробнее пояснить свою фразу "game_object - это который создался в онлайне" , а то я что-то не догоняю) P.S. И где сейчас можно найти актуальную версию m_netpk? Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 16 Мая 2014 (изменено) *Shoker* Да ЗП, точнее мультиплеер ЗП) Цитата local sobj = alife():create(item, pos_vector[1], pos_vector[2], pos_vector[3]) sobj:use_ai_locations(false) Вылет. О не применимости метода к объекту. (attempt to call method "use_ai_locations" (a nil value) Я решил прикольнуться и сделал так: local item = alife():create(k, pos_vector[1], pos_vector[2], pos_vector[3]) se_item = alife():object(item.id) se_item:use_ai_locations(not se_item:used_ai_locations()) local item = alife():create(k, pos_vector[1], pos_vector[2], pos_vector[3]) se_item = alife():object(item.id) se_item:use_ai_locations(not se_item:used_ai_locations()) И... работает!!! Один вопрос: а в чем вся соль?(вроде же оба серверных объекта) Изменено 16 Мая 2014 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 20 Июня 2014 (изменено) Dennis_Chikin, А это чья структура? Изменено 20 Июня 2014 пользователем Старлей Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение
Старлей 88 Опубликовано 21 Июня 2014 Я предполагал, что это сталкер... Тогда вопрос в другом: откуда именно такой выбор типов переменных, под значения?(например pk:r_s32() -- money, почему s32?) Разве не такая структура? --========== cse_alife_trader_abstract ========== local money = packet:r_u32() local specific_character = packet:r_stringZ() local trader_flags = packet:r_h32() local character_profile = packet:r_stringZ() local community_index = packet:r_h32() local rank = packet:r_h32() local reputation = packet:r_h32() local character_name = packet:r_stringZ() --========== cse_alife_object ========== local game_vertex_id = packet:r_u16() local distance = packet:r_float() local direct_control = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_h32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local spawn_story_id = packet:r_s32() --========== cse_visual ========== local visual_name = packet:r_stringZ()--========== cse_alife_trader_abstract ========== local money = packet:r_u32() local specific_character = packet:r_stringZ() local trader_flags = packet:r_h32() local character_profile = packet:r_stringZ() local community_index = packet:r_h32() local rank = packet:r_h32() local reputation = packet:r_h32() local character_name = packet:r_stringZ() --========== cse_alife_object ========== local game_vertex_id = packet:r_u16() local distance = packet:r_float() local direct_control = packet:r_u32() local level_vertex_id = packet:r_u32() local object_flags = packet:r_h32() local custom_data = packet:r_stringZ() local story_id = packet:r_s32() local spawn_story_id = packet:r_s32() --========== cse_visual ========== local visual_name = packet:r_stringZ() А главный вопрос, вот в чем: в самом начале у Dennis_Chikin signed int, а у меня в этой штуковине(из acdc) unsigned int. По идее байты из пакета считаются одинаково и ошибки никакой не будет. А что если при считывании у money будет значение выходящее из диапазона s32, но входящее в u32? К чему я это - получается можно читать пакеты, зная только кол-во байт под какую переменную определенно, а уж signed/unsigned нужно только, если работать с этими значениями? P.S. Код выше, из NetPacketCreator, и я сам то еще не пойму, что такое r_h32()?! Ray Of Hope - кооператив сталкера OldStory Поделиться этим сообщением Ссылка на сообщение