Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

connectmenu на 2 страницы

Статус пользователя nicomp
сообщение 21.5.2014, 22:10
Сообщение #1
Стаж: 18 лет

Сообщений: 170
Благодарностей: 4
Полезность: < 0

Подскажите а можно connectmenu сделать на 1 страничку чтоб все пункты вмещались без их удаления?
А то у меня получается что меню на 2 страницы...
sma

#define VERSION "1.0"

#include <amxmodx>
#include <fakemeta>
#include <amxmisc>

#define m_iVGUI 510
#define m_fGameHUDInitialized 349

new TCount, CTCount

// Old Style Menus
stock const FIRST_JOIN_MSG[] = "#Team_Select";
stock const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect";
stock const INGAME_JOIN_MSG[] = "#IG_Team_Select";
stock const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect";
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC);

// New VGUI Menus
stock const VGUI_JOIN_TEAM_NUM = 2;

const PDATA_SAFE = 2
const OFFSET_CSTEAMS = 114
const OFFSET_LINUX = 5 // offsets 5 higher in Linux builds

enum {
FM_CS_TEAM_UNASSIGNED = 0,
FM_CS_TEAM_T,
FM_CS_TEAM_CT,
FM_CS_TEAM_SPECTATOR
}

public plugin_init() {
register_plugin("[BG] Connect Menu", VERSION, "Skype")
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")
register_clcmd("chooseteam", "server_menu")
register_clcmd("jointeam", "server_menu")
register_clcmd("joinclass", "server_menu")
}

public client_putinserver(id) {
set_task(0.1, "server_menu", 22000 + id)
}

public server_menu(id) {
if(id > 22000) id -= 22000
if(!is_user_connected(id))
return PLUGIN_CONTINUE

new menu = menu_create("\yMozgShturm Menu", "server_menu_handler")
menu_additem(menu, "\yВыбрать команду", "1", 0)
menu_additem(menu, "\wУзнать \rTop15", "2", 0)
menu_additem(menu, "\yАрми бонусы", "3", 0)
menu_additem(menu, "\wОбнулить счет", "4", 0)
menu_additem(menu, "\wЗаткнуть игрока", "5", 0)
menu_additem(menu, "\wГолосование за бан", "6", 0)
menu_additem(menu, "\wАдмины онлайн", "7", 0)
menu_additem(menu, "\yЦена за Админку", "8", 0)

menu_additem(menu, "\rАдмин меню", "9", 0)
if(fm_cs_get_user_team(id) != FM_CS_TEAM_UNASSIGNED) menu_setprop(menu, MPROP_EXITNAME, "Выйти")
else {
blind_check(id)
menu_setprop(menu, MEXIT_ALL, 0)
}
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}

public message_ShowMenu(iMsgid, iDest, id) {
static sMenuCode[iMaxLen];
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC)) {
set_autojoin_task(id, iMsgid)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public message_VGUIMenu(iMsgid, iDest, id) {
if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM) {
return PLUGIN_CONTINUE;
}

set_autojoin_task(id, iMsgid)
return PLUGIN_HANDLED;
}

public blind_check(id) {
if(id > 21000) id -= 21000
if(fm_cs_get_user_team(id) != FM_CS_TEAM_UNASSIGNED)
return

set_task(1.0, "blind_check", id+21000)
}

public server_menu_handler(id, menu, item) {
new cmd[3], access, callback

menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: chooseteam(id)
case 2: client_cmd(id, "say /top15")
case 3: client_cmd(id, "say /anew")
case 4: client_cmd(id, "say /rs")
case 5: client_cmd(id, "say /mute")
case 6: client_cmd(id, "say /voteban")
case 7: client_cmd(id, "say /admins")
case 8: client_cmd(id, "say /pokupka")
case 9: client_cmd(id, "amxmodmenu")
}

return PLUGIN_HANDLED
}

public chooseteam(id) {
new option[64]
count_teams()
new menu = menu_create("Выбор команды", "chooseteam_handler")
formatex(option, charsmax(option), "Террористы \r[%d]", TCount)
menu_additem(menu, option, "1", 0)
formatex(option, charsmax(option), "Контр-террористы \r[%d]", CTCount)
menu_additem(menu, option, "2", 0)
formatex(option, charsmax(option), "Спектаторы")
menu_additem(menu, option, "3", 0)
if(fm_cs_get_user_team(id) != FM_CS_TEAM_UNASSIGNED) menu_setprop(menu, MPROP_EXITNAME, "Выйти")
else menu_setprop(menu, MPROP_EXIT, -1)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}

public chooseteam_handler(id, menu, item) {
new cmd[3], access, callback
static restore, vgui, msgblock

if(item == MENU_EXIT) {
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
set_pdata_int(id, m_fGameHUDInitialized, 1)
menu_destroy(menu)
return PLUGIN_HANDLED
}

restore = get_pdata_int(id, m_iVGUI)
vgui = restore & (1<<0)
if(vgui)
set_pdata_int(id, m_iVGUI, restore & ~(1<<0))

menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)
new key = str_to_num(cmd)
switch (key) {
case 1: {
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
engclient_cmd(id, "jointeam", " 1")
engclient_cmd(id, "joinclass", " 1")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
case 2: {
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
engclient_cmd(id, "jointeam", " 2")
engclient_cmd(id, "joinclass", " 2")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
case 3: {
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
engclient_cmd(id, "jointeam", " 6")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
}
if(vgui)
set_pdata_int(id, m_iVGUI, restore)
return PLUGIN_HANDLED
}

public count_teams() {
CTCount = 0
TCount = 0

new Players[32]
new playerCount, i
get_players(Players, playerCount, "")
for (i=0; i<playerCount; i++) {
if (is_user_connected(Players[i])) {
if (fm_cs_get_user_team(Players[i]) == FM_CS_TEAM_CT) CTCount++;
if (fm_cs_get_user_team(Players[i]) == FM_CS_TEAM_T) TCount++;
}
}
}

public task_Autojoin(iParam[], id) {
new iMsgBlock = get_msg_block(iParam[0]);
set_msg_block(iParam[0], BLOCK_SET);
server_menu(id)
set_msg_block(iParam[0], iMsgBlock);
}

stock set_autojoin_task(id, iMsgid) {
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam));
}

stock fm_cs_get_user_team(id) {
if (pev_valid(id) != PDATA_SAFE)
return FM_CS_TEAM_UNASSIGNED;

return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 21.5.2014, 22:20
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

nicomp, вы, возможно, не заметили, но в плагине 2 (два) меню.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя nicomp
сообщение 21.5.2014, 22:27
Сообщение #3
Стаж: 18 лет

Сообщений: 170
Благодарностей: 4
Полезность: < 0

Как сделать чтоб одно было?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя strelok93
сообщение 21.5.2014, 23:53
Сообщение #4


Стаж: 12 лет

Сообщений: 905
Благодарностей: 392
Полезность: 576

nicomp,
Тут решение сынок !
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 22.5.2014, 1:07
Сообщение #5


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

nicomp,
Держи,твоя менюшка с кнопкой выход и все на одной странице:

Скрытый текст
Код:
#include <amxmodx>
#include <fakemeta>
#include <amxmisc>

#define VERSION "1.0"

#define m_iVGUI 510
#define m_fGameHUDInitialized 349

new TCount, CTCount

// Old Style Menus
stock const FIRST_JOIN_MSG[] = "#Team_Select";
stock const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect";
stock const INGAME_JOIN_MSG[] = "#IG_Team_Select";
stock const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect";
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC);

// New VGUI Menus
stock const VGUI_JOIN_TEAM_NUM = 2;

const PDATA_SAFE = 2
const OFFSET_CSTEAMS = 114
const OFFSET_LINUX = 5 // offsets 5 higher in Linux builds

enum
{
FM_CS_TEAM_UNASSIGNED = 0,
FM_CS_TEAM_T,
FM_CS_TEAM_CT,
FM_CS_TEAM_SPECTATOR
}

public plugin_init()
{
register_plugin("[BG] Connect Menu", VERSION, "Skype")
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")
register_clcmd("chooseteam", "server_menu")
register_clcmd("jointeam", "server_menu")
register_clcmd("joinclass", "server_menu")
}

public client_putinserver(id)
{
set_task(0.1, "server_menu", 22000 + id)
}

public server_menu(id)
{
if(id > 22000) id -= 22000
if(!is_user_connected(id))
return PLUGIN_CONTINUE

new menu = menu_create("\yMozgShturm Menu", "server_menu_handler")

menu_additem(menu, "\yВыбрать команду", "1", 0)
menu_additem(menu, "\wУзнать \rTop15", "2", 0)
menu_additem(menu, "\yАрми бонусы", "3", 0)
menu_additem(menu, "\wОбнулить счет", "4", 0)
menu_additem(menu, "\wЗаткнуть игрока", "5", 0)
menu_additem(menu, "\wГолосование за бан", "6", 0)
menu_additem(menu, "\wАдмины онлайн", "7", 0)
menu_additem(menu, "\yЦена за Админку", "8", 0)
menu_additem(menu, "\rАдмин меню", "9", 0)

menu_setprop( menu,MPROP_PERPAGE, 0)

menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)

menu_display(id, menu, 0)
return PLUGIN_HANDLED
}

public message_ShowMenu(iMsgid, iDest, id)
{
static sMenuCode[iMaxLen];
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC))
{
set_autojoin_task(id, iMsgid)
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public message_VGUIMenu(iMsgid, iDest, id)
{
if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
{
return PLUGIN_CONTINUE;
}

set_autojoin_task(id, iMsgid)
return PLUGIN_HANDLED;
}

public blind_check(id)
{
if(id > 21000) id -= 21000
if(fm_cs_get_user_team(id) != FM_CS_TEAM_UNASSIGNED)
return

set_task(1.0, "blind_check", id+21000)
}

public server_menu_handler(id, menu, item)
{
new cmd[3], access, callback

menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)

new key = str_to_num(cmd)

switch (key)
{
case 1: chooseteam(id)
case 2: client_cmd(id, "say /top15")
case 3: client_cmd(id, "say /anew")
case 4: client_cmd(id, "say /rs")
case 5: client_cmd(id, "say /mute")
case 6: client_cmd(id, "say /voteban")
case 7: client_cmd(id, "say /admins")
case 8: client_cmd(id, "say /pokupka")
case 9: client_cmd(id, "amxmodmenu")
}
return PLUGIN_HANDLED
}

public chooseteam(id)
{
new option[64]
count_teams()

new menu = menu_create("Выбор команды", "chooseteam_handler")

formatex(option, charsmax(option), "Террористы \r[%d]", TCount)
menu_additem(menu, option, "1", 0)

formatex(option, charsmax(option), "Контр-террористы \r[%d]", CTCount)
menu_additem(menu, option, "2", 0)

formatex(option, charsmax(option), "Спектаторы")
menu_additem(menu, option, "3", 0)

if(fm_cs_get_user_team(id) != FM_CS_TEAM_UNASSIGNED) menu_setprop(menu, MPROP_EXITNAME, "Выйти")
else menu_setprop(menu, MPROP_EXIT, -1)

menu_display(id, menu, 0)
return PLUGIN_HANDLED
}

public chooseteam_handler(id, menu, item)
{
new cmd[3], access, callback
static restore, vgui, msgblock

if(item == MENU_EXIT)
{
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
set_pdata_int(id, m_fGameHUDInitialized, 1)

menu_destroy(menu)
return PLUGIN_HANDLED
}

restore = get_pdata_int(id, m_iVGUI)
vgui = restore & (1<<0)
if(vgui)
set_pdata_int(id, m_iVGUI, restore & ~(1<<0))

menu_item_getinfo(menu, item, access, cmd,2,_,_, callback)

new key = str_to_num(cmd)

switch (key)
{
case 1:
{
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
engclient_cmd(id, "jointeam", " 1")
engclient_cmd(id, "joinclass", " 1")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
case 2:
{
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
engclient_cmd(id, "jointeam", " 2")
engclient_cmd(id, "joinclass", " 2")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
case 3:
{
msgblock = get_msg_block(get_user_msgid("ShowMenu"))
set_msg_block(get_user_msgid("ShowMenu"), BLOCK_ONCE)
engclient_cmd(id, "jointeam", " 6")
set_msg_block(get_user_msgid("ShowMenu"), msgblock)
}
}
if(vgui)
set_pdata_int(id, m_iVGUI, restore)
return PLUGIN_HANDLED
}

public count_teams()
{
CTCount = 0
TCount = 0

new Players[32]
new playerCount, i
get_players(Players, playerCount, "")

for (i=0; i<playerCount; i++)
{
if (is_user_connected(Players[i]))
{
if (fm_cs_get_user_team(Players[i]) == FM_CS_TEAM_CT) CTCount++;
if (fm_cs_get_user_team(Players[i]) == FM_CS_TEAM_T) TCount++;
}
}
}

public task_Autojoin(iParam[], id)
{
new iMsgBlock = get_msg_block(iParam[0]);
set_msg_block(iParam[0], BLOCK_SET);
server_menu(id)
set_msg_block(iParam[0], iMsgBlock);
}

stock set_autojoin_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam));
}

stock fm_cs_get_user_team(id)
{
if (pev_valid(id) != PDATA_SAFE)
return FM_CS_TEAM_UNASSIGNED;

return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);
}


подправил код

Отредактировал: MiXa, - 23.5.2014, 11:39


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: