Участник
Пользователь
- Сообщения
- 94
- Реакции
- 13
- Помог
- 2 раз(а)
Добрый вечер Всем. Решил попробовать написать плагин.
Вроде бы все шло по плану, но в конце повылазили варнинги, решение которых никак не поддается. Сказывается огромная нехватка знаний...
Задумка следующая:
Начисление безымянной валюты, за различные убийства игроков (В голову, с ножа, обычное убийство)
Вроде бы все сделал. Но при компиляции повылазили "warning 213: tag mismatch"
За ранее огромное спасибо за помощь и(или) направление по верному пути!
Вроде бы все шло по плану, но в конце повылазили варнинги, решение которых никак не поддается. Сказывается огромная нехватка знаний...
Задумка следующая:
Начисление безымянной валюты, за различные убийства игроков (В голову, с ножа, обычное убийство)
Вроде бы все сделал. Но при компиляции повылазили "warning 213: tag mismatch"
C++:
//AMXXPC compile.exe
// by the AMX Mod X Dev Team
//// Coins_System.sma
//
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(266) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(267) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(269) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(272) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(273) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(275) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(278) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(279) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(281) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(284) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(285) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(287) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(314) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(325) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(332) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(335) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(342) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(343) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(345) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(352) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(354) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(355) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(545) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(557) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(568) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(570) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(579) : warning 213: tag mismatch
// C:\Users\User\Desktop\Compilers\compiler 1.9.0\Coins_System.sma(581) : warning 213: tag mismatch
// Header size: 1756 bytes
// Code size: 24020 bytes
// Data size: 39348 bytes
// Stack/heap size: 16384 bytes
// Total requirements: 81508 bytes
//
// 28 Warnings.
// Done.
//
// Compilation Time: 1,06 sec
// ----------------------------------------
Press enter to exit ...
Код:
#pragma compress 1
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>
#include <gamecms5>
#pragma semicolon 1
new szPluginInfo[][] = { "Coins System", "1.0", "ApXuTekToR" };
/* Настройки */
#define TYPE_JOB 2 /* Тип интеграции со пытом
1 - Army Ranks Ultimate
2 - Advanced Expirience System
3 - CMSStats Ranks */
#if TYPE_JOB == 1
native ar_set_user_addxp(id, addxp);
native ar_add_user_anew(admin, player, anew);
#endif
#if TYPE_JOB == 2
#include <aes_v>
#endif
#if TYPE_JOB == 3
native cmsranks_set_user_addxp(id, value);
native cmsranks_add_user_anew(id, value);
#endif
enum e_Cvars {
C_Chat_Prefix[32],
C_CmdOpen_Shop[32],
C_CmddOpen_Give[32],
C_NameCurrency[32],
C_ExpireDays,
C_InvaultFile[32],
C_ShowHudInfo,
C_InfoColor[32],
C_Position[32],
C_AccessShop,
C_FlagsAcces[32],
C_ServiceName[32],
C_CoinsSet[32],
C_CoinGive,
C_CoinGiveHead,
C_CoinGiveKnife,
C_GiveGravity[32],
C_GiveGranade[32],
C_GiveHealth[32],
C_GiveArmor[32],
C_GiveMoney[32],
}
new Cvars[e_Cvars];
enum e_rgbColors { rgb_red, rgb_green, rgb_blue, };
enum e_Position { Float:position_x, Float:position_y, };
enum e_InfoGravity { cost, Float:gravity, };
enum e_InfoGrenade { cost, he, flash, smoke, };
enum e_InfoHealth { cost, health, limit, };
enum e_InfoArmor { cost, armor, limit };
enum e_InfoMoney { cost, money, limit, };
enum e_InfoCoins { one, two, three, fore, five, };
new g_Vault;
new g_s_AuthID[33][35];
new keysmenu = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9);
new adminmoney[32];
new g_Block[33][8];
public plugin_end()
{
if(g_Vault != INVALID_HANDLE) {
nvault_close(g_Vault);
}
}
public plugin_init() {
register_menu("Menu 2", keysmenu, "func_menu");
register_menu("Menu 1", keysmenu, "SHop");
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", 1);
register_concmd(Cvars[C_CmdOpen_Shop], "a_shop");
register_clcmd(Cvars[C_CmddOpen_Give], "server_menu");
}
public plugin_precache()
{
register_plugin(szPluginInfo[0], szPluginInfo[1], szPluginInfo[2]);
initCvars();
set_task(1.0, "load_invault");
}
public load_invault()
{
g_Vault = nvault_open(Cvars[C_InvaultFile]);
if (g_Vault == INVALID_HANDLE)
set_fail_state("Error opening nVault!");
nvault_prune(g_Vault, 0, get_systime() - (86400 * Cvars[C_ExpireDays]));
}
public client_authorized(id)
{
get_user_authid(id, g_s_AuthID[id], charsmax(g_s_AuthID[]));
}
public initCvars()
{
bind_pcvar_string(create_cvar( "CoinsSystem_Chat_Prefix", "Coins", FCVAR_NONE, "Префикс для час сообщений" ), Cvars[C_Chat_Prefix], charsmax(Cvars[C_Chat_Prefix]));
bind_pcvar_string(create_cvar( "CoinsSystem_CmdOpen_Shop", "say /coins", FCVAR_NONE, "Команда для открытия магазина" ), Cvars[C_CmdOpen_Shop], charsmax(Cvars[C_CmdOpen_Shop]));
bind_pcvar_string(create_cvar( "CoinsSystem_CmddOpen_Give", "coins_give", FCVAR_NONE, "Команда вызова меню выдачи для админа" ), Cvars[C_CmddOpen_Give], charsmax(Cvars[C_CmddOpen_Give]));
bind_pcvar_string(create_cvar( "CoinsSystem_InvaultFile", "Coins_System", FCVAR_NONE, "Название файла, в который будут сохранятся данные" ), Cvars[C_InvaultFile], charsmax(Cvars[C_InvaultFile]));
bind_pcvar_num(create_cvar( "CoinsSystem_C_ExpireDays", "30", FCVAR_NONE, "Через сколько дней удалять неактивных игроков?" ), Cvars[C_ExpireDays]);
bind_pcvar_string(create_cvar( "CoinsSystem_NameСurrency", "Бублик", FCVAR_NONE, "Название валюты магазина" ), Cvars[C_NameCurrency], charsmax(Cvars[C_NameCurrency]));
bind_pcvar_num(create_cvar( "CoinsSystem_ShowHudInfo", "1", FCVAR_NONE, "Выводить игрокам информер в худ?^n\
'0' - Выкл^n\
'1' - Вкл" ), Cvars[C_ShowHudInfo]);
bind_pcvar_string(create_cvar( "CoinsSystem_Color", "0 255 0", FCVAR_NONE, "Цвет информера^n\
Подобрать цвет и позицию можнотут:^n\
'https://dev-cs.ru/hud/index.html'" ), Cvars[C_InfoColor], charsmax(Cvars[C_InfoColor]));
bind_pcvar_string(create_cvar( "CoinsSystem_Position", "0,01 0.20", FCVAR_NONE, "Позиция информера^n\
Подобрать цвет и позицию можнотут:^n\
'https://dev-cs.ru/hud/index.html'" ), Cvars[C_Position], charsmax(Cvars[C_Position]));
bind_pcvar_num(create_cvar( "CoinsSystem_AccessShop", "1", FCVAR_NONE, "Для кого будет работать магазин и кому выдаваться коинсы?^n\
'0' - Всем^n\
'1' - Игрокам с определенным фагом^n\
'2' - По названию услуги^n\
'3' - По флагу или названию услуги" ), Cvars[C_AccessShop]);
bind_pcvar_string(create_cvar( "CoinsSystem_NameСurrency", "t", FCVAR_NONE, "Флаг доступа для начисления консов^n\
Работает только при:^n\
'CoinsSystem_AccessShop' = '1' или '3'" ), Cvars[C_FlagsAcces], charsmax(Cvars[C_FlagsAcces]));
bind_pcvar_string(create_cvar( "CoinsSystem_ServiceName", "_coins_sys", FCVAR_NONE, "Название услуги для начисления коинсов^n\
Работает только при:^n\
'CoinsSystem_AccessShop' = '2' или '3'" ), Cvars[C_ServiceName], charsmax(Cvars[C_ServiceName]));
bind_pcvar_num(create_cvar( "CoinsSystem_CoinGive", "1", FCVAR_NONE, "Кол-во коинсов за убийство 'Обычное'" ), Cvars[C_CoinGive]);
bind_pcvar_num(create_cvar( "CoinsSystem_CoinGive", "2", FCVAR_NONE, "Кол-во коинсов за убийство 'В голову'" ), Cvars[C_CoinGiveHead]);
bind_pcvar_num(create_cvar( "CoinsSystem_CoinGive", "3", FCVAR_NONE, "Кол-во коинсов за убийство 'С ножа'" ), Cvars[C_CoinGiveKnife]);
bind_pcvar_string(create_cvar( "CoinsSystem_Gravity", "5 0,8", FCVAR_NONE, "Настрйоки гравитации^n\
Синтаксис: ^"<Cost> <Value>^"^n\
<Cost> - Стоимость^n\
<Value> - Значение гравитации^n\
Значение '1.0' - Стандартная гравитация" ), Cvars[C_GiveGravity], charsmax(Cvars[C_GiveGravity]));
bind_pcvar_string(create_cvar( "CoinsSystem_GiveGranade", "5 1 2 1", FCVAR_NONE, "Настройки набора гранат^n\
Синтаксис: ^"<Cost> <Items:he> <Items:flash> <Items:smoke>^"^n\
<Cost> - Стоимость в магазине^n\
<Items:he> - Кол-во HE гранат, если '0' то не выдавать^n\
<Items:flash> - Кол-во Flash гранат, если '0' то не выдавать^n\
<Items:smoke> - Кол-во Smoke гранат, если '0' то не выдавать" ), Cvars[C_GiveGranade], charsmax(Cvars[C_GiveGranade]));
bind_pcvar_string(create_cvar( "CoinsSystem_GiveHealth", "5 70 120", FCVAR_NONE, "Настройки набора выдачи HP^n\
Синтаксис: ^"<Cost> <health> <limit>^"^n\
<Cost> - Стоимость в магазине^n\
<health> - Кол-во HP^n\
<limit> - Максимальное кол-во HP" ), Cvars[C_GiveHealth], charsmax(Cvars[C_GiveHealth]));
bind_pcvar_string(create_cvar( "CoinsSystem_GiveArmor", "5 70 120", FCVAR_NONE, "Настройки набора выдачи AP^n\
Синтаксис: ^"<Cost> <health> <limit>^"^n\
<Cost> - Стоимость в магазине^n\
<armor> - Кол-во AP^n\
<limit> - Максимальное кол-во AP" ), Cvars[C_GiveArmor], charsmax(Cvars[C_GiveArmor]));
bind_pcvar_string(create_cvar( "CoinsSystem_GiveMoney", "5 70 120", FCVAR_NONE, "Настройки набора выдачи игровых дерег^n\
Синтаксис: ^"<Cost> <money> <limit>^"^n\
<Cost> - Стоимость в магазине^n\
<money> - Кол-во игровых денег^n\
<limit> - Максимальное кол-во игровых денег" ), Cvars[C_GiveMoney], charsmax(Cvars[C_GiveMoney]));
AutoExecConfig(true, "Main_Settings", "Coins_System");
}
public client_putinserver(id)
{
cmdGetMoney(id);
if(Cvars[C_ShowHudInfo] == 1) set_task(1.0, "task_hudmsg", id, _, _, "b");
}
public task_hudmsg(id)
{
static colors[e_rgbColors]; getColors(Cvars[C_InfoColor], colors);
static position[e_Position]; getPosition(Cvars[C_Position], position);
set_dhudmessage(colors[rgb_red], colors[rgb_green], colors[rgb_blue], position[position_x], position[position_y], 0, 6.0, 0.1);
show_dhudmessage(id, "%s: [ %d ]^nМагазин [ %s ]", Cvars[C_NameCurrency], adminmoney[id], Cvars[C_CmdOpen_Shop]);
}
public CBasePlayer_Killed_Post(id, const victimId, killerId, iGib)
{
if(killerId == victimId || !is_user_connected(killerId) || !is_user_connected(victimId)) return;
if(Cvars[C_AccessShop] == 0) {
if(get_user_weapon(killerId) == CSW_KNIFE){
adminmoney[killerId] += Cvars[C_CoinGiveKnife];
} else if(get_member(victimId, m_bHeadshotKilled)){
adminmoney[killerId] += Cvars[C_CoinGiveHead];
} else {
adminmoney[killerId] += Cvars[C_CoinGive];
}
cmdSaveMoney(id);
} else if(Cvars[C_AccessShop] == 1) {
if(checkAccess(killerId, Cvars[C_FlagsAcces]))
{
if(get_user_weapon(killerId) == CSW_KNIFE){
adminmoney[killerId] += Cvars[C_CoinGiveKnife];
} else if(get_member(victimId, m_bHeadshotKilled)){
adminmoney[killerId] += Cvars[C_CoinGiveHead];
} else {
adminmoney[killerId] += Cvars[C_CoinGive];
}
}
cmdSaveMoney(id);
} else if(Cvars[C_AccessShop] == 2) {
static Array:Services;
Services = cmsapi_get_user_services(killerId, "", Cvars[C_ServiceName]);
if(Services) {
if(get_user_weapon(killerId) == CSW_KNIFE){
adminmoney[killerId] += Cvars[C_CoinGiveKnife];
} else if(get_member(victimId, m_bHeadshotKilled)){
adminmoney[killerId] += Cvars[C_CoinGiveHead];
} else {
adminmoney[killerId] += Cvars[C_CoinGive];
}
}
cmdSaveMoney(id);
} else if(Cvars[C_AccessShop] == 3) {
static Array:Services; Services = cmsapi_get_user_services(killerId, "", Cvars[C_ServiceName]);
if(checkAccess(killerId, Cvars[C_FlagsAcces]) || Services) {
if(get_user_weapon(killerId) == CSW_KNIFE){
adminmoney[killerId] += Cvars[C_CoinGiveKnife];
} else if(get_member(victimId, m_bHeadshotKilled)){
adminmoney[killerId] += Cvars[C_CoinGiveHead];
} else {
adminmoney[killerId] += Cvars[C_CoinGive];
}
}
cmdSaveMoney(id);
}
}
public a_shop(id)
{
static menu[500], len; len = 0;
new name[32]; get_user_name(id, name, 31);
static infogravity[e_InfoGravity], infogrenade[e_InfoGrenade], infohealth[e_InfoHealth], infoarmor[e_InfoArmor], infomoney[e_InfoMoney];
getInfoGravity(Cvars[C_GiveGravity], infogravity); getInfoGrenade(Cvars[C_GiveGranade], infogrenade); getInfoHealth(Cvars[C_GiveHealth], infohealth);
getInfoArmor(Cvars[C_GiveArmor], infoarmor); getInfoMoney(Cvars[C_GiveMoney], infomoney);
if(!(get_member(id, m_iTeam) == TEAM_UNASSIGNED) || (get_member(id, m_iTeam) == TEAM_SPECTATOR)) {
client_print_color(id, 0, "^3[^4%s^3] ^4%s, сначала выберите команду, за которую хотите играть^4!", Cvars[C_Chat_Prefix], name);
return PLUGIN_HANDLED;
}
len += formatex(menu[len], charsmax(menu) - len, "\r[\y!\r] \wМагазин сервера^n\r[\y!\r] \wПривет, \r%s^n\r[\y!\r] \wВаши \y%s: \r%d^n^n", name, Cvars[C_NameCurrency], adminmoney[id]);
if(adminmoney[id] >= infogravity[cost]) {
len += formatex(menu[len], charsmax(menu) - len, "\r[\y1\r]. \wКупить Гравитация - \r(\y%d\r)^n", infogravity[cost]);
} else {
len += formatex(menu[len], charsmax(menu) - len, "\d[1]. Купить Гравитацию - (%d)^n", infogravity[cost]);
}
if(adminmoney[id] >= infogrenade[cost]) {
len += formatex(menu[len], charsmax(menu) - len, "\r[\y2\r]. \wКупить Гранаты - \r(\y%d\r)^n", infogrenade[cost]);
} else {
len += formatex(menu[len], charsmax(menu) - len, "\d[2]. Купить Гранаты - (%d)^n", infogrenade[cost]);
}
if(adminmoney[id] >= infohealth[cost]) {
len += formatex(menu[len], charsmax(menu) - len, "\r[\y3\r]. \wКупить %dHP - \r(\y6\r)^n", infohealth[health], infohealth[cost]);
} else {
len += formatex(menu[len], charsmax(menu) - len, "\d[3]. Купить %dHP - (6)^n", infohealth[health], infohealth[cost]);
}
if(adminmoney[id] >= infoarmor[cost]) {
len += formatex(menu[len], charsmax(menu) - len, "\r[\y4\r]. \wКупить %dAP - \r(\y%d\r)^n", infoarmor[armor], infoarmor[cost]);
} else {
len += formatex(menu[len], charsmax(menu) - len, "\d[4]. Купить %dAP - (%d)^n", infoarmor[armor], infoarmor[cost]);
}
if(adminmoney[id] >= infomoney[cost]) {
len += formatex(menu[len], charsmax(menu) - len, "\r[\y5\r]. \wОбменять на \y%d$ \w- \r(\y%d\r)^n^n", infomoney[money], infomoney[cost]);
} else {
len += formatex(menu[len], charsmax(menu) - len, "\d[5]. Обменять на %d$ - (%d)^n^n", infomoney[money], infomoney[cost]);
}
len += formatex(menu[len], charsmax(menu) - len, "\r[\y0\r]. \wВыход^n");
show_menu(id, keysmenu, menu, -1, "Menu 1");
return PLUGIN_HANDLED;
}
public SHop(id, key)
{
static infogravity[e_InfoGravity], infogrenade[e_InfoGrenade], infohealth[e_InfoHealth], infoarmor[e_InfoArmor], infomoney[e_InfoMoney];
getInfoGravity(Cvars[C_GiveGravity], infogravity); getInfoGrenade(Cvars[C_GiveGranade], infogrenade); getInfoHealth(Cvars[C_GiveHealth], infohealth);
getInfoArmor(Cvars[C_GiveArmor], infoarmor); getInfoMoney(Cvars[C_GiveMoney], infomoney);
switch(key) {
case 0: {
if(adminmoney[id] >= infogravity[cost]) {
set_entvar(id, var_gravity, infogravity[gravity]);
client_print_color(id, 0, "^3[^4%s^3] ^1Вы купили ^4гравитацию. действует до конца карты", Cvars[C_Chat_Prefix]);
adminmoney[id] = adminmoney[id] - infogravity[cost];
} else {
client_print_color(id, 0, "^3[^4%s^3] ^1Увы, Но у вас не ^3хватает ^4%s", Cvars[C_Chat_Prefix], Cvars[C_NameCurrency]);
}
cmdSaveMoney(id);
}
case 1: {
if(adminmoney[id] >= infogrenade[cost]) {
if(infogrenade[he] > 0) {
rg_give_item(id, "weapon_hegrenade"); rg_set_user_bpammo(id, WEAPON_HEGRENADE, infogrenade[he]);
}
if(infogrenade[flash] > 0) {
rg_give_item(id, "weapon_flashbang"); rg_set_user_bpammo(id, WEAPON_FLASHBANG, infogrenade[flash]);
}
if(infogrenade[smoke] > 0) {
rg_give_item(id, "weapon_smokegrenade"); rg_set_user_bpammo(id, WEAPON_SMOKEGRENADE, infogrenade[smoke]);
}
client_print_color(id, 0, "^3[^4%s^3] ^1Вы купили ^4набор гранаты", Cvars[C_Chat_Prefix]);
adminmoney[id] = adminmoney[id] - infogrenade[cost];
} else {
client_print_color(id, 0, "^3[^4%s^3] ^1Увы, Но у вас не ^3хватает ^4%s", Cvars[C_Chat_Prefix], Cvars[C_NameCurrency]);
}
cmdSaveMoney(id);
}
case 2: {
if(adminmoney[id] >= infohealth[cost]) {
_rg_add_user_health(id, infohealth[health], infohealth[limit]);
client_print_color(id, 0, "^3[^4%s^3] ^1Вы купили ^4%d HP", Cvars[C_Chat_Prefix], infohealth[health]);
adminmoney[id] = adminmoney[id] - infohealth[cost];
} else {
client_print_color(id, 0, "^3[^4%s^3] ^1Увы, Но у вас не ^3хватает ^4%s", Cvars[C_Chat_Prefix], Cvars[C_NameCurrency]);
}
cmdSaveMoney(id);
}
case 3: {
if(adminmoney[id] >= infoarmor[cost]) {
rg_set_user_armor(id, min(rg_get_user_armor(id) + infoarmor[armor], infoarmor[limit]), ARMOR_VESTHELM);
client_print_color(id, 0, "^3[^4%s^3] ^1Вы купили ^4%d AP", Cvars[C_Chat_Prefix], infohealth[health]);
adminmoney[id] = adminmoney[id] - infohealth[cost];
} else {
client_print_color(id, 0, "^3[^4%s^3] ^1Увы, Но у вас не ^3хватает ^4%s", Cvars[C_Chat_Prefix], Cvars[C_NameCurrency]);
}
cmdSaveMoney(id);
}
case 4: {
if(adminmoney[id] >= infomoney[cost]) {
rg_add_account(id, infomoney[money], AS_ADD, true);
client_print_color(id, 0, "^3[^4%s^3] ^1Вы успешно обменили ^3[^4%d %s^3] ^1на ^3[^4%d ^1$^3]", Cvars[C_Chat_Prefix],infomoney[cost], Cvars[C_NameCurrency], infomoney[money]);
adminmoney[id] = adminmoney[id] - infomoney[cost];
} else {
client_print_color(id, 0, "^3[^4%s^3] ^1Увы, Но у вас не ^3хватает ^4%s", Cvars[C_Chat_Prefix], Cvars[C_NameCurrency]);
}
cmdSaveMoney(id);
}
}
}
public server_menu(id)
{
new name[32]; get_user_name(id, name, 31);
static menu[650], len; len = 0;
static infogive[e_InfoCoins]; getInfoGive(Cvars[C_CoinsSet], infogive);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y!\r] \wРедактор \y%s^n\r[\y!\r] \wПривет, \r%s^n^n", Cvars[C_NameCurrency], name);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y1\r]. \wВыдать \d[ \y%d \d] монеток^n", infogive[one]);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y2\r]. \wВыдать \d[ \y%d \d] монеток^n", infogive[two]);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y3\r]. \wВыдать \d[ \y%d \d] монеток^n", infogive[three]);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y4\r]. \wВыдать \d[ \y%d \d] монеток^n^n",infogive[fore]);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y4\r]. \wВыдать \d[ \y%d \d] монеток^n^n",infogive[five]);
len += formatex(menu[len], charsmax(menu) - len, "\r[\y0\r]. \wВыход");
show_menu(id, keysmenu, menu, -1, "Menu 2");
return PLUGIN_HANDLED;
}
public func_menu(id, key)
{
switch(key)
{
case 0: {
g_Block[id][0] = true;
MenuPlayer(id);
cmdSaveMoney(id);
}
case 1: {
g_Block[id][1] = true;
MenuPlayer(id);
cmdSaveMoney(id);
}
case 2: {
g_Block[id][2] = true;
MenuPlayer(id);
cmdSaveMoney(id);
}
case 3: {
g_Block[id][3] = true;
MenuPlayer(id);
cmdSaveMoney(id);
}
case 4: {
g_Block[id][4] = true;
MenuPlayer(id);
cmdSaveMoney(id);
}
}
return PLUGIN_HANDLED;
}
public MenuPlayer(const id)
{
static Array:Services; Services = cmsapi_get_user_services(id, "", Cvars[C_ServiceName]);
new iMenu = menu_create("\r[\yGiveFlags\r] \wВыбери игрока^n", "MenuHandler_Players");
static ItemData[11], Name[MAX_NAME_LENGTH+10];
for(new i = 1; i <= MAX_PLAYERS; i++){
log_amx("[ShowPlayersMenu] [Add item] [Begin]");
if(!is_user_connected(i) || is_user_bot(i)) continue;
get_user_name(i, Name, MAX_NAME_LENGTH-1);
if(Cvars[C_AccessShop] == 1) if(!(checkAccess(i, Cvars[C_FlagsAcces]))) add(Name, charsmax(Name), " \r[\yNo VIP\r]");
if(Cvars[C_AccessShop] == 2) if(!Services) add(Name, charsmax(Name), " \r[\yNo VIP\r]");
if(Cvars[C_AccessShop] == 3) if(!(checkAccess(i, Cvars[C_FlagsAcces])) || !Services) add(Name, charsmax(Name), " \r[\yNo VIP\r]");
num_to_str(i, ItemData, charsmax(ItemData));
menu_additem(iMenu, Name, ItemData);
}
}
public menu_handle(const id, const Menu, const Item)
{
if(Item == MENU_EXIT || is_user_bot(id) || !is_user_connected(id)) {
menu_destroy(Menu);
return PLUGIN_HANDLED;
}
static Access, Data[32];
menu_item_getinfo(Menu, Item, Access, Data, charsmax(Data));
static infogive[e_InfoCoins]; getInfoGive(Cvars[C_CoinsSet], infogive);
if(g_Block[id][0])
{
adminmoney[id] = adminmoney[id] + infogive[one];
client_print_color(id, 0, "^3[^4%s^3] ^1Вам было выдано:^3 %d ^1монет", Cvars[C_Chat_Prefix], infogive[one]);
}
if(g_Block[id][1])
{
adminmoney[id] = adminmoney[id] + infogive[two];
client_print_color(id, 0, "^3[^4%s^3] ^1Вам было выдано:^3 %d ^1монет", Cvars[C_Chat_Prefix], infogive[two]);
}
if(g_Block[id][2])
{
adminmoney[id] = adminmoney[id] + infogive[three];
client_print_color(id, 0, "^3[^4%s^3] ^1Вам было выдано:^3 %d ^1монет", Cvars[C_Chat_Prefix], infogive[three]);
}
if(g_Block[id][3])
{
adminmoney[id] = adminmoney[id] + infogive[fore];
client_print_color(id, 0, "^3[^4%s^3] ^1Вам было выдано:^3 %d ^1монет", Cvars[C_Chat_Prefix], infogive[fore]);
}
if(g_Block[id][4])
{
adminmoney[id] = adminmoney[id] + infogive[five];
client_print_color(id, 0, "^3[^4%s^3] ^1Вам было выдано:^3 %d ^1монет", Cvars[C_Chat_Prefix], infogive[five]);
}
menu_destroy(Menu);
return PLUGIN_HANDLED;
}
public cmdSaveMoney(id)
{
new s_Coins[9], s_Key[40];
formatex(s_Key, charsmax(s_Key) , "%sMONEY", g_s_AuthID[id]);
formatex(s_Coins, charsmax(s_Coins), "%d", adminmoney[id]);
nvault_set(g_Vault, s_Key, s_Coins);
}
public cmdGetMoney(id)
{
new s_Key[40];
formatex(s_Key, charsmax(s_Key), "%sMONEY", g_s_AuthID[id]);
new i_Money = nvault_get(g_Vault, s_Key);
if(i_Money)
{
adminmoney[id] = adminmoney[id] + i_Money;
nvault_remove(g_Vault, s_Key);
}
}
Float:_rg_add_user_health(id, hp, _max = 99999){
static Float:healthz; healthz = get_entvar(id, var_health, healthz);
healthz = floatmin(float(_max), healthz+hp);
set_entvar(id, var_health, healthz);
return healthz;
}
checkAccess(id, const flags[]) {
return (get_user_flags(id) & read_flags(flags));
}
getColors(const str[], output[e_rgbColors]) {
static colors[3][11];
if(parse(str, colors[0], 10, colors[1], 10, colors[2], 10) != 3){
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[rgb_red] = str_to_num(colors[0]);
output[rgb_green] = str_to_num(colors[1]);
output[rgb_blue] = str_to_num(colors[2]);
}
getPosition(const str[], output[e_Position]) {
static position[2][11];
if(parse(str, position[0], 10, position[1], 10) != 2){
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[position_x] = str_to_float(position[0]);
output[position_y] = str_to_float(position[1]);
}
getInfoGravity(const str[], output[e_InfoGravity]) {
static infogravity[2][11];
if(parse(str, infogravity[0], 10, infogravity[1], 10) != 2){
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[cost] = str_to_num(infogravity[0]);
output[gravity] = str_to_float(infogravity[1]);
}
getInfoGrenade(const str[], output[e_InfoGrenade]) {
static infogrenade[4][20];
if(parse(str, infogrenade[0], 20, infogrenade[1], 20, infogrenade[2], 20, infogrenade[3], 20) != 4) {
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[cost] = str_to_num(infogrenade[0]);
output[he] = str_to_num(infogrenade[1]);
output[flash] = str_to_num(infogrenade[2]);
output[smoke] = str_to_num(infogrenade[3]);
}
getInfoHealth(const str[], output[e_InfoHealth]) {
static infohealth[3][11];
if(parse(str, infohealth[0], 10, infohealth[1], 10, infohealth[2], 10) != 3) {
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[cost] = str_to_num(infohealth[0]);
output[health] = str_to_num(infohealth[1]);
output[limit] = str_to_num(infohealth[2]);
}
getInfoArmor(const str[], output[e_InfoArmor]) {
static infoarmor[3][11];
if(parse(str, infoarmor[0], 10, infoarmor[1], 10, infoarmor[2], 10) != 3){
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[cost] = str_to_num(infoarmor[0]);
output[armor] = str_to_num(infoarmor[1]);
output[limit] = str_to_num(infoarmor[2]);
}
getInfoMoney(const str[], output[e_InfoMoney]) {
static infomoney[3][11];
if(parse(str, infomoney[0], 10, infomoney[1], 10, infomoney[2], 10) != 3){
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[cost] = str_to_num(infomoney[0]);
output[money] = str_to_num(infomoney[1]);
output[limit] = str_to_num(infomoney[2]);
}
getInfoGive(const str[], output[e_InfoCoins]) {
static infogive[5][11];
if(parse(str, infogive[0], 10, infogive[1], 10, infogive[2], 10, infogive[3], 10, infogive[4], 10) != 5){
log_error(AMX_ERR_PARAMS, "Invalid colors string '%s'", str);
return;
}
output[one] = str_to_num(infogive[0]);
output[two] = str_to_num(infogive[1]);
output[three] = str_to_num(infogive[2]);
output[fore] = str_to_num(infogive[3]);
output[five] = str_to_num(infogive[4]);
}
За ранее огромное спасибо за помощь и(или) направление по верному пути!