Senior Member
|
10-07-2020
, 10:32
Arrays Problem i think
|
#1
|
hey, im declined and i got a buymenu plugin by t3rkecorejz xUnicorn, i tried to edit it with some things but when i try edit the .ini file it doesn t load from file and registers over and over again that s the problem i got. imma give you the not edited code.
PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < sqlx >
#include < fakemeta>
#include < hamsandwich >
#include < zombieplague >
#include < dhudmessage >
// CBaseMonster
#define m_LastHitGroup 75
// CBasePlayer
#define m_iMenu 205
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",
"SVIP",
"UVIP"
};
new const g_szNamePermission[ ][ ] =
{
"",
"\r[VIP]",
"\r[SUPER VIP]",
"\r[ULTRA VIP]"
}
#define SQL_HOST "" // IP/Host бд
#define SQL_USER "" // Логин бд
#define SQL_PASSWORD "" // Пароль бд
#define SQL_DATABASE "" // База данных
#define SQL_TABLENAME "bm_level_system" // Название таблицы
#define CHAT_PREFIX "!y[!gZP BuyMenu!y]" // Префикс в чате при сообщениях от плалина BuyMenu
#define FLAG_VIP ADMIN_LEVEL_A // Флаг VIP игрока
#define FLAG_SUPER_VIP ADMIN_LEVEL_B // Флаг SUPER VIP игрока
#define FLAG_ULTRA_VIP ADMIN_LEVEL_C // Флаг ULTRA VIP игрока
#define FLAG_ADMIN ADMIN_BAN // Флаг администратора
#define TASK_SHOWHUD 4001 // Таск айди худа
#define TASK_LOAD_DATA 4002 // Таск айди загрузки базы
#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 "zp_knives" // Команда для открытия меню ножей
// Настройка валюты
#define BM_SetUserMoney(%0,%1) zp_set_user_ammo_packs(%0,%1)
#define BM_GetUserMoney(%0) zp_get_user_ammo_packs(%0)
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_SVIP,
Discount_UVIP,
Discount_Admin,
Discount_Steam,
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,
SVIP_Player,
UVIP_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_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_bUserLoaded[ 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_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_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_SVIP ] = register_cvar( "bm_discount_svip", "15" );
pCvar[ Discount_UVIP ] = register_cvar( "bm_discount_uvip", "20" );
pCvar[ Discount_Admin ] = register_cvar( "bm_discount_admin", "5" );
pCvar[ Discount_Steam ] = register_cvar( "bm_discount_steam", "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_superuser", "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_ULTRA_VIP )
g_iUserDiscount[ iPlayer ] = get_pcvar_num( pCvar[ Discount_UVIP ] );
else if( get_user_flags( iPlayer ) & FLAG_SUPER_VIP )
g_iUserDiscount[ iPlayer ] = get_pcvar_num( pCvar[ Discount_SVIP ] );
else if( get_user_flags( iPlayer ) & FLAG_VIP )
g_iUserDiscount[ iPlayer ] = get_pcvar_num( pCvar[ Discount_VIP ] );
if( get_user_flags( iPlayer ) & FLAG_ADMIN )
g_iUserDiscount[ iPlayer ] = g_iUserDiscount[ iPlayer ] + get_pcvar_num( pCvar[ Discount_Admin ] );
if( is_user_steam( iPlayer ) )
g_iUserDiscount[ iPlayer ] = g_iUserDiscount[ iPlayer ] + get_pcvar_num( pCvar[ Discount_Steam ] );
}
else g_iUserDiscount[ iPlayer ] = 0;
if( get_pcvar_num( pCvar[ LevelSystem_Enable ] ) )
set_task( 1.0, "CTask__ShowUserHud", iPlayer + TASK_SHOWHUD, _, _, .flags = "b" );
set_task( random_float( 1.0, 3.0 ), "CTask__LoadData", iPlayer + TASK_LOAD_DATA );
}
public client_disconnect( iPlayer )
{
if( !g_bUserLoaded{ iPlayer } || is_user_bot( iPlayer ) )
return;
formatex( g_szQuery, charsmax( g_szQuery ), "UPDATE `%s` SET `Level` = '%d', `Exp` = '%d' WHERE `%s`.`SteamID` = '%s';", g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], SQL_TABLENAME, g_szUserSteamID[ iPlayer ] );
SQL_ThreadQuery( g_hDBTuple, "SQL_ThreadQueryHandler", g_szQuery );
g_bSuperUser{ iPlayer } = false;
g_iUserDiscount[ iPlayer ] = 0;
}
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 );
}
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)", 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 ];
g_bUserLoaded{ iPlayer } = true;
if( SQL_NumResults( hQuery ) < 1 )
{
if( equal( g_szUserSteamID[ iPlayer ], "ID_PENDING" ) )
return PLUGIN_HANDLED;
g_iUserData[ iPlayer ] = { 1, 0 }
formatex( g_szQuery, charsmax( g_szQuery ), "INSERT INTO `%s` ( `SteamID`, `Level`, `Exp` ) VALUES ( '%s', '%d', '%d' );", SQL_TABLENAME, g_szUserSteamID[ iPlayer ], g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ] );
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 );
}
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 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 ] ) );
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;
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_IMMUNITY )
return PLUGIN_HANDLED;
g_bSuperUser{ iPlayer } = !g_bSuperUser{ iPlayer };
UTIL_ColorChat( iPlayer, "Super User: [%s]", g_bSuperUser{ iPlayer } ? "ON" : "OFF" );
return PLUGIN_HANDLED;
}
public EV_RoundStart( )
{
for( new iPlayer = 1; iPlayer <= g_iMaxPlayers; iPlayer++ )
{
if( !is_user_connected( iPlayer ) )
continue;
if( g_bUserLoaded{ iPlayer } )
{
formatex( g_szQuery, charsmax( g_szQuery ), "UPDATE `%s` SET `Level` = '%d', `Exp` = '%d', WHERE `%s`.`SteamID` = '%s';", SQL_TABLENAME, g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], 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 );
}
}
}
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( g_iUserData[ iAttacker ][ Level ] >= get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
return HAM_IGNORED;
if( zp_get_user_nemesis( iVictim ) )
{
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Nemesis ] ) );
return HAM_IGNORED;
}
if( zp_get_user_survivor( iVictim ) )
{
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Survivor ] ) );
return HAM_IGNORED;
}
if( zp_get_user_zombie( iAttacker ) && !zp_get_user_zombie( iVictim ) )
{
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Human ] ) );
return HAM_IGNORED;
}
if( zp_get_user_zombie( iVictim ) && !zp_get_user_zombie( iAttacker ) )
{
if( get_pdata_int( iVictim, m_LastHitGroup, 5 ) == HIT_HEAD )
{
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_Kill_Head ] ) );
return HAM_IGNORED;
}
Native_GiveUserExp( iAttacker, get_pcvar_num( pCvar[ LevelSystem_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( g_iUserData[ iAttacker ][ Level ] >= get_pcvar_num( pCvar[ LevelSystem_MaxLevel ] ) )
return HAM_IGNORED;
if( zp_get_user_zombie( iVictim ) && !zp_get_user_zombie( iAttacker ) )
{
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 \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 );
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;
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..UVIP_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_SUPER_VIP || ~get_user_flags( iPlayer ) & FLAG_ULTRA_VIP ) ||
( 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_SUPER_VIP || ~get_user_flags( iPlayer ) & FLAG_ULTRA_VIP ) )
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 SVIP_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_SUPER_VIP )
return ITEM_DISABLED;
}
case UVIP_Player:
{
if( ~get_user_flags( iPlayer ) & FLAG_ULTRA_VIP )
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_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 ), "[ Level: %i | Exp: %i/%i ]", iPlayer, "BM_LS_HUD_TYPE1", g_iUserData[ iPlayer ][ Level ], g_iUserData[ iPlayer ][ Exp ], Native_GetUserExpForNextLevel( iPlayer ) );
case 2: formatex( szText, charsmax( szText ), "[ Level: %i | %i%% ]", 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 );
}
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 );
}
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: is_user_steam( iPlayer )
{
static pDproto;
if( pDproto || ( pDproto = get_cvar_pointer( "dp_r_id_provider" ) ) )
{
server_cmd( "dp_clientinfo %i", iPlayer );
server_exec( );
return ( get_pcvar_num( pDproto ) == 2 ) ? true : false;
}
return false;
}
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;
}
in this code i edited the sql on nvault and used a money system that is replacing ammo
|
|