[ Обновленные темы · Новые сообщения · Участники · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Кастомные внутриигровые меню или виджеты
firsacho
Админы
Сообщений: 3813
Реп: 84 / Инв: 15
Закину сюда, вдруг кому то пригодится.
Нашлась возможность показывать какие-нибудь всплывающие окна с меню и даже читать с них информацию прямо из скрипта.
Делается это следующей функцией:

Код
SendStringMessage("WXMsg.CreatePopUp","WXNETP.Chat")
, где WXNETP.Chat - меню, которое хотим вывести на экран.

Таким образом можно добавить в твик MENUTWKXINGAME свои менюхи и отобразить в любой нужный момент. Скорее всего таким же образом можно и выводить какие то виджеты на экран, например очки команд в определенном режиме / деньги / лучшего игрока на момент игры и т.п.

Возможно и прочитать из скрипта клик по кнопке в таком меню. Для этого добавляем в твике свою текстовую/числовую строку для записи значения кнопки (Обзовем TXT.MyValue), а на саму кнопку вешаем:
     
Код
<Messages_Selected>WXMsg.SetDataResource^TXT.MyValue^4</Messages_Selected>      
      <Messages_Selected>WXMsg.KillPopUpNamed$WXFEP.MyMenu</Messages_Selected>
      <Messages_Selected>Game.BriefingDialogNowOff</Messages_Selected>
Таким образом мы передали в нашу строку значение 4, закрыли нашу менюху и запустили встроенную в игру функцию Game.BriefingDialogNowOff, чтобы узнать о моменте нажатия кнопки.

Далее в скрипте отслеживаем событие нажатия и читаем нашу строку:

Код
function Game_BriefingDialogNowOff()
    local option = GetData("TXT.MyValue")
    Message ("Menu click: "..option)
end

Но! Если скрипт по нажатию кнопки вешать функции, которые влияют на состояние игры, при сетевой игре это приведет к рассинхрону, т.к. нажатие кнопки не передастся другим игрокам. Если найду, как это решить - дополню тему.




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

mod.worms.pro - мод Worms Renewation для Worms4
 
firsacho
Админы
Сообщений: 3813
Реп: 84 / Инв: 15
Ниже приведу сами исходники кастомного меню для экономии времени:
1. MENUTWKXINGAME - код меню сюда не поместился, прикладываю его xml во вложении документом;
2. LUA Скрипт:

Код
function Game_BriefingDialogNowOff()
    local option = GetData("WXFEP.RenewCustomMenu.SelectedItem")
    Message ("Menu click: "..option)
    SetData("WXFEP.RenewCustomMenu.SelectedItem",0)
end
function Message(val)
        local myComment = tostring(val)
        SendMessage("Commentary.Clear")
        SendMessage("Commentary.NoDefault")  
        SetData("Text.TestComment",myComment)
        SetData("CommentaryPanel.Comment",  "Text.TestComment")
        SetData("CommentaryPanel.Delay", 30000)
        SendMessage("CommentaryPanel.ScriptText")

end


Скриншоты меню и работы скрипта:

Прикрепления: 5800700.jpg (174.7 Kb) · 8460381.jpg (154.3 Kb) · CustomMenu.xml (23.5 Kb)




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

mod.worms.pro - мод Worms Renewation для Worms4
 
Unaited
Админы
Сообщений: 1463
Реп: 92 / Инв: 13
логичнее хранить кастомные меню в датабанках

 
firsacho
Админы
Сообщений: 3813
Реп: 84 / Инв: 15
Unaited, Если это для одного единственного режима / карты да. Если одна болванка меню универсально используется во многих скриптах, то лучше в твик. Я думаю именно как универсальный шаблон сделать + аналогично хочу плашки виджеты 4 шт., на которых можно любую строку вывести, а может даже иконку к ним выбрать.



Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

mod.worms.pro - мод Worms Renewation для Worms4
 
  • Страница 1 из 1
  • 1
Поиск: