Перейти к содержанию
RomaL23

Рандомные менюшки при заходе в игру (CoP)

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

 

Чтобы при заходе в игру мы видели рандомные менюшки, нам нужно создать три xml блока и немного изменить скрипт ui_main_menu.script.

Для начала сделаем три xml блока.
ui_mm_main.xml:

 

<w>
  <!-- Фон 1 -->
  <background1>
    <auto_static x="0" y="0" width="1024" height="768" stretch="1">
      <texture>ui\mm_background1</texture>
    </auto_static>
  </background1>

  <!-- Фон 2 -->
  <background2>
    <auto_static x="0" y="0" width="1024" height="768" stretch="1">
      <texture>ui\mm_background2</texture>
    </auto_static>
  </background2>

  <!-- Фон 3 -->
  <background3>
    <auto_static x="0" y="0" width="1024" height="768" stretch="1">
      <texture>ui\mm_background3</texture>
    </auto_static>
  </background3>

  <!-- Главное меню (одинаковая разметка, меняется только фон через секцию) -->
  <menu_main btn_height="34" font="letterica18">
    <btn name="btn_new_game" caption="ui_mm_newgame" />
    <btn name="btn_load"     caption="ui_mm_load_game" />
    <btn name="btn_net_game" caption="ui_mm_network_game" />
    <btn name="btn_options"  caption="ui_mm_options_n" />
    <btn name="btn_credits"  caption="ui_mm_credits" />
    <btn name="btn_quit"     caption="ui_mm_quit2windows" />
  </menu_main>
</w>
 

С профилями думаю не у кого не возникнет проблем, поэтому переходим к скрипту.
В нём нас интересует эта строка --> xml:InitStatic("background", self)

заменяем эту строку на:

-- выбираем случайный фон (1..3)
local rand_bg = math.random(3)
local section_name = "background" .. rand_bg

-- инициализация выбранного фона
xml:InitStatic(section_name, self)
 

Вот и всё. Больше нас ничего не интересует, кнопки и шниага работают по оригиналу, скрипт особо не задет.

В контексте этого скрипта, InitControls будет выглядеть так:


 

function main_menu:InitControls()
    self:SetWndRect(Frect():set(0,0,1024,768))

    local xml = CScriptXmlInit()
    xml:ParseFile("ui_mm_main.xml")

    -- случайный выбор одного из трёх фонов
    local rand_bg = math.random(3)
    local section_name = "background" .. rand_bg
    xml:InitStatic(section_name, self)

    self.shniaga = xml:InitMMShniaga("shniaga_wnd", self)

    self.message_box = CUIMessageBoxEx()
    self:Register(self.message_box, "msg_box")

    local _ver = xml:InitStatic("static_version", self)
    local mm = _G.main_menu.get_main_menu()
    _ver:TextControl():SetText("ver. " .. mm:GetGSVer())

    self.l_mgr = mm:GetLoginMngr()
    self.acc_mgr = mm:GetAccountMngr()
    self.profile_store = mm:GetProfileStore()
    self.gs_profile = self.l_mgr:get_current_profile()
    
    if (self.gs_profile and not(level.present())) then
        self.shniaga:ShowPage(CUIMMShniaga.epi_new_network_game) --fake
        self.shniaga:SetPage(CUIMMShniaga.epi_main, "ui_mm_main.xml", "menu_main_logout")
        self.shniaga:ShowPage(CUIMMShniaga.epi_main)
    end
end


!Фон выбирается случайно из уже существующих секций XML.

Этот урок для людей которые хотя-бы немного понимают, как прописать путь к своим текстурам в xml...
Если что-то не понятно, задавайте вопросы, решим.

  • Лайк 1
  • Аплодисменты 1

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу