Перейти к контенту

[CoP] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

Создал простую функцию, которая начисляет "опыт" ГГ при убийстве НПС. Не могу сохранить эти данные в игре, при лоаде все обратно возвращается на 0. Наставьте на путь истинный, я без понятия как эти данные правильно сохранять.
Функция:



point_skill = 0
rank = 0
need_init = false

function kill_exp()
    local rank_random = math.random(1, 90)
    point_skill = point_skill + rank_random
    rank_random = nil
    need_init = true
end

function actor_on_update()
    local hud = get_hud()
    hud:AddCustomStatic("skills_static")
    hud:GetCustomStatic("skills_static"):wnd():TextControl():SetTextST("Опыт: "..point_skill.."")
    end

---------->>[[Загрузка\Сохранение пакетов]]<<-----------
-- Сохраняем

function save(package)
    package:w_u32(point_skill)
end

-- Загружаем
function load(package)
package:r_u32(point_skill)
end

Поделиться этим сообщением


Ссылка на сообщение

@Jurok , не сработало, увы.

Возможно надо подключать функции на сейв/лоад еще куда-то кроме bind_stalker.script?

Поделиться этим сообщением


Ссылка на сообщение

Почему то вылетает, когда в ГУИ после нажатии кнопки я эту самую кнопку - блокирую
Функция:

function window_gui:l1p1_button_clicked()


if not has_alife_info ("get_new") then
off_message()
elseif has_alife_info ("get_new") then
on_message()
end
self.l1p1:Enable(false) -- хм?
self:HideDialog()
end


Лог:

Expression : <no expression>


Function : CScriptEngine::lua_error
File : ..\xrServerEntities\script_engine.cpp
Line : 189
Description : fatal error
Arguments : LUA error: e:\games\stalker\gamedata\scripts\window_gui.script:112: attempt to index field 'l1p1' (a nil value)

stack trace:

Сама кнопка зарегестрирована "вроде как" правильно:

    self:AddCallback("l1p1", ui_events.BUTTON_CLICKED, self.l1p1_button_clicked, self)

    self:Register(xml:Init3tButton("main_frame:l1p1", self.main_frame), "l1p1")

Поделиться этим сообщением


Ссылка на сообщение
6 часов назад, naxac сказал:

Хотя не понимаю, нафига дизаблить кнопку, сли сразу после этого окно полностью закрывается)

Есть зачем, так как меню будет открыватся не один раз, а задизаблить нужно аж 3 кнопки.

Поделиться этим сообщением


Ссылка на сообщение

Хочу реализовать в игре небольшую фичу, чтобы увеличить/уменьшить время принятия медикаментов (внутри игры, а не в конфиге). В принципе функция то и работает, но время не увеличивается.
Функция:

local item_sec = obj:section()


if (item_sec == "medkit" or item_sec == "medkit_army" or item_sec == "medkit_scientic") then
local boost_time = system_ini():r_float_ex(item_sec,"boost_time")
utils.save_var(db.actor,item_sec.."_expiration",utils.CTimeAddSec(game.get_game_time(),boost_time*level.get_time_factor()*10)) -- Апдейт: допер, что я только считываю значение в конфиге и в итоге ничего не меняю. Но не допёр как все же изменить это самое значение и засейвить в игре.
end


Буду благодарен, если поправите.

Поделиться этим сообщением


Ссылка на сообщение

Хочу сделать такую функцию, чтобы при перемещении определенной брони в слот - броня скидывалась обратно в инвентарь. Прошу помощи, так как перепробовал разными методами, но с каждым разом выходили еще более разные баги.

Функция:

function actor_item_to_slot(obj)


if not has_alife_info ("power_1_add") then
local outfit = db.actor:item_in_slot(7)
if (outfit and obj:section() == "exo_outfit") then
ui_dyn_msg_box.msg_box_ui("message_box_ok",true,game.translate_string("Вы не настолько сильны и ловки, чтобы таскать на себе такую тяжесть"))
... -- Без понятия что дальше
end
end
end

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...