GUI. Выбор группировки - cуть заключается в том, чтобы при первом же разговоре с Тропником, выводился интерфейс и игрок сам - смог выбрать группировку.
Создаем новый скрипт и примеру назовем его ui_selecting_grouping.script открывай его и вставляем:
Код
lass "selecting_group" (CUIScriptWnd) -- Регистрация нового класса GUI элемента
function main() -- Даем отсылки на запуски GUI local hud = selecting_group(get_hud()) -- Вывод на худ всего нашего GUI level.start_stop_menu(hud, true) -- Возможность закрыть интерфейс end
function selecting_group:__init()super() -- Иницилизиция класса self:InitControls() -- Отсылка к функции регистрации элементов окна self:InitCallBacks() -- Отсылка к функции регистрации коллбеков end
function selecting_group:__finalize() -- Завершения работы нового класса end
function selecting_group:InitControls() -- Иницилизации элементов окна self:SetWndRect(Frect():set(233,197,1024,768)) -- Установка размера окна local xml = CScriptXmlInit() -- Возможность регистрации новый *xml файлов xml:ParseFile("ui_selecting_grouping.xml") -- Регистируем новый *xml файлы через наш скрипт xml:InitStatic("background", self) -- Основной фон xml:InitStatic("static_name", self) -- Надпись "Выберите группировку" xml:InitStatic("texture_static_1", self) -- Иконка Сталкера xml:InitStatic("texture_static_2", self) -- Иконка Бандита xml:InitStatic("texture_static_3", self) -- Иконка Свободовца xml:InitStatic("texture_static_4", self) -- Иконка Долговца self:Register(xml:Init3tButton("btn_1", self),"btn_1") -- Кнопка выбора группировки self:Register(xml:Init3tButton("btn_2", self),"btn_2") -- Кнопка выбора группировки self:Register(xml:Init3tButton("btn_3", self),"btn_3") -- Кнопка выбора группировки self:Register(xml:Init3tButton("btn_4", self),"btn_4") -- Кнопка выбора группировки end
function selecting_group:OnButton_1_clicked() -- Функция нажатия 1 кнопки printf ("ACTOR NOW IN STALKER COMMUNITY") if db.actor:character_community() ~= "(stalker)" then db.actor:set_character_community("actor_stalker", 0, 0) -- Записываем ГГ в группировку Сталкеры end self:on_quit() end
function selecting_group:OnButton_2_clicked() -- Функция нажатия 2 кнопки printf ("ACTOR NOW IN BANDIT COMMUNITY") if db.actor:character_community() ~= "(bandit)" then db.actor:set_character_community("actor_bandit", 0, 0) -- Записываем ГГ в группировку Бандиты end self:on_quit() end
function selecting_group:OnButton_3_clicked() -- Функция нажатия 3 кнопки printf ("ACTOR NOW IN FREEDOM COMMUNITY") if db.actor:character_community() ~= "(freedom)" then db.actor:set_character_community("actor_freedom", 0, 0) -- Записываем ГГ в группировку Свобода end self:on_quit() end
function selecting_group:OnButton_4_clicked() -- Функция нажатия 4 кнопки printf ("ACTOR NOW IN DOLG COMMUNITY") if db.actor:character_community() ~= "(dolg)" then db.actor:set_character_community("actor_dolg", 0, 0) -- Записываем ГГ в группировку Долг end self:on_quit() end
function selecting_group:on_quit() -- Закрытие GUI self:GetHolder():start_stop_menu(self, true) -- Закрываем GUI local hud = get_hud() -- Убераем интерфейс с худа hud:HideActorMenu() -- Если актер зашел в гл.меню end
function selecting_group:OnKeyboard(dik, keyboard_action) -- Думаю тут, все и так понятно CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:on_quit() end end return true end
Создаем новый *xml файл в configs/ui с названием ui_selecting_grouping.xml открываем и вставляем следующие:
В данном уроке я не буду расписывать создания текстуры, поэтому прилагаю к уроку уже готовую текстуры, которую можно скачать здесь. Текстуру положить по адресу gamedata/textures/ui
Идем в configs/gameplay открываем dialogs_marsh.xml находим диалог Тропника и прописываем ему следующие: <action>ui_selecting_grouping.main</action> сохраняем и бежим тестировать.
Если сделали все - как расписано в данном уроке, то в итоге у нас получится что-то вроде этого:
Сообщение отредактировал Stalker_Monstr - Суббота, 04.01.2014, 18:06
Stalker_Monstr, теперь норм. По тутору: хорошо, но все же есть пожелания. 1) Прокомментировать бы основные элементы XML. 2) Все же, лучше начинать с текстуры и конфига. Нужно для начала понять, какие элементы в принципе имеет Gui-окно, а потом присваивать им значение, не так ли? А так все отлично!
P.S. Знакомое оформление спойлеров и комментарии
Сообщение отредактировал FantomICW - Суббота, 04.01.2014, 19:11
Например вот такая функция: function ui_medkit_i221:OnButton_spawn_medkit_clicked() give_object_to_actor("medkit", 3) ----- предмет появляетса self.button_spawn_medkit:Enable(false) --- а когда ставлю вот эти строки при нажатии на кнопку вылет с логом : Description : ....r\gamedata\scripts\mod_callbacks.script:13: attempt to index global 'ui_npc_spawn' (a nil value)