Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < amxmodx >
- #include < cstrike >
- #include < amxmisc >
- #include < nvault >
- #define PlUGIN_VERSION "1.0"
- #define MAXLEVEL 71
- #if !defined client_disconnected
- #define client_disconnected client_disconnect
- #endif
- #if !defined MAX_PLAYERS
- const MAX_PLAYERS = 32
- #endif
- #define MenuInfo(%1) formatex(szItem, charsmax(szItem), %1, g_iPlayerXP[iPlayer], szPlayerName[iPlayer], g_iPlayerLevel[iPlayer], g_mPlayerData[ g_iPlayerLevel[iPlayer]][m_szRankName]);
- #define MenuTitle(%1) formatex(szTitle,charsmax(szTitle), %1)
- enum _:eCommandSettings {
- iMenuType,
- iCommands[32],
- iFlags
- };
- enum _:mData {
- m_szRankName[32],
- m_iRankXP
- };
- new const g_mPlayerData[ ][ mData ] = {
- { "Noob", 0 },
- { "Pocetnik", 90 },
- { "Strelac", 180 },
- { "Super Strelac", 300 },
- { "Odlican Strelac", 450 },
- { "Ubica", 700 },
- { "Serijski Ubica", 1200 },
- { "Monstrum", 1800 },
- { "Profesionalac", 2800 },
- { "Pesadinac", 4100 },
- { "Mitraljezac", 5200 },
- { "Razvodnik", 6000 },
- { "Desetar", 6800 },
- { "Mladji Vodnik", 8200 },
- { "Vodnik", 10200 },
- { "Vodnik Prve Klase", 12000 },
- { "Stariji Vodnik", 15000 },
- { "Stariji Vodnik Prve Klase", 17500 },
- { "Zastavnik", 20500 },
- { "Zastavnik Prve Klase", 25500 },
- { "Potporucnik", 29000 },
- { "Porucnik", 35000 },
- { "Kapetan", 46000 },
- { "Kapetan Prve Klase", 58000 },
- { "Major", 71000 },
- { "Potpukovnik", 85000 },
- { "Pukovnik", 100000 },
- { "Brigadni General", 116000 },
- { "General Major", 133000 },
- { "General Potpukovnik", 151000 },
- { "General Pukovnik", 170000 },
- { "General", 190000 },
- { "Ministar Odbrane", 211000 },
- { "Komadant", 233000 },
- { "Vrhovni Komadant", 9999999 }
- };
- new const g_iCommandSettings[][eCommandSettings] =
- {
- { 1, "xplist", ADMIN_ALL},
- { 2, "resetdata" , ADMIN_RCON },
- { 3, "manage" , ADMIN_RCON }
- }
- new const szPluginName[] = { "Rank System" };
- new const g_szLevelUp[] = { "items/nvg_on.wav" };
- new g_iPlayerXP[MAX_PLAYERS+1] = 0,
- g_iPlayerLevel[MAX_PLAYERS+1] = 0,
- szPlayerAuthid[MAX_PLAYERS+1][33],
- szPlayerName[MAX_PLAYERS+1][33],
- szPlayerIP[MAX_PLAYERS+1][33],
- g_iPlayerMenu[33]
- new g_Vault,
- g_SaveDataType,
- g_HudRank,
- g_KillXP,
- g_HeadShotXP,
- g_GrenadeXP,
- g_KnifeXP;
- new SyncHudRankSystem;
- new g_fUserLevelUp
- public plugin_init()
- {
- register_plugin( szPluginName, PlUGIN_VERSION, "Supremache" );
- register_cvar("rank_system", PlUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
- set_cvar_string("rank_system", PlUGIN_VERSION)
- register_event( "DeathMsg", "Event_DeathMsg", "a" );
- g_SaveDataType = register_cvar("save_type","1")
- g_HudRank = register_cvar( "hud_rank", "1" );
- g_KillXP = register_cvar( "kill_xp", "15" );
- g_HeadShotXP = register_cvar( "hs_xp", "5" );
- g_GrenadeXP = register_cvar( "he_xp", "5" );
- g_KnifeXP = register_cvar( "knife_xp", "10" );
- register_clcmd("say", "CommandSay")
- register_concmd("amx_givelvl", "GiveLevels", ADMIN_LEVEL_E, " <Igrac> <Kolicina>");
- register_concmd("amx_givexp", "GiveEXP", ADMIN_LEVEL_E, " <Igrac> <Kolicina>");
- g_fUserLevelUp = CreateMultiForward( "user_levelup", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
- SyncHudRankSystem = CreateHudSyncObj();
- }
- public plugin_cfg( )
- {
- g_Vault = nvault_open("RankSystem")
- if ( g_Vault == INVALID_HANDLE )
- set_fail_state( "Error opening Rank System nVault, file does not exist!" )
- }
- public client_putinserver( id )
- {
- if(get_pcvar_num(g_HudRank) == 1)
- set_task(1.0, "eShowHud", id, _, _, "b")
- }
- public client_authorized(id)
- {
- get_user_name( id, szPlayerName[id], charsmax(szPlayerName[]));
- get_user_authid( id, szPlayerAuthid[id], charsmax(szPlayerAuthid[]));
- get_user_ip(id, szPlayerIP[id] , charsmax(szPlayerIP[]), 1)
- if(!is_user_hltv(id) && !is_user_bot(id))
- {
- LoadData(id);
- }
- }
- public client_disconnect(id)
- {
- if(!is_user_hltv(id) && !is_user_bot(id))
- {
- SaveData(id);
- }
- }
- public plugin_precache()
- {
- precache_sound(g_szLevelUp)
- }
- public client_infochanged(id)
- {
- if (!is_user_connected(id))
- return PLUGIN_CONTINUE;
- get_user_info(id, "name", szPlayerName[id], charsmax(szPlayerName[]));
- return PLUGIN_CONTINUE;
- }
- public eShowHud(id)
- {
- set_hudmessage(0, 255, 255, 0.01, 0.18, 0, 12.0, 12.0, 0.01, 0.01, -1)
- if( g_iPlayerLevel[id] > MAXLEVEL - 1)
- {
- ShowSyncHudMsg(id, SyncHudRankSystem,"[ Ime: %s ]^n[ Rank: %s ]^n[ EXP: %i / %i ]^n[ Level: %i / %i ]",
- szPlayerName[id],
- g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ],
- g_iPlayerXP[ id ],
- g_mPlayerData[ MAXLEVEL ][ m_iRankXP ],
- g_iPlayerLevel[id], MAXLEVEL );
- }
- else
- {
- ShowSyncHudMsg(id, SyncHudRankSystem,"[ Ime: %s ]^n[ Rank: %s ]^n[ EXP: %i / %i ]^n[ Level: %i / %i ]",
- szPlayerName[id],
- g_mPlayerData[ g_iPlayerLevel[ id ] ][ m_szRankName ],
- g_iPlayerXP[ id ],
- g_mPlayerData[ g_iPlayerLevel[ id ] + 1 ][ m_iRankXP ],
- g_iPlayerLevel[id], MAXLEVEL );
- }
- }
- public CommandSay(id)
- {
- new szArgs[192]
- read_args(szArgs, charsmax(szArgs))
- remove_quotes(szArgs)
- trim(szArgs)
- new szCmd[35]
- parse(szArgs, szCmd, charsmax(szCmd))
- trim(szCmd)
- if (szCmd[0] != '/')
- return PLUGIN_CONTINUE
- new iMenu = -1
- for(new i = 0; i <= charsmax(g_iCommandSettings); i++)
- {
- if (equali(szCmd[1], g_iCommandSettings[i][iCommands]))
- {
- iMenu = g_iCommandSettings[i][iMenuType]
- if (iMenu == -1)
- return PLUGIN_CONTINUE
- g_iPlayerMenu[id] = iMenu
- PlayerRank(id, g_iCommandSettings[i][iFlags])
- break;
- }
- }
- return PLUGIN_HANDLED
- }
- public PlayerRank(id, iFlag)
- {
- if(!access(id, iFlag))
- {
- Print(id, "!g[%s]!n You dont have access.", szPluginName);
- return PLUGIN_HANDLED
- }
- new iPlayers[MAX_PLAYERS], iPnum, szUserID[32], szTitle[128], iMenu
- switch ( g_iPlayerMenu[id] )
- {
- case 2: MenuTitle("\y%s: \rRestartuj podatke igraca", szPluginName)
- case 3: MenuTitle("\y%s: \rIzmeni podatke igracu", szPluginName)
- default: MenuTitle("\y%s: \rXP Lista", szPluginName)
- }
- iMenu = menu_create(szTitle, "Handler")
- get_players(iPlayers, iPnum, "ch"); SortCustom1D(iPlayers, iPnum, "sort_players_by_xp")
- for(new szItem[1024], iPlayer, i; i < iPnum; i++)
- {
- iPlayer = iPlayers[i]
- MenuInfo("\d[%i XP] \w%s \r[\yLevel %i: %s\r]")
- formatex( szUserID, charsmax(szUserID), "%d", get_user_userid(iPlayer))
- menu_additem(iMenu, szItem, szUserID)
- }
- menu_setprop(iMenu, MPROP_BACKNAME, "Predhodna strana")
- menu_setprop(iMenu, MPROP_NEXTNAME, "Sledeca strana")
- menu_setprop(iMenu, MPROP_EXITNAME, "\rZatvori")
- menu_display(id, iMenu)
- return PLUGIN_HANDLED
- }
- public sort_players_by_xp(id1, id2)
- {
- return g_iPlayerXP[id2] - g_iPlayerXP[id1]
- }
- public Handler(id, iMenu, iItem)
- {
- if(iItem != MENU_EXIT)
- {
- new iAccess, iCallback, iData[6],iName[64];
- menu_item_getinfo(iMenu, iItem, iAccess, iData, charsmax(iData), iName, charsmax(iName), iCallback);
- new iPlayer = str_to_num(iData);
- switch ( g_iPlayerMenu[id] )
- {
- case 2: ResetPlayerRank(id, iPlayer);
- case 3: ManagePlayerRank(id, iPlayer);
- }
- }
- menu_destroy(iMenu)
- return PLUGIN_HANDLED
- }
- public ResetPlayerRank(id, iPlayer)
- {
- if (!iPlayer)
- return PLUGIN_HANDLED;
- g_iPlayerXP[iPlayer] = 0
- g_iPlayerLevel[iPlayer] = 0
- console_print(id, "[ADMIN] %s: je restartovao podatke ranka igracu %s", szPlayerName[id], szPlayerName[iPlayer]);
- Log("[ADMIN] %s <%s> je restartovao podatke ranka igracu %s <%s>", szPlayerName[id], szPlayerAuthid[id], szPlayerName[iPlayer], szPlayerAuthid[iPlayer]);
- Print(0, "!n[ADMIN]!g %s!n: je restartovao podatke ranka igracu!g %s!n", szPlayerName[id], szPlayerName[iPlayer]);
- SaveData(iPlayer);
- return PLUGIN_CONTINUE;
- }
- public ManagePlayerRank(id, iPlayer)
- {
- new szTitle[128], szUserID[32], iMenu;
- MenuTitle("\yRank Sistem: \rIzmeni Podatke Igracu")
- iMenu = menu_create( szTitle, "Rank_Handler" );
- for(new i = 0; i <= charsmax(g_mPlayerData); i++)
- {
- formatex( szUserID, charsmax( szUserID ), "%d", get_user_userid(iPlayer))
- menu_additem( iMenu, g_mPlayerData[ i ][ m_szRankName ], szUserID );
- }
- menu_display( id, iMenu);
- }
- public Rank_Handler(id, iMenu, iItem)
- {
- if(iItem != MENU_EXIT)
- {
- new iAccess, iCallback, iData[6],iName[64];
- menu_item_getinfo(iMenu, iItem, iAccess, iData, charsmax(iData), iName, charsmax(iName), iCallback);
- new iPlayer = str_to_num(iData);
- g_iPlayerXP[ iPlayer ] = g_mPlayerData[ iItem ][ m_iRankXP ];
- g_iPlayerLevel[ iPlayer ] = iItem;
- Log("[ADMIN] %s <%s> je promenio igracu %s <%s> rank u %s", szPlayerName[id], szPlayerAuthid[id], szPlayerName[iPlayer], szPlayerAuthid[iPlayer], g_mPlayerData[ g_iPlayerLevel[iPlayer] ][ m_szRankName ]);
- Print(iPlayer, "!n[ADMIN]!g %s!n: je promenio igracu!g %s!n rank u!g %s!n (!gLv. %d!n)",
- szPlayerName[id],
- szPlayerName[iPlayer],
- g_mPlayerData[ g_iPlayerLevel[iPlayer] ][ m_szRankName ],
- g_iPlayerLevel[iPlayer]);
- }
- menu_destroy(iMenu)
- }
- public GiveEXP(id, nLevel, nCid)
- {
- if(cmd_access(id, nLevel, nCid, 1))
- {
- static cTarget[32], cXP[6], iTarget, iXP
- read_argv( 1, cTarget, charsmax(cTarget));
- read_argv( 2, cXP, charsmax(cXP));
- iXP = str_to_num(cXP);
- iTarget = cmd_target( id, cTarget, CMDTARGET_ALLOW_SELF | CMDTARGET_NO_BOTS );
- if(!cTarget[0] || !cXP[0])
- {
- console_print(id, "Usage: amx_givexp <Ime Igraca> <Kolicina>");
- return PLUGIN_HANDLED
- }
- if(!iTarget)
- {
- console_print(id, "[%s] Ne postoji igrac ili ima vise igraca sa slicnim imenom!", szPluginName);
- return PLUGIN_HANDLED
- }
- if( g_iPlayerLevel[iTarget] >= MAXLEVEL )
- {
- console_print(id, "[%s] Ne mozes dati igracu vise XP jer je dostigao maksimalni level %d.", szPluginName, MAXLEVEL);
- Print(id, "!g[%s]!n Ne mozes dati igracu vise XP jer je dostigao maksimalni level (!g%d!n).", szPluginName, MAXLEVEL);
- return PLUGIN_HANDLED
- }
- g_iPlayerXP[iTarget] += iXP
- CheckLevel(iTarget)
- console_print(id, "[ADMIN] %s je dao igracu %d xp %s", szPlayerName[id], iXP, szPlayerName[iTarget]);
- Log("[ADMIN] %s <%s> je dao igracu %d xp %s <%s>", szPlayerName[id], szPlayerAuthid[id], iXP, szPlayerName[iTarget], szPlayerAuthid[iTarget]);
- Print(0, "!n[ADMIN]!g %s!n: je dao igracu!g %d!n xp!g %s!n", szPlayerName[id], iXP, szPlayerName[iTarget]);
- Print(iTarget, "!g[%s]!n Dostigao si: XP.!g%d!n/!g%d!n. ", szPluginName, g_iPlayerXP[iTarget], g_mPlayerData[g_iPlayerLevel[iTarget]+ 1][ m_iRankXP ] );
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED
- }
- public GiveLevels(id, nLevel, nCid)
- {
- if(cmd_access(id, nLevel, nCid, 1))
- {
- static cTarget[32], cLevel[6], iTarget, iLevel
- read_argv( 1, cTarget, charsmax(cTarget));
- read_argv( 2, cLevel, charsmax(cLevel));
- iLevel = str_to_num(cLevel);
- iTarget = cmd_target( id, cTarget, CMDTARGET_ALLOW_SELF | CMDTARGET_NO_BOTS );
- if(!cTarget[0] || !cLevel[0])
- {
- console_print(id, "Usage: amx_givelvl <Ime Igraca> <Kolicina>");
- return PLUGIN_HANDLED
- }
- if(!iTarget)
- {
- console_print(id, "[%s] Ne postoji igrac ili ima vise igraca sa slicnim imenom!", szPluginName);
- return PLUGIN_HANDLED
- }
- if( g_iPlayerLevel[iTarget] >= MAXLEVEL )
- {
- console_print(id, "[%s] Ne mozes dati igracu level jer je dostigao maksimalni level %d.", szPluginName, MAXLEVEL);
- Print(id, "!g[%s]!n Ne mozes dati igracu level jer je dostigao maksimalni level (!g%d!n).", szPluginName, MAXLEVEL);
- return PLUGIN_HANDLED
- }
- if( g_iPlayerLevel[iTarget] + iLevel > MAXLEVEL )
- {
- new iAvailableLvl = MAXLEVEL - g_iPlayerLevel[iTarget]
- console_print(id, "[%s] Ne mozes dati igracu level veci od maksimalnog %d.", szPluginName, MAXLEVEL);
- Print(id, "!g[%s]!n Ne mozes dati igracu level veci od maksimalnog (!g%d!n).", szPluginName, MAXLEVEL);
- Print(id, "!g[%s]!n Dostupni leveli (!g%d!n).", szPluginName, iAvailableLvl);
- return PLUGIN_HANDLED
- }
- g_iPlayerLevel[iTarget] += iLevel
- CheckLevel(iTarget)
- console_print(id, "[ADMIN] %s je dao %d levela igracu %s", szPlayerName[id], iLevel, szPlayerName[iTarget]);
- Log("[ADMIN] %s <%s> je dao %d levela igracu %s <%s>", szPlayerName[id], szPlayerAuthid[id], iLevel, szPlayerName[iTarget], szPlayerAuthid[iTarget]);
- Print(0, "!n[ADMIN]!g %s!n: je dao!g %d!n levela igracu!g %s!n", szPlayerName[id], iLevel, szPlayerName[iTarget]);
- Print(iTarget, "!g[%s]!n Dostigao si: Rank.!g%s!n, Lv.!g%d!n.", szPluginName, g_mPlayerData[ g_iPlayerLevel[ iTarget ] ][ m_szRankName ], g_iPlayerLevel[iTarget] );
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED
- }
- public Event_DeathMsg( )
- {
- new iKiller = read_data( 1 );
- new iVictim = read_data( 2 );
- if( iKiller == iVictim|| ! is_user_connected( iKiller ) || ! is_user_connected( iVictim ) )
- return;
- new XPAmount = get_pcvar_num( g_KillXP );
- if( read_data( 3 ) )
- XPAmount += get_pcvar_num( g_HeadShotXP );
- static sWeapon[ 26 ];
- read_data( 4, sWeapon, charsmax( sWeapon ) );
- if( equal( sWeapon, "hegrenade" ) )
- XPAmount += get_pcvar_num( g_GrenadeXP );
- else if( equal( sWeapon, "knife" ) )
- XPAmount += get_pcvar_num( g_KnifeXP );
- g_iPlayerXP[ iKiller ] += XPAmount;
- CheckLevel(iKiller);
- }
- public CheckLevel( iPlayer )
- {
- if( g_iPlayerLevel[ iPlayer ] < MAXLEVEL )
- {
- while( g_iPlayerXP[ iPlayer ] >= g_mPlayerData[ g_iPlayerLevel[ iPlayer ] + 1 ][ m_iRankXP ] )
- {
- g_iPlayerLevel[ iPlayer ]++;
- new iReturn
- client_cmd(iPlayer, "spk %s", g_szLevelUp)
- ExecuteForward(g_fUserLevelUp, iReturn, iPlayer, g_iPlayerLevel[iPlayer], g_iPlayerXP[iPlayer])
- Print(0, "!g[%s]!n Igrac!g %s!n je promovisan u!g %s!n (!gLv. %d!n)",
- szPluginName,
- szPlayerName[iPlayer],
- g_mPlayerData[ g_iPlayerLevel[iPlayer] ][ m_szRankName ],
- g_iPlayerLevel[iPlayer] );
- }
- }
- }
- stock SaveData(id)
- {
- new szKey[64], szData[256];
- switch( get_pcvar_num(g_SaveDataType) )
- {
- case 2: formatex(szKey , charsmax(szKey), "%s-NAME" , szPlayerName[id])
- case 3: formatex(szKey , charsmax(szKey), "%s-IP" , szPlayerIP[id])
- default: formatex(szKey , charsmax(szKey), "%s-ID" , szPlayerAuthid[id])
- }
- formatex(szData , charsmax(szData) , "%i#%i#" , g_iPlayerLevel[id], g_iPlayerXP[id])
- nvault_pset(g_Vault , szKey , szData)
- }
- stock LoadData(id)
- {
- new szKey[64], szData[256], szXP[32], szLevel[32];
- switch( get_pcvar_num(g_SaveDataType) )
- {
- case 2: formatex(szKey , charsmax(szKey), "%s-NAME" , szPlayerName[id])
- case 3: formatex(szKey , charsmax(szKey), "%s-IP" , szPlayerIP[id])
- default: formatex(szKey , charsmax(szKey), "%s-ID" , szPlayerAuthid[id])
- }
- formatex(szData , charsmax(szData), "%i#%i#", g_iPlayerLevel[id], g_iPlayerXP[id])
- nvault_get(g_Vault, szKey, szData, charsmax(szData))
- replace_all(szData , charsmax(szData), "#", " ")
- parse(szData, szLevel, charsmax(szLevel), szXP, charsmax(szXP))
- g_iPlayerLevel[id] = str_to_num(szLevel)
- g_iPlayerXP[id] = str_to_num(szXP)
- }
- stock Print( id, String[ ], any:... ) {
- static szMsg[ 192 ];
- vformat( szMsg, charsmax( szMsg ), String, 3 );
- replace_all( szMsg, charsmax( szMsg ), "!n", "^1" );
- replace_all( szMsg, charsmax( szMsg ), "!t", "^3" );
- replace_all( szMsg, charsmax( szMsg ), "!g", "^4" );
- static msgSayText = 0;
- if( !msgSayText ) msgSayText = get_user_msgid( "SayText" );
- new Players[ 32 ], iNum = 1, i;
- if( id ) Players[ 0 ] = id;
- else get_players( Players, iNum, "ch" );
- for( --iNum; iNum >= 0; iNum-- ) {
- i = Players[ iNum ];
- message_begin( MSG_ONE_UNRELIABLE, msgSayText, _, i );
- write_byte( i );
- write_string( szMsg );
- message_end( );
- }
- }
- stock Log(const message_fmt[], any:...) {
- static message[256];
- vformat(message, charsmax(message), message_fmt, 2);
- static filename[96], log_file[64];
- static dir[64];
- if( !dir[0] ) {
- get_basedir(dir, charsmax(dir));
- add(dir, charsmax(dir), "/logs");
- }
- format_time(filename, charsmax(filename), "%m-%d-%Y");
- formatex(log_file, charsmax(log_file), "%s/RankSystem_%s.log", dir, filename); /* Much faster than what format() can do */
- log_to_file(log_file, "%s", message);
- }
- public plugin_natives()
- {
- register_native("get_user_xp", "_get_user_xp")
- register_native("set_user_xp", "_set_user_xp")
- register_native("get_user_max_xp", "_get_user_max_xp")
- register_native("get_max_levels", "_get_max_levels")
- register_native("get_user_level", "_get_user_level")
- register_native("set_user_level", "_set_user_level")
- register_native("get_user_rank", "_get_user_rank")
- register_native("get_user_next_rank", "_get_user_next_rank")
- }
- public _get_user_xp(iPlugin,iParams)
- {
- return g_iPlayerXP[ get_param( 1 ) ]
- }
- public _set_user_xp(iPlugin,iParams)
- {
- g_iPlayerXP[ get_param( 1 ) ] = get_param( 2 );
- SaveData( get_param( 1 ) );
- CheckLevel( get_param( 1 ) );
- }
- public _get_user_level(iPlugin,iParams)
- {
- return g_iPlayerLevel[ get_param( 1 ) ]
- }
- public _set_user_level(iPlugin,iParams)
- {
- g_iPlayerLevel[ get_param( 1 ) ] = get_param( 2 );
- SaveData( get_param( 1 ) );
- CheckLevel( get_param( 1 ) );
- }
- public _get_user_max_xp(iPlugin,iParams)
- {
- new iMaxLevel
- if(g_iPlayerLevel[get_param( 1 )] > MAXLEVEL - 1)
- iMaxLevel = g_mPlayerData[ MAXLEVEL ][ m_iRankXP ]
- else
- iMaxLevel = g_mPlayerData[ g_iPlayerLevel[ get_param( 1 ) ] + 1 ][ m_iRankXP ]
- return iMaxLevel
- }
- public _get_user_rank(iPlugin,iParams)
- {
- set_string(2, g_mPlayerData[ g_iPlayerLevel[ get_param(1) ] ][ m_szRankName ], get_param(3))
- }
- public _get_user_next_rank(iPlugin,iParams)
- {
- set_string(2, g_mPlayerData[ g_iPlayerLevel[ get_param(1) ] +1 ][ m_szRankName ], get_param(3))
- }
- public _get_max_levels(iPlugin, iParams)
- {
- return MAXLEVEL
- }
- public plugin_end()
- {
- nvault_close(g_Vault)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement