Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
А не подскажете, какой файл редактировать (команду прописывать)?
У меня такой скрипт стоит отдельным файлом .script в gamedata/scripts. Можешь поглядеть, подогнать. Но у меня тут еще куча лишнего (зараженная еда, всякое разное питание)
last_drink, start_blur_1 = nil,nil -- to change defaults, edit below in 'create' function local items,force,start_blur_2,start_blur_3,start_blur_4,itn_mul,pwr_rate,rng_factor,caff_max,die_chance,last_drink_chk,pwr_chk,force_slp
function destroy() UnregisterScriptCallback("actor_on_update",actor_on_update) UnregisterScriptCallback("actor_on_item_use",actor_on_item_use) if (USE_MARSHAL) then UnregisterScriptCallback("save_state",save_state) UnregisterScriptCallback("load_state",load_state) end alife_storage_manager.get_state().drink = nil end
function on_game_start() -- if (axr_main.config:r_value("mm_options","enable_sleep_deprived",1,false) == false) then -- return -- end create() end
function save(package) if (USE_MARSHAL) then return end package:w_u8(last_drink) package:w_u16(last_drink_chk) end function load(package) if (USE_MARSHAL) then return end last_drink = package:r_u8() or 0 last_drink_chk = package:r_u16() or 0 end --//--------------------------------------------------------------//-- function save_state(m_data) if (USE_MARSHAL) then m_data.drink = m_data.drink or {} m_data.drink["last_drink"] = last_drink m_data.drink["chk_drink"] = last_drink_chk end end
function load_state(m_data) if (USE_MARSHAL) then last_drink = m_data.drink and m_data.drink.last_drink or 0 last_drink_chk = m_data.drink and m_data.drink.chk_drink or nil end end
function actor_on_item_use(item) for i,j in pairs(items) do if item:section() == i then -- log('!Использован предмет: '..item:section()..' Изменение жажды на: '..j..' Жажды до: '..last_drink) if j < 0 then last_drink = last_drink + j if last_drink < 0 then last_drink = 0 end test_blur() break elseif j > 0 then last_drink = last_drink + j if last_drink > 1000 then last_drink = 1000 end test_blur() break end end end end
function actor_on_update(b,d) -- printf("last_drink_chk=%s last_drink=%s",last_drink_chk and game.get_game_time():diffSec(last_drink_chk) or "nil",last_drink) if last_drink > start_blur_1 then local tg = time_global() if (pwr_chk == nil or tg > pwr_chk) then if (db.actor.power > 0) then db.actor.power = pwr_rate*((last_drink-start_blur_1)*rng_factor)/10 db.actor.health = pwr_rate*((last_drink-start_blur_1)*rng_factor)/100 end pwr_chk = tg+100 end end if (last_drink_chk and game.get_game_time():diffSec(last_drink_chk) < 300) then indicator_update() return end last_drink_chk = game.get_game_time() -- log('!Обычное повышение жажды на 6. Жажды до: '..last_drink) last_drink = last_drink + up_drink if last_drink < 0 then last_drink = 0 elseif last_drink > 1000 then last_drink = 1000 end test_blur() end
function test_blur() level.remove_pp_effector(39568) if last_drink >= start_blur_1 then level.add_pp_effector("yantar_underground_psi.ppe", 39568, false) if last_drink >= start_blur_1 and last_drink < start_blur_2 then level.remove_pp_effector(39568) -- level.set_pp_effector_factor(39568, (last_drink-start_blur_1) * itn_mul) elseif last_drink >= start_blur_2 and last_drink < start_blur_3 then level.set_pp_effector_factor(39568, (last_drink-start_blur_1) * itn_mul) SetHudMsg(game.translate_string("Вы давно не пили и должны попить"),3) elseif last_drink >= start_blur_3 and last_drink < start_blur_4 then level.set_pp_effector_factor(39568, (last_drink-start_blur_1) * itn_mul) SetHudMsg(game.translate_string("Вы давно не пили и должны попить"),5) elseif last_drink >= start_blur_4 and last_drink < force then level.set_pp_effector_factor(39568, (last_drink-start_blur_1) * itn_mul) elseif last_drink >= force and math.random(100) <= force_slp and not db.actor:has_info("actor_is_sleeping")==true then db.actor:give_info_portion("force_slp") force_sleep() SetHudMsg(game.translate_string("Вы крайне истощены - необходимо попить!"),5) end end end
function force_sleep() ui_sleep_dialog.sleep_forced() if math.random(100) < die_chance then SetHudMsg(game.translate_string("st_sleep_deprived"),5) db.actor:kill(db.actor) end disable_info("force_slp") end --'----------------------------------------------------------------------------- --' INDICATORS NEW --'----------------------------------------------------------------------------- local d_hud={ x=990, y=500, height=25, weight=25} function indicator_update(bShow) local hud=get_hud() local drk=hud:GetCustomStatic("indicator_drink") local wnd if(bShow==false or db.actor:is_talking() )then if(drk~=nil)then hud:RemoveCustomStatic("indicator_drink") drk=nil end return end if(drk==nil)then hud:AddCustomStatic("indicator_drink",true) drk=hud:GetCustomStatic("indicator_drink") wnd=drk:wnd() if(wnd~=nil)then wnd:SetWndPos(vector2():set(d_hud.x,d_hud.y)) if utils.is_widescreen() then wnd:SetWndSize(vector2():set(d_hud.weight-7,d_hud.height)) else wnd:SetWndSize(vector2():set(d_hud.weight,d_hud.height)) end wnd:SetAutoDelete(true) end end if(drk~=nil)then wnd=drk:wnd() wnd:InitTexture(get_color_drink()) end end
function get_color_drink() local textures={ [0]="ui_inGame2_circle_drink_empty", [1]="ui_inGame2_circle_drink_green", [2]="ui_inGame2_circle_drink_yellow", [3]="ui_inGame2_circle_drink_orange", [4]="ui_inGame2_circle_drink_red" } local color=0 if last_drink>start_blur_4 then color=4 elseif last_drink>start_blur_3 then color=3 elseif last_drink>start_blur_2 then color=2 elseif last_drink>start_blur_1 then color=1 elseif last_drink<start_blur_1 then color=0 end if color2~=color then -- log('!СМЕНА ИКОНКИ!') end color2=color -- log('@'..textures[color]) return textures[color] end
Сообщение отредактировал Warpony_Garro - Среда, 08.01.2020, 20:02
Возможно ли в Зове Припяти воссоздать древнюю систему, позволяющую лечить противников и переводить их в последствии на свою сторону? Как это будет работать с системой сквадов? Какие возможны ошибки и препятствия?
Цитата Stalker_Одиночка () А не подскажете, какой файл редактировать (команду прописывать)?
У меня такой скрипт стоит отдельным файлом .script в gamedata/scripts. Можешь поглядеть, подогнать. Но у меня тут еще куча лишнего (зараженная еда, всякое разное питание)
В файле actor.ltx прописать или создать отдельный файл?
Можно ли обойти ограничение размера lod-текстур уровня и сделать размером больше, чем 4096х2048?
Добавлено (09.01.2020, 10:05) --------------------------------------------- Или же, как можно избежать такого вылета при билде локации в СДК на стадии Merge LOD texture
FATAL ERROR
[error]Expression : fatal error [error]Function : out_of_memory_handler [error]File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp [error]Line : 335 [error]Description : <no expression> [error]Arguments : Out of memory. Memory request: 262144 K
Возможно ли в Зове Припяти воссоздать древнюю систему, позволяющую лечить противников и переводить их в последствии на свою сторону?
Да, для этого достаточно разблокировать диалог выдачи аптечки враждебным НПС.
ЦитатаLektorrr ()
Как это будет работать с системой сквадов?
Точно также, как это и работало: у каждого НПС индивидуальное отношениее к ГГ, а отношение сквада - это среднее отношение его членов к ГГ для онлайна или отношение группировки сквада для офлайна.
ЦитатаLektorrr ()
Какие возможны ошибки и препятствия?
Препятствий нет, а ошибки исключительно логические. Бессмертный, Установите патч для SDK на увеличение размера LOD текстур, или же установите обновленную версию SDK со всеми апгрейдами.
Установите патч для SDK на увеличение размера LOD текстур, или же установите обновленную версию SDK со всеми апгрейдами.
Дело в том, что уже использую версию СДК со всеми апгрейдами. И все равно получаю эту ошибку на этапе билда локации. Может ли он быть вызван чрезмерным обилием объектов на локации с уникальными лодами, или в принципе, слишком большим количеством объектов?
Policai, да, версия самого СДК вроде как V2 от DaaGuda. Накатил сейчас сверху на всякий фикс ошибки на этапе Merge LOD от макрона, результат тот же - вылет на построении лод-текстуры.
Ну незнаю, если 16 гигов оперативки. что должно вышибать сдк..)) У меня ни разу небыло такого, хотя все локи компилю на максимальном качестве освещения 20... Попробуйте убрать из папки лодов ненужные текстуры от других лок...
Значит единственный выход ограничить количество уникальных LOD-объектов. Не объектов статики в целом, ни в количестве LOD-объектов в общем. Именно в количестве уникальных, для которых нужна собственная LOD текстура в сетке LOD-ов.
ЦитатаБессмертный ()
версия самого СДК вроде как V2 от DaaGuda. Накатил сейчас сверху на всякий фикс ошибки на этапе Merge LOD от макрона
Это бессмысленно, данная сборка SDK уже его содержит!
ЦитатаPolicai ()
Попробуйте убрать из папки лодов ненужные текстуры от других лок...
Это не поможет в лечении данного вылета. Избыток текстурных объектов приводит к вылету на этапе загрузки самого SDK, а не на этапах билда локации.
ЦитатаPolicai ()
У меня ни разу небыло такого, хотя все локи компилю на максимальном качестве освещения 20
Причем здесь вообще качество компиляции!? Ежели речь идет о билде LOD-текстуы?
Сообщение отредактировал denis2000 - Четверг, 09.01.2020, 12:08
Народ! Сори если вопрос глупый. Всем известно что движок оригинал ЗП 1.6.2 вроде как использует только одно ядро у процессора, а почему статистика показывает загрузку процессора 50-55% получается используется 2 ядра из 4? значит движок использует не ядра а потоки, или я что то неправильно понимаю?
Policai, Определимся с терминами: 1. Сейчас нет такого понятия как ядро, сейчас архитектура CPU содержит несколько вычислительных модулей, которые способны обрабатывать по два и более потока. (Есть процессоры в которых один вычислительный модуль - один поток). 2. Поток со стороны приложения - это набор инструкций которые могут выполняться строго последовательно, приложение как правило имеет в своей структуре несколько потоков, но это еще не значит что выполняться они будут строго параллельно, некоторые потоки зависимы друг от друга и приостанавливают свое выполнение ожидая данных от других потоков.
Теперь к X-Ray 1.6.02. Приложение имеет несколько потоков, как несложно убедиться в этом заглянув в монитор ресурсов ОС (там указано свыше 30 потоков). Но основной жрущий ресурсы поток всего один (я так понимаю отвечает за основные функции, рендер и физику) остальные хоть и выполняются параллельно, но зависят от основного и чаще ожидают от него данные нежели выполняются. Поэтому структура загрузки вычислительных блоков такая: один модуль - основной поток на 100%, еще один модуль/модули загружены минимально.
Сообщение отредактировал denis2000 - Четверг, 09.01.2020, 19:03
Добрый вечер. Прописываю в смартах и симуляции проверки на инфопорции, дабы НПС и монстры не спавнились и не приходили на них до определенного момента. Однако почему-то игра полностью игнорирует их и делает всё наоборот. С чем это может быть связано?
В конфиге смарта:
Цитата
spawn_num = {-q10_activate_smarts} 0, 1
В simulation_object_props:
Цитата
sim_avail = {-q10_activate_smarts} false, true
Сообщение отредактировал Lektorrr - Четверг, 09.01.2020, 18:51