Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 (изменено) Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском.Возможно, ответ на Ваш вопрос уже есть.Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. Изменено 23 Февраля 2016 пользователем warwer 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Kondr48 314 Опубликовано 6 Августа 2016 Поделиться Опубликовано 6 Августа 2016 Silver Raven, оригинальная версия, кстати, может не запускаться перед стартовым роликом. Вы проверьте при загрузке сейвов или переходе на другую локацию. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 (изменено) Такой вопрос. Имеем интересную проблему - на определенной локации( именно на одной, на других такого нет ) при перезагрузке сева, или выхода с локации - вылет. Всё бы ничего,но: 1.Вылетает (при перезагрузке сейва ) еще до стадии синхронизации. Лог - пуст. Работал с выводом лога в _g.script - последнее что было - disconnect, ссылок на глючные обьекты нет. 2.Если выйти с локации - то же самое, вылет происходит до того, как игра начинает грузить новую локацию, т.е мое мнение - игровые обьекты не при чем. 3.Сейвы не бьються от таких вылетов. Может кто встречался с такой проблемой. (1.0004+OGSM) Вот момент перехода с локации на другую: * Log file has been saved successfully!* Saving spawns...* Saving objects...* 16733 objects are successfully saved* Game я_autosave.sav is successfully saved to file 'c:\documents and settings\all users\documents\stalker-shoc\savedgames\я_autosave.sav'* DVB created: 1536K* DIB created: 512K- r__tf_aniso 1- r1_tf_mipbias 0.* SSample: 1024x768* SSample: enabled* GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30)* GPU vertex cache: recognized, 32*** RESET [179 ms]- Disconnect! Unknown command: [smart_terrain_agr_rush]_gulag:_object_setup_offline:_obj=val_dog_weak Изменено 7 Августа 2016 пользователем CRAZY_STALKER666 Не соответствует правилам. Ссылка на комментарий
dsh 3 820 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 (изменено) А вот это последняя строчка лога, она не сигнализирует о проблеме? В том смарте действительно может находится тот объект? Так, на всякий случай. Изменено 7 Августа 2016 пользователем dsh dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 @dsh, отвечу. В смарте проблем нет. А если бы и были - вылетало бы нет. При самой то игре - сколько не бегай вылетов не будет... Для наглядности - это ПЫС смарт. Тут и ломаться вроде нечему... [2350]; cse_abstract propertiessection_name = smart_terrainname = agr_rushposition = 213.398498535156, 20.5153751373291, 77.0153503417969direction = 0.0470287166535854, 0.00845688115805388, -0.177990615367889id = 65535version = 118script_version = 6spawn_id = 1629; cse_alife_object propertiesgame_vertex_id = 501distance = 11.9level_vertex_id = 413648object_flags = 0xffffff3ecustom_data = <[smart_terrain]type = general_laircommunities = dogcapacity = 5;switch_0 = {=gulag_empty(agr2_st_factory)};switch_1 = {=gulag_population_ge(agr_rush:5) !gulag_empty(agr2_st_factory)}END; cse_shape propertiesshapes = 1shape_0:type = sphereshape_0:offset = 0,0,0shape_0:radius = 5; cse_alife_space_restrictor propertiesrestrictor_type = 0; se_smart_terrain properties Не соответствует правилам. Ссылка на комментарий
Silver Raven 197 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 (изменено) Оказывается автопауза после загрузки левела аля ЗП не совместима с этой правкой: -- ------------------------------------------------------------------------------------------------------------------- -- Схема удаления, в начале игры, всех объектов ставящих себе ID от левелчейнжера в качестве PARENT_ID -- © 2015 by makdm, Zander_driver -- ------------------------------------------------------------------------------------------------------------------- local parent_id = {} local remove_sobj = {} local i = 1 -- Пробегаем по объектам и айдишники всех level_changer помещаем в таблицу while i < 65535 do local sobj = alife():object( i ) if sobj and sobj:clsid() == clsid.level_changer then parent_id[ sobj.id ] = sobj.id end i = i + 1 end -- Пробегаем по объектам и все child level_changer помещаем в таблицу for n = 1, 65534 do local sobj = alife():object( n ) if sobj then for k,v in pairs( parent_id ) do if sobj.parent_id == v then table.insert(remove_sobj, sobj.id) end end end end --Удаляем child level_changer for _k,_v in pairs( remove_sobj ) do local sobj_for_remove = alife():object(_v) if sobj_for_remove then alife():release(sobj_for_remove, true) end end Я попробовал перенести выполнение функции на скажем так, более поздний срок: Выдать инфопоршень когда игрок уже нажал любую клавишу для перехода к игре: function mm_on_kbd(mm,dik, keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if mm.start_btn then level.show_indicators() level.set_snd_volume(mm.sv) _G.ui_main_menu.main_menu.OnKeyboard = _G.ap_mm_on_kbd _G.ui_main_menu.main_menu.Update = _G.ap_mm_upd get_console():execute("main_menu off") db.actor:give_info_portion("game_started") -- отсрочка работы "чистильщика" объектов ставящих себе ID от левелчейнжера в качестве PARENT_ID end end return mm.start_btn~=nil end local parent_id = {} local remove_sobj = {} local i = 1 -- Пробегаем по объектам и айдишники всех level_changer помещаем в таблицу if has_alife_info("geme_started") then -- отсрочка работы "чистильщика" объектов ставящих себе ID от левелчейнжера в качестве PARENT_ID while i < 65535 do local sobj = alife():object( i ) if sobj and sobj:clsid() == clsid.level_changer then parent_id[ sobj.id ] = sobj.id end i = i + 1 end -- Пробегаем по объектам и все child level_changer помещаем в таблицу for n = 1, 65534 do local sobj = alife():object( n ) if sobj then for k,v in pairs( parent_id ) do if sobj.parent_id == v then table.insert(remove_sobj, sobj.id) end end end end --Удаляем child level_changer for _k,_v in pairs( remove_sobj ) do local sobj_for_remove = alife():object(_v) if sobj_for_remove then alife():release(sobj_for_remove, true) end db.actor:disable_info_portion ("geme_started") -- отсрочка работы "чистильщика" объектов ставящих себе ID от левелчейнжера в качестве PARENT_ID end end Игра сваливается с логом: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...e.r. - trilogy\shoc\gamedata\scripts\xr_logic.script:1143: attempt to index local 'obj' (a nil value) Как бы их совместить? З.Ы. Есть функция скрывающая курсор с экрана? (level.hide_indicators() в этом не помогает) Изменено 7 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 Добрый день. Как вывести информацию в консоль? Ссылка на комментарий
Wlad777 24 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 @dsh, отвечу. В смарте проблем нет. А если бы и были - вылетало бы нет. При самой то игре - сколько не бегай вылетов не будет... Для наглядности - это ПЫС смарт. Тут и ломаться вроде нечему... У тебя банальная опечатка в аллспавне, вот и не работает нормально. Вот это: custom_data = <[smart_terrain] --------------------------------- www.amk-zone.de Ссылка на комментарий
Kondr48 314 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 Kober(BRUC) get_console():execute("информация") 1 Ссылка на комментарий
Firebird 0 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 не совместима с этой правкой Не так давно сталкивался с той же проблемой. В итоге, просто вырезал эту схему.Помимо всего прочего, игра с регулярной периодичностью валилась с однотипным логом: Expression : e_entity->ID_Parent == id_parentFunction : xrServer::Process_event_rejectFile : E:\stalker\sources\trunk\xr_3da\xrGame\xrServer_process_event_reject.cppLine : 23Description : medkit_army24329Arguments : esc_specnaz5 Были проблемы и у нпс, когда из-за подобных ошибок они начинали бесконечно перезаряжаться. Ссылка на комментарий
Silver Raven 197 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 (изменено) @Firebird, ок, пока отрежу. Немного переработал часть скрипта автопаузы аля ЗП, для совместимости с движковой правкой, растягивающей интро текстуры на весь экран: ------------------- ДО: function on_mm_init(mm) if level.present() and _G.press_any_key_on_start then _G.press_any_key_on_start = false level.hide_indicators() mm.start_btn = CUIStatic() mm.start_btn:SetWndRect(Frect():set(0,0,1024,768)) mm.start_btn:InitTexture("ui\\ui_load") mm.start_btn:SetText("Нажмите любую клавишу для перехода к игре") mm.start_btn:SetTextAlign(CGameFont.alCenter) mm.start_btn:SetTextY(695) mm.start_btn:SetFont(GetFontGraffiti22Russian()) mm.alpha = 255 mm:AttachChild(mm.start_btn) mm:Show(false) mm.sv = level.get_snd_volume() mm.tmr = profile_timer() -- создаем таймер mm.tmr:start() -- запускаем его mm.last_time = 0 -- инициализируем время последнего апдейта _G.ui_main_menu.main_menu.__init = _G.ap_mm_init -- картинка загружаемой локации mm.level_intro = CUIStatic() if device().aspect_ratio >= 0.75 then mm.level_intro:SetWndRect(Frect():set(257,369,512,256)) mm.level_intro:InitTexture("intro\\intro_"..level.name()) else mm.level_intro:SetStretchTexture(true) mm.level_intro:SetWndRect(Frect():set(257,370,257+512,370+256)) mm.level_intro:InitTexture("intro\\intro_"..level.name()) end mm:AttachChild(mm.level_intro) end end ------------------- ПОСЛЕ: function on_mm_init(mm) if level.present() and _G.press_any_key_on_start then _G.press_any_key_on_start = false level.hide_indicators() mm.start_btn = CUIStatic() mm.start_btn:SetStretchTexture(true) mm.start_btn:SetWndRect(Frect():set(0,0,1024,768)) mm.start_btn:InitTexture("intro\\intro_"..level.name()) mm.start_btn:SetText("Нажмите любую клавишу для перехода к игре") mm.start_btn:SetTextAlign(CGameFont.alCenter) mm.start_btn:SetTextY(695) mm.start_btn:SetFont(GetFontGraffiti22Russian()) mm.alpha = 255 mm:AttachChild(mm.start_btn) mm:Show(false) mm.sv = level.get_snd_volume() mm.tmr = profile_timer() -- Создаем таймер mm.tmr:start() -- Запускаем его mm.last_time = 0 -- Инициализируем время последнего апдейта _G.ui_main_menu.main_menu.__init = _G.ap_mm_init end end На чистой игре работает стабильно, на моей сборке косячит: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ... - trilogy\shoc\gamedata\scripts\bind_stalker.script:490: attempt to concatenate field '?' (a nil value) (строка 490: get_console():execute("g_game_difficulty "..game_difficulty_by_num[game_difficulty]) - причем тут сложность игры, как ее "цепляет"?) Вроде, поменял по-мелочи... Изменено 7 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
Kondr48 314 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 Silver Raven, киньте правленый скрипт хоть. Хотя не понимаю как так можно исправить четыре цифры)) Скорее всего ошибка в синтаксисе. Ссылка на комментарий
Silver Raven 197 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 @Kondr48, ошибок в синтаксисе нет, я в первую очередь проверил Script Syntax Checker-ом. _G.press_any_key_on_start = true -- мод включен - true/false - мод выключен local function inj_mm_init(func_name) local name = "ap_mm_init" _G[name] = _G.ui_main_menu.main_menu.__init _G.ui_main_menu.main_menu.__init = function(...) _G[name](...) local arg={...} loadstring('return _G["'..string.gsub(func_name,"%.",'"]["')..'"]')()(arg[1]) end end local function inj_mm_upd(func_name) local name = "ap_mm_upd" if not _G.ui_main_menu.main_menu.Update then _G.ui_main_menu.main_menu.Update = function()end end _G[name] = _G.ui_main_menu.main_menu.Update _G.ui_main_menu.main_menu.Update = function(...) _G[name](...) local arg={...} loadstring('return _G["'..string.gsub(func_name,"%.",'"]["')..'"]')()(arg[1]) end end local function inj_mm_on_kbd(func_name) local name = "ap_mm_on_kbd" _G[name] = _G.ui_main_menu.main_menu.OnKeyboard _G.ui_main_menu.main_menu.OnKeyboard = function(...) local arg={...} if not loadstring('return _G["'..string.gsub(func_name,"%.",'"]["')..'"]')()(arg[1],arg[2],arg[3]) then return _G[name](...) end return true end end function main() if _G.press_any_key_on_start then inj_mm_init("autopause.on_mm_init",true) inj_mm_upd("autopause.mm_update",true) inj_mm_on_kbd("autopause.mm_on_kbd",true) inj.inj_update("autopause.on_upd",true) end end function on_mm_init(mm) if level.present() and _G.press_any_key_on_start then _G.press_any_key_on_start = false level.hide_indicators() mm.start_btn = CUIStatic() mm.start_btn:SetStretchTexture(true) mm.start_btn:SetWndRect(Frect():set(0,0,1024,768)) mm.start_btn:InitTexture("intro\\intro_"..level.name()) mm.start_btn:SetText("Нажмите любую клавишу для перехода к игре") mm.start_btn:SetTextAlign(CGameFont.alCenter) mm.start_btn:SetTextY(695) mm.start_btn:SetFont(GetFontGraffiti22Russian()) mm.alpha = 255 mm:AttachChild(mm.start_btn) mm:Show(false) mm.sv = level.get_snd_volume() mm.tmr = profile_timer() -- Создаем таймер mm.tmr:start() -- Запускаем его mm.last_time = 0 -- Инициализируем время последнего апдейта _G.ui_main_menu.main_menu.__init = _G.ap_mm_init end end function mm_update(mm) if mm.tmr then mm.tmr:stop() if mm.tmr:time() - mm.last_time > 6000 then -- Чем больше значение, тем медленнее моргание надписи mm.last_time = mm.tmr:time() mm.start_btn:SetTextColor(mm.alpha,159,142,126) if mm.alpha > 250 then mm.step = -2 elseif mm.alpha < 60 then mm.step = 2 end mm.alpha = mm.alpha + mm.step end mm.tmr:start() get_console():hide() end end function mm_on_kbd(mm,dik, keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if mm.start_btn then level.show_indicators() level.set_snd_volume(mm.sv) _G.ui_main_menu.main_menu.OnKeyboard = _G.ap_mm_on_kbd _G.ui_main_menu.main_menu.Update = _G.ap_mm_upd get_console():execute("main_menu off") db.actor:give_info_portion("game_started") end end return mm.start_btn~=nil end function on_upd() if device().precache_frame<3 then inj.inj_update("autopause.on_upd",false) if _G.g_start_avi then _G.ui_main_menu.main_menu.__init = _G.ap_mm_init _G.ui_main_menu.main_menu.OnKeyboard = _G.ap_mm_on_kbd _G.ui_main_menu.main_menu.Update = _G.ap_mm_upd else get_console():execute("main_menu 1") end end end aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 @Wlad777, допустим... смарт я снес. НО - ошибки в логике чреваты вылетами с руганью на формат. А тут они только в конкретной ситуации - сейв\лоад(и переход с локи). При заходе на нее вылета небыло ни разу.Странно, не находите? проверил Script Syntax Checker-ом. Огорчу - он не все ошибки видит...Личный опыт.Могу пример скрипта скинуть - ошибок чекер не показывает, но вызвать функцию из скрипта невозможно - вылетает... Не соответствует правилам. Ссылка на комментарий
UnLoaded 313 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 (изменено) Такой вопросец по универсальным лагерям: есть такой смарт [smart_terrain] type = general_lair capacity = 7 communities = boar switch_0 = {=gulag_empty(gar_dolg_blokpost)} switch_1 = {=gulag_population_comed_ge(gar_smart_boars:5) !gulag_empty(gar_dolg_blokpost)} stay = long есть такие пути gar_smart_boars_home_1 gar_smart_boars_home_2 gar_smart_boars_raid_1 Разъясните плиз, как эти пути связаны с переключателями состояний смарта. Переключателей 2 а путей 3, как это понимать ? Только на Вики не отправляйте, я там читал - ниче не понял. Изменено 7 Августа 2016 пользователем UnLoaded Ссылка на комментарий
Silver Raven 197 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 (изменено) Огорчу - он не все ошибки видит... Личный опыт. Могу пример скрипта скинуть - ошибок чекер не показывает, но вызвать функцию из скрипта невозможно - вылетает... Ну увы, мои глаза точно не лучше Script Syntax Checker-а. Если кто заметит ошибку в коде, надеюсь укажет здесь. (весь скрипт целиком в моем прошлом посте) Изменено 7 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Ссылка на комментарий
dsh 3 820 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 @UnLoaded, из того, что я вижу в имеющемся скрипте. На каждый путь home будет создано 10 работ. Т.е. этот смарт может принять максимум 20 кабанов. Полагаю, что первые 10 будут первый путь использовать, а вторые 10 - второй. Но так-как смарту указана емкость 7, вероятно, что все 7 будут использовать первый путь. Далее посмотрим на raid пути. Для каждого пути создается 5 работ. И вот тут должен быть вылет, т.к. емкость смарта ( 7 ) больше, чем кол-во работ для raid-а. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Карлан 1 049 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 Разъясните плиз, как эти пути связаны с переключателями состояний смарта. Переключателей 2 а путей 3, как это понимать ? Только на Вики не отправляйте, я там читал - ниче не понял. Хом работает на обоих стейтах, рейд только на первом. Как ты вообще связываешь пути и стейты? Это два разных понятия. У тебя может быть один стейт и десятки путей, и никаких переключателей вообще не будет. И тут все очевидно, если в гулаг приперлись 5 кабанов и на блокпосте есть мужики, то переключится в первый стейт и рейдить в их сторону чтобы сожрать. Как сожрали валить обратно. Что тут может быть не ясного? Точка сбора, путь атаки, точка после атаки, это логично. Могу ошибаться, но как я понял это реализация такого регулярного набега на блокпост, как гулаг собирает кабанов и есть кого жрать - начинается набег. И вот тут должен быть вылет, т.к. емкость смарта ( 7 ) больше, чем кол-во работ для raid-а. Я же сказал о прекондишне, какой еще вылет? Кабаны набираются на рейд и свитчятся в рейд, далее валят обратно, емкость гулага искусственно поддерживается. Ссылка на комментарий
Возрождённый 355 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 Перезаселяю глобально Зону и столкнулся с такой проблемкой. На насыпи, есть лагерь военных (все мы прекрасно знаем) и когда наступает ночь трое из вояк уходят к костру. Как сделать, чтобы они и днем тоже сидели у костра? Я в основном использую general_lager и general_lair, поэтому мне пока сложно разобраться в гулагах такого типа, как на насыпи. На вики почитал, не совсем разобрался. Добавлено HellRatz, 8 Августа 2016 Что бы сидели и днем и ночью просто, не ходили? Посмотри логику "kamp". Работы butcher_512. Все ссылки пропали, поэтому ложу свои сюда, чтобы никогда не потерять: Customization Pack 0.83 [Beta4] - SoC - Тема модификации. Customization Pack CoP [Beta] - CoP - Тема модификации. Ссылка на комментарий
dsh 3 820 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 @Карлан, ну какой вылет, какой. Простой вылет: for i, v in ipairs( jobs_avail_in_states ) do if v < self.capacity then print_table( self.Job ) abort( "[smart_terrain %s] type=%s state=%d capacity=%d: too few absolutely available jobs", self.name, self.type, i, self.capacity ) end end end dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Карлан 1 049 Опубликовано 7 Августа 2016 Поделиться Опубликовано 7 Августа 2016 ну какой вылет, какой. Простой вылет: Ты что-то не так понял, эта функция нигде не вызывается, этот вылет невозможен. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти