Случайная подборка модов
В западне
3.9
Old Story
4.1
Объединенный Пак 2.1
3.1
Ветер времени
4.5
Krovosos mod v. 3.8
4.0
S.T.A.L.K.E.R. Complete 2009
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
[CoP] Создание инвентарного комплекса с Gui-элементами
Украина  FantomICW
Среда, 08.01.2014, 20:40 | Сообщение # 61
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

SG, к примеру:
Код
function ui_medkit_ai2:OnButton_cystamine_clicked()     
          db.actor:give_info_portion("gui_medkit_got_cystamine")       
          give_object_to_actor("antirad_cystamine", 6)    
          if xr_conditions.actor_has_item_count(actor, npc, {"antirad_cystamine", 6}) then  
          for i=1,6 do  
          db.actor:eat(db.actor:object("antirad_cystamine"))  
          end  
          end  
          self.button_cystamine:Enable(false)             
end
  Злобная реклама
Среда, 08.01.2014, 20:40
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  SG
Среда, 08.01.2014, 20:53 | Сообщение # 62
Статус:
Новичок:
Сообщений: 237
Награды: 0
Регистрация: 12.09.2013

FantomICW, это вместо твоей 8 части? да? 12
Сообщение отредактировал SG - Среда, 08.01.2014, 20:53
  Злобная реклама
Среда, 08.01.2014, 20:53
Статус:
Сообщений: 666
Регистрация: 12.09.2013
Украина  FantomICW
Среда, 08.01.2014, 20:57 | Сообщение # 63
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

SG, ну посмотри в коде основном, там где функция кнопки цистамина))
  Злобная реклама
Среда, 08.01.2014, 20:57
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  SG
Среда, 08.01.2014, 21:08 | Сообщение # 64
Статус:
Новичок:
Сообщений: 237
Награды: 0
Регистрация: 12.09.2013

Я так понял это надо вписать в это файл
Код
class "ui_medkit_ai2" (CUIScriptWnd)     --Регистрация нового класса гуи-элемента от существующего класса CUIScriptWnd  

function ui_medkit_ai2:__init(owner) super()      --Иницилизируем класс, добавляем отсылки к функциям          
          self.owner = owner  
          self:InitControls()          --Отсылка к функции регистрации элементов окна  
          self:InitCallBacks()         --Отсылка к функции регистрации коллбеков (условий)  
end  

function ui_medkit_ai2:__finalize()    --Функция завершения работы нового класса  
end  

function ui_medkit_ai2:InitControls()   --Функция иницилизации элементов окна  
self:SetWndRect   (Frect():set(0,0,1024,768))   --Установка стандартных размеров файла          
local xml, ctrl   = CScriptXmlInit(), CUIWindow()    --Задаем локальные переменные на классы          
xml:ParseFile   ("ui_gui_elements.xml")         --Инициализация XML-файла Gui-элемента  
self.medkit    = xml:InitStatic("medkit",self)   --Регистрируем само окно  
xml:InitStatic ("medkit:caption_cystamine",self.medkit)      --Регистрация текста: цистамин  
xml:InitStatic ("medkit:caption_kalium",self.medkit)         --Регистрация текста: калиум  
xml:InitStatic ("medkit:caption_chlor",self.medkit)          --Регистрация текста: хлор  
xml:InitStatic ("medkit:caption_sulfad",self.medkit)         --Регистрация текста: сульфад  
xml:InitStatic ("medkit:caption_antiemetic",self.medkit)     --Регистрация текста: противорвотная штука  
xml:InitStatic ("medkit:caption_medkit",self.medkit)         --Регистрация текста: аптечка  
self.button_cystamine = xml:Init3tButton ("medkit:btn_cystamine",self.medkit)          --Регистрация кнопки: цистамин  
self:Register (self.button_cystamine, "button_cystamine")  
self.button_kalium = xml:Init3tButton ("medkit:btn_kalium",self.medkit)                --Регистрация кнопки: калиум  
self:Register (self.button_kalium, "button_kalium")  
self.button_chlor = xml:Init3tButton ("medkit:btn_chlor",self.medkit)                  --Регистрация кнопки: хлор  
self:Register (self.button_chlor, "button_chlor")  
self.button_sulfad = xml:Init3tButton ("medkit:btn_sulfad",self.medkit)                --Регистрация кнопки: сульфад  
self:Register (self.button_sulfad, "button_sulfad")  
self.button_antiemetic = xml:Init3tButton ("medkit:btn_antiemetic",self.medkit)        --Регистрация кнопки: противорвотная штука  
self:Register (self.button_antiemetic, "button_antiemetic")  
self.button_close = xml:Init3tButton ("medkit:btn_close",self.medkit)                  --Регистрация кнопки: кнопка закрытия окна  
self:Register (self.button_close, "button_close")  
end  

function ui_medkit_ai2:InitCallBacks()         --Функци коллбеков  
          self:AddCallback("button_cystamine", ui_events.BUTTON_CLICKED, self.OnButton_cystamine_clicked, self)  --Коллбек кнопки взятия цистамина  
          self:AddCallback("button_kalium", ui_events.BUTTON_CLICKED, self.OnButton_kalium_clicked, self)        --Коллбек кнопки взятия калиума
          self:AddCallback("button_chlor", ui_events.BUTTON_CLICKED, self.OnButton_chlor_clicked, self)          --Коллбек кнопки взятия хлора  
          self:AddCallback("button_sulfad", ui_events.BUTTON_CLICKED, self.OnButton_sulfad_clicked, self)        --Коллбек кнопки взятия сульфада  
          self:AddCallback("button_antiemetic", ui_events.BUTTON_CLICKED, self.OnButton_antiemetic_clicked, self)  --Коллбек кнопки взятия противорвотной штуки  
          self:AddCallback("button_close", ui_events.BUTTON_CLICKED, self.OnButton_close_clicked, self)          --Коллбек кнопки закрытия  
end  

function ui_medkit_ai2:OnKeyboard(dik,keyboard_action)    --Функция закрытия окна по нажатию на клавиатуре "Escape"  
            CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)      --Инициализируем нажатие кнопки на клаве  
            if keyboard_action == ui_events.WINDOW_KEY_PRESSED then  --Условие: если нажата кнопка на клаве  
               if dik == DIK_keys.DIK_ESCAPE then                    --Условие: если нажата конкретно кнопка "Escape"  
                 if has_alife_info("gui_medkit_got_cystamine") and has_alife_info("gui_medkit_got_kalium") and has_alife_info("gui_medkit_got_chlor") and has_alife_info("gui_medkit_got_antiemetic") and has_alife_info("gui_medkit_got_sulfad") then          
                  self:HideDialog()                    --То при нажатии на кнопку - закрываем окошко          
               disable_info("gui_medkit_got_cystamine")   --И деактивируем обратно инфы, чтобы потом не было глюков  
               disable_info("gui_medkit_got_kalium")  
               disable_info("gui_medkit_got_chlor")  
               disable_info("gui_medkit_got_antiemetic")  
               disable_info("gui_medkit_got_sulfad")  
              else               --В любом другом случае  
                  self:HideDialog()                        --При нажатии на кнопку закрытия, закрываем окошко  
                  give_object_to_actor("medkit_ai2")    --Выдаем обратно аптечку  
              end          
               end  
            end  
            return true  
end  

function ui_medkit_ai2:OnButton_cystamine_clicked()    --Функция коллбека кнопки взятия цистамина  
          db.actor:give_info_portion("gui_medkit_got_cystamine") --Инфопорция          
             give_object_to_actor("antirad_cystamine", 6)    --Выдаем цистамин  
             self.button_cystamine:Enable(false)    --После этих действий кнопка больше не работает          
end  

function ui_medkit_ai2:OnButton_kalium_clicked()    --Функция коллбека кнопки взятия калиума  
          db.actor:give_info_portion("gui_medkit_got_kalium") --Инфопорция          
             give_object_to_actor("antirad_kalium")    --Выдаем калиум  
             self.button_kalium:Enable(false)    --После этих действий кнопка больше не работает  
end  

function ui_medkit_ai2:OnButton_chlor_clicked()    --Функция коллбека кнопки взятия хлора  
          db.actor:give_info_portion("gui_medkit_got_chlor") --Инфопорция          
             give_object_to_actor("antibio_chlor", 5)    --Выдаем хлор  
             self.button_chlor:Enable(false)    --После этих действий кнопка больше не работает          
end  

function ui_medkit_ai2:OnButton_antiemetic_clicked()    --Функция коллбека кнопки взятия ПШ  
          db.actor:give_info_portion("gui_medkit_got_antiemetic") --Инфопорция          
             give_object_to_actor("antiemetic", 3)    --Выдаем ПШ  
             self.button_antiemetic:Enable(false)    --После этих действий кнопка больше не работает          
end  

function ui_medkit_ai2:OnButton_sulfad_clicked()    --Функция коллбека кнопки взятия сульфада  
          db.actor:give_info_portion("gui_medkit_got_sulfad") --Инфопорция          
             give_object_to_actor("antibio_sulfad", 5)    --Выдаем сульфад  
             self.button_sulfad:Enable(false)    --После этих действий кнопка больше не работает          
end  

function ui_medkit_ai2:OnButton_close_clicked()    --Функция коллбека кнопки закрытия  
--Если все медикаменты распакованы:  
             if has_alife_info("gui_medkit_got_cystamine") and has_alife_info("gui_medkit_got_kalium") and has_alife_info("gui_medkit_got_chlor") and has_alife_info("gui_medkit_got_antiemetic") and has_alife_info("gui_medkit_got_sulfad") then          
              self:HideDialog()                    --То при нажатии на кнопку - закрываем окошко          
           disable_info("gui_medkit_got_cystamine")   --И деактивируем обратно инфы, чтобы потом не было глюков  
           disable_info("gui_medkit_got_kalium")  
           disable_info("gui_medkit_got_chlor")  
           disable_info("gui_medkit_got_antiemetic")  
           disable_info("gui_medkit_got_sulfad")  
          else               --В любом другом случае  
              self:HideDialog()                        --При нажатии на кнопку[code] закрытия (в окошке), закрываем окошко  
              give_object_to_actor("medkit_ai2")    --Выдаем обратно аптечку  
          end          
end  

function run_ui_medkit_ai2(folder)  
          folder:ShowDialog(true)  
end

заменяя нужные секции в данный момент эти
Код
         self:AddCallback("button_cystamine", ui_events.BUTTON_CLICKED, self.OnButton_cystamine_clicked, self)  --Коллбек кнопки взятия цистамина  
          self:AddCallback("button_kalium", ui_events.BUTTON_CLICKED, self.OnButton_kalium_clicked, self)        --Коллбек кнопки взятия калиума
          self:AddCallback("button_chlor", ui_events.BUTTON_CLICKED, self.OnButton_chlor_clicked, self)          --Коллбек кнопки взятия хлора  
          self:AddCallback("button_sulfad", ui_events.BUTTON_CLICKED, self.OnButton_sulfad_clicked, self)        --Коллбек кнопки взятия сульфада  
          self:AddCallback("button_antiemetic", ui_events.BUTTON_CLICKED, self.OnButton_antiemetic_clicked, self)  --Коллбек кнопки взятия противорвотной штуки
  Злобная реклама
Среда, 08.01.2014, 21:08
Статус:
Сообщений: 666
Регистрация: 12.09.2013
Украина  FantomICW
Среда, 08.01.2014, 21:09 | Сообщение # 65
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

SG, файл этот. Но причем тут функция регистрация функций кнопок? Тебе заменить нужно, в данном случае, функцию ui_medkit_ai2:OnButton_cystamine_clicked().
  Злобная реклама
Среда, 08.01.2014, 21:09
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  SG
Среда, 08.01.2014, 21:15 | Сообщение # 66
Статус:
Новичок:
Сообщений: 237
Награды: 0
Регистрация: 12.09.2013

Все, я понял 10 спасибо за помощь :D сделаю модик скину скрин 10
  Злобная реклама
Среда, 08.01.2014, 21:15
Статус:
Сообщений: 666
Регистрация: 12.09.2013
Российская Федерация  JIyHep
Суббота, 25.01.2014, 12:19 | Сообщение # 67
Статус:
Зевака:
Сообщений: 21
Награды: 2
Регистрация: 30.04.2012

FantomICW, Как ни странно инфопоршни деактивируются при закрытия GUI-аптечки не взяв какого-то элемента, при следующем открытии кнопки снова активны и можно читерить.
  Злобная реклама
Суббота, 25.01.2014, 12:19
Статус:
Сообщений: 666
Регистрация: 30.04.2012
Российская Федерация  Mirage
Понедельник, 03.02.2014, 02:31 | Сообщение # 68
Независимый аниматор
Статус:
Бывалый:
Сообщений: 1130
Награды: 2
Регистрация: 09.06.2012

Никто так и не смог сделать так, чтоб предмет сразу юзался, а не клался в инвентарь? По вышеописанному методу не работает.
  Злобная реклама
Понедельник, 03.02.2014, 02:31
Статус:
Сообщений: 666
Регистрация: 09.06.2012
Украина  FantomICW
Понедельник, 03.02.2014, 11:39 | Сообщение # 69
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

Mirage, поясни-ка. Хочешь, чтоб аптечка после юза и закрытия больше не появлялась?
Сообщение отредактировал FantomICW - Понедельник, 03.02.2014, 11:39
  Злобная реклама
Понедельник, 03.02.2014, 11:39
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  Mirage
Понедельник, 03.02.2014, 12:04 | Сообщение # 70
Независимый аниматор
Статус:
Бывалый:
Сообщений: 1130
Награды: 2
Регистрация: 09.06.2012

Так, вот у нас например аптечка АИ. Когда через гуи открываешь аптечку и выбираешь например антирад, то антирад из аптечки переходит в инвентарь. А нельзя ли чтоб антирад при нажатии в окошке гуи сразу использовался(ГГ съел), а не переходил в инвентарь.

Добавлено (03.02.2014, 11:52)
---------------------------------------------
Чтоб при использовании предмета, появлялось окно, в котором можно было бы выбрать, какой из компонентов медкомплекта использовать, при этом сам комплект бы исчезал, только после того, как из него были бы использованы все предметы. ColR_iT выразился как надо biggrin

Добавлено (03.02.2014, 12:04)
---------------------------------------------
вот эта функция

Код
function ui_medkit_ai2:OnButton_cystamine_clicked()      
           db.actor:give_info_portion("gui_medkit_got_cystamine")        
           give_object_to_actor("antirad_cystamine", 6)     
           if xr_conditions.actor_has_item_count(actor, npc, {"antirad_cystamine", 6}) then   
           for i=1,6 do   
           db.actor:eat(db.actor:object("antirad_cystamine"))   
           end   
           end   
           self.button_cystamine:Enable(false)              
end

не работает
Сообщение отредактировал Mirage - Понедельник, 03.02.2014, 11:54
  Злобная реклама
Понедельник, 03.02.2014, 12:04
Статус:
Сообщений: 666
Регистрация: 09.06.2012
Украина  FantomICW
Понедельник, 03.02.2014, 12:07 | Сообщение # 71
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

Mirage, какие проблемы? Вот, пожалуйста, функция:
Код
db.actor:eat("предмет")
  Злобная реклама
Понедельник, 03.02.2014, 12:07
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  Mirage
Понедельник, 03.02.2014, 12:07 | Сообщение # 72
Независимый аниматор
Статус:
Бывалый:
Сообщений: 1130
Награды: 2
Регистрация: 09.06.2012

Ругается на xr_conditions
  Злобная реклама
Понедельник, 03.02.2014, 12:07
Статус:
Сообщений: 666
Регистрация: 09.06.2012
Украина  FantomICW
Понедельник, 03.02.2014, 12:08 | Сообщение # 73
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

Mirage, потому что в ТЧ нету той проверки.
  Злобная реклама
Понедельник, 03.02.2014, 12:08
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  Mirage
Понедельник, 03.02.2014, 12:15 | Сообщение # 74
Независимый аниматор
Статус:
Бывалый:
Сообщений: 1130
Награды: 2
Регистрация: 09.06.2012

FantomICW, как мне этот ТЧ достал. А добавить никак?

Добавлено (03.02.2014, 12:15)
---------------------------------------------
Есть проверка, но не срабатывает
-- true, если у актёра в инвентаре есть указанный предмет
-- false, если нету, либо не задана секция предмета
function actor_has_item(actor, npc, p)
return p[1] ~= nil and actor:object( p[1] ) ~= nil
end

  Злобная реклама
Понедельник, 03.02.2014, 12:15
Статус:
Сообщений: 666
Регистрация: 09.06.2012
Украина  BozKurt
Понедельник, 03.02.2014, 12:25 | Сообщение # 75
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Это не та проверка.
Сообщение отредактировал ColR_iT - Понедельник, 03.02.2014, 12:28
  Злобная реклама
Понедельник, 03.02.2014, 12:25
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Поиск: