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

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

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

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

Менюшка выносит мозг

Статус пользователя ssx
сообщение 22.2.2016, 22:03
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Делаю кастомное меню для выбора команды и столкнулся с тем что не могу сделать 1 2 5 6 0 вместо 1 2 3 4 0

Код который работает:
Код:
public func_joinmenu(id, menu, key)
{
new accss, clbck, data[6], name[64], itm
menu_item_getinfo(menu, key, accss, data, 5, name, 63, clbck)
itm = str_to_num(data)
switch(itm)
{
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "1")
}
case 2:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "2")
}
case 3:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "5")
}
case 4:
{
user_kill(id, 1)
engclient_cmd(id, "jointeam", "6")
}
case 0: menu_destroy(menu)
}
return PLUGIN_HANDLED
}

public go_joinmenu(id)
{
new joinmenu
joinmenu = menu_create("\r[БлаБлаБла] \w-> \rВыбрать команду","func_joinmenu");
menu_additem( joinmenu,"\yТеррористы (Terrorists)", "1", 0)
menu_additem( joinmenu,"\yМенты (Counter-Terrorists)", "2", 0)
menu_additem( joinmenu,"\yАвто-выбор (Auto)", "3", 0)
menu_additem( joinmenu,"\yСпектаторы (Spectators)", "4", 0)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_additem(joinmenu, "Выход", "0")
menu_setprop(joinmenu, MEXIT_ALL, 0)

menu_display(id, joinmenu)
return PLUGIN_HANDLED
}


Код в котором не работают 5 6:
Код:
public func_joinmenu(id, menu, key)
{
new accss, clbck, data[6], name[64], itm
menu_item_getinfo(menu, key, accss, data, 5, name, 63, clbck)
itm = str_to_num(data)
switch(itm)
{
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "1")
}
case 2:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "2")
}
case 5:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "5")
}
case 6:
{
user_kill(id, 1)
engclient_cmd(id, "jointeam", "6")
}
case 0: menu_destroy(menu)
}
return PLUGIN_HANDLED
}

public go_joinmenu(id)
{
new joinmenu
joinmenu = menu_create("\r[БлаБлаБла] \w-> \rВыбрать команду","func_joinmenu");
menu_additem( joinmenu,"\yТеррористы (Terrorists)", "1", 0)
menu_additem( joinmenu,"\yМенты (Counter-Terrorists)", "2", 0)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_additem( joinmenu,"\yАвто-выбор (Auto)", "5", 0)
menu_additem( joinmenu,"\yСпектаторы (Spectators)", "6", 0)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_additem(joinmenu, "Выход", "0")
menu_setprop(joinmenu, MEXIT_ALL, 0)

menu_display(id, joinmenu)
return PLUGIN_HANDLED
}


В чём проблема ? Помогите разобраться !


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 22.2.2016, 22:09
Сообщение #2
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

Глянь как в jail моде реализовано )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Solo
сообщение 22.2.2016, 22:09
Сообщение #3


Стаж: 10 лет
Город: Україна

Сообщений: 300
Благодарностей: 137
Полезность: 111

попробуй так сделать
Код:
{
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "1")
}
case 2:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "2")
}
case 3:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "3")
}
case 4:
{
user_kill(id, 1)
engclient_cmd(id, "jointeam", "4")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 22.2.2016, 22:10
Сообщение #4


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Solo,
Пробовал case 3 и case 4 - не работает cray.gif
А вижу у тебя там jointeam 3 и 4 - это не правильно ибо 3 = ВИП а 4 нет такого.


Там сами кейсы не выбираются если разделяю через menu_addblank(joinmenu, 1)
(сами функции у меня правильны раз без разделителя работают)

Уже тыкался и так и сяк ..

Отредактировал: ssx, - 22.2.2016, 22:13


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 22.2.2016, 22:12
Сообщение #5
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

Попробуй

Код:

public func_joinmenu(id, menu, key)
{
new accss, clbck, data[6], name[64], itm
menu_item_getinfo(menu, key, accss, data, 5, name, 63, clbck)
itm = str_to_num(data)
switch(itm)
{
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "1")
}
case 2:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "2")
}
case 3,4: go_joinmenu(id)
case 5:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "5")
}
case 6:
{
user_kill(id, 1)
engclient_cmd(id, "jointeam", "6")
}
case 0: menu_destroy(menu)
}
return PLUGIN_HANDLED
}

public go_joinmenu(id)
{
new joinmenu
joinmenu = menu_create("\r[БлаБлаБла] \w-> \rВыбрать команду","func_joinmenu");
menu_additem( joinmenu,"\yТеррористы (Terrorists)", "1", 0)
menu_additem( joinmenu,"\yМенты (Counter-Terrorists)", "2", 0)
menu_additem( joinmenu,"\yАвто-выбор (Auto)", "5", 0)
menu_additem( joinmenu,"\yСпектаторы (Spectators)", "6", 0)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_additem(joinmenu, "Выход", "0")
menu_setprop(joinmenu, MEXIT_ALL, 0)

menu_display(id, joinmenu)
return PLUGIN_HANDLED
}


upd: поправил, пробуй

Отредактировал: Danjkeee^, - 22.2.2016, 22:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Solo
сообщение 22.2.2016, 22:14
Сообщение #6


Стаж: 10 лет
Город: Україна

Сообщений: 300
Благодарностей: 137
Полезность: 111

ssx, я тебе как примером показал, а там дальше свои цифры пробуй выставлять как тебе угодно)
Пробуй еще с этим поиграться Код:
1<<8
Код:
1<<7


Отредактировал: Solo, - 22.2.2016, 22:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 22.2.2016, 22:17
Сообщение #7


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Danjkeee^,
не работает :(



Цитата(ssx @ 22.2.2016, 22:15) *
Danjkeee^,
не работает :(

Даже если со вставкой
case 3,4: go_joinmenu(id)

использовать
menu_additem( joinmenu,"\yТеррористы (Terrorists)", "1", 0)
menu_additem( joinmenu,"\yМенты (Counter-Terrorists)", "2", 0)
menu_addblank(joinmenu, 1)
menu_addblank(joinmenu, 1)
menu_additem( joinmenu,"\yАвто-выбор (Auto)", "3", 0)
menu_additem( joinmenu,"\yСпектаторы (Spectators)", "4", 0)

То все равно не работает Авто-Выбор и Спектаторы - тупо закрывает меню а должно же снова открывать ..

Какой-то пи...ъ!


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 22.2.2016, 22:18
Сообщение #8
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

ssx,

Обновил код, пробуй
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 22.2.2016, 22:26
Сообщение #9


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(Danjkeee^ @ 22.2.2016, 22:18) *
ssx,

Обновил код, пробуй

работают функции но нету разделителя и цифры 1 2 3 4 разделитель 0 - то есть как у меня в первом коде.

П.С.
Нашел код неугомона:
changeteam.sma
Код:
public ShowMenu(id)
{
new szMenu[512], iLen = formatex(szMenu, charsmax(szMenu), "\yВыбор команды:^n^n"), iKeys = MENU_KEY_0;
new iNumTe = get_teamplayersnum(CS_TEAM_T), iNumCt = get_teamplayersnum(CS_TEAM_CT), CsTeams:iTeam = cs_get_user_team(id);
if(iNumTe > iNumCt) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \dТеррористы^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y1. \wТеррористы^n");
iKeys |= MENU_KEY_1;
}
if(iNumCt > iNumTe) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y2. \dКонтр-террористы^n^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y2. \wКонтр-террористы^n^n");
iKeys |= MENU_KEY_2;
}
if(g_VIPMap)
{
if(iTeam != CS_TEAM_CT) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y3. \dСтать VIP^n^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y3. \wСтать VIP^n^n");
iKeys |= MENU_KEY_3;
}
}
if(CS_TEAM_UNASSIGNED < iTeam < CS_TEAM_SPECTATOR) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y5. \dСлучайный выбор^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y5. \wСлучайный выбор^n");
iKeys |= MENU_KEY_5;
}
if(iTeam == CS_TEAM_SPECTATOR) iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y6. \dНаблюдение^n^n^n");
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y6. \wНаблюдение^n^n^n");
iKeys |= MENU_KEY_6;
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y0. \wВыход");
return show_menu(id, iKeys, szMenu, -1, "Team Menu");
}

public HandleMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
engclient_cmd(id, "jointeam", "1");
}
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
engclient_cmd(id, "jointeam", "2");
}
case 2:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
engclient_cmd(id, "jointeam", "3");
}
case 4:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8));
engclient_cmd(id, "jointeam", "5");
}
case 5:
{
user_kill(id, 1);
engclient_cmd(id, "jointeam", "6");
}
}
return PLUGIN_HANDLED;
}


Но тут через formatex + VGU стиль замешан .. мне бы проще сделать .
Да и jointeam команды я позже переделаю в другие действия..

Пока что не могу разобраться почему не выбираются case 5 и 6 если с разделителем .

Отредактировал: ssx, - 22.2.2016, 22:28


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 22.2.2016, 23:01
Сообщение #10


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Никак не получается сделать "1 2 разделитель 5 6 разделитель 0" что бы 5 и 6 работали .

Может кто подскажет как через formatex сделать рабочий вариант ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 22.2.2016, 23:03
Сообщение #11
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Цитата(ssx @ 22.2.2016, 23:01) *
Никак не получается сделать "1 2 разделитель 5 6 разделитель 0" что бы 5 и 6 работали .

Может кто подскажет как через formatex сделать рабочий вариант ?

На форуме это обсуждалось,попробуй поиском найти
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя paffgame
сообщение 22.2.2016, 23:18
Сообщение #12


Стаж: 11 лет

Сообщений: 126
Благодарностей: 61
Полезность: 367

Цитата(ssx @ 23.2.2016, 0:01) *
Никак не получается сделать "1 2 разделитель 5 6 разделитель 0" что бы 5 и 6 работали .

Может кто подскажет как через formatex сделать рабочий вариант ?

Код:
#include < amxmodx >
#include < amxmisc >

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_5|MENU_KEY_6|MENU_KEY_0
public plugin_init(){
register_menu("TMenu", keys, "func_menu");
register_clcmd("say /test", "ShowMenu");
}

public ShowMenu(id){
new menu[512], len;
len = formatex(menu, charsmax(menu), "БЛАБЛАБЛА");
len += formatex(menu[len], charsmax(menu) - len, "^n^n\r[\y1.\r] Теры");
len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y2.\r] Менты");

len += formatex(menu[len], charsmax(menu) - len, "^n^n\r[\y5.\r] Авто-выбор");
len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y6.\r] Спекторы");

len += formatex(menu[len], charsmax(menu) - len, "^n^n\r[\y0.\r] Выход");
show_menu(id, keys, menu, -1, "TMenu");
}

public func_menu(id, key){
switch(key){
case 0: server_print("1")//Теры
case 1: server_print("2")//КТ
case 4: server_print("5")//Авто
case 5: server_print("6")//Спектры
//case 9: server_print("EXIT")
}
return PLUGIN_HANDLED;
}


Не "Говнокод", а "необъективность решений и извилистый подход к задаче".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 22.2.2016, 23:32
Сообщение #13


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

УРА!!!! paffgame смог решить проблему !!!!

ВСЕМ СПАСИБО ЗА УЧАСТИЕ !!!

Вот так работает!
Код:
public ShowMenu(id){
new menu[512], len;
len = formatex(menu, charsmax(menu), "БЛАБЛАБЛА");
len += formatex(menu[len], charsmax(menu) - len, "^n^n\r[\y1.\r] Теры");
len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y2.\r] Менты");

len += formatex(menu[len], charsmax(menu) - len, "^n^n\r[\y5.\r] Авто-выбор");
len += formatex(menu[len], charsmax(menu) - len, "^n\r[\y6.\r] Спекторы");

len += formatex(menu[len], charsmax(menu) - len, "^n^n\r[\y0.\r] Выход");
show_menu(id, keys, menu, -1, "TMenu");
}

public func_menujoin(id, key){
switch(key){
case 0:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "1")
}
case 1:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "2")
}
case 4:
{
set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8))
engclient_cmd(id, "jointeam", "5")
}
case 5:
{
user_kill(id, 1)
engclient_cmd(id, "jointeam", "6")
}
//case 9: server_print("EXIT")
}
return PLUGIN_HANDLED;
}


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 23.2.2016, 0:11
Сообщение #14
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

ssx, Код:
new iPlayers[32], iNumCT , iNumT;

get_players(iPlayers, iNumCT, "e", "CT" );
get_players(iPlayers, iNumT, "e", "TERRORIST");

static szMenu[256]
static iLen;

iLen = formatex(szMenu, charsmax(szMenu), "\wВыберите команду:^n^n");
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wКpасные \y[%d]^n\r2. \wСиние \y[%d]^n^n\r5. \wАвто-выбoр^n\r6. \dСерые", iNumT, iNumCT);

show_menu(id, MENU_KEYS, szMenu, -1, "");
return PLUGIN_HANDLED;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: