1. Вопрос должен соответствовать выбранной Вами темы. 2. Изучите то, что уже есть в теме (воспользуйтесь поиском на форуме). 3. Указывайте необходимую информацию: чистая игра ТЧ или с установленным модом (указать какой). 4. Для того, чтобы было понятно в чем ошибка, приводите коды (оформленные соответствующем образом). 5. Вопросы по SDK задаем в этой теме.
Сообразно опубликованному здесь сборнику модостроения я решил сделать полоску здоровья, меняющую цвет.В финарной части статьи было написано: 5. Открываем файл bind_stalker.script и пишем после:
..... level_tasks.add_lchanger_location()
self.bCheckStart = false end
следующее: new_hud_health.update()
после этой строчки должно стоять end, проверьте. Я сделал, как было сказано.В итоге у меня получилось так: level_tasks.add_lchanger_location()
self.bCheckStart = false end new_hud_health.update() end. Но при запуске игра вылетает с таким логм: Expression : fatal error Function : CScriptEngine::lua_error File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp Line : 73 Description : <no expression> Arguments : LUA error: ...g\s.t.a.l.k.e.r\gamedata\scripts\bind_stalker.script:339: attempt to index global 'new_hud_health' (a nil value). Что я сделал не так?
Сообразно опубликованному здесь сборнику модостроения
Где здесь? Вот захотелось попробовать помочь, но вот искать данный урок мне совсем не улыбается. Приведи ссылку на урок и приведи свой new_hud_health.script, т.к. ошибка могла закрасться и туда.
-- записываем переменную function save_variable(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end
-- загружаем переменную function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end
-- удаляем переменную function del_variable(variable_name) if db.storage[db.actor:id()].pstor[variable_name] then db.storage[db.actor:id()].pstor[variable_name] = nil end end
-- координаты(параметры) x, y, width, height local pbg = {x=0,y=0,w=0,h=0} --/ bg local plv = {x=0,y=0,w=0,h=0} --/ lv
local skl_w = -1 --/ текущая длина шкалы local wide = false --/ текущий режим экрана
local color = 0 local change_color = false local change_wpn = false local hud_show = false
function update(bShow) local hud = get_hud() local cs_bg = hud:GetCustomStatic("hud_health_bg") local cs_lv = hud:GetCustomStatic("hud_health_lv")
if (load_variable("opt_hp",true) == false or bShow == false) then if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end return save_variable("opt_hp",false) end
local hp = db.actor.health
if (hp == nil or hp == 0) then if hud_show == false then --/ рамку можно не стирать при смене оружия if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end end if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end return end
-- проверка смены режима экрана if wide ~= db.wide then wide = db.wide if cs_bg then hud:RemoveCustomStatic("hud_health_bg") end if cs_lv then hud:RemoveCustomStatic("hud_health_lv") end cs_bg, cs_lv = nil, nil end
local cur_hud = "hud_health_bg" if cs_bg == nil then hud:AddCustomStatic(cur_hud, true) cs_bg = hud:GetCustomStatic(cur_hud) local wnd = cs_bg:wnd() if wnd then pbg = read_params(cur_hud) wnd:SetWndPos(pbg.x,pbg.y) wnd:SetWidth (pbg.w) wnd:SetHeight(pbg.h) wnd:SetAutoDelete(true) end end
cur_hud = "hud_health_lv" if cs_lv == nil then hud:AddCustomStatic(cur_hud, true) cs_lv = hud:GetCustomStatic(cur_hud) local wnd = cs_lv:wnd() if wnd ~= nil then plv = read_params(cur_hud) wnd:SetWndPos(pbg.x+plv.x,pbg.y+plv.y) wnd:SetWidth (skl_w) wnd:SetHeight(plv.h) wnd:SetAutoDelete(true) change_color = true --/ смена цвета end end
if cs_lv ~= nil then local hp_w = math.floor(hp * plv.w) if hp_w ~= skl_w then if hp_w < 1 then skl_w = -1 else skl_w = hp_w end end local texture_c = get_texture(hp) local wnd = cs_lv:wnd() wnd:SetWidth(skl_w) --/ Set Level Condition wnd:InitTexture(texture_c) --/ Set ColorTexture wnd:SetText(string.format(math.floor(hp*100+0.0001)).."%") end
end
function read_params(cur_hud) local ltx = ini_file("scripts\\new_hud_health.ltx") local section = cur_hud if wide then section = section.."_wide" end if ltx and ltx:section_exist(section) then local p = {x=0,y=0,w=0,h=0} local result, idx, value, i for i=0, ltx:line_count(section)-1 do result, idx, value = ltx:r_line(section, i, "", "") if idx == "x" then p.x = tonumber(value) elseif idx == "y" then p.y = tonumber(value) elseif idx == "width" then p.w = tonumber(value) elseif idx == "height" then p.h = tonumber(value) end end return p end end
function get_texture(hp) local textures = { [0] = "ui_mg_progress_efficiency_full", --/ зеленая [1] = "ui_hud_shk_car", --/ оранжевая [2] = "ui_hud_shk_health" --/ красная } local clr = 0 --/ current color if hp > 0.7 then clr = 0 elseif hp > 0.3 then clr = 1 elseif hp < 0.3 then clr = 2 end if color ~= clr then color = clr change_color = true else change_color = false end return textures[color] end
Вопрос: вознамерился закинуть в один модик пару новых мутантов, а именно химеру-волка, непосредственно взятую из "Фотографа". При спауне сей зверюги вылет с аргументом:
Expression : index != BI_NONE Function : CParticlesPlayer::LoadParticles File : E:\stalker\patch_1_0004\xr_3da\xrGame\ParticlesPlayer.cpp Line : 87 Description : Particles bone not found Arguments : bone
Что с этим делать? Вообще, в те моды, где химеры уже были, волк без проблем вставлялся банальным добовлением секции с визуалом. Но в этом химеры ранее не было
Сообщение отредактировал Georgiy_Fedorov - Среда, 02.04.2014, 04:24:49
Я надумал воскресить Васильева, а в перспективе - и вовсе всех имеющихся в Зоне погибших учёных воскресить и поселить в бункере Сахарова.Как это сделать?
заходишь в all.spawn и у нпс вместо health = 0 и upd:health = 0 делаешь вот так: health = 1 и upd:health = 1
Добавлено (04.04.2014, 13:24:24) --------------------------------------------- а если хочешь заспавнить новых экологов то делай как тебе говорил Comador в 1032-ом сообщении
НАТО - это слово которое обозначает: Америка говно, а Россия лучшая страна в мире потому что русский воин победит любого!
Я хотел бы создать большой лагерь учёных в пределах забора бункера на Янтаре.Задумано, что позади бункера ( относительно ворот на остальную территорию Янтаря) будет стоять бочка с костром, а вокруг неё будут сидеть учёные, играть на гитаре и шутковать.Как это сделать?
Арсений, чё тут не понятно? создаешь нпс бочку с костром добавляешь и все
Добавлено (05.04.2014, 13:12:59) --------------------------------------------- проблема со спавном машины. раньше машина спавнилась хорошо, ровненько стоит на земле. сейчас попробовал - она наполовину в землю закопана. как это можно исправить?
НАТО - это слово которое обозначает: Америка говно, а Россия лучшая страна в мире потому что русский воин победит любого!
Mecheniy12, Как тебе известно, все предметы спавнятня по координатам x,y,z, а так же левел вертекс и гейм вертикс. Так вот координата Y это высота на которой спавнится объект.