Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <cstrike>
- #include <fun>
- #include <hamsandwich>
- #include <levels>
- #include <nvault_util>
- #include <nvault>
- #include <sqlx>
- #include <zombie_escape>
- #define MAXLEVEL 30
- #define MAXPLAYERS 32
- #define TOPLEVEL 15
- native ze_set_user_points(index, amount)
- native ze_get_user_points(index)
- native get_antidote(id)
- native get_recoil(id)
- native get_unlimited(id)
- new const LEVELS[MAXLEVEL] = {
- 50, // Needed on level 1
- 150, // Needed on level 2
- 300, // Needed on level 3
- 470, // Needed on level 4
- 700, // Needed on level 5
- 1200, // Needed on level 6
- 1800, // Needed on level 7
- 2800, // Needed on level 8
- 4100, // Needed on level 9
- 5200, // Needed on level 10
- 6000, // Needed on level 11
- 6800, // Needed on level 12
- 8200, // Needed on level 13
- 10500, // Needed on level 14
- 12000, // Needed on level 15
- 15000, // Needed on level 16
- 17500, // Needed on level 17
- 20500, // Needed on level 18
- 25500, // Needed on level 19
- 29000, // Needed on level 20
- 35000, // Needed on level 21
- 46000, // Needed on level 22
- 60000, // Needed on level 23
- 75000, // Needed on level 24
- 100000, // Needed on level 25
- 200000, // Needed on level 26
- 300000, // Needed on level 27
- 400000, // Needed on level 28
- 500000, // Needed on level 29
- 600000, // Needed on level 30
- }; // Needed Xp on each Levels
- new SUPERNOOB
- new const NAMES[MAXLEVEL] =
- {
- SUPERNOOB, // Needed on level 1
- NOOB, // Needed on level 2
- SILVER I, // Needed on level 3
- SILVER II, // Needed on level 4
- SILVER II, // Needed on level 5
- SILVER IV, // Needed on level 6
- SILVER ELITE, // Needed on level 7
- SILVER MASTER, // Needed on level 8
- GOLD NOVA I, // Needed on level 9
- GOLD NOVA II, // Needed on level 10
- GOLD NOVA III, // Needed on level 11
- GOLD NOVA MASTER, // Needed on level 12
- GOLD NOVA ELITE, // Needed on level 13
- MASTER GUARDIN I, // Needed on level 14
- MASTER GUARDIN II, // Needed on level 15
- MASTER GUARDIN III, // Needed on level 16
- ASSASSIN, // Needed on level 17
- SNIPER, // Needed on level 18
- SURVIVOR, // Needed on level 19
- GUARDIN ELITE, // Needed on level 20
- LEGENDARY EAGLE, // Needed on level 21
- LEGENDARY MASTER, // Needed on level 22
- THE GLOBAL ELITE, // Needed on level 23
- ELITE PLAYER, // Needed on level 24
- UNSTOPPABLE, // Needed on level 25
- LEGENDOFWARIOR, // Needed on level 26
- PROFFISIONAL, // Needed on level 27
- THE GLOBAL MASTER, // Needed on level 28
- THE BOSS, // Needed on level 29
- ULTIMATE MONSTER // Needed on Level 30
- }
- new g_MaxPlayers
- new const VAULTNAME[] = "levels"
- new const szTables[][] =
- {
- "CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
- }
- new PlayerXp[33]
- new PlayerLevel[33]
- new PlayerName[33]
- new g_szMotd[1536]
- new Handle:g_hTuple;
- new g_Vault
- new g_kills[33]
- new g_maxplayers
- new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, escape_xp, damage_hp, damage_xp
- new SMALL, AVERAGE, LARGE
- new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass
- new bool:Prize[33]
- new g_msgSayText
- public plugin_init()
- {
- register_plugin("[ZE] Levels XP", "1.0", "Raheem");
- SMALL = register_cvar("small", "10")
- AVERAGE = register_cvar("average", "25")
- LARGE = register_cvar("large", "50")
- new time[3]
- get_time("%H", time, 2)
- if((12 > str_to_num(time) >= 00))
- {
- xp_kill = register_cvar("levels_xp","2*2"); // How much xp gain if you killed someone?
- enable_triple = register_cvar("levels_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
- xp_triple = register_cvar("levels_triple_xp","3*2"); // How much bonus xp give for Triple Kill?
- triple_kills = register_cvar("levels_triple_kills","3"); // How much kills needed to give bonus xp?
- enable_ultra = register_cvar("levels_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
- xp_ultra = register_cvar("levels_ultra_xp","5*2"); // How much bonus xp give for Ultra Kill?
- ultra_kills = register_cvar("levels_ultra_kills","6"); // How much kills needed to give bonus xp?
- escape_xp = register_cvar("escape_xp_amount", "5*2") // How much XP given to Humans when escape success?
- damage_hp = register_cvar("required_damage_hp", "80") // The damage if the player made more than it he will awarded.
- damage_xp = register_cvar("damage_xp_amount", "2*2") //How much XP given to human who make damage more than damage_hp?
- }
- else
- {
- xp_kill = register_cvar("levels_xp","2"); // How much xp gain if you killed someone?
- enable_triple = register_cvar("levels_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
- xp_triple = register_cvar("levels_triple_xp","3"); // How much bonus xp give for Triple Kill?
- triple_kills = register_cvar("levels_triple_kills","3"); // How much kills needed to give bonus xp?
- enable_ultra = register_cvar("levels_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
- xp_ultra = register_cvar("levels_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
- ultra_kills = register_cvar("levels_ultra_kills","6"); // How much kills needed to give bonus xp?
- escape_xp = register_cvar("escape_xp_amount", "5") // How much XP given to Humans when escape success?
- damage_hp = register_cvar("required_damage_hp", "80") // The damage if the player made more than it he will awarded.
- damage_xp = register_cvar("damage_xp_amount", "2") //How much XP given to human who make damage more than damage_hp?
- }
- save_type = register_cvar("levels_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault.
- savexp = register_cvar("levels_save","2"); // Save Xp by : 2 = Name, 1 = SteamID, 0 = IP.
- register_clcmd("say /free", "random_prizes")
- register_clcmd("say /top", "show_global_top")
- // SQLx cvars
- mysqlx_host = register_cvar ("levels_host", ""); // The host from the db
- mysqlx_user = register_cvar ("levels_user", ""); // The username from the db login
- mysqlx_pass = register_cvar ("levels_pass", ""); // The password from the db login
- mysqlx_db = register_cvar ("levels_dbname", ""); // The database name
- // Events
- register_event("DeathMsg", "event_deathmsg", "a");
- register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
- // Forwards //
- RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);
- MySQLx_Init()
- g_maxplayers = get_maxplayers();
- register_clcmd("say", "custom_say")
- register_clcmd("say_team", "custom_say_team")
- g_msgSayText = get_user_msgid("SayText")
- register_message(g_msgSayText, "message_SayText")
- }
- public plugin_cfg()
- {
- //Open our vault and have g_Vault store the handle.
- g_Vault = nvault_open( "levels" );
- //Make the plugin error if vault did not successfully open
- if ( g_Vault == INVALID_HANDLE )
- set_fail_state( "Error opening levels nVault, file does not exist!" );
- FormatTop(TOPLEVEL)
- }
- public plugin_precache()
- {
- precache_sound( "levelup_ZE/ze_levelup.wav" );
- }
- public plugin_natives()
- {
- register_native("get_user_xp", "native_get_user_xp", 1);
- register_native("set_user_xp", "native_set_user_xp", 1);
- register_native("get_user_level", "native_get_user_level", 1);
- register_native("set_user_level", "native_set_user_level", 1);
- register_native("get_user_max_level", "native_get_user_max_level", 1);
- register_native("get_user_name", "native_get_user_name", 1);
- }
- public plugin_end()
- {
- //Close the vault when the plugin ends (map change\server shutdown\restart)
- nvault_close( g_Vault );
- }
- public client_connect(id)
- {
- LoadLevel(id)
- set_task(300.0, "small_present", id)
- set_task(600.0, "average_present", id)
- set_task(1200.0, "large_present", id)
- }
- public client_disconnect(id)
- {
- SaveLevel(id)
- PlayerXp[id] = 0;
- PlayerLevel[id] = 0;
- if(task_exists(id))
- remove_task(id)
- }
- public small_present(id)
- {
- set_user_xp(id, get_user_xp(id) + get_pcvar_num(SMALL))
- check_level(id)
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tYou got !g%d !tXP!y, !tfor playing on the server for !g5 !tminutes!y.", get_pcvar_num(SMALL))
- }
- public average_present(id)
- {
- set_user_xp(id, get_user_xp(id) + get_pcvar_num(AVERAGE))
- check_level(id)
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tYou got !g%d !tXP!y, !tfor playing on the server for !g10 !tminutes!y.", get_pcvar_num(AVERAGE))
- }
- public large_present(id)
- {
- set_user_xp(id, get_user_xp(id) + get_pcvar_num(LARGE))
- check_level(id)
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tYou got !g%d !tXP!y, !tfor playing on the server for !g20 !gminutes!y.", get_pcvar_num(LARGE))
- }
- public fwd_PlayerSpawn(id)
- {
- if(!is_user_alive(id))
- return;
- g_kills[id] = 0
- }
- public event_deathmsg()
- {
- new g_attacker = read_data(1);
- new g_victim = read_data(2);
- new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
- new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
- if((1 <= g_attacker <= g_maxplayers))
- {
- if(g_victim != g_attacker)
- {
- g_kills[g_attacker]++;
- if(PlayerLevel[g_attacker] < MAXLEVEL-1)
- {
- if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
- {
- PlayerXp[g_attacker] += counted_triple
- set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), 0.50, 0.33, 1, 2.0, 8.0)
- show_hudmessage(g_attacker, "+%i Triple Kill XP!", counted_triple)
- }
- else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
- {
- PlayerXp[g_attacker] += counted_ultra
- set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), 0.50, 0.33, 1, 2.0, 8.0)
- show_hudmessage(g_attacker, "+%i Ultra Kill XP!", counted_ultra)
- }
- else
- {
- PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
- set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), 0.50, 0.33, 1, 2.0, 8.0)
- show_hudmessage(g_attacker, "+%i XP", get_pcvar_num(xp_kill))
- }
- check_level(g_attacker)
- }
- }
- }
- }
- public ze_roundend()
- {
- new Alive_Terrorists_Number = GetPlayersNum(CsTeams:CS_TEAM_T)
- new Alive_CT_Numbers = GetPlayersNum(CsTeams:CS_TEAM_CT)
- new iPlayers[32], iNum
- get_players(iPlayers, iNum, "ace", "CT")
- for (new i = 0; i < iNum; i++)
- {
- if(PlayerLevel[iPlayers[i]] < MAXLEVEL-1)
- {
- if((Alive_CT_Numbers > Alive_Terrorists_Number) && (Alive_Terrorists_Number == 0))
- {
- set_user_xp(iPlayers[i], get_user_xp(iPlayers[i]) + get_pcvar_num(escape_xp))
- client_print_color(iPlayers[i], "!y[!gEscape!y-!gPark!y] !y+!t%i !gXP!y.", get_pcvar_num(escape_xp))
- }
- check_level(iPlayers[i])
- }
- }
- }
- public on_damage(id)
- {
- static attacker,damage;
- attacker = get_user_attacker(id)
- damage = read_data(2)
- if(PlayerLevel[attacker] < MAXLEVEL+1)
- {
- if ((damage >= get_pcvar_num(damage_hp)) && is_user_connected(attacker) && (cs_get_user_team(attacker) == CS_TEAM_CT) && (attacker != id))
- {
- set_user_xp(attacker, get_user_xp(attacker) + get_pcvar_num(damage_xp))
- set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.7, 1, 3.0, 8.0, 0.5, 0.5)
- show_hudmessage(attacker, "+%i XP", get_pcvar_num(damage_xp))
- }
- check_level(attacker)
- }
- }
- public check_level(id)
- {
- if(PlayerLevel[id] < MAXLEVEL-1)
- {
- while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
- {
- PlayerLevel[id]++;
- static name[32] ; get_user_name(id, name, charsmax(name));
- client_cmd(id,"spk levelup_ZE/ze_levelup.wav")
- client_print_color(0, "!y[!gEscape!y-!gPark!y] !tCongratulation!y..!g%s!y, !tReached Level !g%i !tWith Rank !g%s!y.", name, PlayerLevel[id], PlayerName[id]);
- }
- }
- }
- public random_prizes(id)
- {
- new xp = get_user_xp(id)
- if(Prize[id])
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tYou Have Used Your Chance!y. !tTry Again !gNext Map!y.")
- }
- else
- {
- new iRand = random_num(0, 100)
- new szName[32]
- get_user_name(id, szName, charsmax(szName))
- switch(iRand)
- {
- case 0 .. 10:
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tBad Luck!y. !tYou Didn't Win !g:P!y. !tTry !gNext Map!y.")
- }
- case 11 .. 20:
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tWorst Luck !g:P!y! !tYou Lost !n-!g25 !tXP!y.")
- set_user_xp(id, xp - 25)
- }
- case 21 .. 30:
- {
- if ((cs_get_user_team(id) == CS_TEAM_CT) && is_user_alive(id))
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tGood Luck!y! !tYou Won !gGrenades Pack !tXP!y.")
- give_item(id, "weapon_hegrenade")
- give_item(id, "weapon_smokegrenade")
- give_item(id, "weapon_flashbang")
- }
- }
- case 31 .. 40:
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tGood Luck!y! !tYou Won !n+!g25 !tXP!y.")
- set_user_xp(id, xp + 25)
- }
- case 41 .. 50:
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tWell Luck!y! !tYou Won !n+!g500 !tHP!y.")
- set_user_health(id, get_user_health(id) + 500)
- }
- case 51 .. 60:
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tGreat Luck!y! !tYou Won !gSpeed!y.")
- set_user_maxspeed(id, get_user_maxspeed(id) + 20.0)
- }
- case 61 .. 70:
- {
- if ((cs_get_user_team(id) == CS_TEAM_T) && is_user_alive(id))
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tLucky!y! !tYou Won !!gAntidote!y.")
- get_antidote(id)
- }
- }
- case 71 .. 80:
- {
- if ((cs_get_user_team(id) == CS_TEAM_CT) && is_user_alive(id))
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tNice Luck!y! !tYou Won !!gUnlimited Clip!y.")
- get_unlimited(id)
- }
- }
- case 81 .. 90:
- {
- if ((cs_get_user_team(id) == CS_TEAM_CT) && is_user_alive(id))
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tUnstoppablE Luck!y! !tYou Won !gNo Recoil!y.")
- get_recoil(id)
- }
- }
- case 91 .. 100:
- {
- client_print_color(id, "!y[!gEscape!y-!gPark!y] !tWTF An Awesome Luck!y! !tYou Won !y+!g50 !tPoints!y.")
- ze_set_user_points(id, ze_get_user_points(id) + 50)
- }
- }
- Prize[id] = true
- check_level(id)
- }
- }
- public MySQLx_Init()
- {
- if (!get_pcvar_num(save_type))
- return;
- new szHost[64], szUser[32], szPass[32], szDB[128];
- get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
- get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
- get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
- get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
- g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
- for ( new i = 0; i < sizeof szTables; i++ )
- {
- SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
- }
- }
- public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
- {
- if( iFailState == TQUERY_CONNECT_FAILED
- || iFailState == TQUERY_QUERY_FAILED )
- {
- log_amx( "%s", szError );
- return;
- }
- }
- SaveLevel(id)
- {
- new szAuth[33];
- new szKey[64];
- if ( get_pcvar_num(savexp) == 0 )
- {
- get_user_ip( id, szAuth , charsmax(szAuth), 1);
- formatex( szKey , 63 , "%s-IP" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 1 )
- {
- get_user_authid( id , szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-ID" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 2 )
- {
- get_user_name( id, szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-NAME" , szAuth);
- }
- if ( !get_pcvar_num(save_type) )
- {
- new szData[256];
- formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
- nvault_set( g_Vault , szKey , szData );
- }
- else
- {
- static szQuery[ 128 ];
- formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] );
- SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
- }
- }
- LoadLevel(id)
- {
- new szAuth[33];
- new szKey[40];
- if ( get_pcvar_num(savexp) == 0 )
- {
- get_user_ip( id, szAuth , charsmax(szAuth), 1);
- formatex( szKey , 63 , "%s-IP" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 1 )
- {
- get_user_authid( id , szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-ID" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 2 )
- {
- get_user_name( id, szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-NAME" , szAuth);
- }
- if ( !get_pcvar_num(save_type) )
- {
- new szData[256];
- formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id])
- nvault_get(g_Vault, szKey, szData, 255)
- replace_all(szData , 255, "#", " ")
- new xp[32], level[32]
- parse(szData, level, 31, xp, 31)
- PlayerLevel[id] = str_to_num(level)
- PlayerXp[id] = str_to_num(xp)
- }
- else
- {
- static szQuery[ 128 ], iData[ 1 ];
- formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth );
- iData[ 0 ] = id;
- SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
- }
- }
- public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
- {
- if( iFailState == TQUERY_CONNECT_FAILED
- || iFailState == TQUERY_QUERY_FAILED )
- {
- log_amx( "%s", szError );
- return;
- }
- else
- {
- new id = iData[ 0 ];
- new ColLevel = SQL_FieldNameToNum(hQuery, "player_level")
- new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
- while (SQL_MoreResults(hQuery))
- {
- PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
- PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
- SQL_NextRow(hQuery)
- }
- }
- }
- public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
- {
- if( iFailState == TQUERY_CONNECT_FAILED
- || iFailState == TQUERY_QUERY_FAILED )
- {
- log_amx( "%s", szError );
- return;
- }
- }
- public show_global_top(id)
- {
- show_motd(id, g_szMotd, "GLOBAL PLAYERS")
- }
- FormatTop(iNum)
- {
- enum _:sVaultData
- {
- VD_Key[64],
- VD_Value
- }
- new sVault = nvault_util_open(VAULTNAME)
- new Array:entries = ArrayCreate(sVaultData)
- new sizeEntries;
- new numEntries = nvault_util_count(sVault)
- new data[sVaultData], value[128], data2[sVaultData]
- for(new i = 0, pos, timestamp; i < numEntries; i++)
- {
- pos = nvault_util_read(sVault, pos, data[VD_Key], charsmax(data[VD_Key]), value, charsmax(value), timestamp);
- data[VD_Value] = str_to_num(value)
- if(sizeEntries == 0)
- {
- ArrayPushArray(entries, data)
- sizeEntries++
- }
- else
- {
- for(timestamp = 0; timestamp <= sizeEntries; timestamp++)
- {
- if(timestamp == sizeEntries)
- {
- if(sizeEntries < iNum)
- {
- ArrayPushArray(entries, data)
- sizeEntries++
- }
- break
- }
- ArrayGetArray(entries, timestamp, data2)
- if(data[VD_Value] >= data2[VD_Value])
- {
- ArrayInsertArrayBefore(entries, timestamp, data)
- if(sizeEntries < iNum)
- {
- sizeEntries++
- }
- else
- {
- ArrayDeleteItem(entries, sizeEntries);
- }
- break
- }
- }
- }
- }
- nvault_util_close(sVault)
- new iLen
- new len = charsmax(g_szMotd)
- iLen = formatex(g_szMotd, len, "<STYLE>body{background:#212121;color:#d1d1d1;font-family:Arial}table{width:100%%;font-size:19px}</STYLE><table cellpadding=1 cellspacing=1 border=0>")
- iLen += formatex(g_szMotd[iLen], len - iLen, "<tr bgcolor=#333333><th width=1%%><align=left font color=white> %s <th width=5%%> %-22.22s <th width=5%%> %s", "#", "NAME", "LEVEL")
- new i
- for(i = 0; i < sizeEntries; i++)
- {
- ArrayGetArray(entries, i, data);
- data[VD_Key][20] = 0;
- replace_all(data[VD_Key], charsmax(data[VD_Key]), "<", "<")
- replace_all(data[VD_Key], charsmax(data[VD_Key]), ">", ">")
- iLen += formatex(g_szMotd[iLen], len - iLen, "<tr align=left%s><td align=left><font color=white> %d. <td> %-22.22s <td> %d", " bgcolor=#2b5b95",(i+1), data[VD_Key], data[VD_Value])
- }
- ArrayDestroy(entries);
- iLen += formatex(g_szMotd[iLen], len - iLen, "</table></body>")
- }
- public custom_say(id)
- {
- new szMessage[192], szName[32]
- read_args(szMessage, charsmax(szMessage))
- remove_quotes(szMessage)
- get_user_name(id, szName, charsmax(szName))
- if(equali(szMessage[0], " ") || equali(szMessage[0], "") || !is_valid_msg(szMessage))
- return PLUGIN_HANDLED_MAIN
- if(is_user_alive(id))
- {
- format(szMessage, charsmax(szMessage), "^4[%s] ^3%s : ^1%s", PlayerName[id], szName, szMessage)
- }
- else
- {
- format(szMessage, charsmax(szMessage), "^1*DEAD* ^4[%s] ^3%s : ^1%s", PlayerName[id], szName, szMessage)
- }
- new iPlayers[MAXPLAYERS], iPlayerCount, i, player
- get_players(iPlayers, iPlayerCount, "ch")
- for(i = 0; i < iPlayerCount; i++)
- {
- player = iPlayers[i]
- if(is_user_alive(id) && is_user_alive(player) || !is_user_alive(id) && !is_user_alive(player))
- {
- message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player)
- write_byte(id)
- write_string(szMessage)
- message_end()
- }
- }
- return PLUGIN_CONTINUE
- }
- public custom_say_team(id)
- {
- new szMessage[192], szName[32]
- read_args(szMessage, charsmax(szMessage))
- remove_quotes(szMessage)
- get_user_name(id, szName, charsmax(szName))
- if(equali(szMessage[0], " ") || equali(szMessage[0], "") || !is_valid_msg(szMessage))
- return PLUGIN_HANDLED_MAIN
- if(is_user_alive(id))
- {
- format(szMessage, charsmax(szMessage), "^4[%s] ^3%s : ^1%s", PlayerName[id], szName, szMessage)
- }
- else
- {
- format(szMessage, charsmax(szMessage), "^1*DEAD* ^4[$s] ^3%s : ^1%s", PlayerName[id], szName, szMessage)
- }
- new iPlayers[MAXPLAYERS], iPlayerCount, i, player
- get_players(iPlayers, iPlayerCount, "ch")
- for(i = 0; i < iPlayerCount; i++)
- {
- player = iPlayers[i]
- if(is_user_alive(id) && is_user_alive(player) && get_user_team(id) == get_user_team(player) || !is_user_alive(id) && !is_user_alive(player) && get_user_team(id) == get_user_team(player))
- {
- message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player)
- write_byte(id)
- write_string(szMessage)
- message_end()
- }
- }
- return PLUGIN_CONTINUE
- }
- public message_SayText(id)
- {
- return PLUGIN_HANDLED
- }
- bool:is_valid_msg(const szMessage[])
- {
- if(szMessage[0] == '@' || szMessage[0] == '/' || szMessage[0] == '!' || !strlen(szMessage))
- return false
- return true
- }
- //======================Natives======================//
- // Native: get user xp
- public native_get_user_xp(id)
- {
- return PlayerXp[id];
- }
- // Native: set user xp
- public native_set_user_xp(id, amount)
- {
- PlayerXp[id] = amount;
- }
- // Native: get_user_level
- public native_get_user_level(id)
- {
- return PlayerLevel[id];
- }
- // Native: set user level
- public native_set_user_level(id, amount)
- {
- PlayerLevel[id] = amount;
- }
- // Native: Gets user level by XP
- public native_get_user_max_level(id)
- {
- return LEVELS[PlayerLevel[id]];
- }
- // Native: Gets user level name
- public native_get_user_name(id)
- {
- return NAMES[PlayerName[id]];
- }
- stock client_print_color(index, const text[], any:...)
- {
- new szMsg[128];
- vformat(szMsg, sizeof(szMsg) - 1, text, 3);
- replace_all(szMsg, sizeof(szMsg) - 1, "!g", "^x04");
- replace_all(szMsg, sizeof(szMsg) - 1, "!n", "^x01");
- replace_all(szMsg, sizeof(szMsg) - 1, "!t", "^x03");
- if(index == 0)
- {
- for(new i = 0; i < g_MaxPlayers; i++)
- {
- if(is_user_alive(i) && is_user_connected(i))
- {
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, i);
- write_byte(i);
- write_string(szMsg);
- message_end();
- }
- }
- } else {
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, index);
- write_byte(index);
- write_string(szMsg);
- message_end();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement