Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Проблемка нарисовалась.. Менял в одном из квест модов dialogs путь к скриптам в прикондикшенах и актионах для адаптировки. В итоге получаю безлог при нажати F для разговора.
Вот такой ловлю стабильный вылет при попытке загрузить сохранение на локации/перейти на нужную локацию.
Код
[error]Arguments : LUA error: ...cop\gamedata\scripts\sim_squad_fighting.script:164: attempt to perform arithmetic on local 'relation' (a nil value)
Почитал справочник, сменил значение relation с пустого 0 до 1, так как в конце функции стояло relation*1000 Теперь ловлю такой:
Код
Expression : <no expression> Function : CScriptEngine::lua_error File : ..\xrServerEntities\script_engine.cpp Line : 189 Description : fatal error Arguments : LUA error: ...cop\gamedata\scripts\sim_squad_scripted.script:341: attempt to index global 'sim_squad_fighting' (a nil value)
local name1 = squad1:name() local name2 = squad2:name() local comm1 = squad_community_by_behaviour[squad1.player_id] local comm2 = squad_community_by_behaviour[squad2.player_id]
--if (string.find(name1,"rat") or string.find(name1,"tushkano")) then return 0 end --if (string.find(name2,"rat") or string.find(name2,"tushkano")) then return 0 end
if (comm1 == comm2) and (comm1 == "monster") then
local n1 = "boar" local n2 = "boar" local i1 = 1 local i2 = 1
for n,i in pairs(monster_list) do
if (string.find(name1,n)) then i1 = i n1 = n end
if (string.find(name2,n)) then i2 = i n2 = n end end relation = monster_relations_table[n1][i2] else local id1 = relations_list[comm1] local id2 = relations_list[comm2]
relation = relations_table[comm1][id2] end else return relation*1000 end
function get_squad_power(se_squad)
local power = 0 local name = se_squad:name()
if (string.find(name,"sim_squad")) then for n,k in pairs(community_power_list) do if (string.find(name,n)) then power = k end end for n,k in pairs(rank_power_list) do if (string.find(name,n)) then power = power*k end end elseif (string.find(name,"simulation")) then for n,k in pairs (monster_power_list) do if (string.find(name,n)) then power = k end end end
power = power*se_squad:npc_count()
return power end
function CheckFight(squad1, squad2)
if not (string.find(squad1:name(),"sim_squad") or string.find(squad1:name(),"simulation")) then return false end
if not (string.find(squad2:name(),"sim_squad") or string.find(squad2:name(),"simulation")) then return false end
if (squad1.online == true) or (squad2.online == true) then return false end
local rel = sim_squad_fighting.get_squad_relations(squad1,squad2) if (rel > -1000) then return false end
local distance = squad1.position:distance_to_sqr(squad2.position) if (distance > 100) then return false end
local power1 = sim_squad_fighting.get_squad_power(squad1) local power2 = sim_squad_fighting.get_squad_power(squad2)
if (power1 < power2*1.3) then return false end
return true end
function InitFight(squad1,squad2)
if not (squad1 and squad2) then return end
--printf("----FIGHT----")
while (squad1:npc_count() > 0) and (squad2:npc_count() > 0) do
local squad1_npcs = {} for k in squad1:squad_members() do squad1_npcs[#squad1_npcs+1] = k end
local squad2_npcs = {} for k in squad2:squad_members() do squad2_npcs[#squad2_npcs+1] = k end
if (#squad1_npcs == 0) or (#squad2_npcs == 0) then return end
if (DEV_DEBUG_DEV) then --printf(squad1:name()..":x"..#squad1_npcs.." VS "..squad2:name()..":x"..#squad2_npcs) end
local power1 = get_squad_power(squad1)*1.0 local power2 = get_squad_power(squad2)*1.0 local chance = 50
local chance = utils.round(100*power1/(power1+power2))
--printf(power1.."|"..chance.."|"..power2)
if (math.random(100) < chance) then squad2:remove_npc(squad2_npcs[#squad2_npcs].id) --printf(squad2:name().."'s unit lost")
else --end --if (math.random(100) > chance) then squad1:remove_npc(squad1_npcs[#squad1_npcs].id) --printf(squad1:name().."'s unit lost") end end end
Сообщение отредактировал AspirinSGD - Четверг, 10.01.2019, 23:42
makdm, да, проглядел - но не помогло особо, картина та же. Точнее, тогда совсем другой скрипт не может найти данный, в общем буду дальше разбираться, может где опечатка, хотя прогонял через lua-чекеры и ошибок не находило, кроме ссылок на ini.
Здраствуйте, мне на локации Кордон из ЧН надо удалить Wallmarks, но я не могу их выделить, а отображаются они как красные линии (после build-а). Уже выделял только вкладку wallmarks, пробовал через объект к которому он привязан. Но никак! Помогите пожалуйста! Мне это надо для нормальной компиляции.
Сообщение отредактировал AziatkaVictor - Пятница, 11.01.2019, 23:20
Подскажите, пожалуйста. Как сделать механика, что бы он не брал плату за ремонт. Такого , как в оригинальной ЗП, в Припяти военный механик в прачечной.
Да, я про Invalid faces. Но они у меня в sdk и отображаються только в вкладке wallmarks. Я отключал видимость у разных вкладок, и те самые красные линии были у wallmarks. Я не знаю что им не понравилось. Но при компиляции (после программы, в cmd файлах) мне пишет что на карте 9 Invalid faces. Вот я нашел их, но удалить не могу!
Не проигрывается диалог с НПС на котором стоит задание, испробывал всё.. В логике ссылался на его диалог, удалял инфопоршни или же ставил другие. Результата не дало никакого.
Подскажите как увеличить живучесть сталкерам и монстрам.А то дохнут пачками( урон оружия слегка увеличил).И еще один момент.Как убрать "халяву".В смысле,в чистом ЗП у нпс после смерти ну прямо до фига хабара.Хотелось бы поменьше сделать.
AziatkaVictor, если лень в редактор экспортировать, есть для компилятора ключ -skipinvalid. Тогда можно скомпилировать уровень хоть со 1000 Invalid faces, но тогда возможны другие проблемы уже в игре.