PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <cstrike>
#include <colorchat>
#include <engine>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#define PLUGIN "lalalla"
#define AUTHOR "DarkGL"
#define VERSION "0.1"
#define ADMIN_COLOR ADMIN_CHAT
new player_xp[33];
new player_xp_all[33];
new level[33];
new rangi[][256]={
"Lv1 Nuevo En El Server",
"Lv2 Ya Llevo Rato Aqui"
new exp[]={
10,
21
}
new zapis;
new msgtext;
new pcvar_exp_round,pcvar_exp_kill_ct,pcvar_exp_kill_tt,pcvar_exp_level,pcvar_exp_hs,pcvar_hud;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("Koniec_Rundy", 2, "1=Round_End")
register_concmd("add_exp","addexp",ADMIN_BAN,"dodaje expa nick i ile")
register_event("DeathMsg", "DeathMsg", "a")
pcvar_exp_round = register_cvar("bb_exp_round","0");
pcvar_exp_kill_ct = register_cvar("bb_exp_kill_ct","1");
pcvar_exp_kill_tt = register_cvar("bb_exp_kill_tt","0");
pcvar_exp_level = register_cvar("bb_exp_level","0");
pcvar_exp_hs = register_cvar("bb_exp_hs","0");
pcvar_hud = register_cvar("bb_hud","0");
zapis = nvault_open("xpd")
register_event("ResetHUD","ShowHUD", "b");
msgtext = get_user_msgid("StatusText");
register_clcmd("say","sayhandle");
register_clcmd ( "say", "hook_say_messages" )
}
public sayhandle( iPlayer )
{
new sz_MessageWrited [ 192 ]
// Guardamos lo que escribió el usuario.
read_args ( sz_MessageWrited, charsmax ( sz_MessageWrited ) )
// Si no escribió nada, no mostramos nada.
if ( equal ( sz_MessageWrited, "" ) )
{
return PLUGIN_HANDLED_MAIN
}
new sz_UserName [ 32 ]
// Obtenemos el nombre del usuario.
get_user_name ( iPlayer, sz_UserName, charsmax ( sz_UserName ) )
// Si el nivel es menor que 0 o mayor que 14 no mostramos tag.
// Puesto que solo hay 15 tags disponibles.
if ( level [ iPlayer ] < 0 || level [ iPlayer ] > 100 )
{
switch( cs_get_user_team( iPlayer ) )
{
if( !(get_user_flags( iPlayer ) & ADMIN_COLOR ) ) // Si no tiene ADMIN_COLOR
{
case CS_TEAM_SPECTATOR: ColorChat( 0, GREY, "%s^1: %s", sz_UserName, sz_MessageWrited ) // Salen en AMARILLO los Msgs
case CS_TEAM_UNASSIGNED: ColorChat( 0, GREY, "%s^1: %s", sz_UserName, sz_MessageWrited )
case CS_TEAM_CT: ColorChat( 0, BLUE, "%s^1: %s", sz_UserName, sz_MessageWrited )
case CS_TEAM_T: ColorChat( 0, RED, "%s^1: %s", sz_UserName, sz_MessageWrited )
}
else // De lo contrario, si tiene ADMIN_COLOR
{
case CS_TEAM_SPECTATOR: ColorChat( 0, GREY, "%s^1:^4 %s", sz_UserName, sz_MessageWrited ) // Salen en VERDE los Msgs
case CS_TEAM_UNASSIGNED: ColorChat( 0, GREY, "%s^1:^4 %s", sz_UserName, sz_MessageWrited )
case CS_TEAM_CT: ColorChat( 0, BLUE, "%s^1:^4 %s", sz_UserName, sz_MessageWrited )
case CS_TEAM_T: ColorChat( 0, RED, "%s^1:^4 %s", sz_UserName, sz_MessageWrited )
}
}
}
else
{
switch( cs_get_user_team( iPlayer ) )
{
if( !(get_user_flags( iPlayer ) & ADMIN_COLOR ) )
{
case CS_TEAM_SPECTATOR: ColorChat( 0, GREY, "^4[%s]^3 %s^1: %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
case CS_TEAM_UNASSIGNED: ColorChat( 0, GREY, "^4[%s]^3 %s^1: %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
case CS_TEAM_CT: ColorChat( 0, BLUE, "^4[%s]^3 %s^1: %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
case CS_TEAM_T: ColorChat( 0, RED, "^4[%s]^3 %s^1: %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
}
else
{
case CS_TEAM_SPECTATOR: ColorChat( 0, GREY, "^4[%s]^3 %s^1:^4 %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
case CS_TEAM_UNASSIGNED: ColorChat( 0, GREY, "^4[%s]^3 %s^1:^4 %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
case CS_TEAM_CT: ColorChat( 0, BLUE, "^4[%s]^3 %s^1:^4 %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
case CS_TEAM_T: ColorChat( 0, RED, "^4[%s]^3 %s^1:^4 %s", rangi [ level [ iPlayer ] ], sz_UserName, sz_MessageWrited )
}
}
}
return PLUGIN_HANDLED_MAIN
}
public plugin_precache(){
precache_sound("darkgl/bb/gained_level.wav");
}
public plugin_end(){
nvault_close(zapis);
}
public Koniec_Rundy(){
for(new i = 1;i<33;i++){
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT){
DajExp(i,get_pcvar_num(pcvar_exp_round));
ColorChat(i,GREEN,"^x03 Ganaste %d por sobrevivir la ronda",get_pcvar_num(pcvar_exp_round));
}
}
}
public addexp(id, level, cid){
if(!cmd_access(id, level, cid, 3)){
return PLUGIN_HANDLED;
}
new arg1[33];
new arg2[10];
read_argv(1,arg1,32);
read_argv(2,arg2,9);
new player = cmd_target(id, arg1, 0);
remove_quotes(arg2);
new exp = str_to_num(arg2);
if(exp != 0 && exp < 0 ){
OdejmijExp(player,exp);
}
else if(exp != 0 && exp > 0 ){
DajExp(player,exp);
}
return PLUGIN_HANDLED;
}
public OdejmijExp(id,ile){
player_xp[id]-=ile;
player_xp_all[id]-=ile;
level[id]=0;
while(true){
if(player_xp_all[id] >= exp[level[id]]){
level[id]++;
//set_hudmessage(random_num(0,255), random_num(0,255),random_num(0,255), -1.0, -1.0, 0, 6.0, 5.0, 0.0, 0.0, -1)
//show_hudmessage(id,"Awansowales na kolejny level (%s)",rangi[level[id]]);
//ColorChat(0,GREEN,"^x03 Ascendido al rango de ^x01 %s jaja :D",rangi[level[id]]);
}
else
{
break;
}
}
}
public DajExp(id,ile){
player_xp[id]+=ile;
player_xp_all[id]+=ile;
new name[64];
get_user_name(id,name,63);
while(true){
if(player_xp_all[id] >= exp[level[id]] && sizeof(rangi) > level[id]){
level[id]++;
ColorChat(0,GREEN,"[JB] ^x03%s subio a ^x01 %s ^x03",name,rangi[level[id]]);
emit_sound(id,CHAN_VOICE,"darkgl/bb/gained_level.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
else
{
break;
}
}
}
public client_connect(id){
player_xp[id] = 0;
player_xp_all[id] = 0;
wczytaj_exp(id);
}
public client_disconnect(id){
zapisz_exp(id);
}
public wczytaj_exp(id){
new vaultkey[64],vaultdata[512];
new authid[64];
get_user_authid(id,authid,63);
format(vaultkey,63,"%s",authid);
nvault_get(zapis,vaultkey,vaultdata,511);
replace_all(vaultdata,256,"#"," ");
new jeden[100],dwa[100]
parse(vaultdata,jeden,99,dwa,99)
player_xp[id] = str_to_num(jeden);
player_xp_all[id] = str_to_num(dwa);
while(true){
if(player_xp_all[id] >= exp[level[id]] && sizeof(rangi) > level[id]){
level[id]++;
}
else
{
break;
}
}
}
public zapisz_exp(id){
new vaultkey[64],vaultdata[512];
new authid[64];
get_user_authid(id,authid,63);
format(vaultkey,63,"%s",authid);
format(vaultdata,511,"%d#%d",player_xp[id],player_xp_all[id]);
nvault_set(zapis,vaultkey,vaultdata)
}
public ShowHUD(id) {
if(is_user_alive(id)){
new HUD[128];
format(HUD, 127,"[%s] Exp actual: %d | Exp todal: %d",rangi[level[id]],player_xp[id],player_xp_all[id]);
if(get_pcvar_num(pcvar_hud) == 0 ){
message_begin(MSG_ONE, msgtext, {0,0,0}, id);
write_byte(0);
write_string(HUD);
message_end();
return PLUGIN_CONTINUE;
}
else
{
set_hudmessage(255, 0, 0, 0.02, 0.63, 0, 6.0, 15.0)
show_hudmessage(id, "%s",HUD)
}
}
return PLUGIN_CONTINUE;
}
public DeathMsg()
{
new kid = read_data(1) //zabojca
new vid = read_data(2) // ofiara
new hs = read_data(3) // ofiara
if(cs_get_user_team(kid)==CS_TEAM_CT && cs_get_user_team(vid)==CS_TEAM_T){
DajExp(kid,get_pcvar_num(pcvar_exp_kill_tt));
new name[64];
get_user_name(vid,name,charsmax(name));
if(hs == 1){
DajExp(kid,get_pcvar_num(pcvar_exp_hs));
}
}
else if(cs_get_user_team(kid)==CS_TEAM_T && cs_get_user_team(vid)==CS_TEAM_CT){
DajExp(kid,get_pcvar_num(pcvar_exp_kill_ct));
new name[64];
get_user_name(vid,name,charsmax(name));
ColorChat(kid,TEAM_COLOR,"Ganastes %d por matar a %s",get_pcvar_num(pcvar_exp_kill_ct),name)
if(hs == 1){
DajExp(kid,get_pcvar_num(pcvar_exp_hs));
}
}
}