Плагин для Zombie Escape XP |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Плагин для Zombie Escape XP |
tiger30 |
31.1.2017, 3:24
Сообщение
|
Привет всем, помогите пожалуйста подправить плагин.
Нужно сделать чтобы вип (С флагом "t") получал отдельно свой XP. Чтобы был cvar для випа, чтобы ему отдельно можно было прописывать сколько за дамаг он получит XP. Например сейчас есть только это: damage_hp = register_cvar("required_damage_hp", "51") // 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? А нужно исправить на: damage_hp = register_cvar("required_damage_hp", "51") // 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? damagevip_xp = register_cvar("damagevip_xp_amount", "10") //How much XP given to VIP who make damage more than damage_hp? Заранее спасибо.
Прикрепленные файлы:
|
|
|
|
tiger30 |
31.1.2017, 11:42
Сообщение
|
Еще если возможно нужно добавить:
2) Если вип убивает, то также отдельно он получает ХР. Пример: Сейчас: xp_kill = register_cvar("levels_xp","10"); // How much xp gain if you killed someone? А нужно сделать: xp_kill = register_cvar("levels_xp","10"); // How much xp gain if you killed someone? xp_killvip = register_cvar("levels_xp","50"); // How much xp gain if vip killed someone? 3) Нужно сделать чтоб ХР, обнулялись с переподключением или раз в сутки. Тоесть, сейчас они сохраняются или в MySQL или NVault. Нужно это убрать. Вот исходник: Код #include <amxmodx> #include <cstrike> #include <hamsandwich> #include <levels> #include <nvault> #include <sqlx> #include <nvault_util> #define TASK_SHOW_LEVEL 10113 #define MAXLEVEL 3 new const LEVELS[MAXLEVEL] = { 10000000000000000, // Needed on level 1 99999999999999999, // Needed on level 2 999999999999999999999999 // Needed on level 3 }; // Needed Xp on each 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 Handle:g_hTuple; new bool:Prize[33] new g_MsgScreenFade new time_xp new g_Vault new g_kills[33] new g_maxplayers, g_msgHudSync1 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 mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass public plugin_init() { register_plugin("[ZE] Levels XP", "1.5", "Raheem"); save_type = register_cvar("levels_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault. savexp = register_cvar("levels_save","1"); // Save Xp by : 2 = Name, 1 = SteamID, 0 = IP. xp_kill = register_cvar("levels_xp","10"); // 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", "20") // How much XP given to Humans when escape success? damage_hp = register_cvar("required_damage_hp", "51") // 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? time_xp = register_cvar("time_xp_amount", "20") // How much XP given to player when he play 9 minute? register_concmd ( "give_xp", "CmdAddXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" ) register_concmd ( "remove_xp", "CmdRemoveXP", ADMIN_RCON, "<nick, #userid, authid | @all> <xp>" ) register_clcmd("say top10", "showtop10") register_clcmd("say /get", "random_prizes") register_clcmd("say_team /get", "random_prizes") // 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("StatusValue", "Event_StatusValue", "bd", "1=2") register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0") // Forwards // RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1); MySQLx_Init() g_msgHudSync1 = CreateHudSyncObj() g_maxplayers = get_maxplayers(); g_MsgScreenFade = get_user_msgid( "ScreenFade" ) } 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!" ); } 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("check_level_xp", "native_check_level", 1) register_native("get_user_max_level", "native_get_user_max_level", 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) if(is_user_connected(id)) { set_task(540.0, "prizes", id, _, _, "b") } } public prizes(id) { set_user_xp(id, get_user_xp(id) + get_pcvar_num(time_xp)) client_print_color(id, "!y[!gLevel!y-!gSystem!y] !t +%i XP For playing 9 Minutes in our server!y.", get_pcvar_num(time_xp)) check_level_xp(id) } public client_disconnect(id) { SaveLevel(id) PlayerXp[id] = 0; PlayerLevel[id] = 0; remove_task( TASK_SHOW_LEVEL + id ); remove_task(id) } public fwd_PlayerSpawn(id) { if(!is_user_alive(id)) return; g_kills[id] = 0 remove_task( TASK_SHOW_LEVEL + id ); set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id) } 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(0, 40, 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(255, 30, 0, 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(0, 255, 50, 0.50, 0.33, 1, 2.0, 8.0) show_hudmessage(g_attacker, "+%i XP", get_pcvar_num(xp_kill)) } check_level_xp(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[!gLevel!y-!gSystem!y] !t+%i XP!y.", get_pcvar_num(escape_xp)) } check_level_xp(iPlayers[i]) } } } public on_damage(id) { static attacker,damage; attacker = get_user_attacker(id) damage = read_data(2) if (id == 0) return 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(256), random(256), random(256), -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_xp(attacker) } } public Event_StatusValue(id) { new target = read_data(2) if(target != id && target != 0) { static sName[32]; get_user_name(target, sName, 31) set_hudmessage(0, 255, 255, -1.0, 0.3, 0, 0.0, 6.0, 0.0, 0.0, 2) ShowSyncHudMsg(id, g_msgHudSync1, "[Name: %s ǁ Level: %d]", sName, PlayerLevel[target]) } } public task_show_level(task) { new id = task - TASK_SHOW_LEVEL if(!is_user_alive(id)) return; set_hudmessage(0, 255, 255, 0.02, 0.05, 0, 0.0, 0.3, 0.0, 0.0) ShowSyncHudMsg(id, g_msgHudSync1 , "[XP : %i]", PlayerXp[id], LEVELS[PlayerLevel[id]]) set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id) } public showtop10(id) { new pos,key[64],data[64],timestamp new vault = nvault_util_open("levels") new count = nvault_util_count(vault) new Array:stats,Trie:names stats = ArrayCreate(20) names = TrieCreate() new temp[20],knum[5] for (new i=1;i<=count;i++ ) { pos = nvault_util_read(vault,pos,key,64,data,64,timestamp) formatex(temp,19,"%d %d",i,str_to_num(data)) ArrayPushString(stats,temp) replace_all(key,64,"Level","") formatex(knum,4,"%d",i) TrieSetString(names,knum,key) } nvault_util_close(vault) ArraySort(stats,"sorter") new motd[1501],iLen; iLen = format(motd, sizeof motd - 1,"<body bgcolor=#000000><h3><font color=#48D532><pre>"); iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %s %3s^n", "#", "Name", "SteamID", "Level") for(new x = 0; x < 10; x++) { new rank,name[32],srank[5] new pt = getter(stats,x,rank) formatex(srank,4,"%d",rank) TrieGetString(names,srank,name,31) /*new len = strlen(name) if(len) { name[len-5] = 0 }*/ iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"%d. %-22.22s %d^n", x + 1, name, pt); } iLen += format(motd[iLen], (sizeof motd - 1) - iLen,"</body></h3></font></pre>") ArrayDestroy(stats) TrieDestroy(names) show_motd(id,motd, "Top 10"); } public sorter(Array:array,item1,item2) { new res1=getter(array,item1) new res2=getter(array,item2) if(res1<res2) return 1 else if(res1>res2) return -1 return 0 } getter(Array:array,item,&rank=0) { new outa[32],temp[2][10],val ArrayGetString(array,item,outa,31) parse(outa,temp[0],9,temp[1],9) rank = str_to_num(temp[0]) val = str_to_num(temp[1]) return val } public random_prizes(id) { new xp = get_user_xp(id) if(Prize[id]) { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tYou have used your Chance!y. !tTry again next 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[!gLevel!y-!gSystem!y] !tBad Luck!y. !tYou win Nothing!y. !tTry Next Map!y.") } case 11 .. 20: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+5 !tXP!y.") set_user_xp(id, xp + 5) } case 21 .. 30: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+10 !tXP!y.") set_user_xp(id, xp + 10) } case 31 .. 40: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+15 !tXP!y.") set_user_xp(id, xp + 15) } case 41 .. 50: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+20 !tXP!y.") set_user_xp(id, xp + 20) } case 51 .. 60: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+25 !tXP!y.") set_user_xp(id, xp + 25) } case 61 .. 70: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+30 !tXP!y.") set_user_xp(id, xp + 30) } case 71 .. 80: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+35 !tXP!y.") set_user_xp(id, xp + 35) } case 81 .. 90: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+40 !tXP!y.") set_user_xp(id, xp + 40) } case 91 .. 100: { client_print_color(id, "!y[!gLevel!y-!gSystem!y] !tGood Luck!y. !tYou win !g+60 !tXP!y.") client_print_color(0, "!y[!gLevel!y-!gSystem!y] !g%s !twon +60 XP!t. !tTry your Luck now just !gsay /get!y.", szName) set_user_xp(id, xp + 60) } } Prize[id] = true check_level_xp(id) } } public CmdAddXP(iPlayer, level, cid) { if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED; new arg [32] read_argv (1, arg, 31) new AddXP [32] read_argv (2, AddXP, charsmax (AddXP)) new XPtoGive = str_to_num (AddXP) new AdminName [32] new TargetName [32] get_user_name (iPlayer, AdminName, charsmax (AdminName)) if(arg[0]=='@') { if(equali(arg[1],"All") || equali(arg[1],"ALL")) { new players[32], totalplayers, All get_players(players, totalplayers) for (new i = 0; i < totalplayers; i++) { All = players[i] PlayerXp[All] += XPtoGive } check_level_xp(All) client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto All Players!y!", AdminName, XPtoGive ) } else if(equali(arg[1],"T") || equali(arg[1],"t")) { new players[32], totalplayers, T get_players(players, totalplayers) for (new i = 0; i < totalplayers; i++) { if (get_user_team(players[i]) == 1) { T = players[i] PlayerXp[T] += XPtoGive } } check_level_xp(T) client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto all Terrorists!y!", AdminName, XPtoGive) } else if(equali(arg[1],"CT") || equali(arg[1],"ct")) { new players[32], totalplayers, CT get_players(players, totalplayers) for(new i = 0; i < totalplayers; i++) { if(get_user_team(players[ i ] ) == 2) { CT = players[i] PlayerXp[CT] += XPtoGive } } check_level_xp(CT) client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto all Counter-Terrorists!y!", AdminName, XPtoGive) } } else { new iTarget = cmd_target(iPlayer, arg, 3) get_user_name (iTarget, TargetName, charsmax (TargetName)) if(iTarget) { PlayerXp[iTarget] += XPtoGive check_level_xp(iTarget) client_print_color(0, "!tADMIN !g%s !tgive !g%i XP !tto !g%s!y!", AdminName, XPtoGive, TargetName) } } return PLUGIN_HANDLED } public CmdRemoveXP (iPlayer, level, cid) { if(!cmd_access(iPlayer, level, cid, 3)) return PLUGIN_HANDLED; new arg [32] read_argv (1, arg, 31) new RemoveXP [32] read_argv (2, RemoveXP, charsmax (RemoveXP)) new XPtoRemove = str_to_num (RemoveXP) new AdminName [32] new TargetName [32] get_user_name (iPlayer, AdminName, charsmax (AdminName)) if(arg[0]=='@') { if(equali(arg[1],"All") || equali(arg[1],"ALL")) { new players[32], totalplayers, All get_players(players, totalplayers) for (new i = 0; i < totalplayers; i++) { All = players[i] PlayerXp[All] -= XPtoRemove } check_level_xp(All) client_print_color(0, "!tADMIN !g%s !ttoke !g%i XP of !tall players!y!", AdminName, XPtoRemove) } else if(equali(arg[1],"T") || equali(arg[1],"t")) { new players[32], totalplayers, T get_players(players, totalplayers) for (new i = 0; i < totalplayers; i++) { if (get_user_team(players[i]) == 1) { T = players[i] PlayerXp[T] -= XPtoRemove } } check_level_xp(T) client_print_color( 0, "!tADMIN !g%s !ttoke !g%i XP !tof all Terrorists!y!", AdminName, XPtoRemove) } else if(equali(arg[1],"CT") || equali(arg[1],"ct")) { new players[32], totalplayers, CT get_players(players, totalplayers) for(new i = 0; i < totalplayers; i++) { if(get_user_team(players[ i ] ) == 2) { CT = players[i] PlayerXp[CT] -= XPtoRemove } } check_level_xp(CT) client_print_color(0, "!tADMIN !g%s !ttoke !g%i XP !tof all Counter-Terrorists!y!", AdminName, XPtoRemove) } } else { new iTarget = cmd_target(iPlayer, arg, 3) get_user_name (iTarget, TargetName, charsmax (TargetName)) if(!iTarget) return PLUGIN_HANDLED PlayerXp[iTarget] -= XPtoRemove check_level_xp(iTarget) client_print_color(0, "!tADMIN !g%s !ttoke !g%i XP !tTo !g%s!y!", AdminName, XPtoRemove, TargetName) } return PLUGIN_HANDLED } 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 szTOP[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) ); get_user_name( id, szTOP , charsmax(szTOP) ); formatex( szKey , 63 , "%s %s" , szTOP, 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 szTOP[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) ); get_user_name( id, szTOP , charsmax(szTOP) ); formatex( szKey , 63 , "%s %s" , szTOP, 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; } } //======================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_xp 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: Update User Level public native_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") message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, {0,0,0}, id) write_short(15000) // Duration write_short(0) // Hold time write_short(0) // Fade type write_byte (random(256)) // Red write_byte (random(256)) // Green write_byte (random(256)) // Blue write_byte (150) // Alpha message_end() client_print_color(0, "!y[!gLevel!y-!gSystem!y] !t%s !yReaches Level !t%i!y.", name, PlayerLevel[id]); } } } //==================================================// //======================STOCKS======================// stock GetPlayersNum(CsTeams:iTeam) { new iNum; for( new i = 1; i <= get_maxplayers(); i++ ) { if(is_user_connected(i) && is_user_alive(i) && cs_get_user_team(i) == iTeam) iNum++; } return iNum; } stock client_print_color(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "!g", "^x04"); // Green Color replace_all(msg, 190, "!y", "^x01"); // Default Color replace_all(msg, 190, "!t", "^x03"); // Team Color if (id) players[0] = id; else get_players(players, count, "ch"); { for (new i = 0; i < count; i++) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } } } //==================================================// |
|
|
|