Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 11
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Меню нюансы.
Меню нюансы.
Regedit Дата: Пятница, 28.08.2015, 21:08:45 | Сообщение # 1
Сообщений: 135
Репутация: 1 [ +/- ]
Народ, есть меню в обработчике которого

Код
if (action == MenuAction_End)
{
        CloseHandle(menu);   
        return;   
}
if (action != MenuAction_Select) return;


Ниже после выполнения функции у меня стоит:

Код
DisplayMenuAtItem(menu, client, GetMenuSelectionPosition(), 0);


Сейчас когда я выбираю пункт меню менюшка закрывается несмотря на команду вернуться к текущей позиции...

Т.е мне нужно чтобы меню при нажатии на его оставалось на той же странице, но нужно это сделать так чтобы небыло утечки памяти..

Код
MenuAction_End reason  

Код
MenuEnd_Selected - выбрана опция в меню  
MenuEnd_VotingDone - голосование было завершено  
MenuEnd_VotingCancelled - голосование отменено  
MenuEnd_Cancelled - меню было отменено (param2 = reason)  
MenuEnd_Exit - игрок нажал "exit (выход)"  
MenuEnd_ExitBack - нажал "back"


Как пользоваться причинами (reason) типа MenuEnd_Selected и т д...?


Сообщение отредактировал Regedit - Пятница, 28.08.2015, 21:33:34
 
_R1KO_ Дата: Пятница, 28.08.2015, 22:02:19 | Сообщение # 2
Сообщений: 182
Репутация: 26 [ +/- ]
Цитата Regedit ()
Т.е мне нужно чтобы меню при нажатии на его оставалось на той же странице, но нужно это сделать так чтобы небыло утечки памяти..

Поступи так.
Например у тебя есть ф-я отправки меню:
Код

ShowClientMenu(iClient)
{
  // создаешь меню.
  DisplayMenu(menu, iClient, 0);
}


Заменяй его на:
Код

ShowClientMenu(iClient, item)
{
  // создаешь меню.
  DisplayMenuAtItem(menu, iClient, item, 0);
}


А в хандлере меню:
Код

ShowClientMenu(iClient, GetMenuSelectionPosition());


А хандл пусть так и закрывается.

А вот это
Код

DisplayMenuAtItem(menu, client, GetMenuSelectionPosition(), 0);

Актуально для глобальных (статических) меню.
 
Regedit Дата: Пятница, 28.08.2015, 22:55:01 | Сообщение # 3
Сообщений: 135
Репутация: 1 [ +/- ]
тогда нужно будет задать item по умолчанию так:

Код
ShowClientMenu(iClient, item = 0)  
{  
   // создаешь меню.  
   DisplayMenuAtItem(menu, iClient, item, 0);  
}


Кстате 1 страница будет равно 0 или 1 ? item = 0 или item = 1 по умолчанию?

А за идею спасибо.=)
 
_R1KO_ Дата: Пятница, 28.08.2015, 23:03:46 | Сообщение # 4
Сообщений: 182
Репутация: 26 [ +/- ]
Это не страница, а пункт.

GetMenuSelectionPosition получает номер первого пункта открытой страницы чтобы открыть меню на той же странице.


Сообщение отредактировал _R1KO_ - Пятница, 28.08.2015, 23:04:28
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Меню нюансы.
Страница 1 из 11
Поиск: