Member
|
07-25-2016
, 05:33
Re: [REQ] Rank Tag Plugin
|
#5
|
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <nvault>
#include <cstrike>
#include <fakemeta>
/* () Leve Mod ConfiG () */
/* Who have flag "t" have vip ! */
#define VIP_ACCES ADMIN_LEVEL_H
/* Who have acces to amx_xp ! */
#define ADMIN_ACCES ADMIN_MENU
/* Who have acces to amx_showxp ! */
#define ADMIN_ACCES_INFO ADMIN_ALL
/* () ---------------------- () */
// Plugin Info !
new const PLUGIN_NAME[] = "Level Mod";
new const AUTHOR[] = "swapped";
new const hnsxp_version[] = "6.6.5";
new levels[256] = {
1,
2,
4,
6,
8,
10,
15,
20,
25,
30,
40,
50,
60,
80,
100,
125,
150,
175,
190,
200,
240,
260,
280,
300,
350,
400,
460,
540,
600,
700,
800,
1000,
1200,
1500,
1800,
2500,
3000,
4800,
5900,
6500,
6800,
7400,
8000,
8500,
9000,
10000,
11000,
12500,
13500,
15000,
16000,
17000,
18000,
19000,
20000,
21500,
22000,
23080,
24000,
30000,
32000,
33000,
35000,
34000,
36000,
39000,
40000,
46000,
48000,
49000,
50000,
55000,
60000,
63000,
65000,
68000,
80000,
83000,
84000,
86000,
90000,
100000,
120000,
140000,
160000,
180000,
200000,
250000,
260000,
270000,
280000,
290000,
300000,
340000,
350000,
360000,
400000,
450000,
460000,
480000,
500000,
540000,
560000,
580000,
600000,
620000,
630000,
650000,
680000,
700000,
750000,
770000,
800000,
850000,
860000,
870000,
880000,
890000,
900000,
910000,
920000,
930000,
940000,
950000,
960000,
970000,
990000,
995000,
999000,
1000000,
1150000,
1200000,
1250000,
1300000,
1350000,
1400000,
1450000,
1500000,
1550000,
1600000,
1650000,
1700000,
1750000,
1800000,
1850000,
1900000,
1950000,
2000000,
2100000,
2200000,
2300000,
2400000,
2500000,
2600000,
2700000,
2800000,
2900000,
3000000,
3200000,
3300000,
3400000,
3500000,
3600000,
3700000,
3800000,
3900000,
4000000,
4100000,
4200000,
4300000,
4400000,
4500000,
4600000,
4700000,
4800000,
4900000,
5000000,
5100000,
5200000,
5300000,
5400000,
5500000,
5600000,
5700000,
5800000,
5900000,
6000000,
6100000,
6200000,
6400000,
6600000,
6800000,
7000000,
7200000,
7400000,
7500000,
7600000,
7800000,
8000000,
10000000,
11000000,
12000000,
13000000,
14000000,
15000000,
16000000,
17000000,
18000000,
19000000,
20000000,
21000000,
22000000,
23000000,
24000000,
25000000,
26000000,
27000000,
28000000,
29000000,
30000000,
31000000,
32000000,
33000000,
34000000,
35000000,
36000000,
37000000,
38000000,
39000000,
40000000,
42000000,
43000000,
45000000,
46000000,
48000000,
50000000,
52000000,
53000000,
54000000,
55000000,
56021421,
56999999,
58000000,
60000000,
65000000,
66000000,
70000000,
80000000,
90000000,
100000000,
110000000,
120000000,
130000000,
140000000,
150000000,
1959999999
};
#define is_user_vip(%1) ( get_user_flags(%1) & VIP_ACCES )
#define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )
new g_iMaxPlayers;
new hnsxp_playerxp[33];
new hnsxp_playerlevel[33];
new g_hnsxp_vault;
new wxp;
new xlevel;
new xp_kill_cvar;
new xp_hs_cvar;
new xp_vip_cvar;
new xp_win_cvar;
new time_item_cvar;
new g_iDamage_xp;
new speed_per_level;
new money_per_level;
new health_per_level;
new gravity_per_level;
new levelmod_prefix;
new g_power;
new Array:Power_Name;
new Array:Power_Level;
new Array:Power_Desc;
new g_selected_power;
new g_damage_per_level;
new g_armor_per_level;
new bool:use_class_one[33];
new g_save_type;
new g_xplevel;
new g_iXpPerHitEnable;
enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
YELLOW = 1, // NORMAL alias
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
public plugin_init()
{
register_plugin(PLUGIN_NAME, hnsxp_version, AUTHOR);
register_event("DeathMsg", "hnsxp_playerdie", "a");
register_event("Damage", "give_bonus_dmh", "b", "2!0", "3=0", "4!0");
register_event("CurWeapon", "Ham_CheckSpeed_Bonus", "be", "1=1");
register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
xp_kill_cvar = register_cvar("levelmod_kill","3")
xp_hs_cvar = register_cvar("levelmod_hs","6")
xp_vip_cvar = register_cvar("levelmod_vip_xp","100")
xp_win_cvar = register_cvar("levelmod_tero_win","1")
time_item_cvar = register_cvar("levelmod_time_item","15.0");
g_iDamage_xp = register_cvar("levelmod_damage_xp","1");
speed_per_level = register_cvar("levelmod_speed_per_level","3");
health_per_level = register_cvar("levelmod_health_per_level","10");
money_per_level = register_cvar("levelmod_money_per_level","1");
gravity_per_level = register_cvar("levelmod_gravity_per_level","2");
levelmod_prefix = register_cvar("levelmod_tag","LEVEL MOD");
g_damage_per_level = register_cvar("levelmod_damage_per_level","2");
g_armor_per_level = register_cvar("levelmod_armor_per_level", "2");
g_save_type = register_cvar( "levelmod_save_type","1");
g_xplevel = register_cvar( "levelmod_xp_per_level", "12")
g_iXpPerHitEnable = register_cvar("levelmod_enable_xp_per_hit","1");
register_clcmd("say /level","plvl");
register_clcmd("say /xp","plvl");
register_clcmd("say /lvl","plvl");
register_clcmd("say /levels","plvl");
register_clcmd("say /powers", "_open_the_classmenu");
register_clcmd("say /powers", "_open_the_classmenu");
register_clcmd("say /powers", "_open_the_classmenu");
register_clcmd("say_team /levels","plvl");
register_clcmd("say_team /level","plvl");
register_clcmd("say_team /xp","plvl");
register_clcmd("say_team /lvl","plvl");
register_clcmd("say_team /powers", "_open_the_classmenu");
register_clcmd("say_team /powers", "_open_the_classmenu");
register_clcmd("say_team /powers", "_open_the_classmenu");
g_hnsxp_vault = nvault_open("levelmod_xp_vault");
register_concmd("amx_xp","cmd_xp",ADMIN_ACCES,"<NUME> <XP>");
register_concmd("amx_showxp","cmd_xp_info",ADMIN_ACCES_INFO,"Retrive player xp,level information.");
xlevel = CreateMultiForward("levelmod_client_updatelevel", ET_IGNORE, FP_CELL);
wxp = CreateMultiForward("levelmod_client_hook_xp", ET_IGNORE, FP_CELL);
g_selected_power = CreateMultiForward("levelmod_selected_power", ET_IGNORE, FP_CELL, FP_CELL)
register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
g_iMaxPlayers = get_maxplayers ( )
RegisterHam( Ham_TakeDamage, "player", "Player_TakeDamage" );
RegisterHam( Ham_Spawn, "player", "hnsxp_spawn", 1 );
}
public give_bonus_dmh(id)
{
static value; value = read_data( 2 );
static attacker; attacker = get_user_attacker(id)
new szName[33]; get_user_name(id, szName, 32);
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
if(!is_user_alive(attacker) || !attacker || !id || id == attacker || !get_pcvar_num( g_iXpPerHitEnable) )
return PLUGIN_HANDLED;
GiveExp( attacker, get_pcvar_num( g_iDamage_xp ) );
ColorChat(attacker, TEAM_COLOR, "^1[ ^3%s^1 ] You received ^4XP^1 because you give ^4%i^1 damage on ^4%s^1 !",TAG,value,szName);
UpdateLevel(attacker);
return PLUGIN_CONTINUE;
}
public _open_the_classmenu( id )
{
_open_classmenu( id )
return PLUGIN_HANDLED
}
public _open_classmenu( id )
{
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
if(!is_user_alive(id))
{
ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] Only alive users can use this command.",TAG)
return PLUGIN_HANDLED
}
if(g_power == 0)
{
ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] Power menu are empty.",TAG)
return PLUGIN_HANDLED
}
if( !use_class_one[id] )
{
ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] You already use a power, wait for next map.",TAG)
return PLUGIN_HANDLED
}
static temp_menu[64]
static menu, temp_string1[33], temp_integer1, temp_string2[33], temp_string3[5]
menu = menu_create("Powers System:", "class_handle")
for(new i = 0; i < g_power; i++)
{
ArrayGetString(Power_Name, i, temp_string1, sizeof(temp_string1))
temp_integer1 = ArrayGetCell(Power_Level, i)
ArrayGetString(Power_Desc, i, temp_string2, sizeof(temp_string2))
formatex(temp_menu, sizeof(temp_menu), "%s - [ Level %i ] ", temp_string1, temp_integer1)
num_to_str(i, temp_string3, sizeof(temp_string3))
menu_additem(menu, temp_menu, temp_string3)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
return PLUGIN_CONTINUE
}
public class_handle(id, menu, item)
{
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
static data[6], szName[64], access, callback
static temp_integer1
menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback)
temp_integer1 = str_to_num(data)
static cost, wp_name[64], wp_desc[64]
cost = ArrayGetCell(Power_Level, temp_integer1)
ArrayGetString(Power_Name, temp_integer1, wp_name, sizeof(wp_name))
ArrayGetString(Power_Desc, temp_integer1, wp_desc, sizeof(wp_desc))
if(hnsxp_playerlevel[id] >= cost)
{
ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] You choose ^4%s^1 power.",TAG, wp_name)
ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] %s",TAG,wp_desc)
use_class_one[id] = false;
static g_dummy
ExecuteForward(g_selected_power, g_dummy, id, temp_integer1)
} else {
ColorChat(id, TEAM_COLOR, "^1[ ^3%s^1 ] You need at least level ^4%i^1 to choose ^4%s^1 power. !",TAG, cost, wp_name )
_open_classmenu( id )
}
return PLUGIN_CONTINUE
}
public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage )
{
if ( iInflictor == iAttacker && IsPlayer ( iAttacker ) && hnsxp_playerlevel[iAttacker])
{
SetHamParamFloat ( 4, fDamage + ( get_pcvar_num( g_damage_per_level ) * hnsxp_playerlevel[ iAttacker ] ) );
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public ClientUserInfoChanged( id, szBuffer )
{
if ( !is_user_connected( id ) || get_pcvar_num(g_save_type) != 1 )
return FMRES_IGNORED;
static szNewName[ 32 ];
new g_szName[ 32 ];
get_user_name(id, g_szName, 31 );
engfunc( EngFunc_InfoKeyValue, szBuffer, "name", szNewName, sizeof ( szNewName ) -1 );
if ( equal( szNewName, g_szName ) )
return FMRES_IGNORED;
hnsxp_playerlevel[ id ] = 0;
hnsxp_playerxp[ id ] = 0;
set_task( 0.10 , "LoadData", id );
set_task( 0.50, "TryFuckUp", id );
return FMRES_IGNORED;
}
public TryFuckUp( id )
UpdateLevel( id );
public cmd_xp(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED;
new arg[33], amount[33]
read_argv(1, arg, charsmax(arg) - 1)
read_argv(2, amount, charsmax(amount) - 1)
new target = cmd_target(id, arg, 7)
new admin_name[35], player_name[35];
get_user_name(target, player_name, charsmax(player_name) - 1);
get_user_name(id, admin_name, charsmax(admin_name) - 1);
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
new wors = str_to_num(amount)
if(!target)
{
return 1
}
if( wors > 150000000 )
{
hnsxp_playerxp[target] = 150000000;
UpdateLevel(target);
return 1;
}
new ret;
ExecuteForward(wxp, ret, target);
hnsxp_playerxp[target] = wors;
ColorChat(0, TEAM_COLOR, "^1[ ^3%s^1 ] Admin ^4%s^1 set ^4%i^1 xp on ^4%s^1 !",TAG,admin_name,wors,player_name);
UpdateLevel(target);
return 0
}
public cmd_xp_info(id,level,cid)
{
if(!cmd_access(id,level,cid,2))
return PLUGIN_HANDLED;
new arg[33]
read_argv(1, arg, 32)
new target = cmd_target(id, arg, 7)
new player_name[35];
get_user_name(target, player_name, charsmax(player_name) - 1);
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
if(!target)
{
return 1;
}
ColorChat(0, TEAM_COLOR, "^1[ ^3%s^1 ] Player ^3%s^1 have level ^4%i^1 [ ^4%i^1 / ^4%i^1 ]",TAG,player_name,hnsxp_playerlevel[target], hnsxp_playerxp[target],levels[hnsxp_playerlevel[target]]);
return 0;
}
/* Speed Check */
public Ham_CheckSpeed_Bonus( id )
{
if(is_user_alive(id))
{
set_user_maxspeed( id, 250.0 + ( get_pcvar_num( speed_per_level ) * hnsxp_playerlevel[ id ] ) );
}
}
GiveExp(index, value)
{
if(value >= 150000000)
{
hnsxp_playerxp[index] = 150000000 ;
return 1;
}
if(hnsxp_playerxp[index] >= 150000000)
{
hnsxp_playerxp[index] = 150000000;
return 1;
}
new ret;
ExecuteForward(wxp, ret, index);
client_cmd(0, "spk buttons/bell1");
new xpx = hnsxp_playerlevel[ index ] * get_pcvar_num( g_xplevel );
hnsxp_playerxp[index] = hnsxp_playerxp[index] + ( value + xpx );
return 0;
}
public plugin_precache()
{
Power_Name = ArrayCreate(64, 1)
Power_Level = ArrayCreate(1, 1)
Power_Desc = ArrayCreate(64, 1)
}
public plugin_natives()
{
register_native("levelmod_get_user_xp","_get_user_xp");
register_native("levelmod_get_user_level","_get_user_level");
register_native("levelmod_get_user_next_level", "_next_level");
register_native("levelmod_get_user_xp_needed", "_xp_needed");
register_native("levelmod_set_user_xp","_set_user_xp");
register_native("levelmod_set_user_level","_set_user_level");
register_native("levelmod_updatelevel","_update");
register_native("levelmod_register_power", "native_register_power", 1)
register_native("levelmod_save", "_savedata");
register_native("levelmod_load","_loaddata");
}
public _savedata(pluin)
{
new id = get_param( 1 );
SaveData(id);
}
public _loaddata(pl)
{
new id = get_param( 1 );
LoadData(id);
}
public _update(pluin, params)
{
new ids = get_param( 1 );
if( is_user_connected( ids ) )
{
UpdateLevel( ids );
}
}
public _get_user_xp(plugin, params)
{
return hnsxp_playerxp[get_param(1)];
}
public _get_user_level(plugin, params)
{
return hnsxp_playerlevel[get_param(1)];
}
public _next_level(plugin, params)
{
return hnsxp_playerlevel[get_param(1)] + 1;
}
public _xp_needed(pluin, params)
{
return levels[hnsxp_playerlevel[get_param(1)]];
}
public _set_user_xp(plugin, xer)
{
new id = get_param(1)
new value = get_param(2)
if(is_user_connected(id))
{
hnsxp_playerxp[id] = value;
return 0
}
else
{
log_error(AMX_ERR_NATIVE,"User %d is not connected !",id)
return 0
}
return 1
}
public _set_user_level(plugin, eat)
{
new id = get_param(1)
new valuex = get_param(2)
if(is_user_connected(id))
{
hnsxp_playerlevel[id] = valuex;
return 0
}
else
{
log_error(AMX_ERR_NATIVE,"User %d is not connected !",id)
return 0
}
return 1
}
public native_register_power(const power_name[], const power_level, const power_desc[])
{
param_convert(1)
param_convert(3)
ArrayPushString(Power_Name, power_name)
ArrayPushCell(Power_Level, power_level)
ArrayPushString(Power_Desc, power_desc)
g_power++
return g_power - 1
}
public gItem(id)
{
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
if(is_user_alive(id))
{
switch(hnsxp_playerlevel[id])
{
case 0:
{
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
give_item(id, "weapon_hegrenade");
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 0DGL ^1, ^4 0SG ^1, ^4 0FL ^1, ^4 1HE ^1!",TAG);
remove_task(id);
}
case 1..4:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 1);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 0DGL ^1, ^4 1SG ^1, ^4 0FL ^1, ^4 1HE ^1!",TAG);
remove_task(id);
}
case 5..9:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
cs_set_user_bpammo(id, CSW_FLASHBANG, 1);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 1);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 1);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 1DGL ^1, ^4 1SG ^1, ^4 1FL ^1, ^4 1HE ^1!",TAG);
remove_task(id);
}
case 10..19:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
cs_set_user_bpammo(id, CSW_FLASHBANG, 1);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 1);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 1DGL ^1, ^4 2SG ^1, ^4 1FL ^1, ^4 1HE ^1!",TAG);
remove_task(id);
}
case 20..29:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,2);
cs_set_user_bpammo(id, CSW_FLASHBANG, 1);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 2);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 2DGL ^1, ^4 2SG ^1, ^4 1FL ^1, ^4 2HE ^1!",TAG);
remove_task(id);
}
case 30..39:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,2);
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 2);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 2DGL ^1, ^4 2SG ^1, ^4 2FL ^1, ^4 2HE ^1!",TAG);
remove_task(id);
}
case 40..49:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,2);
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 3);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 3DGL ^1, ^4 2SG ^1, ^4 2FL ^1, ^4 2HE ^1!",TAG);
remove_task(id);
}
case 50..59:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,3);
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 3);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 3);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 3DGL ^1, ^4 3SG ^1, ^4 2FL ^1, ^4 3HE ^1!",TAG);
remove_task(id);
}
case 60..69:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,3);
cs_set_user_bpammo(id, CSW_FLASHBANG, 3);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 3);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 4);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 4DGL ^1, ^4 3SG ^1, ^4 3FL ^1, ^4 3HE ^1!",TAG);
remove_task(id);
}
case 70..79:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,3);
cs_set_user_bpammo(id, CSW_FLASHBANG, 3);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 4);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 4DGL ^1, ^4 5SG ^1, ^4 3FL ^1, ^4 3HE ^1!",TAG);
remove_task(id);
}
case 80..89:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,5);
cs_set_user_bpammo(id, CSW_FLASHBANG, 3);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 5);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 5DGL ^1, ^4 5SG ^1, ^4 3FL ^1, ^4 5HE ^1!",TAG);
remove_task(id);
}
case 90..99:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,5);
cs_set_user_bpammo(id, CSW_FLASHBANG, 5);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 6);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 6DGL ^1, ^4 5SG ^1, ^4 5FL ^1, ^4 5HE ^1!",TAG);
remove_task(id);
}
case 100..129:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,7);
cs_set_user_bpammo(id, CSW_FLASHBANG, 7);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 7);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 6);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 6DGL ^1, ^4 7SG ^1, ^4 7FL ^1, ^4 7HE ^1!",TAG);
remove_task(id);
}
case 130..149:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,8);
cs_set_user_bpammo(id, CSW_FLASHBANG, 7);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 8);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 6);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 6DGL ^1, ^4 8SG ^1, ^4 7FL ^1, ^4 8HE ^1!",TAG);
remove_task(id);
}
case 150..199:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,8);
cs_set_user_bpammo(id, CSW_FLASHBANG, 8);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 10);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 6);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 6DGL ^1, ^4 10SG ^1, ^4 8FL ^1, ^4 8HE ^1!",TAG);
remove_task(id);
}
case 200..229:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,10);
cs_set_user_bpammo(id, CSW_FLASHBANG, 10);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 10);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 7);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 7DGL ^1, ^4 10SG ^1, ^4 10FL ^1, ^4 10HE ^1!",TAG);
remove_task(id);
}
case 230..254:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,12);
cs_set_user_bpammo(id, CSW_FLASHBANG, 12);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 12);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 7);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 7DGL ^1, ^4 12SG ^1, ^4 12FL ^1, ^4 12HE ^1!",TAG);
remove_task(id);
}
case 255:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE,15);
cs_set_user_bpammo(id, CSW_FLASHBANG, 15);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 15);
new hp = get_pcvar_num( health_per_level ) * hnsxp_playerlevel[ id ];
new money = get_pcvar_num( money_per_level ) * hnsxp_playerlevel[ id ];
new armor = get_pcvar_num( g_armor_per_level ) * hnsxp_playerlevel[ id ];
set_user_health( id, get_user_health( id ) + hp );
set_user_armor( id, get_user_armor( id ) + armor );
cs_set_user_money( id, cs_get_user_money( id ) + money )
new dgl = give_item(id, "weapon_deagle")
if( dgl )
{
cs_set_weapon_ammo(dgl, 7);
cs_set_user_bpammo( id, CSW_DEAGLE, 0);
}
ColorChat(id, TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 7DGL ^1, ^4 15SG ^1, ^4 15FL ^1, ^4 15HE ^1!",TAG);
remove_task(id);
}
}
}
}
UpdateLevel(id)
{
new ret;
ExecuteForward(xlevel, ret, id);
if((hnsxp_playerlevel[id] < 256) && (hnsxp_playerxp[id] >= levels[hnsxp_playerlevel[id]]))
{
while(hnsxp_playerxp[id] >= levels[hnsxp_playerlevel[id]])
{
hnsxp_playerlevel[id]++;
}
}
}
public hnsxp_spawn(id)
{
set_task(get_pcvar_float(time_item_cvar), "gItem", id);
new GRAVITYCheck = 800 - ( get_pcvar_num( gravity_per_level ) * hnsxp_playerlevel[ id ] );
if(is_user_alive(id))
{
set_user_gravity( id, float( GRAVITYCheck ) / 800.0 );
UpdateLevel(id);
}
}
public plvl(id)
{
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
if( hnsxp_playerlevel[id] != 255)
{
ColorChat( id,
TEAM_COLOR,
"^1[ ^3%s^1 ] (^4LVL^1: ^3%i^1) (^4XP^1: ^3%i^1 / ^3%i^1)", TAG, hnsxp_playerlevel[ id ], hnsxp_playerxp[ id ], levels[ hnsxp_playerlevel[ id ] ]
);
return 1;
}
else
{
ColorChat( id,
TEAM_COLOR,
"^1[ ^3%s^1 ] (^4LVL^1:^3 255^1) (^4XP^1:^3 0^1 /^3 0^1)", TAG
);
return 1;
}
return 1;
}
public hnsxp_playerdie()
{
new iVictim = read_data( 2 )
new attacker = read_data( 1 )
new headshot = read_data( 3 )
if( !attacker || attacker == iVictim )
return;
UpdateLevel(attacker);
UpdateLevel(iVictim);
if(headshot)
{
GiveExp(attacker, get_pcvar_num(xp_hs_cvar));
}else{
GiveExp(attacker, get_pcvar_num(xp_kill_cvar));
}
if(is_user_vip(attacker))
{
GiveExp(attacker, get_pcvar_num(xp_vip_cvar));
}
}
public client_putinserver(id)
{
UpdateLevel(id);
use_class_one[id] = true;
}
public client_connect(id)
{
LoadData(id);
}
public client_disconnect(id)
{
SaveData(id);
}
public SaveData(id)
{
new PlayerName[35];
switch( get_pcvar_num( g_save_type ) )
{
case 1:
get_user_name( id,PlayerName, charsmax( PlayerName ) - 1 );
case 2:
get_user_ip( id, PlayerName, charsmax( PlayerName ) - 1 );
case 3:
get_user_authid( id, PlayerName, charsmax( PlayerName ) - 1 );
}
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",PlayerName);
format(vaultdata,255,"%i`i%",hnsxp_playerxp[id],hnsxp_playerlevel[id]);
nvault_set(g_hnsxp_vault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new PlayerName[35];
switch( get_pcvar_num( g_save_type ) )
{
case 1:
get_user_name( id,PlayerName, charsmax( PlayerName ) - 1 );
case 2:
get_user_ip( id, PlayerName, charsmax( PlayerName ) - 1 );
case 3:
get_user_authid( id, PlayerName, charsmax( PlayerName ) - 1 );
}
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",PlayerName);
format(vaultdata,255,"%i`%i",hnsxp_playerxp[id],hnsxp_playerlevel[id]);
nvault_get(g_hnsxp_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "`", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
hnsxp_playerxp[id] = str_to_num(playerxp);
hnsxp_playerlevel[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
public t_win(id)
{
new TAG[60];
get_pcvar_string( levelmod_prefix, TAG, charsmax( TAG ) - 1 );
new iPlayer [ 32 ], iNum;
get_players(iPlayer, iNum, "ae", "TERRORIST")
for ( new i = 0; i < iNum; i++ )
{
if(is_user_alive(iPlayer[i]))
{
GiveExp(iPlayer [ i ], get_pcvar_num(xp_win_cvar));
ColorChat(iPlayer[i], TEAM_COLOR,"^1[^3 %s^1 ] You got ^4 %iXP^1 because your team has win the round !",TAG,get_pcvar_num(xp_win_cvar));
UpdateLevel(iPlayer[i]);
}
}
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
new message[256];
switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[191] = '^0';
new team, ColorChange, index, MSG_Type;
if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
ShowColorMessage(id, type, message[])
{
static get_user_msgid_saytext;
if(!get_user_msgid_saytext)
{
get_user_msgid_saytext = get_user_msgid("SayText");
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used)
{
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
FindPlayer()
{
new i = -1;
static iMaxPlayers;
if( !iMaxPlayers )
{
iMaxPlayers = get_maxplayers( );
}
while(i <= iMaxPlayers)
{
if(is_user_connected(++i))
return i;
}
return -1;
}
stock Float:accuracy(stats[8])
{
if(!stats[4])
return ( 0.0 );
new Float:result
result = 100.0 * float( stats[5] ) / float( stats[4] );
return (result > 100.0) ? 100.0 : result
}
stock Float:effec(stats[8])
{
if(!stats[0])
return ( 0.0 );
new Float:result
result = 100.0 * float( stats[0] ) / float( stats[0] + stats[1] );
return (result > 100.0) ? 100.0 : result
}
inc file for compile
PHP Code:
#if defined _levelmod_included
#endinput
#endif
#define _levelmod_included
#define LEVELMOD_VERSION "6.6.5"
enum Color
{
NORMAL = 1, // clients scr_concolor cvar color
YELLOW = 1, // NORMAL alias
GREEN, // Green Color
TEAM_COLOR, // Red, grey, blue
GREY, // grey
RED, // Red
BLUE, // Blue
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
/**
* Called when player is select an power
*
* @param id: Player Index
* @param power: The Power ID
*
*/
forward levelmod_selected_power(id, power);
/**
* Called when player is update his level
*
* @param id: Player Index
*
*/
forward levelmod_client_updatelevel(id);
/**
* Called when player is hook xp ( + admin command, amx_xp support ! )
*
* @param id: Player Index
*
*/
forward levelmod_client_hook_xp(id);
/**
*
* @param id: The Player Index
*
* @return: Return the player index XP
*/
native levelmod_get_user_xp(id);
/**
*
* @param id: The Player Index
*
* @return: Return the player index LEVEL
*/
native levelmod_get_user_level(id);
/**
*
* @param id: The Player Index
*
* @return: Return the player index next level
*/
native levelmod_get_user_next_level(id);
/**
*
* @param id: The Player Index
*
* @return: Return the player index XP necesary for next level
*/
native levelmod_get_user_xp_needed(id);
/**
*
* @param id: The Player Index
* @param value: Value for set the player exactly XP value !
*/
native levelmod_set_user_xp(id, value);
/**
*
* @param id: The Player Index
* @param value: Value for set the player exactly LEVEL value !
*/
native levelmod_set_user_level(id, value);
/**
*
* Update the player level
*
* @param id: The Player Index
*/
native levelmod_updatelevel(id);
/**
*
* Register a new levelmod power
*
*
* @param power_name: The name of the Power
* @param power_level: The level necesary to choose this power
* @param power_desc: Description of the power
*/
native levelmod_register_power(const power_name[], const power_level, const power_desc[])
/**
*
* Load Player XP/level
*
* @param id: The Player Index
*/
native levelmod_load(id)
/**
*
* Save Player XP/Level
*
* @param id: The Player Index
*/
native levelmod_save(id)
/**
*
* @param id: The Player Index
* @param value: Value for give use bonus-xp
*/
stock levelmod_give_user_xp( id, value )
{
levelmod_set_user_xp( id, levelmod_get_user_xp( id ) + value );
}
/**
*
* @param id: The Player Index
* @param value: Value for give use bonus-level
*/
stock levelmod_give_user_level( id, value )
{
levelmod_set_user_level( id, levelmod_get_user_level( id ) + value );
}
/**
*
* @param id: The Player Index
* @param value: Value for take amount of xp
*/
stock levelmod_take_user_xp( id, value )
{
levelmod_set_user_xp( id, levelmod_get_user_xp( id ) - value );
}
/**
*
* @param id: The Player Index
* @param value: Value for take amount of level
*/
stock levelmod_take_user_level( id, value )
{
levelmod_set_user_level( id, levelmod_get_user_level( id ) - value );
}
/**
*
* @param id: The Player Index
* @param color type: the color type( TEAM_COLOR, READ, BLUE.. etc)
* @param msg: the message ( with quotes)
*/
stock CC(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
new message[256];
switch(type)
{
case NORMAL: // clients scr_concolor cvar color
{
message[0] = 0x01;
}
case GREEN: // Green
{
message[0] = 0x04;
}
default: // White, Red, Blue
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[191] = '^0';
new team, ColorChange, index, MSG_Type;
if(id)
{
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
{
Team_Info(index, MSG_Type, TeamName[team]);
}
}
stock ShowColorMessage(id, type, message[])
{
static get_user_msgid_saytext;
if(!get_user_msgid_saytext)
{
get_user_msgid_saytext = get_user_msgid("SayText");
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id)
write_string(message);
message_end();
}
stock Team_Info(id, type, team[])
{
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used)
{
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
stock ColorSelection(index, type, Color:Type)
{
switch(Type)
{
case RED:
{
return Team_Info(index, type, TeamName[1]);
}
case BLUE:
{
return Team_Info(index, type, TeamName[2]);
}
case GREY:
{
return Team_Info(index, type, TeamName[0]);
}
}
return 0;
}
stock FindPlayer()
{
new i = -1;
static iMaxPlayers;
if( !iMaxPlayers )
{
iMaxPlayers = get_maxplayers( );
}
while(i <= iMaxPlayers)
{
if(is_user_connected(++i))
return i;
}
return -1;
}
second rank plugin
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>
#include <fvault>
#define MaxLevels 32
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#define CHAT_ACCESS ADMIN_ALL
new gMaxPlayers, syncObj, Level[33], eXP[33]
new ranks_hud, knife_xp, he_xp, hs_xp, kill_xp, kill_msg
new const g_vault_name[] = "levelsz";
//new const rprefix[]= "Ranks";
new iCvarPrefix;
new const Levels[MaxLevels+1] =
{
0,
15,
30,
50,
100,
200,
300,
450,
550,
650,
750,
850,
950,
1050,
1250,
1350,
1450,
1550,
1650,
2000,
2500,
3000,
4000,
5000,
6000,
7000,
8000,
9000,
9999,
10000,
999999
}
new const Prefix[MaxLevels][] =
{
"",
"Newbie",
"Jumper",
"Runner",
"Perefct",
"GS Master",
"Bhopper",
"Assassin",
"Incredible",
"Unstoppable",
"Monster",
"Godlike",
"Ninja",
"Xtreme",
"Deathrun Styler",
"Jump Master",
"Machine",
"Immortal",
"Fantastic",
"Knifer",
"Justyler",
"Destroyer",
"Rampage",
"Silent Walker",
"Chuck Norris",
"Terminator",
"GOD",
"Invincible",
"Thunder",
"Supernova",
"Wolverine",
"Wolverine"
}
public plugin_init()
{
register_plugin("RankSystem", "1.0a", "alt.nick")
register_event("DeathMsg","client_death","a")
register_clcmd("say /rank", "cmdRank")
register_clcmd("say_team /rank", "cmdRank")
ranks_hud = register_cvar("ranks_hud", "1") // Дали да се появява хъд при влизане в сървъра. Включено 1/0 Изключено
knife_xp = register_cvar("knife_xp", "5") // Колко ХР да дава за убийство с нож.
he_xp = register_cvar("he_xp", "7") // Колко ХР да дава за убийство с Granata (HE).
hs_xp = register_cvar("hs_xp", "3") // Колко ХР да дава за убийство с Headshot.
kill_xp = register_cvar("kill_xp", "1") // Колко ХР да дава за нормално убийство.
kill_msg = register_cvar("kill_msg", "1") // Дали да показва кой сте убили и колко ХР сте получили. Включено 1/0 Изключено
register_concmd ("amx_give_xp", "CmdAddXP", ADMIN_LEVEL_A, "<nick | @ct | @t | @all> <xp>")
iCvarPrefix = register_cvar("amx_rank_prefix", "Deathrun");
gMaxPlayers = get_maxplayers()
syncObj = CreateHudSyncObj()
fvault_load(g_vault_name)
}
public ShowHud(id)
{
set_hudmessage(random(256), random(256), random(256), 0.01, 0.13, 0, 6.0, 1.0, 0.0, 0.0, -1)
ShowSyncHudMsg(id, syncObj,"Rank: %s ^nExp: %i ^nLevel: %i", Prefix[Level[id]], eXP[id], Level[id])
}
public client_putinserver(id)
{
if(get_pcvar_num(ranks_hud) == 1)
set_task(1.0, "ShowHud", id, _, _, "b")
if(Level[id] < MaxLevels-1)
while(eXP[id] >= Levels[Level[id]])
Level[id] += 1
}
public client_death(killer, victim, weapon, hitgroup, TK)
{
if(killer == victim)
return PLUGIN_HANDLED
new headshot = (hitgroup == HIT_HEAD) ? 1 : 0
new rprefix[64];
get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
switch(weapon)
{
case CSW_HEGRENADE:
{
eXP[killer] += get_pcvar_num(he_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HE^1.", rprefix, get_pcvar_num(he_xp))
return PLUGIN_CONTINUE
}
case CSW_KNIFE:
{
eXP[killer] += get_pcvar_num(knife_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 noj^1.",rprefix, get_pcvar_num(knife_xp))
return PLUGIN_CONTINUE
}
}
if(headshot)
{
eXP[killer] += get_pcvar_num(hs_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1 poradi ubiistwoto s^4 HS^1.",rprefix, get_pcvar_num(hs_xp))
return PLUGIN_CONTINUE
}
else
{
eXP[killer] += get_pcvar_num(kill_xp)
CheckLevel(killer)
SaveData(killer)
if(get_pcvar_num(kill_msg) == 1)
ColorChat(killer, NORMAL, "^4[%s]^1 poluchihte^4 %d XP^1.", rprefix, get_pcvar_num(kill_xp))
return PLUGIN_CONTINUE
}
CheckLevel(killer)
SaveData(killer)
return PLUGIN_CONTINUE
}
public CheckLevel(id)
{
if(Level[id] < MaxLevels-1)
while(eXP[id] >= Levels[Level[id]])
Level[id] += 1
}
public client_connect(id)
{
LoadData(id)
}
public client_disconnect(id)
{
SaveData(id)
eXP[id] = 0
Level[id] = 0
remove_task(id)
}
public cmdRank(id)
{
new rprefix[64];
get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
if(is_user_connected(id))
ColorChat(id, GREY, "^4[%s]^1 Deathrun:^4 %s^1 | XP:^3 %d^1 | Level:^3 %d^1.", rprefix, Prefix[Level[id]], eXP[id], Level[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))
new rprefix[64];
get_pcvar_string(iCvarPrefix, rprefix, sizeof rprefix - 1);
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]
eXP[All] += XPtoGive
}
CheckLevel(All)
ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na vsichki ^4igrachi^1!", rprefix, 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]
eXP[T] += XPtoGive
}
}
CheckLevel(T)
ColorChat(0, RED, "^4[%s] ^1%s dade^4 %i^1 XP na vsichki ^3 Teroristi^1.", rprefix, 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]
eXP[CT] += XPtoGive
}
}
CheckLevel(CT)
ColorChat(0, BLUE, "^4[%s]^1 %s^1 dade^4 %i^1 XP na wsichki ^3 Kontra-Teroristi^1!", rprefix, AdminName, XPtoGive)
}
}
else
{
new iTarget = cmd_target(iPlayer, arg, 3)
get_user_name (iTarget, TargetName, charsmax (TargetName))
if(iTarget)
{
eXP[iTarget] += XPtoGive
CheckLevel(iTarget)
ColorChat(0, NORMAL, "^4[%s]^1 ^3%s^1 dade^4 %i^1 XP na^4 %s^1.", rprefix, AdminName, XPtoGive, TargetName)
}
}
return PLUGIN_HANDLED
}
public SaveData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s", name);
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
fvault_set_data(g_vault_name,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",name);
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]);
fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
eXP[id] = str_to_num(playerxp);
Level[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
rank + admin prefix and more
PHP Code:
#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < engine >
#include < colorchat >
#include < hamsandwich >
#include < fun >
#include < nvault >
#define MAXRANKS 32
#define PLUGIN "BP Admin prefix with ranks"
#define VERSION "1.3"
#define AUTHOR "BetterPlay"
//ПРОМЕНЛИВИ
new PlayerRank[33], message[192]
new sayText, teamInfo, maxPlayers, g_AdminListen, g_AdminListenFlag,g_MsgHud, gVault
new strName[191], strText[191], alive[11], temp_cvar[2], g_name[32]
new gPlayerPoints[33], give[33],iTarget[33]
new const g_szTag[][] = {
"",
"Server Owner",
"Administrator",
"Global Moderator",
"Supervisor",
"Team Bans",
"Server Admin",
"Test Admin",
"VIP",
"SMS Admin"
}
new const rankNames[MAXRANKS][] =
{
"[Jumper]",
"[Jumper First Class]",
"[Incredible]",
"[Unstoppable]",
"[Perfect]",
"[Runner]",
"[Great Bhop]",
"[Bhopper]",
"[Great Jumper]",
"[Alien Jumper]",
"[Super Bhopper]",
"[LJ Master]",
"[Technique]",
"[Unreal]",
"[Advanced]",
"[Machine]",
"[Hunter]",
"*PunisheR*",
"[Quick]",
"[Maniac]",
"[Jump Master]",
"[Bhop Master]",
"[God Like]",
"[Unique]",
"*PRO*",
"[Immortal]",
"[Hero]",
"[Jarring]",
"*ProffesionaL*",
"[Danger Bhopper]",
"[Bhop Legend]",
"[HNS Master]"
};
new const rankXP[MAXRANKS] =
{
0, 25, 50, 100, 150, 200, 350, 500, 700, 850, 1100, 1400, 1800, 2400, 3000, 3500, 4300, 5200, 5800, 6500, 7300, 8000, 9600, 10500, 12000, 13800, 15000, 17200, 20000, 21500, 24000, 26000
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_AdminListen = register_cvar("amx_listen", "1")
g_AdminListenFlag = register_cvar("amx_listen_flag", "c")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")
register_clcmd("say /myrank", "cmdJumpRank")
register_clcmd("say_team /myrank", "cmdJumpRank")
register_clcmd("say /checkrank", "cmdCheckLevel")
register_clcmd("say_team /checkrank", "cmdCheckLevel")
register_clcmd("say /rankmenu", "cmdRankMenu", ADMIN_RCON)
register_clcmd("say_team /rankmenu", "cmdRankMenu", ADMIN_RCON)
register_concmd("Points_Amount", "cmdTyped", ADMIN_RCON);
sayText = get_user_msgid("SayText")
teamInfo = get_user_msgid("TeamInfo")
maxPlayers = get_maxplayers()
g_MsgHud = CreateHudSyncObj()
register_message(sayText, "avoid_duplicated")
register_event("DeathMsg", "Hook_Deathmessage", "a");
RegisterHam(Ham_Spawn, "player", "player_spawn", 1);
set_task(1.0, "taskHud", 0, _, _, "b")
gVault = nvault_open( "PlayerRanks" );
}
public player_spawn(id)
{
if( !is_user_alive( id ) ) return;
if(MAXRANKS == PlayerRank[id]+1)
ColorChat(id, RED, "[BetterPlay]^x01 Your level is ^x04#%d ^x01with rank ^x04%s ^x01. You have got ^x03 %d points", PlayerRank[id]+1, rankNames[PlayerRank[id]], gPlayerPoints[id])
else
ColorChat(id, RED, "[BetterPlay]^x01 Your level is ^x04#%d ^x01with rank ^x04%s^x01. You have got ^x03 %d^x01 /^x04 %d^x01 points to become^x04 %s^x01.", PlayerRank[id]+1, rankNames[PlayerRank[id]], gPlayerPoints[id], rankXP[PlayerRank[id]+1], rankNames[PlayerRank[id]+1])
switch( PlayerRank[ id ] )
{
case 28: set_user_health( id, get_user_health( id ) + 5 );
case 29: set_user_health( id, get_user_health( id ) + 10 );
case 30: set_user_health( id, get_user_health( id ) + 15 );
case 31: set_user_health( id, get_user_health( id ) + 20 );
case 32: set_user_health( id, get_user_health( id ) + 30 );
}
}
public cmdCheckLevel(id)
{
new iMenu = menu_create("\yBetterPlay \d- \wChoose Player\r:", "checklevel_menu_handler")
new iPlayers[32], iNum, iTarget;
new UserName[34], szTempID[10];
get_players(iPlayers, iNum);
for(new i; i < iNum; i++)
{
iTarget = iPlayers[i];
if(!is_user_connected(iTarget))
continue;
get_user_name(iTarget, UserName, sizeof UserName - 1);
num_to_str(iTarget, szTempID, charsmax(szTempID));
menu_additem(iMenu, UserName, szTempID);
}
menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, iMenu, 0);
}
public checklevel_menu_handler(id, iMenu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
new iData[6], iName[64];
new access, callback;
menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);
new target = str_to_num(iData);
if(!is_user_connected(target))
{
ColorChat(id, GREEN, "[BetterPlay]^x01 The player you chose is not in the server.")
menu_destroy(iMenu);
cmdCheckLevel(id);
return PLUGIN_HANDLED;
}
menu_destroy(iMenu);
new szText[256], player_name[32];
get_user_name(target, player_name, 31);
if(MAXRANKS == PlayerRank[target]+1)
formatex(szText, charsmax(szText), "<html><head></head><body><br/>Name: %s<br/>Points: %d<br/>Level: %d/%d<br/>Rank: %s<br/></body></html>", player_name, gPlayerPoints[target], PlayerRank[target]+1, MAXRANKS, rankNames[PlayerRank[target]]);
else
formatex(szText, charsmax(szText), "<html><head></head><body><br/>Name: %s<br/>Points: %d/%d<br/>Level: %d/%d<br/>Rank: %s<br/>Next Rank: %s</body></html>", player_name, gPlayerPoints[target], rankXP[PlayerRank[target]+1], PlayerRank[target]+1, MAXRANKS, rankNames[PlayerRank[target]], rankNames[PlayerRank[target]+1]);
show_motd(id, szText, "BetterPlay Rank System");
cmdCheckLevel(id);
return PLUGIN_HANDLED;
}
public taskHud()
{
new iPlayers[32], iNum, iTarget;
get_players(iPlayers, iNum);
for(new i; i < iNum; i++)
{
iTarget = iPlayers[i];
if(!is_user_connected(iTarget))
continue;
set_hudmessage(0, 139, 139, 0.02, 0.17, 0, 6.0, 12.0)
if(MAXRANKS == PlayerRank[iTarget]+1)
ShowSyncHudMsg(iTarget, g_MsgHud, "Level: %d/%d^nRank : %s^nPoints : %d",PlayerRank[iTarget]+1, MAXRANKS, rankNames[PlayerRank[iTarget]], gPlayerPoints[iTarget])
else
ShowSyncHudMsg(iTarget, g_MsgHud, "Level: %d/%d^nRank : %s^nPoints : %d/%d",PlayerRank[iTarget]+1, MAXRANKS, rankNames[PlayerRank[iTarget]], gPlayerPoints[iTarget], rankXP[PlayerRank[iTarget]+1])
}
}
public cmdJumpRank(id)
{
if(MAXRANKS == PlayerRank[id]+1)
ColorChat(id, RED, "[BetterPlay]^x01 Your level is ^x04#%d ^x01| Rank ^x04%s ^x01| Points:^x03 %d", PlayerRank[id]+1, rankNames[PlayerRank[id]], gPlayerPoints[id])
else
ColorChat(id, RED, "[BetterPlay]^x01 Your level is ^x04#%d ^x01| Rank ^x04%s ^x01| Points:^x03 %d^x01 /^x04 %d^x01 to become^x04 %s^x01.", PlayerRank[id]+1, rankNames[PlayerRank[id]], gPlayerPoints[id], rankXP[PlayerRank[id]+1], rankNames[PlayerRank[id]+1])
}
public cmdRankMenu(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED;
new iMenu = menu_create("Rank Menu", "rankmenu_menu_handler")
menu_additem(iMenu, "Give Points", "1");
menu_additem(iMenu, "Take Points", "2");
menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, iMenu, 0);
return PLUGIN_CONTINUE;
}
public rankmenu_menu_handler(id, iMenu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
new iData[6], iName[64];
new access, callback;
menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);
give[id] = str_to_num(iData);
GiveTakeMenu(id);
return PLUGIN_HANDLED;
}
public GiveTakeMenu(id)
{
static szText[64]
formatex(szText, 63, "%s Points", give[id] == 1 ? "Give" : "Take")
new iMenu = menu_create(szText, "givetake_menu_handler")
new iPlayers[32], iNum, iTarget;
new UserName[34], szTempID[10];
get_players(iPlayers, iNum);
for(new i; i < iNum; i++)
{
iTarget = iPlayers[i];
if(!is_user_connected(iTarget))
continue;
get_user_name(iTarget, UserName, sizeof UserName - 1);
num_to_str(iTarget, szTempID, charsmax(szTempID));
menu_additem(iMenu, UserName, szTempID);
}
menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, iMenu, 0);
}
public givetake_menu_handler(id, iMenu, Item)
{
if(Item == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
new iData[6], iName[64];
new access, callback;
menu_item_getinfo(iMenu, Item, access, iData, charsmax(iData), iName, charsmax(iName), callback);
iTarget[id] = str_to_num(iData);
if(!is_user_connected(iTarget[id]))
{
iTarget[id] = 0
ColorChat(id, GREEN, "[BetterPlay]^x01 The player you chose is not in the server.")
return PLUGIN_HANDLED;
}
menu_destroy(iMenu);
client_cmd(id, "messagemode Points_Amount");
return PLUGIN_HANDLED;
}
public cmdTyped(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED;
if(!iTarget[id] || give[id] <= 0)
return PLUGIN_HANDLED;
if(!is_user_connected(iTarget[id]))
{
ColorChat(id, RED, "[BetterPlay]^x01 The player you chose is not in the server.")
return PLUGIN_HANDLED;
}
new iTyped[12];
read_argv(1, iTyped, sizeof iTyped - 1);
new g_points = str_to_num(iTyped)
new AdminName[32], PlayerName[32];
get_user_name(id, AdminName, 31)
get_user_name(iTarget[id], PlayerName, 31)
if(give[id] == 1)
{
gPlayerPoints[iTarget[id]] += g_points
ColorChat(0, GREEN,"[BetterPlay]^x03 %s^x01 gave^x04 %d^x01 rank points to^x03 %s^x01.", AdminName, g_points, PlayerName)
}
else
{
if(g_points > gPlayerPoints[iTarget[id]])
gPlayerPoints[iTarget[id]] = 0
else
gPlayerPoints[iTarget[id]] -= g_points;
ColorChat(0, GREEN,"[BetterPlay]^x03 %s^x01 took^x04 %d^x01 rank points from^x03 %s^x01.", AdminName, g_points, PlayerName)
}
new currentPlayerRank = 0;
while(currentPlayerRank < (MAXRANKS - 1))
{
if(gPlayerPoints[iTarget[id]] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
PlayerRank[iTarget[id]] = currentPlayerRank;
iTarget[id] = 0;
GiveTakeMenu(id);
Save( id );
return PLUGIN_HANDLED;
}
public client_authorized( id )
{
Load( id );
}
public client_disconnect( id )
{
Save( id );
}
public client_putinserver(id)
{
new currentPlayerRank = 0;
while(currentPlayerRank < (MAXRANKS - 1))
{
if(gPlayerPoints[id] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
PlayerRank[id] = currentPlayerRank;
}
public Load( id )
{
if( !is_user_bot( id ) && !is_user_hltv( id ) )
{
new vaultkey[ 64 ], vaultdata[ 256 ], points[ 33 ], UserName[ 33 ];
get_user_name( id, UserName, charsmax( UserName ) );
format( vaultkey, charsmax( vaultkey ), "%s", UserName );
format( vaultdata, charsmax( vaultdata ), "%i#", gPlayerPoints[ id ] );
nvault_get( gVault, vaultkey, vaultdata, 255 );
replace_all( vaultdata, 255, "#", " " );
parse( vaultdata, points, 32 );
gPlayerPoints[ id ] = str_to_num( points );
}
}
public Save( id )
{
if( !is_user_bot( id ) && !is_user_hltv( id ) )
{
new vaultkey[ 64 ], vaultdata[ 256 ], UserName[ 33 ];
get_user_name( id, UserName, charsmax( UserName ) );
format( vaultkey, charsmax( vaultkey ), "%s", UserName );
format( vaultdata, charsmax( vaultdata ), "%i#", gPlayerPoints[ id ] );
nvault_set( gVault, vaultkey, vaultdata );
}
}
public avoid_duplicated(msgId, msgDest, receiver)
return PLUGIN_HANDLED;
public hook_say(id)
{
read_args(message, 191)
remove_quotes(message)
if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, ""))
return PLUGIN_CONTINUE
get_user_name(id, g_name, charsmax(g_name))
new isAlive
new admin = 0, iFlags = get_user_flags(id)
if(iFlags & ADMIN_LEVEL_B) admin = 1 //owner
else if(iFlags & ADMIN_LEVEL_C) admin = 2 //administrator
else if(iFlags & ADMIN_LEVEL_D) admin = 3 //global
else if(iFlags& ADMIN_LEVEL_G) admin=4 //otgowornik
else if(iFlags& ADMIN_LEVEL_H) admin=5 //ekip banove
else if(iFlags & ADMIN_BAN) admin = 6 //admin
else if(iFlags & ADMIN_LEVEL_F) admin = 7 //test
else if(iFlags & ADMIN_LEVEL_E) admin = 8 //vip
else if(iFlags & ADMIN_CHAT) admin = 9 //sms admin
if(is_user_alive(id))
{
isAlive = 1
alive = "^x01"
}
else
{
isAlive = 0
alive = "^x01*DEAD* "
}
static color[10]
if(admin)
{
get_user_team(id, color, 9)
format(strName, 191, "%s^x01[^x04%s^x01] ^x03%s ", alive, g_szTag[admin], g_name)
format(strText, 191, "^x01%s", message)
}
else
{
get_user_name(id, g_name, 32)
get_user_team(id, color, 9)
format(strName, 191, "%s^x04%s ^x03%s", alive, rankNames[PlayerRank[id]], g_name)
format(strText, 191, "%s", message)
}
format(message, 191, "%s ^x01: %s", strName, strText)
sendMessage(color, isAlive)// Sends the colored message
return PLUGIN_CONTINUE;
}
public hook_teamsay(id)
{
read_args(message, 191)
remove_quotes(message)
if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands
return PLUGIN_CONTINUE
new playerTeam = get_user_team(id)
new playerTeamName[19]
switch(playerTeam) // Team names which appear on team-only messages
{
case 1: copy(playerTeamName, 11, "Terrorists")
case 2: copy(playerTeamName, 18, "Counter-Terrorists")
default: copy(playerTeamName, 9, "Spectator")
}
get_user_name(id, g_name, charsmax(g_name))
new isAlive
new admin = 0, iFlags = get_user_flags(id)
if(iFlags & ADMIN_LEVEL_B) admin = 1 //owner
else if(iFlags & ADMIN_LEVEL_C) admin = 2 //administrator
else if(iFlags & ADMIN_LEVEL_D) admin = 3 //global
else if(iFlags& ADMIN_LEVEL_G) admin=4 //otgowornik
else if(iFlags& ADMIN_LEVEL_H) admin=5 //ekip banove
else if(iFlags & ADMIN_BAN) admin = 6 //admin
else if(iFlags & ADMIN_LEVEL_F) admin = 7 //test
else if(iFlags & ADMIN_LEVEL_E) admin = 8 //vip
else if(iFlags & ADMIN_CHAT) admin = 9 //sms admin
if(is_user_alive(id))
{
isAlive = 1
alive = "^x01"
}
else
{
isAlive = 0
alive = "^x01*DEAD* "
}
static color[10]
if(admin)
{
get_user_team(id, color, 9)
format(strName, 191, "%s(%s) ^x01[^x04%s^x01] ^x03%s ", alive, playerTeamName, g_szTag[admin], g_name)
format(strText, 191, "^x01%s", message)
}
else
{
get_user_name(id, g_name, 32)
get_user_team(id, color, 9);
format(strName, 191, "%s(%s) ^x04%s ^x03%s", alive, playerTeamName, rankNames[PlayerRank[id]], g_name)
format(strText, 191, "%s", message)
}
format(message, 191, "%s ^x01: %s", strName, strText)
sendTeamMessage(color, isAlive, playerTeam)
return PLUGIN_CONTINUE
}
public sendMessage(color[], alive)
{
new teamName[10]
for(new player = 1; player < maxPlayers; player++)
{
if(!is_user_connected(player))
continue
get_pcvar_string(g_AdminListenFlag, temp_cvar, charsmax(temp_cvar))
if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
{
get_user_team(player, teamName, 9)// Stores user's team name to change back after sending the message
changeTeamInfo(player, color)// Changes user's team according to color choosen
writeMessage(player, message)// Writes the message on player's chat
changeTeamInfo(player, teamName)// Changes user's team back to original
}
}
}
public sendTeamMessage(color[], alive, playerTeam)
{
new teamName[10]
for(new player = 1; player < maxPlayers; player++)
{
if(!is_user_connected(player))
continue
get_pcvar_string(g_AdminListenFlag, temp_cvar, charsmax(temp_cvar))
if(get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
{
if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & read_flags(temp_cvar))
{
get_user_team(player, teamName, 9)// Stores user's team name to change back after sending the message
changeTeamInfo(player, color)// Changes user's team according to color choosen
writeMessage(player, message)// Writes the message on player's chat
changeTeamInfo(player, teamName)// Changes user's team back to original
}
}
}
}
public changeTeamInfo(player, team[])
{
message_begin(MSG_ONE, teamInfo, _, player)// Tells to to modify teamInfo(Which is responsable for which time player is)
write_byte(player)// Write byte needed
write_string(team)// Changes player's team
message_end()// Also Needed
}
public writeMessage(player, message[])
{
message_begin(MSG_ONE, sayText, {0, 0, 0}, player)// Tells to modify sayText(Which is responsable for writing colored messages)
write_byte(player)// Write byte needed
write_string(message)// Effectively write the message, finally, afterall
message_end()// Needed as always
}
public Hook_Deathmessage()
{
new killer = read_data(1);
new victim = read_data(2);
if(killer == victim)
return PLUGIN_CONTINUE;
if(!killer || killer > maxPlayers)
return PLUGIN_CONTINUE;
gPlayerPoints[killer]++
new currentPlayerRank = 0;
while(currentPlayerRank < (MAXRANKS - 1))
{
if(gPlayerPoints[killer] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
new OldRank = PlayerRank[killer]
PlayerRank[killer] = currentPlayerRank
Save( killer );
if(OldRank < currentPlayerRank)
{
new g_name[32]
get_user_name(killer, g_name, 31)
ColorChat(0, GREEN, "[BetterPlay] ^1Congratulations! ^x03%s^x01 got a new rank ^x04%s", g_name, rankNames[PlayerRank[killer]])
}
return PLUGIN_CONTINUE;
}
hud show rank
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <csstats>
#define HUD_INTERVAL 1.0
#define RANK_NOTHING 0
#define RANK_PRIVATE 1
#define RANK_PRIVATE_FIRST_CLASS 2
#define RANK_CORPORAL 3
#define RANK_SERGEANT 4
#define RANK_STAFF_SERGEANT 5
#define RANK_GUNNERY_SERGEANT 6
#define RANK_MASTER_SERGEANT 7
#define RANK_COMMAND_SERGEANT 8
#define RANK_SECOND_LIEUTENANT 9
#define RANK_FIRST_LIEUTENANT 10
#define RANK_COLONEL 11
#define RANK_BRIGADIER_GENERAL 12
#define RANK_MAJOR_GENERAL 13
#define RANK_LIEUTENANT_GENERAL 14
#define RANK_GENERAL 15
#define RANK_GENERAL_OF_THE_ARMY 16
#define MAXRANKS 17
new PlayerRank[33]
new const rankNames[MAXRANKS][] =
{
"Onbasi",
"Cavus",
"Uzman",
"Astsubay",
"Astegmen",
"Tegmen",
"Ustegmen",
"Yuzbasi",
"Binbasi",
"Yarbay",
"Albay",
"Tuggeneral",
"Tumgeneral",
"Korgeneral",
"Orgeneral",
"GenelKurmay Baskani",
"Maresal"
}
new const rankXP[MAXRANKS] =
{
0, 100, 200, 400, 800, 1000, 2000, 4000, 8000, 10000, 12000, 15000, 20000, 40000, 50000, 80000, 100000
}
public plugin_init()
{
register_plugin("Rank Display", "0.1","gaben")
}
public client_putinserver(id)
{
set_task(HUD_INTERVAL, "ShowHUD", id)
return PLUGIN_HANDLED
}
public ShowHUD(id)
{
if(!is_user_connected(id))
return 0
static stats[8], hits[8], name[33]
get_user_stats(id, stats, hits)
get_user_name(id, name, 32)
new currentPlayerRank = 0;
while
(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
new leftkills = stats[0];
new right = rankXP[currentPlayerRank + 1]
//I have no idea why you are storing the rank here, maybe you're planning to use it later
PlayerRank[id] = currentPlayerRank;
set_hudmessage(0, 255, 0, -0.1, -0.1, 0, 6.0, 12.0)
show_hudmessage(id, "%s : [Rutben: %s] ^nFrags: [%i / %i]", name, rankNames[currentPlayerRank], leftkills, right)
set_task(HUD_INTERVAL, "ShowHUD", id)
return PLUGIN_HANDLED
}
rank plugin with csstats
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <csstats>
#define RANK_a 0
#define RANK_b 1
#define RANK_c 2
#define RANK_d 3
#define RANK_e 4
#define RANK_f 5
#define RANK_g 6
#define RANK_h 7
#define RANK_i 8
#define RANK_j 9
#define RANK_k 10
#define RANK_1 12
#define RANK_2 13
#define RANK_3 14
#define RANK_4 15
#define RANK_5 16
#define RANK_6 17
#define RANK_7 18
#define RANK_8 19
#define RANK_9 20
#define RANK_11 21
#define RANK_12 23
#define RANK_13 24
#define RANK_14 25
#define RANK_15 26
#define RANK_16 27
#define RANK_17 28
#define RANK_18 29
#define RANK_19 30
#define RANK_20 31
#define MAXRANKS 31
new PlayerRank[33]
#define ACCESS_LEVEL ADMIN_RCON
#define ADMIN_LISTEN ADMIN_IMMUNITY
new message[192]
new sayText
new teamInfo
new maxPlayers
new g_MessageColor
new g_NameColor
new g_AdminListen
new strName[191]
new strText[191]
new alive[11]
new const g_szTag[][] = {
"[SOBSTVENIK]",
"[Global Admin]",
"[Local Admin]",
"[VIP]",
"[Co-Op]"
}
public plugin_init()
{
register_plugin("Ranks&AdminTags","X",":)")
g_MessageColor = register_cvar("amx_color", "3")
g_NameColor = register_cvar("amx_namecolor", "2")
g_AdminListen = register_cvar("amx_listen", "1")
sayText = get_user_msgid("SayText")
teamInfo = get_user_msgid("TeamInfo")
maxPlayers = get_maxplayers()
register_message(sayText, "avoid_duplicated")
register_concmd("amx_color", "set_color", ACCESS_LEVEL, "<color>")
register_concmd("amx_namecolor", "set_name_color", ACCESS_LEVEL, "<color>")
register_concmd("amx_listen", "set_listen", ACCESS_LEVEL, "<1 | 0>")
register_clcmd("say", "hook_say")
register_clcmd("say_team", "hook_teamsay")
}
new const rankNames[MAXRANKS][] =
{
"^x04[^x03Rednik^x04]",
"^x04[^x03Efreitor^x04]",
"^x04[^x03Mladshi Serjant^x04]",
"^x04[^x03Serjant^x04]",
"^x04[^x03Starshi Serjant^x04]",
"^x04[^x03Oficerski Kandidat^x04]",
"^x04[^x03Feldfebel^x04]",
"^x04[^x03Podporuchnik^x04]",
"^x04[^x03Poruchnik^x04]",
"^x04[^x03Starshina^x04]",
"^x04[^x03Leitenant^x04]",
"^x04[^x03Starshi Leitenant^x04]",
"^x04[^x03Kapitan^x04]",
"^x04[^x03Major^x04]",
"^x04[^x03Podpolkovnik^x04]",
"^x04[^x03Polkovnik^x04]",
"^x04[^x03Kapitan^x04]",
"^x04[^x03Komandir^x04]",
"^x04[^x03Brigaden General^x04]",
"^x04[^x03General-Major^x04]",
"^x04[^x03General-Leitenant^x04]",
"^x04[^x03General^x04]",
"^x04[^x03Zombie Veteran^x04]",
"^x04[^x03Zombie Master^x04]",
"^x04[^x03Zombie MASHINA^x04]",
"^x04[^x03PRO^x04]",
"^x04[^x03HERO^x04]",
"^x04[^x03Quick^x04]",
"^x04[^x03Commander^x04]",
"^x04[^x03THE ONE KILLER^x04]",
"^x03[^x04Prefessional^x03]"
}
new const rankXP[MAXRANKS] =
{
10, 50, 100, 200, 400, 450, 480, 500, 600, 1000, 1700, 2300, 2700, 3250, 3699, 3998, 4399, 4800, 5200, 5870, 6200, 6500, 7000, 8000, 8700, 9100, 9800, 10300, 11000, 11400
}
public avoid_duplicated(msgId, msgDest, receiver)
{
return PLUGIN_HANDLED
}
public hook_say(id)
{
read_args(message, 191)
remove_quotes(message)
if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, ""))
return PLUGIN_CONTINUE
new name[32]
get_user_name(id, name, 31)
new admin = 0, iFlags = get_user_flags(id)
if(iFlags & ADMIN_LEVEL_A)
admin = 1
else if(iFlags & ADMIN_LEVEL_B)
admin = 2
else if(iFlags & ADMIN_LEVEL_C)
admin = 3
else if(iFlags & ADMIN_LEVEL_D)
admin = 4
else if(iFlags & ADMIN_LEVEL_E)
admin = 5
new isAlive
if(is_user_alive(id))
{
isAlive = 1
alive = "^x01"
}
else
{
isAlive = 0
alive = "^x01*DEAD* "
}
static color[10]
if(admin)
{
switch(get_pcvar_num(g_NameColor))
{
case 1:
format(strName, 191, "%s^x03%s ^x04%s", alive, g_szTag[admin], name)
case 2:
format(strName, 191, "%s^x03%s ^x04%s", alive, g_szTag[admin], name)
case 3:
{
color = "SPECTATOR"
format(strName, 191, "%s^x03%s ^x04%s", alive, g_szTag[admin], name)
}
case 4:
{
color = "CT"
format(strName, 191, "%s^x03%s ^x04%s", alive, g_szTag[admin], name)
}
case 5:
{
color = "TERRORIST"
format(strName, 191, "%s^x03%s ^x04%s", alive, g_szTag[admin], name)
}
case 6:
{
get_user_team(id, color, 9)
format(strName, 191, "%s^x03%s ^x04%s", alive, g_szTag[admin], name)
}
}
switch(get_pcvar_num(g_MessageColor))
{
case 1:
format(strText, 191, "^x03%s", message)
case 2:
format(strText, 191, "^x03%s", message)
case 3:
{
copy(color, 9, "SPECTATOR")
format(strText, 191, "^x03%s", message)
}
case 4:
{
copy(color, 9, "CT")
format(strText, 191, "^x03%s", message)
}
case 5:
{
copy(color, 9, "TERRORIST")
format(strText, 191, "^x03%s", message)
}
}
}
else
{
get_user_team(id, color, 9)
static stats[8], hits[8]
get_user_stats(id, stats, hits)
get_user_name(id, name, 32)
new currentPlayerRank = 0;
while
(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
PlayerRank[id] = currentPlayerRank;
format(strName, 191, "%s%s^x03 %s", alive, rankNames[currentPlayerRank], name)
format(strText, 191, "^x01%s", message)
}
format(message, 191, "%s^x01: %s", strName, strText)
sendMessage(color, isAlive)
return PLUGIN_CONTINUE
}
public hook_teamsay(id)
{
new playerTeam = get_user_team(id)
read_args(message, 191)
remove_quotes(message)
if(message[0] == '@' || message[0] == '/' || message[0] == '!' || message[0] == '#' || message[0] == '$' || equal(message, ""))
return PLUGIN_CONTINUE
new name[32]
get_user_name (id, name, 31)
new admin = 0, iFlags = get_user_flags(id)
if(iFlags & ADMIN_LEVEL_A)
admin = 1
else if(iFlags & ADMIN_LEVEL_B)
admin = 2
else if(iFlags & ADMIN_LEVEL_C)
admin = 3
else if(iFlags & ADMIN_LEVEL_D)
admin = 4
else if(iFlags & ADMIN_LEVEL_E)
admin = 5
new isAlive
if(is_user_alive(id))
{
isAlive = 1
alive = "^x01"
}
else
{
isAlive = 0
alive = "^x01*DEAD* "
}
static color[10]
if(admin)
{
switch(get_pcvar_num(g_NameColor))
{
case 1:
format(strName, 191, "%s(Teamchat) ^x03%s ^x04%s", alive, g_szTag[admin], name)
case 2:
format(strName, 191, "%s(Teamchat) ^x03%s ^x04%s", alive, g_szTag[admin], name)
case 3:
{
color = "SPECTATOR"
format(strName, 191, "%s(Teamchat) ^x03%s ^x04%s", alive, g_szTag[admin], name)
}
case 4:
{
color = "CT"
format(strName, 191, "%s(Teamchat) ^x03%s ^x04%s", alive, g_szTag[admin], name)
}
case 5:
{
color = "TERRORIST"
format(strName, 191, "%s(Teamchat) ^x03%s ^x04%s", alive, g_szTag[admin], name)
}
case 6:
{
get_user_team(id, color, 9)
format(strName, 191, "%s(Teamchat) ^x03%s ^x04%s", alive, g_szTag[admin], name)
}
}
switch(get_pcvar_num(g_MessageColor))
{
case 1:
format(strText, 191, "^x03%s", message)
case 2:
format(strText, 191, "^x03%s", message)
case 3:
{
copy(color, 9, "SPECTATOR")
format(strText, 191, "^x03%s", message)
}
case 4:
{
copy(color, 9, "CT")
format(strText, 191, "^x03%s", message)
}
case 5:
{
copy(color, 9, "TERRORIST")
format(strText, 191, "^x03%s", message)
}
}
}
else
{
get_user_team(id, color, 9)
static stats[8], hits[8]
get_user_stats(id, stats, hits)
get_user_name(id, name, 32)
new currentPlayerRank = 0;
while
(currentPlayerRank < (MAXRANKS - 1))
{
if(stats[0] >= rankXP[currentPlayerRank + 1])
++currentPlayerRank;
else
break;
}
PlayerRank[id] = currentPlayerRank;
format(strName, 191, "%s(Teamchat) %s^x03 %s", alive, rankNames[currentPlayerRank], name)
format(strText, 191, "%s", message)
}
format(message, 191, "%s^x01: %s", strName, strText)
sendTeamMessage(color, isAlive, playerTeam)
return PLUGIN_CONTINUE
}
public set_color(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[1], newColor
read_argv(1, arg, 1)
newColor = str_to_num(arg)
if(newColor >= 1 && newColor <= 5)
{
set_pcvar_num(g_MessageColor, newColor)
if(get_pcvar_num(g_NameColor) != 1 &&
((newColor == 3 && get_pcvar_num(g_NameColor) != 3)
||(newColor == 4 && get_pcvar_num(g_NameColor) != 4)
||(newColor == 5 && get_pcvar_num(g_NameColor) != 5)))
{
set_pcvar_num(g_NameColor, 2)
}
}
return PLUGIN_HANDLED
}
public set_name_color(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[1], newColor
read_argv(1, arg, 1)
newColor = str_to_num(arg)
if(newColor >= 1 && newColor <= 6)
{
set_pcvar_num(g_NameColor, newColor)
if((get_pcvar_num(g_MessageColor) != 1
&&((newColor == 3 && get_pcvar_num(g_MessageColor) != 3)
||(newColor == 4 && get_pcvar_num(g_MessageColor) != 4)
||(newColor == 5 && get_pcvar_num(g_MessageColor) != 5)))
|| get_pcvar_num(g_NameColor) == 6)
{
set_pcvar_num(g_MessageColor, 2)
}
}
return PLUGIN_HANDLED
}
public set_listen(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[1], newListen
read_argv(1, arg, 1)
newListen = str_to_num(arg)
set_pcvar_num(g_AdminListen, newListen)
return PLUGIN_HANDLED
}
public sendMessage(color[], alive)
{
new teamName[10]
for(new player = 1; player < maxPlayers; player++)
{
if(!is_user_connected(player))
continue
if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
{
get_user_team(player, teamName, 9)
changeTeamInfo(player, color)
writeMessage(player, message)
changeTeamInfo(player, teamName)
}
}
}
public sendTeamMessage(color[], alive, playerTeam)
{
new teamName[10]
for(new player = 1; player < maxPlayers; player++)
{
if(!is_user_connected(player))
continue
if(get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
{
if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN)
{
get_user_team(player, teamName, 9)
changeTeamInfo(player, color)
writeMessage(player, message)
changeTeamInfo(player, teamName)
}
}
}
}
public changeTeamInfo(player, team[])
{
message_begin(MSG_ONE, teamInfo, _, player)
write_byte(player)
write_string(team)
message_end()
}
public writeMessage(player, message[])
{
message_begin(MSG_ONE, sayText, {0, 0, 0}, player)
write_byte(player)
write_string(message)
message_end()
}
one more rank plugin
http://cscontrol.ru/load/3-1-0-4079
one more
http://cscontrol.ru/load/3-1-0-3940
rank with points
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fvault>
#include <fun>
#include <colorchat>
#define IsPlayer(%1) (1 <= %1 <= g_players)
#define TOTALLEVELS 18
new const g_vault_name[] = "levels_by_name"; //kak se kazva faila, koito e kato localno db (zapazva prefixite)
new const g_team_names[CsTeams][] =
{
"(Spectator) ",
"(Terrorist) ",
"(Counter-Terrorist) ",
"(Spectator) "
};
new xp
new cvar_hp
new cvar_hp2
new const Levels[TOTALLEVELS] =
{
0,
50,
100,
200,
300,
500,
750,
1000,
1250,
1500,
1750,
2000,
3500,
4500,
6500,
7500,
11000,
18000
}
new const LevelNames[TOTALLEVELS][] =
{
"[NEW]",
"[NewBie]",
"[Advanced]",
"[Learning]",
"[Kniffer]",
"[Killer]",
"[Danger Killer]",
"[Multi Killer]",
"[Super Killer]",
"[Pro Killer]",
"[SuperNova]",
"[Ultimate]",
"[OneAndOnly]",
"[Terminator]",
"[CrushFactor]",
"[GENESIS]",
"[Amazing Shooting]",
"[The Best Killer]"
}
// admin prefixes
new const g_szTag[][] = {
"", //NEEEE IZTRIVAI!
"[Owner]",
"[SuperAdmin]",
"[Admin]",
"[Vip]"
}
new const g_iTagFlag[sizeof(g_szTag)] = {
ADMIN_ALL, //NEEEE IZTRIVAI!
ADMIN_RCON,
ADMIN_IMMUNITY,
ADMIN_BAN,
ADMIN_LEVEL_H
}
//end
new gXP[33], gLevel[33];
new points_kill, points_hs;
new g_players;
new g_msgid_SayText;
new g_msgsync
public plugin_init()
{
register_plugin("Ranks with XP", "Dedihost/val4o0o0", "2.3");
register_event("DeathMsg", "eDeath", "a");
register_clcmd("say /xpmenu","setmenu1");
points_kill = register_cvar("dr_rank_kill", "1"); //kolko xp da dava pri kill (normalen)
points_hs = register_cvar("dr_rank_hs","2"); //kolko xp da dava pri hs
cvar_hp = register_cvar("dr_rank_hp_enable","1"); //da dava li hp pri ubiistvo
cvar_hp2 = register_cvar("dr_rank_hp_value","25"); //kolko hp da dava pri ubiistvo
fvault_load(g_vault_name);
g_players = get_maxplayers();
g_msgid_SayText = get_user_msgid("SayText");
register_clcmd ("say", "hook_say")
register_clcmd ("say_team", "hook_teamsay")
register_clcmd ("amx_give_xp", "addpts", ADMIN_BAN, "<user> <xp>")
g_msgsync = CreateHudSyncObj();
}
public eDeath(id)
{
new killer = read_data(1);
new victim = read_data(2);
new gpoints_kill = get_pcvar_num(points_kill);
new gpoints_hs = get_pcvar_num(points_hs);
if( IsPlayer(killer) && is_user_connected(killer) )
{
if( victim != killer )
{
if( cs_get_user_team(victim) != cs_get_user_team(killer) )
{
if( is_user_alive(killer) )
{
if(get_pcvar_num(cvar_hp) == 1) {
set_user_health(killer,get_user_health(killer)+get_pcvar_num(cvar_hp2));
}
if(!read_data(3))
{
gXP[killer] += gpoints_kill
//ColorChat(killer, GREY,"*^x4[^3Ranks^4]^3 You Gained %d XP!", gpoints_kill);
}
else if(read_data(3))
{
gXP[killer] += (gpoints_hs);
// ColorChat(killer, GREY,"*^x4[^3Ranks^4]^3 You Gained %d XP!", gpoints_hs);
}
CheckLevel(killer);
SaveData(killer);
}
}
}
}
return PLUGIN_HANDLED;
}
public CheckLevel(id)
{
if( gXP[id] >= Levels[gLevel[id]] )
{
gLevel[id]++;
new szName[33];
get_user_name(id, szName, charsmax(szName));
ColorChat(id, GREY,"*^x4[^3Ranks^4]^3 Congratulations You are [Level: %i/%i] with Title %s!", gLevel[id], TOTALLEVELS, LevelNames[gLevel[id]-1]);
}
}
public CmdShowHud (id)
{
if (is_user_connected(id) && gXP[id]>=0) {
set_hudmessage(random_num(70,255), random_num(70,255), 0, 0.34, 0.03, 0, 6.0,4.0, 0.1, 0.2, 2)
ShowSyncHudMsg(id, g_msgsync, "*[Ranks]Level: %i/%i | RankName: %s | XP: %i", gLevel[id], TOTALLEVELS , LevelNames[gLevel[id]-1], gXP[id] )
}
}
public client_connect(id)
{
LoadData(id);
if(gXP[id] == 0 && gLevel[id] == 0) {
gLevel[id] = 1;
gXP[id] = 0
}
if( gXP[id] > 0 && gLevel[id] == 0){
gLevel[id] = 1;
}
}
public client_disconnect(id)
{
SaveData(id);
gXP[id] = 0;
gLevel[id] = 0;
}
public client_putinserver(id) set_task(1.0,"CmdShowHud",id,_,_,"b")
public SaveData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s", name);
format(vaultdata,255,"%i#%i#",gXP[id],gLevel[id]);
fvault_set_data(g_vault_name,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new name[32];
get_user_name(id,name,31);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",name);
format(vaultdata,255,"%i#%i#",gXP[id],gLevel[id]);
fvault_get_data(g_vault_name,vaultkey,vaultdata,charsmax(vaultdata));
replace_all(vaultdata, 255, "#", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
gXP[id] = str_to_num(playerxp);
gLevel[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
public addpts(id, level, cid) {
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg11[32],arg22[32],name[32]
read_argv(1, arg11, 31)
read_argv(2, arg22, 31)
new arg23 = str_to_num(arg22)
new player = cmd_target(id, arg11, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
get_user_name(player, name, 31)
if (!player || is_user_bot(player))
return PLUGIN_HANDLED
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",name);
format(vaultdata,255,"%i",gXP[player]);
fvault_get_data(g_vault_name, vaultkey,vaultdata,charsmax(vaultdata))
new data[255];
formatex(data, charsmax(data), "%i", str_to_num(vaultdata) + arg23);
fvault_set_data(g_vault_name, name, data)
gXP[player] = str_to_num(data)
client_print(id, print_console, "Successfuly added xp to %s",name)
return PLUGIN_HANDLED
}
public hook_say(client)
{
new said[192];
read_args(said, sizeof(said) - 1);
remove_quotes(said);
new name[32];
get_user_name(client, name, sizeof(name) - 1);
new alive = is_user_alive(client);
new tag[9];
if( cs_get_user_team(client) == CS_TEAM_SPECTATOR )
{
copy(tag, sizeof(tag) - 1, "*SPEC* ");
}
else if( !alive )
{
copy(tag, sizeof(tag) - 1, "*DEAD* ");
}
if(gXP[client]>=0) {
new admin = get_tag_index(client)
new message[192];
formatex(message, sizeof(message) - 1, "^x01%s^x04%s^x04 %s^x03 %s^x01 : %s", tag, g_szTag[admin], LevelNames[gLevel[client]-1], name, said);
if (contain(message, "@") != -1) {
return PLUGIN_HANDLED
}
for( new i = 1; i <= g_players; i++ )
{
if(!is_user_connected(i) || is_user_alive(i) != alive ) continue
message_begin(MSG_ONE_UNRELIABLE, g_msgid_SayText, _, i);
write_byte(client);
write_string(message);
message_end();
}
}
return PLUGIN_HANDLED_MAIN
}
public hook_teamsay(client)
{
new said[192];
read_args(said, sizeof(said) - 1);
remove_quotes(said);
new name[32];
get_user_name(client, name, sizeof(name) - 1);
new alive = is_user_alive(client);
new CsTeams:team = cs_get_user_team(client);
if(gXP[client]>=0) {
new admin = get_tag_index(client)
new message[192];
formatex(message, sizeof(message) - 1, "^x01%s^x04%s^x04 %s^x03 %s^x01 : %s", g_team_names[team],g_szTag[admin], LevelNames[gLevel[client]-1],name, said);
if (contain(message, "@") != -1) {
return PLUGIN_HANDLED
}
for( new i = 1; i <= g_players; i++ )
{
if(!is_user_connected(i) || is_user_alive(i) != alive || get_user_team(i) != get_user_team(client)) continue
message_begin(MSG_ONE_UNRELIABLE, g_msgid_SayText, _, i);
write_byte(client);
write_string(message);
message_end();
}
}
return PLUGIN_HANDLED_MAIN
}
public setmenu1( id ) {
if(get_user_flags(id) & ADMIN_RCON) {
new menu = menu_create( "\rChoose XP to Given!:", "menu_handler2" );
menu_additem( menu, "\w15 XP", "", 0 );
menu_additem( menu, "\w20 XP", "", 0 );
menu_additem( menu, "\w100 XP", "", 0 );
menu_additem( menu, "\w500 XP", "", 0 );
menu_additem( menu, "\w1000 XP", "", 0 );
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL );
menu_display( id, menu, 0 );
} else {
ColorChat(id,GREEN,"Nqmash nujnite prava za dostup!");
}
}
public menu_handler2( id, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new szData[6], szName[64];
new item_access, item_callback;
menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
switch( item )
{
case 0:
{
xp = 15;
}
case 1:
{
xp = 20
}
case 2:
{
xp = 100
}
case 3:
{
xp = 500
}
case 4:
{
xp = 1000
}
}
setmenu(id)
menu_destroy( menu );
return PLUGIN_HANDLED;
}
public setmenu(id) {
new menu = menu_create( "\rXP Set Menu \y[PlayerRanks]:", "menu_handler" );
new players[32], pnum, tempid;
new szName[32], szUserId[32];
get_players( players, pnum, "c" );
for ( new i; i<pnum; i++ )
{
tempid = players[i];
if(!is_user_connected(tempid))
break;
get_user_name( tempid, szName, charsmax( szName ) );
formatex( szUserId, charsmax( szUserId ), "%d", get_user_userid( tempid ) );
menu_additem( menu, szName, szUserId, 0 );
}
menu_display( id, menu, 0 );
}
public menu_handler( id, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new szData[6], szName[64];
new item_access, item_callback;
menu_item_getinfo( menu, item, item_access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
new userid = str_to_num( szData );
new player = find_player( "k", userid );
if ( player && is_user_alive( player ) )
{
new szname[32]
get_user_name(player,szname,charsmax(szname))
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",szname);
format(vaultdata,255,"%i",gXP[player]);
fvault_get_data(g_vault_name, vaultkey,vaultdata,charsmax(vaultdata))
new data[255];
formatex(data, charsmax(data), "%i", str_to_num(vaultdata) + xp);
fvault_set_data(g_vault_name, szname, data)
gXP[player] = gXP[player] + xp
SaveData(player)
ColorChat(id,GREEN,"Vie dobavihte %d XP na igrach %s, toi veche e s %d XP",xp,szname,gXP[player]);
}
setmenu(id)
menu_destroy( menu );
return PLUGIN_HANDLED;
}
//some useful to me :) stocks
get_tag_index(id)
{
new flags = get_user_flags(id)
for(new i = 1; i < sizeof(g_iTagFlag); i++)
{
if(check_admin_flag(flags, g_iTagFlag[i]))
{
return i
}
}
return 0
}
check_admin_flag(flags, flag)
{
if(flag == ADMIN_ADMIN)
{
return ((flags & ~ADMIN_USER) > 0)
}
else if(flag == ADMIN_ALL)
{
return 1
}
return (flags & flag)
}
if you are not satisfied i can give you more, just say in the topic
|
|