Post by andrei on Mar 9, 2023 18:53:36 GMT
hello
i have sma of ZP_Buy Menu but i dont have ini File i dont know how to open buymenu in game in anthor buymenu file it is has "nameGUn" "Realyname
" "price" "level" etc
this buymenu idk the commend of it
i have sma of ZP_Buy Menu but i dont have ini File i dont know how to open buymenu in game in anthor buymenu file it is has "nameGUn" "Realyname
" "price" "level" etc
this buymenu idk the commend of it
#include < amxmodx >
#include < amxmisc >
#include < sqlx >
#include < fakemeta>
#include < hamsandwich >
#include < zombieplague >
#define get_bit(%1,%2) ((%1 & (1 << (%2 & 31))) ? 1 : 0)
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define reset_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
// CBaseMonster
#define m_LastHitGroup 75
// CBasePlayer
#define m_iMenu 205
#define m_iAccount 115
new const g_szBuyCommands[ ][ ] =
{
"usp", "glock", "deagle", "p228", "elites",
"fn57", "m3", "xm1014", "mp5", "tmp", "p90",
"mac10", "ump45", "ak47", "galil", "famas",
"sg552", "m4a1", "aug", "scout", "awp", "g3sg1",
"sg550", "m249", "vest", "vesthelm", "flash",
"hegren", "sgren", "defuser", "nvgs", "shield",
"primammo", "secammo", "km45", "9x19mm", "nighthawk",
"228compact", "fiveseven", "12gauge", "autoshotgun",
"mp", "c90", "cv47", "defender", "clarion", "krieg552",
"bullpup", "magnum", "d3au1", "krieg550",
"buy", "buyequip", "cl_autobuy",
"cl_rebuy", "cl_setautobuy", "cl_setrebuy", "client_buy_open"
};
new const g_szItemSlots[ ][ ] =
{
"PISTOLS",
"SHOTGUN",
"AUTOMATES",
"RIFLES",
"MACHINE GUNS",
"EQUIPMENT HUMAN",
"EQUIPMENT ZOMBIE"
};
new const g_szItemPermission[ ][ ] =
{
"ALL",
"VIP",
"ADMIN",
"GOLD",
"BOSS",
"PREMIUM"
};
new const g_szNamePermission[ ][ ] =
{
"",
"\r[VIP]",
"\r[ADMIN]",
"\r[GOLD]",
"\r[BOSS]",
"\r[PREMIUM]"
}
#define FLAG_VIP ADMIN_LEVEL_A
#define FLAG_ADMIN ADMIN_LEVEL_B
#define FLAG_GOLD ADMIN_LEVEL_C
#define FLAG_BOSS ADMIN_LEVEL_D
#define FLAG_PREMIUM ADMIN_LEVEL_E
#define LIMIT_USER 150000
#define LIMIT_VIP 200000
#define LIMIT_ADMIN 300000
#define LIMIT_GOLD 400000
#define LIMIT_BOSS 500000
#define LIMIT_PREMIUM 600000
#define MONEY_VIP 2000
#define MONEY_ADMIN 3000
#define MONEY_GOLD 4000
#define MONEY_BOSS 5000
#define MONEY_PREMIUM 6000
#define MONEY_START 10000 // Деньги при Ñтарте (еÑли игрок зашёл первый раз на Ñервер)
#define MONEY_KF 3 // Кф Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´ÐµÐ½ÐµÐ³
#define MONEY_KILL 1000 // Деньги за убийÑтво
#define MONEY_INFECT 2000 // Деньги за заражение
#define MONEY_NEM_KILL 20000 // Деньги за убийÑтво немизиды
#define MONEY_SURV_KILL 20000 // Деньги за убийÑтво Ñурвивора
#define COLOR_WIN {0,255,255} //Цвет победы
#define COLOR_LOSE {255,0,0} //Цвет поражениÑ
#define COLOR_DRAW {0,255,0} //Цвет ничьи
#define MONEY_LOSE 2000 //Ðаграда за проигрыш
#define MONEY_WIN 4000 //Ðаграда за победу
#define MONEY_DRAW 3000 //Ðаграда за ничью
#define SQL_HOST "185.143.145.233"
#define SQL_USER "vdepdgtr_asla4ok"
#define SQL_PASSWORD "Dnv27119"
#define SQL_DATABASE "vdepdgtr_wargods"
#define SQL_TABLENAME "data_base" // Ðазвание таблицы
#define CHAT_PREFIX "!y[!gBuyMenu!y]" // ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ð² чате при ÑообщениÑÑ… от плалина BuyMenu
#define TASK_SHOWHUD 4001 // ТаÑк айди худа
#define TASK_LOAD_DATA 4002 // ТаÑк айди загрузки базы
#define TASK_SP 4003 // ТаÑк Ñпавна
#define MAX_ITEMS 80 // МакÑимально айтемов Ñ Ð»Ð¸Ð¼Ð¸Ñ‚Ð°Ð¼Ð¸
#define MAX_CLIENTS 32 // МакÑимально клиентов (не менÑÑ‚ÑŒ)
#define BM_PLUGIN_HANDLED 98 // Ðйди Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸
#define BUYMENU_ITEMS_FILE "ZP_BuyMenu.ini" // Ðазвание ini файла от бай меню
#define BUYMENU_CONFIG_FILE "ZP_BuyMenu.cfg" // Ðазвание конфиг файла от бай меню
#define BUYMENU_LANG_FILE "ZP_BuyMenu.txt" // Ðазвание ланг файла от бай меню
#define BUYMENU_KNIFEMENU_COMMAND "knife" // Команда Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¼ÐµÐ½ÑŽ ножей
// ÐаÑтройка валюты
#define BM_SetUserMoney(%0,%1) Native_SetUserMoney(%0,%1)
#define BM_GetUserMoney(%0) g_iMoney[ %0 ]
new g_iMsgID_Money;
new g_iMoney[ MAX_CLIENTS +1 ];
new g_First;
new Array: aItemName;
new Array: aItemCost;
new Array: aItemLevel;
new Array: aItemMenu;
new Array: aItemPermission;
new Array: aItemMinimumPlayers;
new Array: aItemUserLimit;
new Array: aItemUserMapLimit;
new Array: aItemRoundLimit;
new Array: aItemMapLimit;
new Array: aItem2RealName;
new Array: aItem2Name;
new Array: aItem2Cost;
new Array: aItem2Level;
new Array: aItem2Menu;
new Array: aItem2Permission;
new Array: aItem2MinimumPlayers;
new Array: aItem2UserLimit;
new Array: aItem2UserMapLimit;
new Array: aItem2RoundLimit;
new Array: aItem2MapLimit;
new Array: aItemNew;
enum _: eCvarList
{
Discount_Enable = 0,
Discount_VIP,
Discount_ADMIN,
Discount_GOLD,
Discount_BOSS,
Discount_PREMIUM,
BuyMenu_After_Infection,
BuyMenu_Block_Weapons,
LevelSystem_Enable,
LevelSystem_Hud_Type,
LevelSystem_Notifications,
LevelSystem_Damage,
LevelSystem_Kill,
LevelSystem_Kill_Head,
LevelSystem_Kill_Human,
LevelSystem_Kill_Nemesis,
LevelSystem_Kill_Survivor,
LevelSystem_Infection,
LevelSystem_MaxLevel,
LevelSystem_ExpirienceMulti,
};
enum _: eMessages
{
SayText = 0,
BuyClose,
StatusIcon
};
enum _: eData
{
Level = 0,
Exp
};
enum _: eCallBack
{
CB_Items = 0,
CB_Rifles,
CB_Pistols,
CB_Knives
};
enum _: eWeaponType
{
Primary = 0,
Secondary
}
enum
{
Pistols = 0,
Shotguns,
Automates,
Rifles,
Machines,
Extras_Human,
Extras_Zombie
};
enum
{
All_Users = 0,
VIP_Player,
ADMIN_Player,
GOLD_Player,
BOSS_Player,
PREMIUM_Player
};
new pCvar[ eCvarList ];
new g_fwItemSelected;
new g_iMsgID[ eMessages ];
new g_iBuyZone;
new g_iItemsNum;
new g_iMaxPlayers;
new g_iForwardResult;
new g_iBitUserConnected;
new g_iMenuCallBack[ eCallBack ];
new g_iUserData[ MAX_CLIENTS + 1 ][ eData ];
new g_iUserDiscount[ MAX_CLIENTS + 1 ];
new g_iUserBackMoney[ MAX_CLIENTS + 1 ];
new g_iMapItemLimit[ MAX_ITEMS ];
new g_iRoundItemLimit[ MAX_ITEMS ];
new g_iUserItemLimit[ MAX_CLIENTS + 1 ][ MAX_ITEMS ];
new g_iUserMapItemLimit[ MAX_CLIENTS + 1 ][ MAX_ITEMS ];
new g_szQuery[ 512 ];
new g_szUserSteamID[ MAX_CLIENTS + 1 ][ 34 ];
new bool: g_bArraysCreated;
new bool: g_bSuperUser[ MAX_CLIENTS + 1 char ];
new bool: g_bItemSelected[ MAX_CLIENTS + 1 ][ eWeaponType ];
new Float: g_flUserDamage[ MAX_CLIENTS + 1 ];
new Handle: g_hDBTuple;
new Handle: g_hConnect;
public plugin_init( )
{
register_plugin( "[ZP] Buy Menu + Level System", "1.1", "t3rkecorejz" );
register_dictionary( BUYMENU_LANG_FILE );
register_event( "HLTV", "EV_RoundStart", "a", "1=0", "2=0" );
RegisterHam( Ham_Spawn, "func_buyzone", "CBuyZone__Spawn_Pre", .Post = 0 );
RegisterHam( Ham_Spawn, "player", "CPlayer__Spawn_Post", .Post = 1 );
RegisterHam( Ham_Killed, "player", "CPlayer__Killed_Post", .Post = 1 );
RegisterHam( Ham_TakeDamage, "player", "CPlayer__TakeDamage_Post", .Post = 1 );
RegisterHam( Ham_Player_PreThink, "player", "CPlayer__PreThink_Post", .Post = 1 );
g_iMsgID[ SayText ] = get_user_msgid( "SayText" );
g_iMsgID[ BuyClose ] = get_user_msgid( "BuyClose" );
g_iMsgID[ StatusIcon ] = get_user_msgid( "StatusIcon" );
g_iMsgID_Money = get_user_msgid( "Money" );
register_message( g_iMsgID_Money, "MSG_Money" );
g_iMenuCallBack[ CB_Items ] = menu_makecallback( "BuyItem_Menu_CallBack" );
g_iMenuCallBack[ CB_Rifles ] = menu_makecallback( "BuyMenu_Rifles_Menu_CallBack" );
g_iMenuCallBack[ CB_Pistols ] = menu_makecallback( "BuyMenu_Pistols_Menu_CallBack" );
g_iMenuCallBack[ CB_Knives ] = menu_makecallback( "BuyMenu_Knives_Menu_CallBack" );
g_iMaxPlayers = get_maxplayers();
g_fwItemSelected = CreateMultiForward( "BM_Item_Selected", ET_CONTINUE, FP_CELL, FP_CELL );
pCvar[ Discount_Enable ] = register_cvar( "bm_discount_enable", "1" );
pCvar[ Discount_VIP ] = register_cvar( "bm_discount_vip", "10" );
pCvar[ Discount_ADMIN ] = register_cvar( "bm_discount_admin", "15" );
pCvar[ Discount_GOLD ] = register_cvar( "bm_discount_gold", "20" );
pCvar[ Discount_BOSS ] = register_cvar( "bm_discount_boss", "5" );
pCvar[ Discount_PREMIUM ] = register_cvar( "bm_discount_premium", "10" );
pCvar[ BuyMenu_After_Infection ] = register_cvar( "bm_buymenu_after_infection", "1" );
pCvar[ BuyMenu_Block_Weapons ] = register_cvar( "bm_buymenu_block_weapons", "1" );
pCvar[ LevelSystem_Enable ] = register_cvar( "bm_level_system_enable", "1" );
pCvar[ LevelSystem_Hud_Type ] = register_cvar( "bm_level_system_hud_type", "2" );
pCvar[ LevelSystem_Notifications ] = register_cvar( "bm_level_system_notifications", "1" );
pCvar[ LevelSystem_Damage ] = register_cvar( "bm_level_system_damage", "2500.0" );
pCvar[ LevelSystem_Kill ] = register_cvar( "bm_level_system_kill_zombie", "2" );
pCvar[ LevelSystem_Kill_Head ] = register_cvar( "bm_level_system_kill_zombie_head", "3" );
pCvar[ LevelSystem_Kill_Human ] = register_cvar( "bm_level_system_kill_human", "5" );
pCvar[ LevelSystem_Kill_Nemesis ] = register_cvar( "bm_level_system_kill_nemesis", "10" );
pCvar[ LevelSystem_Kill_Survivor ] = register_cvar( "bm_level_system_kill_survivor", "10" );
pCvar[ LevelSystem_Infection ] = register_cvar( "bm_level_system_infect", "3" );
pCvar[ LevelSystem_MaxLevel ] = register_cvar( "bm_level_system_maxlvl", "100" );
pCvar[ LevelSystem_ExpirienceMulti ] = register_cvar( "bm_level_system_expmulti", "10" );
new iBuyCommands;
for ( iBuyCommands = 0; iBuyCommands < sizeof g_szBuyCommands; iBuyCommands++ )
register_clcmd( g_szBuyCommands[ iBuyCommands ], "Command_BuyMenu" );
register_clcmd( "bm_unlim", "Command_SuperUser" );
}
public plugin_precache( )
{
g_iBuyZone = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "func_buyzone" ) );
if( pev_valid( g_iBuyZone ) )
{
dllfunc( DLLFunc_Spawn, g_iBuyZone );
engfunc( EngFunc_SetSize, g_iBuyZone, { -8192.0, -8192.0, -8192.0 }, { -8191.0, -8191.0, -8191.0 } );
}
aItemName = ArrayCreate( 32, 1 );
aItemCost = ArrayCreate( 1, 1 );
aItemLevel = ArrayCreate( 1, 1 );
aItemMenu = ArrayCreate( 1, 1 );
aItemPermission = ArrayCreate( 1, 1 );
aItemMinimumPlayers = ArrayCreate( 1, 1 );
aItemUserLimit = ArrayCreate( 1, 1 );
aItemUserMapLimit = ArrayCreate( 1, 1 );
aItemRoundLimit = ArrayCreate( 1, 1 );
aItemMapLimit = ArrayCreate( 1, 1 );
aItem2RealName = ArrayCreate( 32, 1 );
aItem2Name = ArrayCreate( 32, 1 );
aItem2Cost = ArrayCreate( 1, 1 );
aItem2Level = ArrayCreate( 1, 1 );
aItem2Menu = ArrayCreate( 1, 1 );
aItem2Permission = ArrayCreate( 1, 1 );
aItem2MinimumPlayers = ArrayCreate( 1, 1 );
aItem2UserLimit = ArrayCreate( 1, 1 );
aItem2UserMapLimit = ArrayCreate( 1, 1 );
aItem2RoundLimit = ArrayCreate( 1, 1 );
aItem2MapLimit = ArrayCreate( 1, 1 );
aItemNew = ArrayCreate( 1, 1 );
g_bArraysCreated = true;
CFile__LoadCustomization( );
}
public plugin_cfg( )
{
new szConfigDir[ 32 ];
get_configsdir( szConfigDir, charsmax( szConfigDir ) );
server_cmd( "exec %s/%s", szConfigDir, BUYMENU_CONFIG_FILE );
g_bArraysCreated = false;
CFile__SaveCustomization( );
SQL_LoadDebug( );
}
public plugin_end( )
{
if( g_hDBTuple )
SQL_FreeHandle( g_hDBTuple );
if( g_hConnect )
SQL_FreeHandle( g_hConnect );
return;
}
public client_putinserver( iPlayer )
{
if( get_pcvar_num( pCvar[ Discount_Enable ] ) )
{
if( get_user_flags( iPlayer ) & FLAG_PREMIUM )
g_iUserDiscount[ iPlayer ] = get_pcvar_num( pCvar[ Discount_PREMIUM ] );
else
if( get_user_flags( iPlayer ) & FLAG_BOSS )
g_iUserDiscount[ iPlayer ] = get_pcvar_num( pCvar[ Discount_BOSS ] );
else
if( get_user_flags( iPlayer ) & FLAG_GOLD )
g_iUserDiscount[ iPlayer ] = get_pcvar_num( pCvar[ Discount_GOLD ] );
else
if( get_user_flags( iPlayer ) & FLAG_ADMIN )
g_iUserDiscount[ iPlayer ] = g_iUserDiscount[ iPlayer ] + get_pcvar_num( pCvar[ Discount_ADMIN ] );
else
if( get_user_flags( iPlayer ) & FLAG_VIP )
g_iUserDiscount[ iPlayer ] = g_iUserDiscount[ iPlayer ] + get_pcvar_num( pCvar[ Discount_VIP ] );
}
else g_iUserDiscount[ iPlayer ] = 0;
set_task( random_float( 1.0, 3.0 ), "CTask__LoadData", iPlayer + TASK_LOAD_DATA );
if( get_pcvar_num( pCvar[ LevelSystem_Enable ] ) )
set_task( 1.0, "CTask__ShowUserHud", iPlayer + TASK_SHOWHUD, _, _, .flags = "b" );
set_bit( g_iBitUserConnected, iPlayer );
}
public CTask__LoadData( iTask )
{
new iPlayer = iTask - TASK_LOAD_DATA;
if( !is_user_connected( iPlayer ) || is_user_bot( iPlayer ) )
return;
new iParams[ 1 ];
iParams [ 0 ] = iPlayer;
get_user_authid( iPlayer, g_szUserSteamID[ iPlayer ], charsmax( g_szUserSteamID[ ] ) );
formatex( g_szQuery, charsmax( g_szQuery ), "SELECT * FROM `%s` WHERE ( `%s`.`SteamID` = '%s' )", SQL_TABLENAME, SQL_TABLENAME, g_szUserSteamID[ iPlayer ] );
SQL_ThreadQuery( g_hDBTuple, "SQL_QueryConnection", g_szQuery, iParams, sizeof iParams );
}
public client_disconnected( iPlayer )
{
if( !get_bit( g_iBitUserConnected, iPlayer ) || is_user_bot( iPlayer ) )
return;
formatex( g_szQuery, charsmax( g_szQuery ), "UPDATE `%s` SET `Level` = '%d', `Exp` = '%d', `Money` = '%d' WHERE `%s`.`SteamID` = '%s';", SQL_TABLENAME, g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], g_iMoney[ iPlayer ], SQL_TABLENAME, g_szUserSteamID[ iPlayer ] );
SQL_ThreadQuery( g_hDBTuple, "SQL_ThreadQueryHandler", g_szQuery );
g_bSuperUser{ iPlayer } = false;
g_iUserDiscount[ iPlayer ] = 0;
reset_bit( g_iBitUserConnected, iPlayer );
}
public plugin_natives( )
{
register_native( "BM_Register_Item", "Native_Register_Item", 1 );
register_native( "BM_GetUserData", "Native_GetUserData", 1 );
register_native( "BM_GetUserExpForNextLevel", "Native_GetUserExpForNextLevel", 1 );
register_native( "BM_SetUserData", "Native_SetUserData", 1 );
register_native( "BM_GiveUserExp", "Native_GiveUserExp", 1 );
register_native( "BM_CheckUserNextLevel", "Native_CheckUserNextLevel", 1 );
register_native( "GetUserMoney", "native_get_money", 1 );
register_native( "SetUserMoney", "native_set_money", 1 );
}
public SQL_LoadDebug( )
{
new szError[ 512 ];
new iErrorCode;
g_hDBTuple = SQL_MakeDbTuple( SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DATABASE );
g_hConnect = SQL_Connect( g_hDBTuple, iErrorCode, szError, charsmax( szError ) );
if( g_hConnect == Empty_Handle )
set_fail_state( szError );
if( !SQL_TableExists( g_hConnect, SQL_TABLENAME ) )
{
new Handle: hQueries;
new szQuery[ 512 ];
formatex( szQuery, charsmax( szQuery ), "CREATE TABLE IF NOT EXISTS `%s` (`SteamID` varchar( 32 ) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL, `Level` INT NOT NULL, `Exp` INT NOT NULL, `Money` INT NOT NULL)", SQL_TABLENAME );
hQueries = SQL_PrepareQuery( g_hConnect, szQuery );
if( !SQL_Execute( hQueries ) )
{
SQL_QueryError( hQueries, szError, charsmax( szError ) );
set_fail_state( szError );
}
SQL_FreeHandle( hQueries );
}
SQL_QueryAndIgnore( g_hConnect, "SET NAMES utf8" );
}
public SQL_QueryConnection( iState, Handle: hQuery, szError[ ], iErrorCode, iParams[ ], iParamsSize )
{
switch( iState )
{
case TQUERY_CONNECT_FAILED: log_amx( "Load - Could not connect to SQL database. [%d] %s", iErrorCode, szError );
case TQUERY_QUERY_FAILED: log_amx( "Load Query failed. [%d] %s", iErrorCode, szError );
}
new iPlayer = iParams[ 0 ];
if( SQL_NumResults( hQuery ) < 1 )
{
if( equal( g_szUserSteamID[ iPlayer ], "ID_PENDING" ) )
return PLUGIN_HANDLED;
g_iUserData[ iPlayer ] = { 1, 0 }
g_iMoney[ iPlayer ] = MONEY_START
formatex( g_szQuery, charsmax( g_szQuery ), "INSERT INTO `%s` ( `SteamID`, `Level`, `Exp`, `Money`) VALUES ( '%s', '%d', '%d', '%d' );", SQL_TABLENAME, g_szUserSteamID[ iPlayer ], g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], g_iMoney[ iPlayer ] );
SQL_ThreadQuery( g_hDBTuple, "SQL_ThreadQueryHandler", g_szQuery );
return PLUGIN_HANDLED;
}
else
{
g_iUserData[ iPlayer ][ Level ] = SQL_ReadResult( hQuery, 1 );
g_iUserData[ iPlayer ][ Exp ] = SQL_ReadResult( hQuery, 2 );
g_iMoney[ iPlayer ] = SQL_ReadResult( hQuery, 3 );
}
return PLUGIN_HANDLED;
}
public SQL_ThreadQueryHandler( iState, Handle: hQuery, szError[ ], iErrorCode, iParams[ ], iParamsSize )
{
if( iState == 0 )
return;
log_amx( "SQL Error: %d (%s)", iErrorCode, szError );
}
public MSG_Money( MsgID, MSG_DEST, iEntity )
{
new iMoney = g_iMoney[ iEntity ];
set_msg_arg_int( 1, ARG_LONG, iMoney );
set_pdata_int( iEntity, m_iAccount, iMoney, 5 );
}
public CPlayer__Spawn_Post( iPlayer )
{
if( !is_user_alive( iPlayer ) )
return;
set_pdata_int( iPlayer, m_iAccount, g_iMoney[ iPlayer ], 5 );
UTIL_Money( iPlayer, g_iMoney[ iPlayer ], 0 );
if (g_iMoney [ iPlayer ] == 0)
set_task (1.0, "sp_money", iPlayer + TASK_SP);
}
public sp_money(taskid)
{
new iPlayer = taskid - TASK_SP;
set_pdata_int( iPlayer, m_iAccount, g_iMoney[ iPlayer ], 5 );
UTIL_Money( iPlayer, g_iMoney[ iPlayer ], 0 );
if (g_iMoney [ iPlayer ] == 0)
set_task (1.0, "sp_money", iPlayer + TASK_SP);
}
public zp_user_infected_post( iPlayer, iInfector )
{
if( !is_user_alive( iPlayer ) || !is_user_alive( iInfector ) || iPlayer == iInfector )
return;
Native_GiveUserExp( iInfector, get_pcvar_num( pCvar[ LevelSystem_Infection ] ) );
Native_SetUserMoney( iInfector, g_iMoney[ iInfector ] + MONEY_INFECT );
show_menu( iPlayer, 0, "^n", 1 );
menu_cancel( iPlayer );
}
public zp_user_humanized_post( iPlayer )
{
show_menu( iPlayer, 0, "^n", 1 );
menu_cancel( iPlayer );
}
public zp_round_started( iGameMode, iEntity )
{
for( new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++ )
{
if( is_user_alive( iPlayer ) )
{
if( zp_get_user_zombie( iPlayer ) || zp_get_user_survivor( iPlayer ) )
{
BM_SetUserMoney( iPlayer, BM_GetUserMoney( iPlayer ) + g_iUserBackMoney[ iPlayer ] );
g_iUserBackMoney[ iPlayer ] = 0;
show_menu( iPlayer, 0, "^n", 1 );
menu_cancel( iPlayer );
}
}
}
}
public Command_BuyMenu( iPlayer )
{
if( !is_user_alive( iPlayer ) )
return PLUGIN_CONTINUE;
message_begin( MSG_ONE, g_iMsgID[ BuyClose ], _, iPlayer );
message_end( );
if( g_bSuperUser{ iPlayer } )
{
if( zp_get_user_zombie( iPlayer ) ) Show_Menu_BuyItem( iPlayer, Extras_Zombie );
else Show_Menu_BuyMenu( iPlayer );
return PLUGIN_HANDLED;
}
if( get_pcvar_num( pCvar[ BuyMenu_After_Infection ] ) )
{
/*if( zp_has_round_started( ) )
{
if( zp_get_user_zombie( iPlayer ) ) Show_Menu_BuyItem( iPlayer, Extras_Zombie );
else Show_Menu_BuyItem( iPlayer, Extras_Human );
}
else */Show_Menu_BuyMenu( iPlayer );
}
else
{
if( zp_get_user_zombie( iPlayer ) ) Show_Menu_BuyItem( iPlayer, Extras_Zombie );
else Show_Menu_BuyMenu( iPlayer );
}
return PLUGIN_HANDLED;
}
public Command_SuperUser( iPlayer )
{
if( ~get_user_flags( iPlayer ) & ADMIN_LEVEL_F )
return PLUGIN_HANDLED;
g_bSuperUser{ iPlayer } = !g_bSuperUser{ iPlayer };
UTIL_ColorChat( iPlayer, "Безлимит: [%s]", g_bSuperUser{ iPlayer } ? "Вкл." : "Выкл." );
return PLUGIN_HANDLED;
}
public EV_RoundStart( )
{
for( new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++ )
{
if( !is_user_connected( iPlayer ) )
continue;
if( get_bit( g_iBitUserConnected, iPlayer ) )
{
formatex( g_szQuery, charsmax( g_szQuery ), "UPDATE `%s` SET `Level` = '%d', `Exp` = '%d', `Money` = '%d' WHERE `%s`.`SteamID` = '%s';", SQL_TABLENAME, g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], g_iMoney[ iPlayer ], SQL_TABLENAME, g_szUserSteamID[ iPlayer ] );
SQL_ThreadQuery( g_hDBTuple, "SQL_ThreadQueryHandler", g_szQuery );
}
arrayset( g_bItemSelected[ iPlayer ], false, 2 );
for( new iItemID = 0; iItemID <= g_iItemsNum; iItemID++ )
{
g_iUserItemLimit[ iPlayer ][ iItemID ] = 0;
g_iRoundItemLimit[ iItemID ] = 0;
g_iUserBackMoney[ iPlayer ] = 0;
show_menu( iPlayer, 0, "^n", 1 );
menu_cancel( iPlayer );
}
set_task(0.5, "vip_present", iPlayer)
}
}
public vip_present(iPlayer)
{
new psText[ 128 ];
if( get_user_flags( iPlayer ) & FLAG_PREMIUM )
{
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] +MONEY_PREMIUM );
formatex( psText, charsmax( psText ), "%L", LANG_PLAYER, "BM_PREMIUM", MONEY_PREMIUM );
set_dhudmessage( 255, 215, 0, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", psText );
} else
if( get_user_flags( iPlayer ) & FLAG_BOSS )
{
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] +MONEY_BOSS );
formatex( psText, charsmax( psText ), "%L", LANG_PLAYER, "BM_BOSS", MONEY_BOSS );
set_dhudmessage( 255, 215, 0, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", psText );
} else
if( get_user_flags( iPlayer ) & FLAG_GOLD )
{
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] +MONEY_GOLD );
formatex( psText, charsmax( psText ), "%L", LANG_PLAYER, "BM_GOLD", MONEY_GOLD );
set_dhudmessage( 255, 215, 0, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", psText );
} else
if( get_user_flags( iPlayer ) & FLAG_ADMIN )
{
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] +MONEY_ADMIN );
formatex( psText, charsmax( psText ), "%L", LANG_PLAYER, "BM_ADMIN", MONEY_ADMIN );
set_dhudmessage( 255, 215, 0, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", psText );
} else
if( get_user_flags( iPlayer ) & FLAG_VIP )
{
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] +MONEY_VIP );
formatex( psText, charsmax( psText ), "%L", LANG_PLAYER, "BM_VIP", MONEY_VIP );
set_dhudmessage( 255, 215, 0, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", psText );
}
}
public zp_round_ended( iWinTeam )
{
set_task(0.5, "present", iWinTeam)
}
public present (iWinTeam)
{
if(g_First > 1)
{
switch( iWinTeam )
{
case WIN_NO_ONE: PlayersReward( 2, COLOR_DRAW, COLOR_DRAW, MONEY_DRAW, MONEY_DRAW );
case WIN_ZOMBIES: PlayersReward( 0, COLOR_LOSE, COLOR_WIN, MONEY_LOSE, MONEY_WIN );
case WIN_HUMANS: PlayersReward( 1, COLOR_WIN, COLOR_LOSE, MONEY_WIN, MONEY_LOSE );
}
}
g_First++
}
public PlayersReward( iMessage, ColorHuman[ 3 ], ColorZombie[ 3 ], MoneyHuman, MoneyZombie)
{
new szText[ 128 ];
for( new iPlayer = 1; iPlayer <= MAX_CLIENTS; iPlayer++ )
{
if( !is_user_connected( iPlayer ) )
continue
if( zp_get_user_zombie( iPlayer ) )
{
switch( iMessage )
{
case 0: formatex( szText, charsmax( szText ), "%L", LANG_PLAYER, "BM_ZOMBIE_WIN", MoneyZombie );
case 1: formatex( szText, charsmax( szText ), "%L", LANG_PLAYER, "BM_ZOMBIE_LOSE", MoneyZombie );
case 2: formatex( szText, charsmax( szText ), "%L", LANG_PLAYER, "BM_DRAW", MoneyZombie );
}
set_dhudmessage( ColorZombie[ 0 ], ColorZombie[ 1 ], ColorZombie[ 2 ], 0.02, 0.5, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", szText );
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] + MoneyZombie );
}
else
{
switch( iMessage )
{
case 0: formatex( szText, charsmax( szText ), "%L", LANG_PLAYER, "BM_HUMAN_LOSE", MoneyHuman );
case 1: formatex( szText, charsmax( szText ), "%L", LANG_PLAYER, "BM_HUMAN_WIN", MoneyHuman );
case 2: formatex( szText, charsmax( szText ), "%L", LANG_PLAYER, "BM_DRAW", MoneyHuman );
}
set_dhudmessage( ColorHuman[ 0 ], ColorHuman[ 1 ], ColorHuman[ 2 ], 0.02, 0.5, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( iPlayer, "%s", szText );
Native_SetUserMoney( iPlayer, g_iMoney[ iPlayer ] + MoneyHuman );
}
}
}
public CBuyZone__Spawn_Pre( ) return HAM_SUPERCEDE;
public CPlayer__Killed_Post( iVictim, iAttacker, iGib )
{
if( !is_user_connected( iVictim ) || !is_user_connected( iAttacker ) || iVictim == iAttacker )
return HAM_IGNORED;
if( !get_pcvar_num( pCvar[ LevelSystem_Enable ] ) )
return HAM_IGNORED;
if( zp_get_user_nemesis( iVictim ) )
{
new sText[ 128 ];
new name[32]
get_user_name(iAttacker, name, 31)
if( g_iUserData[ iAttacker ][ Level ] < get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Nemesis ] ) );
Native_SetUserMoney( iAttacker, g_iMoney[ iAttacker ] +MONEY_NEM_KILL );
formatex( sText, charsmax( sText ), "%L", LANG_PLAYER, "KILL_NEM", name, MONEY_NEM_KILL );
set_dhudmessage( 255, 105, 180, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( 0, "%s", sText );
return HAM_IGNORED;
}
if( zp_get_user_survivor( iVictim ) )
{
new ssText[ 128 ];
new name2[32]
get_user_name(iAttacker, name2, 31)
if( g_iUserData[ iAttacker ][ Level ] < get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Survivor ] ) );
Native_SetUserMoney( iAttacker, g_iMoney[ iAttacker ] +MONEY_SURV_KILL );
formatex( ssText, charsmax( ssText ), "%L", LANG_PLAYER, "KILL_SURV", name2, MONEY_SURV_KILL );
set_dhudmessage( 255, 105, 180, 0.02, 0.7, 2, 0.25, 3.0, 0.06, 0.2 );
show_dhudmessage( 0, "%s", ssText );
return HAM_IGNORED;
}
if( zp_get_user_zombie( iAttacker ) && !zp_get_user_zombie( iVictim ) )
{
if( g_iUserData[ iAttacker ][ Level ] < get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Human ] ) );
Native_SetUserMoney( iAttacker, g_iMoney[ iAttacker ] +MONEY_KILL );
return HAM_IGNORED;
}
if( zp_get_user_zombie( iVictim ) && !zp_get_user_zombie( iAttacker ) )
{
if( get_pdata_int( iVictim, m_LastHitGroup, 5 ) == HIT_HEAD )
{
if( g_iUserData[ iAttacker ][ Level ] < get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Head ] ) );
Native_SetUserMoney( iAttacker, g_iMoney[ iAttacker ] +MONEY_KILL );
return HAM_IGNORED;
}
if( g_iUserData[ iAttacker ][ Level ] < get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill ] ) );
Native_SetUserMoney( iAttacker, g_iMoney[ iAttacker ] +MONEY_KILL );
}
return HAM_IGNORED;
}
public CPlayer__TakeDamage_Post( iVictim, iInflictor, iAttacker, Float: flDamage )
{
if( !is_user_connected( iVictim ) || !is_user_connected( iAttacker ) || iVictim == iAttacker )
return HAM_IGNORED;
if( !get_pcvar_num( pCvar[ LevelSystem_Enable ] ) )
return HAM_IGNORED;
if( zp_get_user_zombie( iVictim ) && !zp_get_user_zombie( iAttacker ) )
{
flDamage/= MONEY_KF;
Native_SetUserMoney( iAttacker, g_iMoney[ iAttacker ] + floatround(flDamage) );
if( g_iUserData[ iAttacker ][ Level ] >= get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
return HAM_IGNORED;
g_flUserDamage[ iAttacker ] += flDamage;
if( g_flUserDamage[ iAttacker ] >= get_pcvar_float( pCvar[ LevelSystem_Damage ] ) )
{
while( g_flUserDamage[ iAttacker ] >= get_pcvar_float( pCvar[ LevelSystem_Damage ] ) )
{
g_flUserDamage[ iAttacker ] -= get_pcvar_float( pCvar[ LevelSystem_Damage ] );
Native_GiveUserExp( iAttacker, 1 );
}
}
Native_CheckUserNextLevel( iAttacker );
}
return HAM_IGNORED;
}
public CPlayer__PreThink_Post( iPlayer )
{
if( !is_user_alive( iPlayer ) )
return HAM_IGNORED;
UTIL_StatusIcon( iPlayer, 1, "buyzone", 0, 0, 0 );
return HAM_IGNORED;
}
public Show_Menu_BuyMenu( iPlayer )
{
if( !is_user_alive( iPlayer ) || zp_get_user_survivor( iPlayer ) || zp_get_user_nemesis( iPlayer ) )
return PLUGIN_HANDLED;
message_begin( MSG_ONE, g_iMsgID[ BuyClose ], _, iPlayer );
message_end( );
new iMenuIndex, szMenu[ 512 ], szDiscount[ 128 ];
if( get_pcvar_num( pCvar[ Discount_Enable ] ) )
formatex( szDiscount, charsmax( szDiscount ), "^n%L", iPlayer, "BM_BUYMENU_DISCOUNT", g_iUserDiscount[ iPlayer ] );
else formatex( szDiscount, charsmax( szDiscount ), "" );
formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_TITLE", szDiscount );
iMenuIndex = menu_create( szMenu, "BuyMenu_Menu_Handler" );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_BUYMENU_PISTOLS" );
menu_additem( iMenuIndex, szMenu, _, _, g_iMenuCallBack[ CB_Pistols ] );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_BUYMENU_SHOTGUNS" );
menu_additem( iMenuIndex, szMenu, _, _, g_iMenuCallBack[ CB_Rifles ] );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_BUYMENU_AUTOMATES" );
menu_additem( iMenuIndex, szMenu, _, _, g_iMenuCallBack[ CB_Rifles ] );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_BUYMENU_RIFLES" );
menu_additem( iMenuIndex, szMenu, _, _, g_iMenuCallBack[ CB_Rifles ] );
formatex( szMenu, charsmax( szMenu ), "%L^n", iPlayer, "BM_BUYMENU_MACHINEGUNS" );
menu_additem( iMenuIndex, szMenu, _, _, g_iMenuCallBack[ CB_Rifles ] );
formatex( szMenu, charsmax( szMenu ), "%L^n", iPlayer, zp_get_user_zombie( iPlayer ) ? "BM_BUYMENU_EXTRAS_ZM" : "BM_BUYMENU_EXTRAS_HM" );
menu_additem( iMenuIndex, szMenu );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_BUYMENU_KNIVES" );
menu_additem( iMenuIndex, szMenu, _, _, g_iMenuCallBack[ CB_Knives ] );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_MENU_BACK" );
menu_setprop( iMenuIndex, MPROP_BACKNAME, szMenu );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_MENU_NEXT" );
menu_setprop( iMenuIndex, MPROP_NEXTNAME, szMenu );
formatex( szMenu, charsmax( szMenu ), "%L%s", iPlayer, "BM_MENU_EXIT", g_bSuperUser{ iPlayer } ? "^n \rБезлимит активирован!" : "" );
menu_setprop( iMenuIndex, MPROP_EXITNAME, szMenu );
if( pev_valid( iPlayer ) == 2 )
set_pdata_int( iPlayer, m_iMenu, 0, 5 );
menu_display( iPlayer, iMenuIndex, 0 );
return PLUGIN_HANDLED;
}
public BuyMenu_Menu_Handler( iPlayer, iMenuIndex, iMenuKey )
{
if( !is_user_alive( iPlayer ) || zp_get_user_survivor( iPlayer ) || zp_get_user_nemesis( iPlayer ) )
return PLUGIN_HANDLED;
switch( iMenuKey )
{
case MENU_EXIT:
{
menu_destroy( iMenuIndex );
return PLUGIN_HANDLED;
}
case 5:
{
if( zp_get_user_zombie( iPlayer ) ) Show_Menu_BuyItem( iPlayer, Extras_Zombie );
else Show_Menu_BuyItem( iPlayer, Extras_Human );
}
case 6:
{
client_cmd( iPlayer, BUYMENU_KNIFEMENU_COMMAND );
return PLUGIN_HANDLED;
}
}
Show_Menu_BuyItem( iPlayer, iMenuKey )
return PLUGIN_HANDLED
}
public BuyMenu_Rifles_Menu_CallBack( iPlayer, iMenuIndex, iMenuKey ) return ( !is_user_alive( iPlayer ) || zp_get_user_zombie( iPlayer ) || g_bItemSelected[ iPlayer ][ Primary ] ) ? ITEM_DISABLED : ITEM_ENABLED;
public BuyMenu_Pistols_Menu_CallBack( iPlayer, iMenuIndex, iMenuKey ) return ( !is_user_alive( iPlayer ) || zp_get_user_zombie( iPlayer ) || g_bItemSelected[ iPlayer ][ Secondary ] ) ? ITEM_DISABLED : ITEM_ENABLED;
public BuyMenu_Knives_Menu_CallBack( iPlayer, iMenuIndex, iMenuKey ) return ( !is_user_alive( iPlayer ) || zp_get_user_zombie( iPlayer ) ) ? ITEM_DISABLED : ITEM_ENABLED;
public Show_Menu_BuyItem( iPlayer, iMenuType )
{
if( !is_user_alive( iPlayer ) || zp_get_user_survivor( iPlayer ) || zp_get_user_nemesis( iPlayer ) )
return;
message_begin( MSG_ONE, g_iMsgID[ BuyClose ], _, iPlayer );
message_end( );
new iMenuIndex, iItemCost, iItemLevel, iItemPermission, iItemMinimumPlayer, iItemUserLimit, iItemUserMapLimit, iItemRoundLimit, iItemMapLimit;
new szBuffer[ 64 ], szItemLevel[ 64 ], szItemPermission[ 64 ], szItemMinimumPlayers[ 64 ], szItemLimitUser[ 64 ], szItemLimitUserMap[ 64 ], szItemLimitRound[ 64 ], szItemLimitMap[ 64 ], szMenu[ 512 ];
new szDiscount[ 128 ], szItemCost[ 32 ];
new iItemIndex[ 3 ];
if( get_pcvar_num( pCvar[ Discount_Enable ] ) )
formatex( szDiscount, charsmax( szDiscount ), "^n\w%L", iPlayer, "BM_BUYMENU_DISCOUNT", g_iUserDiscount[ iPlayer ] );
else formatex( szDiscount, charsmax( szDiscount ), "" );
if( !g_iItemsNum )
return;
switch( iMenuType )
{
case Pistols: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_PISTOLS", szDiscount );
case Shotguns: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_SHOTGUNS", szDiscount );
case Automates: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_AUTOMATES", szDiscount );
case Rifles: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_RIFLES", szDiscount );
case Machines: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_MACHINEGUNS", szDiscount );
case Extras_Human: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_EXTRAS_HM", szDiscount );
case Extras_Zombie: formatex( szMenu, charsmax( szMenu ), "\w%L%s", iPlayer, "BM_BUYMENU_EXTRAS_ZM", szDiscount );
}
iMenuIndex = menu_create( szMenu, "BuyItem_Menu_Handler" );
for( new iItemID = 0; iItemID < g_iItemsNum; iItemID++ )
{
if( ArrayGetCell( aItemMenu, iItemID ) == iMenuType )
{
ArrayGetString( aItemName, iItemID, szBuffer, charsmax( szBuffer ) );
iItemCost = ArrayGetCell( aItemCost, iItemID );
iItemLevel = ArrayGetCell( aItemLevel, iItemID );
iItemPermission = ArrayGetCell( aItemPermission, iItemID );
iItemMinimumPlayer = ArrayGetCell( aItemMinimumPlayers, iItemID );
iItemUserLimit = ArrayGetCell( aItemUserLimit, iItemID );
iItemUserMapLimit = ArrayGetCell( aItemUserMapLimit, iItemID );
iItemRoundLimit = ArrayGetCell( aItemRoundLimit, iItemID );
iItemMapLimit = ArrayGetCell( aItemMapLimit, iItemID );
formatex( szItemCost, charsmax( szItemCost ), "%L", iPlayer, "BM_BUYMENU_VALUENAME", floatround( iItemCost - iItemCost / 100.0 * g_iUserDiscount[ iPlayer ] ) );
if( !g_bSuperUser{ iPlayer } )
{
switch( iItemPermission )
{
case VIP_Player..PREMIUM_Player: formatex( szItemPermission, charsmax( szItemPermission ), " %s", g_szNamePermission[ iItemPermission ] );
default: formatex( szItemPermission, charsmax( szItemPermission ), "" );
}
if( get_pcvar_num( pCvar[ LevelSystem_Enable ] ) )
{
if( g_iUserData[ iPlayer ][ Level ] < iItemLevel )
formatex( szItemLevel, charsmax( szItemLevel ), " %L", iPlayer, "BM_BUYMENU_LEVEL", iItemLevel )
else formatex( szItemLevel, charsmax( szItemLevel ), "" );
}
else formatex( szItemLevel, charsmax( szItemLevel ), "" );
if( ( iItemMinimumPlayer ) && ( iItemMinimumPlayer > get_playersnum( ) ) )
formatex( szItemMinimumPlayers, charsmax( szItemMinimumPlayers ), " %L", iPlayer, "BM_BUYMENU_MINPLAYERS", iItemMinimumPlayer );
else formatex( szItemMinimumPlayers, charsmax( szItemMinimumPlayers ), "" );
if( iItemUserLimit && ( g_iUserItemLimit[ iPlayer ][ iItemID ] >= iItemUserLimit ) )
formatex( szItemLimitUser, charsmax( szItemLimitUser ), " %L", iPlayer, "BM_BUYMENU_LIMITUSER", iItemUserLimit );
else formatex( szItemLimitUser, charsmax( szItemLimitUser ), "" );
if( iItemUserMapLimit && ( g_iUserMapItemLimit[ iPlayer ][ iItemID ] >= iItemUserMapLimit ) )
formatex( szItemLimitUserMap, charsmax( szItemLimitUserMap ), " %L", iPlayer, "BM_BUYMENU_LIMITUSERMAP", iItemUserMapLimit );
else formatex( szItemLimitUserMap, charsmax( szItemLimitUserMap ), "" );
if( iItemRoundLimit && ( g_iRoundItemLimit[ iItemID ] >= iItemRoundLimit ) )
formatex( szItemLimitRound, charsmax( szItemLimitRound ), " %L", iPlayer, "BM_BUYMENU_LIMIT", iItemRoundLimit );
else formatex( szItemLimitRound, charsmax( szItemLimitRound ), "" );
if( iItemMapLimit && ( g_iMapItemLimit[ iItemID ] >= iItemMapLimit ) )
formatex( szItemLimitMap, charsmax( szItemLimitMap ), " %L", iPlayer, "BM_BUYMENU_LIMITMAP", iItemMapLimit );
else formatex( szItemLimitMap, charsmax( szItemLimitMap ), "" );
if(
BM_GetUserMoney( iPlayer ) < floatround( iItemCost - iItemCost / 100.0 * g_iUserDiscount[ iPlayer ] ) ||
g_iUserData[ iPlayer ][ Level ] < iItemLevel ||
( iItemPermission ) && ( ~get_user_flags( iPlayer ) & FLAG_VIP || ~get_user_flags( iPlayer ) & FLAG_ADMIN || ~get_user_flags( iPlayer ) & FLAG_GOLD || ~get_user_flags( iPlayer ) & FLAG_BOSS || ~get_user_flags( iPlayer ) & FLAG_PREMIUM) ||
( iItemMinimumPlayer ) && ( iItemMinimumPlayer > get_playersnum( ) ) ||
iItemUserLimit && ( g_iUserItemLimit[ iPlayer ][ iItemID ] >= iItemUserLimit ) ||
iItemUserMapLimit && ( g_iUserMapItemLimit[ iPlayer ][ iItemID ] >= iItemUserMapLimit ) ||
iItemRoundLimit && ( g_iRoundItemLimit[ iItemID ] >= iItemRoundLimit ) ||
iItemMapLimit && ( g_iMapItemLimit[ iItemID ] >= iItemMapLimit )
)
{
replace_all( szBuffer, charsmax( szBuffer ), "\r", "" );
replace_all( szBuffer, charsmax( szBuffer ), "\y", "" );
replace_all( szBuffer, charsmax( szBuffer ), "\w", "" );
}
if( ( iItemPermission ) && ( ~get_user_flags( iPlayer ) & FLAG_VIP || ~get_user_flags( iPlayer ) & FLAG_ADMIN || ~get_user_flags( iPlayer ) & FLAG_GOLD || ~get_user_flags( iPlayer ) & FLAG_BOSS || ~get_user_flags( iPlayer ) & FLAG_PREMIUM ) )
formatex( szMenu, charsmax( szMenu ), "%s%s", szBuffer, szItemPermission );
else formatex( szMenu, charsmax( szMenu ), "%s %s%s%s%s%s%s%s", szBuffer, szItemCost, szItemLevel, szItemMinimumPlayers, szItemLimitUser, szItemLimitUserMap, szItemLimitRound, szItemLimitMap );
}
else formatex( szMenu, charsmax( szMenu ), "%s", szBuffer );
num_to_str( iItemID, iItemIndex, charsmax( iItemIndex ) );
menu_additem( iMenuIndex, szMenu, iItemIndex, _, g_iMenuCallBack[ CB_Items ] );
}
}
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_MENU_BACK" );
menu_setprop( iMenuIndex, MPROP_BACKNAME, szMenu );
formatex( szMenu, charsmax( szMenu ), "%L", iPlayer, "BM_MENU_NEXT" );
menu_setprop( iMenuIndex, MPROP_NEXTNAME, szMenu );
formatex( szMenu, charsmax( szMenu ), "%L%s", iPlayer, "BM_MENU_EXIT", g_bSuperUser{ iPlayer } ? "^n \dSuper User activated!" : "" );
menu_setprop( iMenuIndex, MPROP_EXITNAME, szMenu );
if( pev_valid( iPlayer ) == 2 )
set_pdata_int( iPlayer, m_iMenu, 0, 5 );
menu_display( iPlayer, iMenuIndex, 0 );
}
public BuyItem_Menu_Handler( iPlayer, iMenuIndex, iMenuKey )
{
if( !is_user_alive( iPlayer ) || zp_get_user_survivor( iPlayer ) || zp_get_user_nemesis( iPlayer ) )
return;
if( iMenuKey == MENU_EXIT )
{
menu_destroy( iMenuIndex );
return;
}
static szBuffer[ 6 ], iDummy;
menu_item_getinfo( iMenuIndex, iMenuKey, iDummy, szBuffer, charsmax( szBuffer ), _, _, iDummy );
new iItemID = str_to_num( szBuffer );
new iItemCost = ArrayGetCell( aItemCost, iItemID );
if( !g_iItemsNum )
return;
ExecuteForward( g_fwItemSelected, g_iForwardResult, iPlayer, iItemID );
if( g_iForwardResult >= BM_PLUGIN_HANDLED )
{
// BM_SetUserMoney( iPlayer, BM_GetUserMoney( iPlayer ) + floatround( iItemCost - iItemCost / 100.0 * g_iUserDiscount[ iPlayer ] ) );
return;
}
if( !g_bSuperUser{ iPlayer } )
{
BM_SetUserMoney( iPlayer, BM_GetUserMoney( iPlayer ) - floatround( iItemCost - iItemCost / 100.0 * g_iUserDiscount[ iPlayer ] ) );
g_iUserBackMoney[ iPlayer ] += floatround( iItemCost - iItemCost / 100.0 * g_iUserDiscount[ iPlayer ] );
if( ArrayGetCell( aItemUserLimit, iItemID ) ) g_iUserItemLimit[ iPlayer ][ iItemID ] += 1;
if( ArrayGetCell( aItemUserMapLimit, iItemID ) ) g_iUserMapItemLimit[ iPlayer ][ iItemID ] += 1;
if( ArrayGetCell( aItemRoundLimit, iItemID ) ) g_iRoundItemLimit[ iItemID ] += 1;
if( ArrayGetCell( aItemMapLimit, iItemID ) ) g_iMapItemLimit[ iItemID ] += 1;
if( get_pcvar_num( pCvar[ BuyMenu_Block_Weapons ] ) )
{
switch( ArrayGetCell( aItemMenu, iItemID ) )
{
case Pistols: g_bItemSelected[ iPlayer ][ Secondary ] = true;
case Shotguns..Machines: g_bItemSelected[ iPlayer ][ Primary ] = true;
}
}
}
}
public BuyItem_Menu_CallBack( iPlayer, iMenuIndex, iMenuKey )
{
static szBuffer[ 6 ], iDummy;
menu_item_getinfo( iMenuIndex, iMenuKey, iDummy, szBuffer, charsmax( szBuffer ), _, _, iDummy );
new iItemID = str_to_num( szBuffer );
new iItemCost = ArrayGetCell( aItemCost, iItemID );
if( !g_bSuperUser{ iPlayer } )
{
switch( ArrayGetCell( aItemPermission, iItemID ) )
{
case VIP_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_VIP )
return ITEM_DISABLED;
}
case ADMIN_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_ADMIN )
return ITEM_DISABLED;
}
case GOLD_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_GOLD )
return ITEM_DISABLED;
}
case BOSS_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_BOSS )
return ITEM_DISABLED;
}
case PREMIUM_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_PREMIUM )
return ITEM_DISABLED;
}
}
if( get_pcvar_num( pCvar[ LevelSystem_Enable ] ) )
{
if( g_iUserData[ iPlayer ][ Level ] < ArrayGetCell( aItemLevel, iItemID ) )
return ITEM_DISABLED;
}
if( BM_GetUserMoney( iPlayer ) < floatround( iItemCost - iItemCost / 100.0 * g_iUserDiscount[ iPlayer ] ) )
return ITEM_DISABLED;
if( get_playersnum( ) < ArrayGetCell( aItemMinimumPlayers, iItemID ) )
return ITEM_DISABLED;
if( ArrayGetCell( aItemUserLimit, iItemID ) && ( g_iUserItemLimit[ iPlayer ][ iItemID ] >= ArrayGetCell( aItemUserLimit, iItemID ) ) )
return ITEM_DISABLED;
if( ArrayGetCell( aItemUserMapLimit, iItemID ) && ( g_iUserMapItemLimit[ iPlayer ][ iItemID ] >= ArrayGetCell( aItemUserMapLimit, iItemID ) ) )
return ITEM_DISABLED;
if( ArrayGetCell( aItemRoundLimit, iItemID ) && ( g_iRoundItemLimit[ iItemID ] >= ArrayGetCell( aItemRoundLimit, iItemID ) ) )
return ITEM_DISABLED;
if( ArrayGetCell( aItemMapLimit, iItemID ) && ( g_iMapItemLimit[ iItemID ] >= ArrayGetCell( aItemMapLimit, iItemID ) ) )
return ITEM_DISABLED;
}
return ITEM_ENABLED;
}
CFile__LoadCustomization()
{
new szPath[ 64 ];
get_localinfo( "amxx_configsdir", szPath, charsmax( szPath ) );
format( szPath, charsmax( szPath ), "%s/%s", szPath, BUYMENU_ITEMS_FILE );
if( !file_exists( szPath ) )
{
new szError[ 100 ];
formatex( szError, charsmax( szError ), "Cannot load customization file %s!", szPath );
set_fail_state( szError );
return;
}
new szData[ 1024 ], szKey[ 64 ], szValue[ 960 ];
new iFile = fopen( szPath, "rt" );
if( file_exists( szPath ) )
{
iFile = fopen( szPath, "rt" );
while( iFile && !feof( iFile ) )
{
fgets( iFile, szData, charsmax( szData ) );
replace( szData, charsmax( szData ), "^n", "" );
if( !szData[ 0 ] || szData[ 0 ] == ';' )
continue;
if( szData[ 0 ] == '[' )
{
szData[ strlen( szData ) - 1 ] = 0;
copy( szData, charsmax( szData ), szData[ 1 ] );
ArrayPushString( aItem2RealName, szData );
continue;
}
strtok( szData, szKey, charsmax( szKey ), szValue, charsmax( szValue ), '=' );
trim( szKey );
trim( szValue );
if( equal( szKey, "NAME" ) )
{
ArrayPushString( aItem2Name, szValue );
}
else if( equal( szKey, "COST" ) )
{
ArrayPushCell( aItem2Cost, str_to_num( szValue ) );
}
else if( equal( szKey, "LEVEL" ) )
{
ArrayPushCell( aItem2Level, str_to_num( szValue ) );
}
else if( equal( szKey, "SLOT" ) )
{
static i;
for( i = 0; i < sizeof g_szItemSlots; i++ )
{
if( equal( g_szItemSlots[ i ], szValue ) )
{
ArrayPushCell( aItem2Menu, i );
break;
}
}
}
else if( equal( szKey, "PERMISSIONS" ) )
{
static i;
for( i = 0; i < sizeof g_szItemPermission; i++ )
{
if( equal( g_szItemPermission[ i ], szValue ) )
{
ArrayPushCell( aItem2Permission, i );
break;
}
}
}
else if( equal( szKey, "MIN PLAYERS" ) )
{
ArrayPushCell( aItem2MinimumPlayers, str_to_num( szValue ) );
}
else if( equal( szKey, "USER ROUND LIMIT" ) )
{
ArrayPushCell( aItem2UserLimit, str_to_num( szValue ) );
}
else if( equal( szKey, "USER MAP LIMIT" ) )
{
ArrayPushCell( aItem2UserMapLimit, str_to_num( szValue ) );
}
else if( equal( szKey, "ROUND LIMIT" ) )
{
ArrayPushCell( aItem2RoundLimit, str_to_num( szValue ) );
}
else if( equal( szKey, "MAP LIMIT" ) )
{
ArrayPushCell( aItem2MapLimit, str_to_num( szValue ) );
}
}
if( iFile ) fclose( iFile );
}
}
CFile__SaveCustomization()
{
new i, szBuffer[ 512 ], szPath[ 64 ];
get_localinfo( "amxx_configsdir", szPath, charsmax( szPath ) );
format( szPath, charsmax( szPath ), "%s/%s", szPath, BUYMENU_ITEMS_FILE );
new iFile = fopen( szPath, "at" );
for( i = 0; i < g_iItemsNum; i++ )
{
if( ArrayGetCell( aItemNew, i ) )
{
ArrayGetString( aItemName, i, szBuffer, charsmax( szBuffer ) );
format( szBuffer, charsmax( szBuffer ), "^n[%s]", szBuffer );
fputs( iFile, szBuffer );
ArrayGetString( aItemName, i, szBuffer, charsmax( szBuffer ) );
format( szBuffer, charsmax( szBuffer ), "^nNAME = %s", szBuffer );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nCOST = %i", ArrayGetCell( aItemCost, i ) );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nLEVEL = 0" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nSLOT = EQUIPMENT HUMAN" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nPERMISSIONS = ALL" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nMIN PLAYERS = 0" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nUSER ROUND LIMIT = 0" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nUSER MAP LIMIT = 0" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nROUND LIMIT = 0" );
fputs( iFile, szBuffer );
formatex( szBuffer, charsmax( szBuffer ), "^nMAP LIMIT = 0^n" );
fputs( iFile, szBuffer );
}
}
fclose( iFile );
ArrayDestroy( aItem2RealName );
ArrayDestroy( aItem2Name );
ArrayDestroy( aItem2Cost );
ArrayDestroy( aItem2Level );
ArrayDestroy( aItem2Menu );
ArrayDestroy( aItem2Permission );
ArrayDestroy( aItem2MinimumPlayers );
ArrayDestroy( aItem2UserLimit );
ArrayDestroy( aItem2UserMapLimit );
ArrayDestroy( aItem2RoundLimit );
ArrayDestroy( aItem2MapLimit );
ArrayDestroy( aItemNew );
}
public Native_Register_Item( const szItemName[ ], iItemCost )
{
param_convert( 1 );
if( !g_bArraysCreated )
{
log_error( AMX_ERR_NATIVE, "Can't register item yet (%s).", szItemName );
return -1;
}
ArrayPushString( aItemName, szItemName );
ArrayPushCell( aItemCost, iItemCost );
ArrayPushCell( aItemLevel, 0 );
ArrayPushCell( aItemMenu, Extras_Human );
ArrayPushCell( aItemPermission, All_Users );
ArrayPushCell( aItemMinimumPlayers, 0 );
ArrayPushCell( aItemUserLimit, 0 );
ArrayPushCell( aItemUserMapLimit, 0 );
ArrayPushCell( aItemRoundLimit, 0 );
ArrayPushCell( aItemMapLimit, 0 );
ArrayPushCell( aItemNew, 1 );
new i, szBuffer[ 32 ], iSize = ArraySize( aItem2RealName );
for( i = 0; i < iSize; i++ )
{
ArrayGetString( aItem2RealName, i, szBuffer, charsmax( szBuffer ) );
if( !equal( szItemName, szBuffer ) )
continue;
ArraySetCell( aItemNew, g_iItemsNum, 0 );
ArrayGetString( aItem2Name, i, szBuffer, charsmax( szBuffer ) );
ArraySetString( aItemName, g_iItemsNum, szBuffer );
szBuffer[ 0 ] = ArrayGetCell( aItem2Cost, i );
ArraySetCell( aItemCost, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2Level, i );
ArraySetCell( aItemLevel, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2Menu, i );
ArraySetCell( aItemMenu, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2Permission, i );
ArraySetCell( aItemPermission, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2MinimumPlayers, i );
ArraySetCell( aItemMinimumPlayers, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2UserLimit, i );
ArraySetCell( aItemUserLimit, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2UserMapLimit, i );
ArraySetCell( aItemUserMapLimit, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2RoundLimit, i );
ArraySetCell( aItemRoundLimit, g_iItemsNum, szBuffer[ 0 ] );
szBuffer[ 0 ] = ArrayGetCell( aItem2MapLimit, i );
ArraySetCell( aItem2MapLimit, g_iItemsNum, szBuffer[ 0 ] );
}
g_iItemsNum++;
return g_iItemsNum -1;
}
public Native_GetUserData( iPlayer, iType )
return g_iUserData[ iPlayer ][ iType ];
public Native_GetUserExpForNextLevel( iPlayer )
return get_pcvar_num( pCvar[ LevelSystem_ExpirienceMulti ] ) * ( g_iUserData[ iPlayer ][ Level ] + 1 );
public Native_SetUserData( iPlayer, iType, iValue )
g_iUserData[ iPlayer ][ iType ] = iValue;
public Native_GiveUserExp( iPlayer, iAmount )
{
if( !get_pcvar_num( pCvar[ LevelSystem_Enable ] ) ) return;
if( get_pcvar_num( pCvar[ LevelSystem_Notifications ] ) == 2 )
{
set_dhudmessage( 255, 128, 0, 0.8, 0.4, 2, 6.0, 1.1, 0.1, 0.2 );
show_dhudmessage( iPlayer, "%L", iPlayer, "BM_LS_GET_EXP", iAmount );
}
g_iUserData[ iPlayer ][ Exp ] += iAmount;
Native_CheckUserNextLevel( iPlayer );
}
public Native_CheckUserNextLevel( iPlayer )
{
if( g_iUserData[ iPlayer ][ Exp ] > Native_GetUserExpForNextLevel( iPlayer ) )
{
g_iUserData[ iPlayer ][ Exp ] -= Native_GetUserExpForNextLevel( iPlayer );
g_iUserData[ iPlayer ][ Level ] += 1;
if( get_pcvar_num( pCvar[ LevelSystem_Notifications ] ) )
UTIL_ColorChat( iPlayer, "%L !g%i", iPlayer, "BM_LS_LEVELUP", g_iUserData[ iPlayer ][ Level ] );
}
}
public CTask__ShowUserHud( iTask )
{
new iPlayer = iTask - TASK_SHOWHUD;
new szText[ 256 ];
if( !is_user_alive( iPlayer ) )
return;
switch( get_pcvar_num( pCvar[ LevelSystem_Hud_Type ] ) )
{
case 0: formatex( szText, charsmax( szText ), "" );
case 1: formatex( szText, charsmax( szText ), "%L", iPlayer, "BM_LS_HUD_TYPE1", g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], Native_GetUserExpForNextLevel( iPlayer ) );
case 2: formatex( szText, charsmax( szText ), "%L", iPlayer, "BM_LS_HUD_TYPE2", g_iUserData[ iPlayer ][ Level ], floatround( 99.0 / Native_GetUserExpForNextLevel( iPlayer ) * g_iUserData[ iPlayer ][ Exp ] ) );
}
// red, green, blue, x, y, effect, fxtime, holdtime, fadeintime, fadeouttime
set_dhudmessage( 0, 255, 255, -1.0, 0.875, 0, 0.0, 1.1, 0.0, 0.0 );
show_dhudmessage( iPlayer, "%s", szText );
}
stock UTIL_ColorChat( iPlayer, const szMessage[], any:... )
{
static szBuffer[ 190 ], i, iArgsCount;
iArgsCount = numargs( );
if( !iPlayer )
{
static iPlayer;
for( iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++ )
{
if( !is_user_connected( iPlayer ) )
continue;
static iChanged[ 5 ], iChangedCount;
iChangedCount = 0;
for( i = 2; i < iArgsCount; i++ )
{
if( getarg( i ) == LANG_PLAYER )
{
setarg( i, 0, iPlayer );
iChanged[ iChangedCount ] = i;
iChangedCount++
}
}
vformat( szBuffer, charsmax( szBuffer ), szMessage, 3 );
format( szBuffer, charsmax( szBuffer ), "%s %s", CHAT_PREFIX, szBuffer );
replace_all( szBuffer, charsmax( szBuffer ), "!g", "^x04" );
replace_all( szBuffer, charsmax( szBuffer ), "!t", "^x03" );
replace_all( szBuffer, charsmax( szBuffer ), "!y", "^x01" );
UTIL_SayText( iPlayer, szBuffer );
for( i = 0; i < iChangedCount; i++ )
setarg( iChanged[ i ], 0, LANG_PLAYER );
}
}
else
{
vformat( szBuffer, charsmax( szBuffer ), szMessage, 3 );
format (szBuffer, charsmax( szBuffer ), "%s %s", CHAT_PREFIX, szBuffer );
replace_all( szBuffer, charsmax( szBuffer ), "!g", "^x04" );
replace_all( szBuffer, charsmax( szBuffer ), "!t", "^x03" );
replace_all( szBuffer, charsmax( szBuffer) , "!y", "^x01" );
UTIL_SayText( iPlayer, szBuffer );
}
return PLUGIN_CONTINUE;
}
stock UTIL_StatusIcon( iPlayer, iStatus, szIcon[], iRed, iGreen, iBlue )
{
message_begin( MSG_ONE, g_iMsgID[ StatusIcon ], _, iPlayer );
write_byte( iStatus );
write_string( szIcon );
write_byte( iRed );
write_byte( iGreen );
write_byte( iBlue );
message_end( );
}
stock UTIL_SayText( iPlayer, szMessage[] )
{
message_begin (MSG_ONE, g_iMsgID[ SayText ], _, iPlayer );
write_byte( iPlayer );
write_string( szMessage );
message_end( );
}
stock bool: SQL_TableExists( Handle: hDataBase, const szTable[ ] )
{
new Handle: hQuery = SQL_PrepareQuery( hDataBase, "SELECT * FROM information_schema.tables WHERE table_name = '%s' LIMIT 1;", szTable );
new szError[ 512 ];
if( !SQL_Execute( hQuery ) )
{
SQL_QueryError( hQuery, szError, charsmax( szError ) );
set_fail_state( szError );
}
else if( !SQL_NumResults( hQuery ) )
{
SQL_FreeHandle( hQuery );
return false;
}
SQL_FreeHandle( hQuery );
return true;
}
stock UTIL_Money( iPlayer, iAmount, iFlash )
{
message_begin( MSG_ONE, g_iMsgID_Money, _, iPlayer );
write_long( iAmount );
write_byte( iFlash );
message_end( );
}
public native_set_money( iPlayer, iValue )
Native_SetUserMoney( iPlayer, iValue );
public native_get_money( iPlayer )
return g_iMoney[ iPlayer ];
Native_SetUserMoney( iPlayer, iAmount, iFlash = 1 )
{
if( pev_valid( iPlayer ) != 2 )
return;
static iMax;
if( get_user_flags( iPlayer ) & FLAG_PREMIUM ) iMax = LIMIT_PREMIUM
else
if( get_user_flags( iPlayer ) & FLAG_BOSS ) iMax = LIMIT_BOSS
else
if( get_user_flags( iPlayer ) & FLAG_GOLD ) iMax = LIMIT_GOLD
else
if( get_user_flags( iPlayer ) & FLAG_ADMIN ) iMax = LIMIT_ADMIN
else
if( get_user_flags( iPlayer ) & FLAG_VIP ) iMax = LIMIT_VIP
else iMax = LIMIT_USER;
if( iAmount > iMax )
{
g_iMoney[ iPlayer ] = iMax;
set_pdata_int( iPlayer, m_iAccount, iMax, 5 );
UTIL_Money( iPlayer, iMax, 0 );
return;
}
g_iMoney[ iPlayer ] = iAmount;
set_pdata_int( iPlayer, m_iAccount, iAmount, 5 );
UTIL_Money( iPlayer, iAmount, iFlash );
}