подскажите метод решения этой проблемы, что нужно добавить..
- Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#include <engine>
#include <ColorChat>
#define MAX_PLAYERS 32
#define DELAY_MONEY 800
#define csdm_map_time 5
#define PLUGIN "CSDM menu server"
#define VERSION "1.0"
#define AUTHOR "MrKiller1779"
#if AMXX_VERSION_NUM < 183
#define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame
#endif
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
new g_iTime[MAX_PLAYERS + 1], g_Timer;
new bool:g_speed[MAX_PLAYERS+1] = false;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
//Рег. основного меню
register_clcmd("menu", "cmdMenu");
register_clcmd("nightvision","cmdMenu");
//Рег. основного меню
//Рег. вип меню
register_clcmd("say /vipmenu", "Show_VipMenu");
register_clcmd("say_team /vipmenu", "Show_VipMenu");
register_clcmd("vipmenu", "Show_VipMenu");
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "Check_speed", 0);
//Рег. вип меню
//Рег. админ меню
register_clcmd("amxmodmenu", "AmxMenu");
register_menu("Menu_2", keys, "func_menu2");
//Рег. админ меню
//Параметры для вип меню
register_menucmd(register_menuid("Show_VipMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9), "Handle_VipMenu");
g_Timer = get_systime() + 300; //Время можно изменить по желанию
//Параметры для вип меню
}
public cmdMenu(id) {
new i_Menu = menu_create("\wМеню Сервера", "menu_handler");
menu_additem(i_Menu, "\wУстановить \yПушку", "1", 0);
menu_additem(i_Menu, "\wУстановить \yЛазер", "2", 0);
menu_additem(i_Menu, "\wУстановить \yРаздатчик", "3", 0);
menu_addblank (i_Menu, 0);
menu_additem(i_Menu, "\wУничтожить \r| \yРаздатчик", "4", 0);
menu_additem(i_Menu, "\wМагазин \r| \yНавыков", "5", 0);
menu_addblank (i_Menu, 0);
menu_additem(i_Menu, "\wМеню \yАдмина", "6", 0);
menu_additem(i_Menu, "\wМеню \yВип", "7", 0);
menu_addblank (i_Menu, 0);
menu_additem(i_Menu, "\wПередать \yденьги","8", 0);
menu_additem(i_Menu, "\wЗабанить \yчитера", "9", 0);
menu_additem(i_Menu, "\wСменить \yкарту", "10", 0);
menu_additem(i_Menu, "\wМут \yигрока", "11", 0);
menu_additem(i_Menu, "\wПерейти в \yнаблюдение", "12", 0);
menu_setprop(i_Menu, MPROP_BACKNAME, "\wНазад");
menu_setprop(i_Menu, MPROP_NEXTNAME, "\wВперед");
menu_setprop(i_Menu, MPROP_EXITNAME, "\wВыход");
menu_display(id, i_Menu, 0)
}
public Show_VipMenu(id)
{
new szMenu[1024];
//Условия при которых таймер не может быть меньше 0
new timer = g_Timer - get_systime();
new itimer = g_iTime[id] - get_systime();
if (timer < 0) {
timer = 0;
}
if (itimer < 0){
if (g_Timer > get_systime()){
itimer = 600;
} else itimer = 0;
}
//Условия при которых таймер не может быть меньше 0
new iLen = formatex(szMenu, charsmax(szMenu), "\wВип меню:^n\yМеню заработает через \r%d\y сек.^n", timer);
new iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9)
if(g_Timer < get_systime())
{
if(g_iTime[id] > get_systime())
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[1] Деньги [10000$] - [\r%d\d сек.]^n", itimer);
}
else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r1\y] \rДеньги \y[\r10000$\y]^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r2\y] \rСкорость^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r3\y] \rГравитация^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r4\y] \rЗдоровье \y[\r+ 100 HP\y]^n^n");
}
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[1] Деньги [10000$] - [\r%d\d сек.]^n", itimer);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[2] Скорость^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[3] Гравитация^n");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d[4] Здоровье [+ 100 HP]^n^n");
}
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\y[\r0\y] Выход");
return show_menu(id, iKeys, szMenu, -1, "Show_VipMenu");
}
public AmxMenu(id)
{
static menu[650], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\wМеню Админа^n^n");
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wКикнуть \yИгрока^n")
keys |= MENU_KEY_1
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dКикнуть \dИгрока^n")
keys &= ~MENU_KEY_1
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wЗабанить \yИгрока^n")
keys |= MENU_KEY_2
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dЗабанить \dИгрока^n")
keys &= ~MENU_KEY_2
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wУдарить\r/\wУбить \yИгрока^n")
keys |= MENU_KEY_3
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dУдарить\r/\dУбить \dИгрока^n")
keys &= ~MENU_KEY_3
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wКоманда \yИгрока^n")
keys |= MENU_KEY_4
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dКоманда \dИгрока^n")
keys &= ~MENU_KEY_4
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wСменить \yКарту^n")
keys |= MENU_KEY_5
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dСменить \dКарту^n")
keys &= ~MENU_KEY_5
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wГолосование за смену \yКарты^n")
keys |= MENU_KEY_6
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \dГолосование за смену \dКарты^n")
keys &= ~MENU_KEY_6
}
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wКикнуть \yИгрока^n")
keys |= MENU_KEY_7
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \dКикнуть \dИгрока^n")
keys &= ~MENU_KEY_7
}
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "^n\r0. \wЗакрыть^n")
keys |= MENU_KEY_0
show_menu(id, keys, menu, -1, "Menu_2");
return PLUGIN_HANDLED
}
public menu_handler(id, menu, item) {
if( item < 0 ) return PLUGIN_CONTINUE;
new cmd[3], access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new Choise = str_to_num(cmd)
switch (Choise) {
case 1: {client_cmd(id, "sentry_build")
}
case 2: {client_cmd(id, "+setlaser")
}
case 3: {client_cmd(id, "build_dispenser")
}
case 4: {client_cmd(id, "detonate_dispenser")
}
case 5: {client_cmd(id, "shop")
}
case 6: {client_cmd(id, "amxmodmenu")
}
case 7: {client_cmd(id, "say /vipmenu")
}
case 8: {client_cmd(id, "say /tm")
}
case 9: {client_cmd(id, "say /voteban")
}
case 10: {client_cmd(id, "say rtv")
}
case 11: {client_cmd(id, "say /mute")
}
case 12: {client_cmd(id, "say /spec")
}
}
return PLUGIN_HANDLED;
}
public func_menu2(id, key)
{
switch(key)
{
case 0: client_cmd(id, "amx_kickmenu")
case 1: client_cmd(id, "amx_banmenu")
case 2: client_cmd(id, "amx_slapmenu")
case 3: client_cmd(id, "amx_teammenu")
case 4: client_cmd(id, "amx_mapmenu")
case 5: client_cmd(id, "amx_votemapmenu")
case 6: client_cmd(id, "amx_kick")
case 7:client_cmd(id, "vipmenu")
case 8:client_cmd(id, "vipmenu")
}
}
public Handle_VipMenu(id, iKey)
{
if(!is_user_admin(id))
{
client_print(id, print_chat, "У вас нету доступа к Вип Меню!");
return PLUGIN_HANDLED;
}
switch(iKey)
{
case 0:
{
if(g_Timer < get_systime())
{
if(g_iTime[id] > get_systime())
{
client_print(id, print_chat, "Деньги можно будет взять через %d сек.", g_iTime[id] - get_systime());
return PLUGIN_HANDLED;
}
client_print(id, print_chat, "Вы взяли 10000$. В следующий раз вы сможете взять через 10 минут!");
cs_set_user_money(id, cs_get_user_money(id) + 10000);
g_iTime[id] = get_systime(DELAY_MONEY);
}
else Show_VipMenu(id);
}
case 1:
{
if(g_Timer < get_systime())
{
client_print(id, print_chat, "Вы взяли 'Скорость'. Удачной игры!");
set_user_maxspeed(id, 500.0);
}
else Show_VipMenu(id);
}
case 2:
{
if(g_Timer < get_systime())
{
client_print(id, print_chat, "Вы взяли 'Гравитацию'. Удачной игры!");
set_user_gravity(id, 0.5);
}
else Show_VipMenu(id);
}
case 3:
{
if(g_Timer < get_systime())
{
client_print(id, print_chat, "Вы взяли '+ 100 HP'. Удачной игры!");
set_user_health(id, get_user_health(id) + 100);
}
else Show_VipMenu(id);
}
}
return PLUGIN_HANDLED;
}
public Check_speed(id){
if(g_speed[id])
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
Добавлено спустя 10 минут 45 секунд:
То, что добавляла
RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "Check_speed", 0);
public Check_speed(id){
if(g_speed[id])
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
public Check_speed(id){
if(g_speed[id])
return HAM_SUPERCEDE;
return HAM_IGNORED;
}