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

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

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

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

Ограничение на карту n кол-во раз

Статус пользователя DRIVE37
сообщение 13.11.2015, 11:12
Сообщение #1


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

У меня стоит плагин админ и вип меню, но иногда бывает когда админы заходят на сервер у них все по 0 , т.е они ничего не могут взять но на сервер они только что зашли

Исходник:
Код:
#include <amxmodx>
#include <fakemeta>
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#endif

#define ADMIN_ACCESS ADMIN_LEVEL_A
#define VIP_ACCESS ADMIN_LEVEL_H

#if cellbits == 32
#define OFFSET_CSMONEY 115
#else
#define OFFSET_CSMONEY 140
#endif

new g_iStartPlugin, g_pMoneyDelay;
new CountHpAp[33], CountMoney[33];

new Trie:g_tMoney;
new Trie:g_tHpAp;

public plugin_init()
{
#define PLUGIN "Admin Menu"
#define VERSION "1.0.4"

register_plugin(PLUGIN, VERSION, "Realution");

register_clcmd("menu_admin", "Check_Player");
register_clcmd("menu_vip", "Check_Player");

g_pMoneyDelay = register_cvar("am_money_delay", "5");

register_message(get_user_msgid("ScoreAttrib"), "MessageScoreAttrib");
register_menucmd(register_menuid(PLUGIN), MENU_KEY_1|MENU_KEY_2|MENU_KEY_0, "HandleMenu");

g_iStartPlugin = get_systime();

g_tMoney = TrieCreate();
g_tHpAp = TrieCreate();
}

public client_disconnect(id)
{
new auth_id[32];
get_user_authid(id, auth_id, 31);

TrieSetCell(g_tMoney, auth_id, CountMoney[id]);
TrieSetCell(g_tHpAp, auth_id, CountHpAp[id]);

CountHpAp[id] = 0;
CountMoney[id] = 0;
}

public client_authorized(id)
{
new name[32]; get_user_name(id, name, 31);
new auth_id[32]; get_user_authid(id, auth_id, 31);
if(get_user_flags(id) & VIP_ACCESS && get_user_flags(id) & ADMIN_ACCESS)
{
set_dhudmessage(0, 200, 0, -1.0, 0.25, 1, 0.0, 3.0, 0.0, 0.0);
show_dhudmessage(0, "Админ + Вип [ ^4%s^1 ] зашел на сервер!", name);

if(TrieKeyExists(g_tMoney, auth_id))
{
TrieGetCell(g_tMoney, auth_id, CountMoney[id]);
}
else
{
CountMoney[id] = 10;
}

if(TrieKeyExists(g_tHpAp, auth_id))
{
TrieGetCell(g_tHpAp, auth_id, CountHpAp[id]);
}
else
{
CountHpAp[id] = 20;
}
}
else if(get_user_flags(id) & ADMIN_ACCESS)
{
set_dhudmessage(200, 0, 0, -1.0, 0.25, 1, 0.0, 3.0, 0.0, 0.0);
show_dhudmessage(0, "Админ [ ^4%s^1 ] зашел на сервер!", name);

if(TrieKeyExists(g_tMoney, auth_id))
{
TrieGetCell(g_tMoney, auth_id, CountMoney[id]);
}
else
{
CountMoney[id] = 5;
}

if(TrieKeyExists(g_tHpAp, auth_id))
{
TrieGetCell(g_tHpAp, auth_id, CountHpAp[id]);
}
else
{
CountHpAp[id] = 15;
}
}
else if(get_user_flags(id) & VIP_ACCESS)
{
set_dhudmessage(0, 200, 0, -1.0, 0.25, 1, 0.0, 3.0, 0.0, 0.0);
show_dhudmessage(0, "Вип [ ^4%s^1 ] зашел на сервер!", name);

if(TrieKeyExists(g_tMoney, auth_id))
{
TrieGetCell(g_tMoney, auth_id, CountMoney[id]);
}
else
{
CountMoney[id] = 5;
}

if(TrieKeyExists(g_tHpAp, auth_id))
{
TrieGetCell(g_tHpAp, auth_id, CountHpAp[id]);
}
else
{
CountHpAp[id] = 15;
}
}
}

public Check_Player(id)
{
if(!is_user_alive(id))
return ChatColor(id, "^1[^4%s^1] ^1Вы должны быть живы, чтобы использовать меню!", PLUGIN, PLUGIN);

if(!(get_user_flags(id) & (ADMIN_ACCESS | VIP_ACCESS)))
return ChatColor(id, "^1[^4%s^1] ^1У вас нет доступа к меню!", PLUGIN);

return AdminMenu(id);
}

public AdminMenu(id)
{
new szMenu[512], iLen, iKeys = MENU_KEY_0;
iLen = formatex(szMenu, charsmax(szMenu), "\rАдмин\d|\rVIP Меню^n^n");

iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1. \wВзять \r[\y255 жизни + брони\r] \d[\r%d\d]^n", CountHpAp[id]);

if(get_systime() - g_iStartPlugin < get_pcvar_num(g_pMoneyDelay) * 60)
{
new iMin = 1 + (get_pcvar_num(g_pMoneyDelay) * 60 - (get_systime() - g_iStartPlugin)) / 60;
new szMin[16]; get_ending(iMin, "минут", "минута", "минуты", szMin, charsmax(szMin));
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wВзять \r[\y16000$\r] \d[\rподождите: %d %s\d]^n^n", iMin, szMin);
}
else
{
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2. \wВзять \r[\y16000$\r] \d[\r%d\d]^n^n", CountMoney[id]);
iKeys |= MENU_KEY_2;
}

iKeys |= MENU_KEY_1;

formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0. \wВыход");
return show_menu(id, iKeys, szMenu, -1, PLUGIN);
}

public HandleMenu(id, iKey)
{
switch(iKey)
{
case 0:
{
if(CountHpAp[id] == 0) return AdminMenu(id);
fm_set_user_health(id, 255);
fm_set_user_armor(id, 255);
CountHpAp[id] = CountHpAp[id]-1;
ChatColor(id, "^1[^4%s^1] ^1Вы взяли ^4жизни и броню^1! Осталось раз: ^4%d^1.", PLUGIN, CountHpAp[id]);
AdminMenu(id);
}
case 1:
{
if(CountMoney[id] == 0) return AdminMenu(id);
fm_set_user_money(id, fm_get_user_money(id) + 16000);
CountMoney[id] = CountMoney[id]-1;
ChatColor(id, "^1[^4%s^1] ^1Вы взяли^4 16000$^1! Осталось раз: ^4%d^1.", PLUGIN, CountMoney[id]);
AdminMenu(id);
}
}
return PLUGIN_HANDLED;
}

public MessageScoreAttrib(iMsgId, iDest, iReceiver)
{
if(get_user_flags(get_msg_arg_int(1)) & VIP_ACCESS && !get_msg_arg_int(2))
set_msg_arg_int(2, ARG_BYTE, 4);
}

stock fm_set_user_armor(id, armor)
{
set_pev(id, pev_armorvalue, float(armor));
return 1;
}

stock fm_set_user_health(id, health)
{
health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
return 1;
}

stock fm_set_user_money(id, money, flash = 0)
{
set_pdata_int(id, OFFSET_CSMONEY, money, 5);
message_begin(MSG_ONE, get_user_msgid("Money"), {0,0,0}, id);
write_long(money);
write_byte(flash);
message_end();
}

stock fm_get_user_money(id)
return get_pdata_int(id, OFFSET_CSMONEY, 5);

stock get_ending(num, const a[], const b[], const c[], output[], lenght)
{
new num100 = num % 100, num10 = num % 10;
if(num100 >=5 && num100 <= 20 || num10 == 0 || num10 >= 5 && num10 <= 9) format(output, lenght, "%s", a);
else if(num10 == 1) format(output, lenght, "%s", b);
else if(num10 >= 2 && num10 <= 4) format(output, lenght, "%s", c);
}

stock ChatColor(const id, const szMessage[], any:...)
{
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);

if(!IdMsg) IdMsg = get_user_msgid("SayText");

if(id)
{
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");

for(new i; i < pnum; i++)
{
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
return 1;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Vaqtincha
сообщение 13.11.2015, 11:20
Сообщение #2
Стаж: 11 лет

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

не понятно что хотел автор плагина писал все что попало.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 3BEPb
сообщение 17.11.2015, 18:03
Сообщение #3
Стаж: 11 лет

Сообщений: 49
Благодарностей: 8
Полезность: 31

Цитата(Vaqtincha @ 13.11.2015, 11:16) *
не понятно что хотел автор плагина писал все что попало.


Он имел виду что у некоторых игроков сразу блокирует. При том что, они только вошли на серв.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: