Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Здравствуйте. Играл в CoC и возникла идея немного оживить своих спутников. Хочу сделать компаньенам логику определенных действий при определенном приказе. Если конкретно, то хочу что бы при указе ждать и игнорировать бой (или в идеале вобще отдельную команду "Привал"), они не просто торчали на месте до следующих указаний, а располагались в небольшом радиусе, курили, сидели на заднице, пили, ели, спали ну и прочие НПЦшные анимации. Загвоздка в том, что хочу провернуть это не цепляясь к статичным Локациям, Смартам и Гулагам. Тоесть, что бы точка привала была динамичной и брала координаты расположения из текущей позиции актора или самого непися. Ну и создавала на ней смарт с логикой, на котором соратнички бы отдыхали допустим. Сколько не ковырялся в существующих конфигах и скриптах, не смог найти как совершить задуманное. Штудируя гугл нашел гайд как можно сделать логику без смарта, которая зависит только от указанного вертекса. Но тем не менее вертекс этот прописан в логике и, опять же, статичный выходит. Сам я не погромист, буквально на месте учусь интуитивно, но всех тонкостей еще не знаю. Мб туплю и есть какая-то команда, которая может подтягивать необходимый вертекс в конфиг логики. Или все эти фантазии вобще невозможно провернуть??
А не подскажете, какой файл редактировать (команду прописывать)?
У меня такой скрипт стоит отдельным файлом .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