Случайная подборка модов
Равновесие
3.2
HARDWARMOD - 3.2
4.0
Priboi story
4.1
Winter of Death: Ultimatum
4.0
Add-on for S.T.A.L.K.E.R. Beta
3.9
Ночь Перед Рождеством 3
4.4
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: 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
Поиск: