Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском по разделу, ответ на него, вероятно, уже есть.
Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
Благодарность выражаем в личке или же ставим плюсик в историю репутации. Подобные посты будут удаляться.
Если делать на исходниках, можно сделать удобную регулировку этого параметра прямо из Lua. Вот так, например:
После:
Код
funct(item_name, item->GetCondition());
Добавить:
Код
luabind::functor<float> f; R_ASSERT2(GEnv.ScriptEngine->functor("inventory_upgrades.get_repair_coeff", f), make_string("Failed to get functor <inventory_upgrades.get_repair_coeff>"));
А строку:
Код
item->SetCondition(1.0f);
Заменить на:
Код
item->SetCondition(f());
Потом в inventory_upgrades.script добавить функцию:
Код
function get_repair_coeff() return 1 end
Можно и просто менять параметр ручками, не перекомпиливая больше xrGame.dll, а можно и условий натыкать. Например, чтобы разные техники чинили до разных пределов. К слову, если чинить менее чем на 100%, придётся вносить правки в функцию can_repair_item, ибо мы можем чинить пушку до тех пор, пока у игрока не закончатся деньги, а состояние оружия так и не будет достигать 100%.
Дополнительное условие для can_repair_item:
Код
if not (item_condition < get_repair_coeff()) then return false end
Аналогично правится функция question_repair_item. Кстати, формулу в how_much_repair тоже не помешает поправить в соответствии с get_repair_coeff().
Спасибо за помощь с предыдущим вопросом! Правда ещё один имеется. Вот есть конструкция из surge_manager.script
Код
if (level.get_time_hours() >= 5 and level.get_time_hours() <= 20) then level.set_weather_fx("fx_blowout_day") else level.set_weather_fx("fx_blowout_night") end
Хочу попробовать сделать выброс для каждого часа отдельно с соответствием расположения солнца. Я могу представить себе только функцию вроде такой:
Код
if (level.get_time_hours() == 0 then level.set_weather_fx("fx_blowout_0") elseif (level.get_time_hours() == 1 then level.set_weather_fx("fx_blowout_1") elseif (level.get_time_hours() == 2 then level.set_weather_fx("fx_blowout_2") end
Можно ли сделать функцию более компактной? И вообще правильна ли она даже в таком виде?
Всем здоровья. Попытался сделать GUI окно, используя этот урок и окна из SGM в качестве примера. Игра запускается, но при попытке открыть окно вылет:
FATAL ERROR
[error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : c:\x-ray\stcop\rgs\src\xrserverentities\script_storage.cpp [error]Line : 749 [error]Description : ....k.e.r. Зов Припяти\gamedata\scripts\bind_stalker.script:220: attempt to index global 'ui_teleports' (a nil value)
А вот скрипты которые использую:
function actor_binder:use_inventory_item(obj) if(obj) then local s_obj = alife():object(obj:id()) if(s_obj) and (s_obj:section_name()=="drug_anabiotic") then xr_effects.disable_ui_only(db.actor, nil) level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback") level.add_pp_effector("surge_fade.ppe", 11, false) give_info("anabiotic_in_process") _G.mus_vol = get_console():get_float("snd_volume_music") _G.amb_vol = get_console():get_float("snd_volume_eff") get_console():execute("snd_volume_music 0") get_console():execute("snd_volume_eff 0") end gui_callbacks.gui_use_test(obj) -- AtmosFear Booster Check if (s_obj) and (s_obj:section_name() == "drug_psy_blockade" or s_obj:section_name() == "drug_radioprotector" or s_obj:section_name() == "drug_antidot") then local boost_time = system_ini():r_float(s_obj:section_name(),"boost_time") xr_logic.pstor_store(db.actor,s_obj:section_name().."_expiration",atmosfear.CTimeAddSec(game.get_game_time(),boost_time*level.get_time_factor())) end -- End AtmosFear Booster Check azm_use_item.azm_use_item_mods(s_obj) end
if obj~=nil then item_callbacks.on_use_item(obj) end if(obj) then local s_obj = alife():object(obj:id()) if(s_obj) and (s_obj:section_name()=="grib_antidot") then give_info("grib_antidot_used") end end if (obj) then local s_obj = alife():object(obj:id()) if (s_obj:section_name()=="af_teleport_fire_use") or (s_obj:section_name()=="af_teleport_chem_use") or (s_obj:section_name()=="af_teleport_gravi_use") or (s_obj:section_name()=="af_teleport_electric_use") then if (s_obj:section_name()=="af_teleport_fire_use") then db.actor:give_info_portion("af_teleport_fire_used") run_gui(ui_teleports.teleport_zaton()) elseif (s_obj:section_name()=="af_teleport_chem_use") then db.actor:give_info_portion("af_teleport_chem_used") run_gui(ui_teleports.teleport_zaton()) elseif (s_obj:section_name()=="af_teleport_gravi_use") then db.actor:give_info_portion("af_teleport_gravi_used") run_gui(ui_teleports.teleport_zaton()) -- 220 строка elseif (s_obj:section_name()=="af_teleport_electric_use") then db.actor:give_info_portion("af_teleport_electric_used") run_gui(ui_teleports.teleport_zaton()) end end end end
class "teleport_zaton" (CUIScriptWnd)
function teleport_zaton:__init() super() self:InitControls() self:InitCallBacks() end
function teleport_zaton:InitCallBacks() self:AddCallback("kotel", ui_events.BUTTON_CLICKED, self.kotel_button_clicked, self) if not has_alife_info("zat_sr_b29_sr_3_was") then self.kotel:Enable(false) end self:AddCallback("skadovsk", ui_events.BUTTON_CLICKED, self.skadovsk_button_clicked, self) if not has_alife_info("zat_sr_a2_was") then self.skadovsk:Enable(false) end self:AddCallback("lecopilka", ui_events.BUTTON_CLICKED, self.lecopilka_button_clicked, self) if not has_alife_info("zat_sr_lecopilka_was") then self.lecopilka:Enable(false) end self:AddCallback("sgorevshii_hutor", ui_events.BUTTON_CLICKED, self.sgorevshii_hutor_button_clicked, self) if not has_alife_info("zat_sr_sgorevshii_hutor_was") then self.sgorevshii_hutor:Enable(false) end self:AddCallback("cirk", ui_events.BUTTON_CLICKED, self.cirk_button_clicked, self) if not has_alife_info("zat_sr_cirk_was") then self.cirk:Enable(false) end self:AddCallback("zemsnarad", ui_events.BUTTON_CLICKED, self.zemsnarad_button_clicked, self) if not has_alife_info("zat_sr_b14_was") then self.zemsnarad:Enable(false) end self:AddCallback("cogot", ui_events.BUTTON_CLICKED, self.cogot_button_clicked, self) if not has_alife_info("zat_sr_b29_sr_1_was") then self.cogot:Enable(false) end self:AddCallback("iron_les", ui_events.BUTTON_CLICKED, self.iron_les_button_clicked, self) if not has_alife_info("zat_sr_iron_les_was") then self.iron_les:Enable(false) end self:AddCallback("ochistnaya", ui_events.BUTTON_CLICKED, self.ochistnaya_button_clicked, self) if not has_alife_info("zat_sr_ochistnie_was") then self.ochistnaya:Enable(false) end self:AddCallback("ceha", ui_events.BUTTON_CLICKED, self.ceha_button_clicked, self) if not has_alife_info("zat_sr_ceha_was") then self.ceha:Enable(false) end self:AddCallback("most", ui_events.BUTTON_CLICKED, self.most_button_clicked, self) if not has_alife_info("zat_sr_most_was") then self.most:Enable(false) end self:AddCallback("sosnodub", ui_events.BUTTON_CLICKED, self.sosnodub_button_clicked, self) if not has_alife_info("zat_sr_b29_sr_4_was") then self.sosnodub:Enable(false) end self:AddCallback("port_krani", ui_events.BUTTON_CLICKED, self.port_krani_button_clicked, self) if not has_alife_info("zat_sr_b52_was") then self.port_krani:Enable(false) end self:AddCallback("izumrydnii", ui_events.BUTTON_CLICKED, self.izumrydnii_button_clicked, self) if not has_alife_info("zat_sr_b106_was") then self.izumrydnii:Enable(false) end self:AddCallback("zapravka", ui_events.BUTTON_CLICKED, self.zapravka_button_clicked, self) if not has_alife_info("zat_sr_zapravka_was") then self.zapravka:Enable(false) end self:AddCallback("shevchenko", ui_events.BUTTON_CLICKED, self.shevchenko_button_clicked, self) if not has_alife_info("zat_sr_b7_was") then self.shevchenko:Enable(false) end self:AddCallback("plato", ui_events.BUTTON_CLICKED, self.plato_button_clicked, self) if not has_alife_info("zat_sr_plato_was") then self.plato:Enable(false) end self:AddCallback("lesnichestvo", ui_events.BUTTON_CLICKED, self.lesnichestvo_button_clicked, self) if not has_alife_info("zat_sr_b5_was") then self.lesnichestvo:Enable(false) end self:AddCallback("rubec", ui_events.BUTTON_CLICKED, self.rubec_button_clicked, self) if not has_alife_info("zat_sr_b29_was") then self.rubec:Enable(false) end self:AddCallback("topi", ui_events.BUTTON_CLICKED, self.topi_button_clicked, self) if not has_alife_info("zat_sr_topi_was") then self.topi:Enable(false) end self:AddCallback("barja", ui_events.BUTTON_CLICKED, self.barja_button_clicked, self) if not has_alife_info("zat_sr_b18_was") then self.barja:Enable(false) end self:AddCallback("vnz_krug", ui_events.BUTTON_CLICKED, self.vnz_krug_button_clicked, self) if not has_alife_info("zat_sr_b38_was") then self.vnz_krug:Enable(false) end self:AddCallback("vihod", ui_events.BUTTON_CLICKED, self.vihod_button_clicked, self) end
function teleport_zaton:kotel_button_clicked() xr_effects.teleport_actor(zat_af_teleport_kotel_walk:zat_af_teleport_kotel_look) self:HideDialog() end
function teleport_zaton:skadovsk_button_clicked() xr_effects.teleport_actor(zat_b106_return_actor_walk:zat_b106_return_actor_look) self:HideDialog() end
function teleport_zaton:lecopilka_button_clicked() xr_effects.teleport_actor(zat_b104_actor_walk:zat_b104_actor_look) self:HideDialog() end
function teleport_zaton:sgorevshii_hutor_button_clicked() xr_effects.teleport_actor(zat_af_teleport_sgorevshii_hutor_walk:zat_af_teleport_sgorevshii_hutor_look) self:HideDialog() end
function teleport_zaton:cirk_button_clicked() xr_effects.teleport_actor(zat_af_teleport_cirk_walk:zat_af_teleport_cirk_look) self:HideDialog() end
function teleport_zaton:zemsnarad_button_clicked() xr_effects.teleport_actor(zat_af_teleport_zemsnarad_walk:zat_af_teleport_zemsnarad_look) self:HideDialog() end
function teleport_zaton:cogot_button_clicked() xr_effects.teleport_actor(zat_af_teleport_cogot_walk:zat_af_teleport_cogot_look) self:HideDialog() end
function teleport_zaton:iron_les_button_clicked() xr_effects.teleport_actor(zat_af_teleport_iron_les_walk:zat_af_teleport_iron_les_look) self:HideDialog() end
function teleport_zaton:ochistnaya_button_clicked() xr_effects.teleport_actor(zat_af_teleport_ochistnaya_walk:zat_af_teleport_ochistnaya_look) self:HideDialog() end
function teleport_zaton:ceha_button_clicked() xr_effects.teleport_actor(zat_af_teleport_ceha_walk:zat_af_teleport_ceha_look) self:HideDialog() end
function teleport_zaton:most_button_clicked() xr_effects.teleport_actor(zat_af_teleport_most_walk:zat_af_teleport_most_look) self:HideDialog() end
function teleport_zaton:sosnodub_button_clicked() xr_effects.teleport_actor(zat_b39_actor_walk:zat_b39_actor_look) self:HideDialog() end
function teleport_zaton:port_krani_button_clicked() xr_effects.teleport_actor(zat_af_teleport_port_krani_walk:zat_af_teleport_port_krani_look) self:HideDialog() end
function teleport_zaton:izumrydnii_button_clicked() xr_effects.teleport_actor(zat_b106_teleport_actor_walk:zat_b106_teleport_actor_look) self:HideDialog() end
function teleport_zaton:zapravka_button_clicked() xr_effects.teleport_actor(zat_af_teleport_zapravka_walk:zat_af_teleport_zapravka_look) self:HideDialog() end
function teleport_zaton:shevchenko_button_clicked() xr_effects.teleport_actor(zat_af_teleport_shevchenko_walk:zat_af_teleport_shevchenko_look) self:HideDialog() end
function teleport_zaton:plato_button_clicked() xr_effects.teleport_actor(zat_b20_quest_teleport_walk:zat_b20_quest_teleport_look) self:HideDialog() end
function teleport_zaton:lesnichestvo_button_clicked() xr_effects.teleport_actor(zat_af_teleport_lesnichestvo_walk:zat_af_teleport_lesnichestvo_look) self:HideDialog() end
function teleport_zaton:rubec_button_clicked() xr_effects.teleport_actor(zat_af_teleport_rubec_walk:zat_af_teleport_rubec_look) self:HideDialog() end
function teleport_zaton:topi_button_clicked() xr_effects.teleport_actor(zat_af_teleport_topi_walk:zat_af_teleport_topi_look) self:HideDialog() end
function teleport_zaton:barja_button_clicked() xr_effects.teleport_actor(zat_b18_actor_teleport_walk:zat_b18_actor_teleport_look) self:HideDialog() end
function teleport_zaton:vnz_krug_button_clicked() xr_effects.teleport_actor(zat_af_teleport_vnz_krug_walk:zat_af_teleport_vnz_krug_look) self:HideDialog() end
function teleport_zaton:vihod_button_clicked() self:HideDialog() end
function teleport_zaton:Hide() self:HideDialog() end
function run_gui(gui, close_inv) if close_inv == true then gui:ShowDialog(true) game_hide_menu() level.show_weapon(false) else gui:ShowDialog(true) end end
Скрипты ui_teleports.script, bind_stalker.script и _g.script из одной папки scripts.
Первый вопрос по времени, почему указано неверное время...
Второй по полосам, возможно ли их как то сделать прозрачными как сам прицел... С оптикой то нет проблем, там всё чёрное вокруг глазка и полосы чёрные, а как быть при таком варианте с прозрачностью?