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

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

@Norman Eisenherz Вот пример 


 

Скрытый текст

 

function samopal_ammo_preparing()
    local spwn = ammo_preparing(get_hud())
    level.start_stop_menu(spwn,true)
end

class "ammo_preparing" (CUIScriptWnd)

function ammo_preparing:__init(owner) super()
    self.dlg = self
    self.owner = owner
    self:InitControls()
    self:InitCallBacks()
end

function ammo_preparing:__finalize() end

function ammo_preparing:InitControls()

    self.btn_1 = xml:Init3tButton("btn_1", self)
    self:Register(self.btn_1, "btn_1")
    self.btn_1:Enable(false)
    self.btn_2 = xml:Init3tButton("btn_2", self)
    self:Register(self.btn_2, "btn_2")
    self.btn_2:Enable(false)

    self.btn_1:Enable(true)
    self.btn_2:Enable(true)
end

function ammo_preparing:InitCallBacks()
    self:AddCallback("btn_1", ui_events.BUTTON_CLICKED,  self.btn1, self)
    self:AddCallback("btn_2", ui_events.BUTTON_CLICKED,  self.btn2, self)
end

function ammo_preparing:btn1()
    self:quit()
    addon.remove_items("bearing", 1)
    addon.remove_items("powder", 1)
    amk.spawn_ammo_in_inv("ammo_samopal", 16)
    --amk.spawn_ammo_in_inv("ammo_5.56x45_ap", 16)
end

function ammo_preparing:btn2()
    self:quit()
    addon.remove_items("bearing", 1)
    addon.remove_items("powder", 1)
    amk.spawn_ammo_in_inv("ammo_samopal_big", 8)
    --amk.spawn_ammo_in_inv("ammo_5.56x45_ap", 16)
end

function ammo_preparing:quit()
    self:GetHolder():start_stop_menu (self,true)
    self.dlg = nil
    collectgarbage("collect")
end

 

 

P.S Извиняюсь что не под спойлером, на мобильной версии сайта нету данной функции.

Изменено пользователем Опричник
спойлер
  • Нравится 2

Подарки

  • 2
  • Ссылка на комментарий

    @I am Dead Как сослаться на метод quit() вне класса? Сделал, как показано ниже –  вылет "attempt to index a nil value" со ссылкой на строку self:GetHolder()…

    Spoiler
    [scripts\bind_stalker.script]
    
    function actor_binder:net_destroy()
    (+)
    	delete()						-- +++
    
    
    function actor_binder:info_callback(npc, info_id)
    (+)
    	if info_id == "ui_inventory" then
    		show()
    	end
    
    
    (+)
    function show()
    	cui = test()
    	level.start_stop_menu(cui)
    end
    
    
    function delete()						-- +++
    	if cui then
    		cui:quit()
    	end
    end
    
    
    class "test" (CUIScriptWnd)
    
    function test:__init() super()
    	self.dlg = self						-- +++
    	self:Init(0, 0, 1024, 768)
    
    	local b = CUIStatic()
    		self:AttachChild(b)
    	b:Init(0, 0, 1024, 768)
    	b:InitTexture("ui_frame_back")
    	b:SetStretchTexture(true)
    end
    
    function test:__finalize()
    end
    
    function test:quit()						-- +++
    	self:GetHolder():start_stop_menu(self)
    	self.dlg = nil
    end

     

     

     

    Мини-моды: ТЧ ЧН ЗП

    Шпаргалка

    Ссылка на комментарий

    @I am Dead Не забыл: этот параметр отвечает за скрытие HUD, а HUD и так скрыт, пока открыт инвентарь.

     

    [xrGame\level_script.cpp]

    void start_stop_menu(CUIDialogWnd* pDialog, bool bDoHideIndicators)

     

    Ради истории, подставил и этот параметр – тот же вылет "attempt to index a nil value" при попытке закрыть окно.

    Мини-моды: ТЧ ЧН ЗП

    Шпаргалка

    Ссылка на комментарий

    Доброго времени суток, господа. Такой вопрос созрел, реализуема ли система репутации в ЗП, как в ТЧ? Например, Гг выполнил квест - повысил репутацию - получил доступ к новому товару/функции/диалогу и т.д., или гг провалил квест/убил НПС - потерял репутацию - потерял доступ к чему-либо. Есть ли в конфигах какой-то скрытый параметр, отвечающий за репутацию Гг, или она осталась только в ТЧ? Реально ли добавить кастомный "счётчик" репутации собственными ручками через конфиги, не уходя слишком сильно в движко-правки?

    Изменено пользователем Fly

    Подарки

  • Ссылка на комментарий
    13 часов назад, Fly сказал:

    реализуема ли система репутации в ЗП

    На скриптах и конфигах - запросто, очень легко реализуема. На только конфигах, как вы почему-то написали - нет, это невозможно.

    Движковые правки для этого вообще не требуются, достаточно представлять, что вы хотите сделать, и умения писать скрипты.

    • Спасибо 1

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    @naxac Указал в delete() строку level.start_stop_menu(cui) вместо ссылки на метод quit() – вылет без лога на любом сейве, кроме all.sav. Если подставить level.start_stop_menu() без аргументов – аналогично.

     

    Нашел: инвентарь надо принудительно закрыть – новое окно удалится само.

    Изменено пользователем Norman Eisenherz

    Мини-моды: ТЧ ЧН ЗП

    Шпаргалка

    Ссылка на комментарий

    Доброго времени суток, подскажите функцию для открытия окна торговли, для ТЧ.
    (чтобы торговля, к примеру, открывалась после фразы "Имею желание поторговаться")

    (оригинальная function trade_init(seller, buyer) - работать отказывается)

    God save Hatsune Miku!


    Подарки

  • Ссылка на комментарий

    Здравия желаю, товарищи!

    Стоит задача заспавнить деревянный ящик, из которого при разломе выпадает предмет. Использовал для этого скрипт нетпакетов m_netpk.script.

    Вот часть кода, в котором вписываю ему параметры в нетпакет:

    Скрытый текст

    local pk = m_netpk.get(ser_obj)
    if pk and pk:isOk() then
        local data = pk:get()
        if data then
            data.fixed_bones = "link"
            data.custom_data:setString("[drop_box]\ncommunity = def_box\nitems = wpn_pm")
            pk:set(data)
        end
    end
     

    Кость фиксируется, но дропа из ящика нет.

    Что я делаю не так?

    Ссылка на комментарий
    25 минут назад, obladaun сказал:

    drop_box

    Эта секция кастом-даты обрабатывается в биндере физ.объектов bind_physic_object.script. Рекомендую посмотреть там, как оно работает и чего ему надо. У меня просто этот скрипт существенно изменен, а оригинального под рукой уже нет) Но смутно помню, что вроде бы он отметал с порога, если нет секции logic... короче, лучше там в коде посмотреть.

    И конечно в секции конфига ящика который спавните, должна быть привязка к биндеру.

    script_binding = bind_physic_object.init

     

    А фиксацию кости обрабатывает, емнип, движок... не биндер. Потому и получается, "там работает, тут нет"

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

    Ссылка на комментарий

    Здрасьте.

     

    ТЧ 1.0006.

    Кнопка, приклеенная к движковому окну в меню торговли, выводится позади окна, хотя в инвентаре, в меню обыска и в обычном диалоге аналогичная кнопка выводится поверх. Почему так и как с этим бороться?

     

    На всякий случай, код:

    Spoiler
    [bind_stalker.script]
    function actor_binder:info_callback(npc, info_id)
    (+)
    	if info_id == "ui_trade" then
    		if not trade then
    			z = CUI3tButton()
    			local img = "ui_button_main03"
    			local x, y, w, h = 730, 245, 154, 48
    			z:Init(img, x, y, w, h)
    
    			trade = level.main_input_receiver()
    			trade:AttachChild(z)
    		end
    	elseif info_id == "ui_trade_hide" then
    		if trade then
    			trade:DetachChild(z)
    			trade = nil
    		end
    	end

     

     

    Мини-моды: ТЧ ЧН ЗП

    Шпаргалка

    Ссылка на комментарий

    Господа, а реально ли модельке ГГ, (когда смотрим на него камерой от 3 лица), задать НЕ худовую анимацию какую-нить, как у неписей, типа sit_ass? Есть предположение куда копать? 

    • Сомнительно 1

    Подарки

  • Ссылка на комментарий

    Здравствуйте. Подскажите, пожалуйста, как в логике нпс из враждебной группировки прописать код, который бы не давал нпсу атаковать актора? Сразу скажу, что combat_ignore уже прописывал, но он почему-то работает только в связке с волкером, а мне нужно через ремарк.

    Ссылка на комментарий

    @Rod_K , что-то не так делаешь, на любой схеме должно работать. Посмотри, как пример, логику солдат под мостом на Кордоне.

    Аддон для ОП-2.09.2: Яндекс/Google/GitHub

    naxac.gif


    Подарки

    Ссылка на комментарий

    Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

    Комментарии могут оставлять только зарегистрированные пользователи

    Создать аккаунт

    Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

    Зарегистрировать новый аккаунт

    Войти

    Есть аккаунт? Войти.

    Войти
    • Недавно просматривали   0 пользователей

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

    AMK-Team.ru

    ×
    ×
    • Создать...