Raised This Month: $51 Target: $400
 12% 

XP Based Plugin - Tutorial!


Post New Thread Reply   
 
Thread Tools Display Modes
BOYSplayCS
BANNED
Join Date: Apr 2008
Location: Gainesville, FL
Old 04-21-2009 , 11:13   Re: XP Based Plugin - Tutorial!
Reply With Quote #171

Woops, didn't notice that. Thanks for catching my mistake.

PHP Code:
new const LEVELS[] = {
    
1000
    
2000
    
3000,
    
4000,
    
5000,
    
6000,
    
7000,
    
8000,
    
9000,
   
10000,
   
11000,
   
12000,
   
13000,
   
14000,
   
15000,
   
16000,
   
17000,
   
18000,
   
19000

BOYSplayCS is offline
tlch0324
Senior Member
Join Date: Jan 2007
Old 04-21-2009 , 11:54   Re: XP Based Plugin - Tutorial!
Reply With Quote #172

I delete the classes but the plugin not work=[
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <vault>
new PlayerXP[33]
new 
PlayerLevel[33]
new 
msgtext
new const LEVELS[20] = {
    
1000
    
2000
    
3000,
    
4000,
    
5000,
    
6000,
    
7000,
    
8000,
    
9000,
   
10000,
   
11000,
   
12000,
   
13000,
   
14000,
   
15000,
   
16000,
   
17000,
   
18000,
   
19000,
   
20000
}
public 
plugin_init()
{
    
register_plugin("XPLEVEL""1.0""REN")
    
register_cvar("amx_xpmod""1")
    
register_event("DeathMsg""DeathMsg""a"
    
register_cvar("XP_per_kill""20")
    
register_event("ResetHUD""ResetHud""b")
    
register_clcmd("xp","PlayerXP")
    
msgtext get_user_msgid("StatusText"
}
public 
SaveXP(id)
{
    new 
authid[32]; 
    
get_user_authid(id,authid,31); 
    new 
vaultkey[64], vaultdata[64]; 
    
format(vaultkey,63,"%s-xp",authid); 
    
format(vaultdata,63,"%d",PlayerXP[id]); 
    
set_vaultdata(vaultkey,vaultdata); 
    
format(vaultkey,63,"%s-level",authid); 
    
format(vaultdata,63,"%d",PlayerLevel[id]); 
    
set_vaultdata(vaultkey,vaultdata);

public 
LoadXP(id)
{
    new 
authid[32]; 
    
get_user_authid(id,authid,31); 
    new 
vaultkey[64], vaultdata[64]; 
    
format(vaultkey,63,"%s-xp",authid); 
    
get_vaultdata(vaultkey,vaultdata,63); 
    
PlayerXP[id] = str_to_num(vaultdata);   
    
format(vaultkey,63,"%s-level",authid); 
    
get_vaultdata(vaultkey,vaultdata,63);
    
PlayerLevel[id] = str_to_num(vaultdata);  

public 
client_connect(id)
{
    if(
get_cvar_num("SaveXP") == 1) {
       
         
LoadXP(id)
         
client_print(idprint_chat"XP Loaded!")
         
client_print(idprint_chat"LV %s XP %s "PlayerLevel[id], PlayerXP[id])
    }
}
public 
client_disconnect(id)
{
    if(
get_cvar_num("SaveXP") == 1) {
    
         
SaveXP(id)
    }
}
public 
DeathMsg()
{
    if(
get_cvar_num("amx_xpmod") == 1) {
         return 
PLUGIN_HANDLED
    
}
    
    new 
attacker read_data(1)
    
PlayerXP[attacker] += get_cvar_num("XP_per_kill"
    
    if(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {
     
         
PlayerLevel[attacker] += 1
         
         client_print
(attackerprint_chat"LV up!Your level: %i!"PlayerLevel[attacker])
         if(
get_cvar_num("SaveXP") == 1) {
 
              
SaveXP(attacker)
         }
         
         
ShowHUD(attacker)
    }   
    
    
ShowHUD(attacker)
    
    return 
PLUGIN_CONTINUE
}
public 
ShowHUD(id)    

    new 
HUD[51]
    
format(HUD50"[%s]LV: %i XP: %i"PlayerLevel[id], PlayerXP[id]) 
    
message_begin(MSG_ONEmsgtext, {0,0,0}, id
    
write_byte(0
    
write_string(HUD
    
message_end() 
    return


Last edited by tlch0324; 04-21-2009 at 12:05.
tlch0324 is offline
BOYSplayCS
BANNED
Join Date: Apr 2008
Location: Gainesville, FL
Old 04-21-2009 , 16:20   Re: XP Based Plugin - Tutorial!
Reply With Quote #173

Why would you delete the classes?

Keep the classes, just use the code I provided toy.
BOYSplayCS is offline
padilha007
Senior Member
Join Date: Jul 2008
Old 04-22-2009 , 12:53   Re: XP Based Plugin - Tutorial!
Reply With Quote #174

This can help you;

PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <Vexd_Utilities>
#include <fakemeta>
#include <engine>
#include <fun>
#include <csx>

//Max levels
#define MAXLEVELS 9

#define OFFSET_MONEY 115
#define OFFSET_TEAM 114
#define OFFSET_MONEY 115
#define OFFSET_DEATH 444

#define h1_dam 600 // head
#define h2_dam 400  // body
#define h3_dam 350  // stomach
#define h4_dam 100  // arm
#define h6_dam 100  // leg

#define ARMOR_RATIO 0.2    // Armor Takes 80% of the damage (0.2 in the SDK)
#define ARMOR_BONUS 0.5    // Each Point of Armor is worth 1/x points of health (0.5 in the SDK)

#define get_user_money(%1)        get_offset_value(%1,OFFSET_MONEY)
#define set_user_money(%1,%2)    set_offset_value(%1,OFFSET_MONEY,%2)

//Heer you can add more levels
new const LEVELS[MAXLEVELS] = {
    
200,
    
300,
    
400,
    
500,
    
600,
    
700,
    
800,
    
900,
    
1000
}

// Plugin Version
#define VERSION    "1.3"

/* Thunder sound */
new const thunder_sound[] = "ambience/thunder_clap.wav";

//Variables that store the players lv xp 
new PlayerXP[33],PlayerLevel[33], Porcentagem[33], gXPGiven[33], movel[33], checkCount[33], blinkSpot[33][3], origBlinkSpot[33][3], g_lastPosition[33][3];

//Pcvars
new XP_KillXP_KnifeXP_HsXP_PerfectXPXP_DefuseXP_Plant;

// Sprites
new gSpriteSmokegSpriteFiregSpriteBurninggSpriteLightningg_smokeg_lightningg_msgStatusTextg_msgclcorpse,
    
g_msgDeathMsggmsgScoreInfog_msgMoneygmsgDamagebeam;

// Constantes para verificar Players existentes em caso de linux
const OFFSET_LINUX 5
const OFFSET_CSTEAMS 114

public plugin_init()
{
    
register_plugin("Real XP Mod |*-*|"VERSION"Alliedmods Forum / Yokil SpyWare")
    
    
// Amx_load para ADM AJuda para jogador
    
register_concmd("amx_load"            ,    "darxp")
    
register_clcmd("say"                ,    "cl_say")
    
    
//events
    
register_event("DeathMsg""eDeath""a")
    
register_event("DeathMsg""level3_death""a")
    
    
register_cvar("xp_version",    VERSIONFCVAR_SERVER|FCVAR_SPONLY);
    
set_cvar_string("xp_version",    VERSION);
    
    
RegisterHam(Ham_Spawn,"player","fwHamPlayerSpawnPost"1)
    
    
register_event("Damage""lvl2_damage""b""2!0")
    
register_event("Damage""lvl5_damage""b""2!0")
    
register_event("Damage""lvl8_damage""b""2!0")
    
    
// Msg's
    
g_msgStatusText    get_user_msgid("StatusText");
    
g_msgclcorpse    get_user_msgid"ClCorpse" );
    
gmsgScoreInfo    get_user_msgid("ScoreInfo");
    
g_msgDeathMsg    get_user_msgid("DeathMsg");
    
gmsgDamage         get_user_msgid("Damage");
    
g_msgMoney        get_user_msgid("Money");
    
    
// Comandos
    
register_srvcmd("xp_extradamage"    ,    "svrExtraDamage")
    
    
//cvars
    
XP            =    register_cvar("amx_xp","0")
    
XP_Kill        =    register_cvar("XP_per_kill""10")
    
XP_Hs        =    register_cvar("XP_hs_bonus","10")
    
XP_Knife    =    register_cvar("XP_knife_bonus","10")
    
XP_Defuse    =    register_cvar("XP_defuse","10")
    
XP_Perfect    =    register_cvar("XP_perfect","10")
    
XP_Plant    =    register_cvar("XP_plant","10")
    
    
// Forwards
    
register_forward(FM_PlayerPreThink"fwd_PreThink");
}

public 
plugin_precache()
{
    
g_lightning precache_model"sprites/lgtning.spr" );
    
g_smoke precache_model"sprites/steam1.spr" );
    
gSpriteLightning precache_model("sprites/lgtning.spr");
    
gSpriteSmoke precache_model("sprites/steam1.spr");
    
gSpriteFire precache_model("sprites/lgtning.spr");
    
gSpriteBurning precache_model("sprites/blue_flame_big.spr");
    
precache_sound("lightnin.wav");
    
precache_sound("weapons/xbow_hitbod2.wav");
    
precache_model("models/shell.mdl")
    
precache_sound("weapons/electro5.wav")
    
beam precache_model("sprites/zbeam4.spr")
}

public 
cl_say(id)
{
    if(
get_pcvar_num(XP) == 1)
    {
        if(!
is_user_connected(id))
            return 
PLUGIN_HANDLED
        
        
static said[192]
        
read_args(said191)
        
remove_quotes(said)
        
        new 
pos
        
if ( said[pos] == '/' pos++
        
        if ( 
equali(said[pos], "ajuda") ) {
            
            
func_ajuda(id)
            return 
PLUGIN_CONTINUE
        
}
        else if ( 
equali(said[pos], "jogadores") ) {
            
            
func_lista(id)
            return 
PLUGIN_CONTINUE
        
}
    }
    
    return 
PLUGIN_CONTINUE
}

public 
func_ajuda(id)
{
    if(
get_pcvar_num(XP) == 0)
        return 
PLUGIN_HANDLED
    
    show_motd
(id,"xpmod.txt","Real XP Mod")
    
    return 
PLUGIN_HANDLED
}

public 
func_lista(id)
{
    new 
len 1500
    
new buffer[1501]
    new 
0
    
    n 
+= copy(buffer[n],len-n,"<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><body><pre>^n")
    
+= copy(buffer[n],len-n,"Players XP:^n^n")
    
    new 
pidname[32], teamName[5]
    for ( new 
team 2team >= 0team-- )
    {
        for ( new 
0get_maxplayers(); x++ )
        {
            
pid x
            
            
if ( get_user_team(pid) != team ) continue
            
            if(
is_user_connected(pid))
            {
                
get_user_name(pidname31)
                
                
teamName[0] = '^0'
                
if ( get_user_team(pid) == copy(teamName4"TR :")
                else if ( 
get_user_team(pid) == copy(teamName4"CT :")
                else 
copy(teamName4"SPEC :")
                
                
+= formatex(buffer[n], len-n"%s - %s (Level %d)(XP = %d)^n^n"teamNamenamePlayerLevel[pid], PlayerXP[pid])
            }
        }
    }

    
+= copy(buffer[n], len-n"</pre></body></html>")

    
show_motd(idbuffer"Xp de todos os jogadores")

    return 
PLUGIN_HANDLED
}

public 
darxp(id)
{
    if (!(
get_user_flags(id)&ADMIN_SLAY) || get_pcvar_num(XP) == 0) {
    return 
PLUGIN_HANDLED
    
}

    new 
cmd[32], arg[32]

    
read_argv(0,cmd,31)
    
read_argv(1,arg,31)

    
Porcentagem[id] = 1500
    
    
new lvl str_to_num(arg)

    
PlayerLevel[id] = lvl

    ShowHud
(id)
    
    return 
PLUGIN_CONTINUE
}

// Example
public fwHamPlayerSpawnPost(id)
{
    if (
is_user_alive(id) && get_pcvar_num(XP) == 1
    {
        
Porcentagem[id] = 1500
        
        ShowHud
(id)
        
        
set_user_gravity(id1.0)
    }
}

public 
eDeath(  ) 
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED
    
    
//Get attacker ,weapon and hs
    
new headshot,attacker read_data)
    if(
attacker)
    {
        new 
weapon get_user_weapon(attacker,headshot,headshot)
        
headshot read_data)
        new 
health get_user_health(attacker)
        
        
//Increase xp
        
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
        
        
//Give bonus xp if he got hs
        
if(headshot)
            
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
            
        
// Gives bonus if attacker has full hp
        
if(health == 100)
            
PlayerXP[attacker] += get_pcvar_num(XP_Perfect)
            
        
//Give bonus xp if the gun is a knife
        
if(weapon == CSW_KNIFE)
            
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
        
        
//Lv up if he have enugh xp
        
if(PlayerLevel[attacker] != 9)
        {
            while(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
            {
                
PlayerLevel[attacker] += 1
                client_print
(attackerprint_chat"[Real Experience Mod] Voce passou para o level %i!",PlayerLevel[attacker])
            }
        }
        
        
//Show the hud and saves his data
        
ShowHud(attacker)
    }
    
    return 
PLUGIN_CONTINUE
}

public 
fwd_PreThink(id)
{
    if(
get_pcvar_num(XP) == 0)
    {
        
set_pev(idpev_maxspeed250.0)
        
set_pev(idpev_gravity1.0)
        return 
PLUGIN_HANDLED
    
}
    
    new    
player_min    =    get_user_time(id,1);
    
player_min player_min 60
    
    
if ( Porcentagem[id] < 1500 )
    {
        
Porcentagem[id] += 1
        ShowHud
(id)
    }
    
    
detector(id)
    
    if(
PlayerLevel[id] == && movel[id] == || PlayerLevel[id] == && movel[id] == 0)
    {
        
set_pev(idpev_maxspeed320.0)
        
set_pev(idpev_gravity0.9)
    }
    
    if(
PlayerLevel[id] == && movel[id] == || PlayerLevel[id] == && movel[id] == 0)
    {
        
set_pev(idpev_maxspeed240.0)
        
set_pev(idpev_gravity0.6)
    }
    
    if(
PlayerLevel[id] == && movel[id] == 0)
    {
        
set_pev(idpev_maxspeed340.0)
        
set_pev(idpev_gravity0.7)
    }
    
    if (
pev(id,pev_button) & IN_USE)
    {
        if (
is_user_alive(id) && Porcentagem[id] >= 1500
        {
            if (
PlayerLevel[id] == 4)
            {
                new 
aimvec[3]
                new 
tidtbody
                
                
// Get weapon to saving
                
new clipammoweaponID get_user_weapon(idclipammo)
                
                
// Get position from eyes
                
get_user_origin(idaimvec3)
                
// Get targeted player
                
get_user_aiming(idtidtbody)
                
                if(
is_user_alive(tid) && fm_get_user_team(id) != fm_get_user_team(tid))
                {
                    if(
weaponID != CSW_KNIFE) {
                        
// Switch weapon on knife
                        
engclient_cmd(id,"weapon_knife")
                    }
                    
                    
// Throw blue lightnings
                    
lightningEffects(idaimvec)
                    
                    
emit_sound(tid,CHAN_BODY"weapons/xbow_hitbod2.wav"1.0ATTN_NORM0PITCH_NORM)
                    
                    new 
damage
                    
switch(tbody) {
                        case 
1damage h1_dam
                        
case 2damage h2_dam
                        
case 3damage h3_dam
                        
case 4damage h4_dam
                        
case 5damage h4_dam
                        
case 6damage h6_dam
                        
case 7damage h6_dam
                    
}
                    
                    
// Make damage to target
                    
shExtraDamage(tididdamage"Meteoro")
                    
                    
//Increase xp
                    
PlayerXP[id] += get_pcvar_num(XP_Kill)
                    
                    
Porcentagem[id] = 0
                    
                    ShowHud
(id)
                }
            }
            
            if (
PlayerLevel[id] == 5)
            {
                
// Pegar origem
                
get_user_origin(id,blinkSpot[id],3)
                
                
// Botar cordenadas
                
origBlinkSpot[id][0] = blinkSpot[id][0]
                
origBlinkSpot[id][1] = blinkSpot[id][1]
                
origBlinkSpot[id][2] = blinkSpot[id][2]
                
                
// Botar configuração
                
blinkSpot[id][2] += 45
                
                
// Botar nova origem
                
set_user_origin(id,blinkSpot[id])
                
                
// Determina a origem padrão
                
checkCount[id] = 1
                
                
// Checa a posição
                
positionChangeTimer(id)
                
                
// evitar que use novamente
                
Porcentagem[id] = 0
                
                ShowHud
(id)
            }
            
            
            if (
PlayerLevel[id] == 6)
            {
                new 
tidtbody
                
                
// Get targeted player
                
get_user_aiming(idtidtbody)
                
                
// if looking at something
                
if(is_user_alive(tid))
                {
                    
                    
// Get weapon to saving
                    
new clipammoweaponID get_user_weapon(idclipammo)
                    
                    if(
weaponID != CSW_KNIFE) {
                        
// Switch weapon on knife
                        
engclient_cmd(id,"weapon_knife")
                    }
                    
                    if(
fm_get_user_team(id) != fm_get_user_team(tid))
                    {
                        
// get target's origin
                        
new vorigin], pos];
                        
get_user_origintidvorigin );
                        
                        
// modify origins
                        
vorigin] -= 26;
                        
pos] = vorigin] + 150;
                        
pos] = vorigin] + 150;
                        
pos] = vorigin] + 800;
                        
                        
// block ClCorpse
                        
set_msg_blockg_msgclcorpseBLOCK_ONCE );
                        
                        new 
damage
                        
switch(tbody) {
                            case 
1damage h1_dam
                            
case 2damage h2_dam
                            
case 3damage h3_dam
                            
case 4damage h4_dam
                            
case 5damage h4_dam
                            
case 6damage h6_dam
                            
case 7damage h6_dam
                        
}
                        
                        
// Make damage to target
                        
shExtraDamage(tididdamage"Raio")
                        
                        
// create lightning bolt
                        
Thunderposvorigin );
                        
                        
// create smoke
                        
Smokevorigin1010 );
                        
                        
// create blood
                        
Bloodvorigin );
                        
                        
//Increase xp
                        
PlayerXP[id] += get_pcvar_num(XP_Kill)
                        
                        
Porcentagem[id] = 0
                        
                        ShowHud
(id)
                    }
                }
            }
            
            if (
PlayerLevel[id] == 7)
            {
                new 
tidtbody
                
                
// Get targeted player
                
get_user_aiming(idtidtbody)
                
                
// if looking at something
                
if(is_user_alive(tid))
                {
                    
// Get weapon to saving
                    
new clipammoweaponID get_user_weapon(idclipammo)
                    
                    if(
weaponID != CSW_KNIFE) {
                        
// Switch weapon on knife
                        
engclient_cmd(id,"weapon_knife")
                    }
                    
                    if(
fm_get_user_team(id) != fm_get_user_team(tid))
                    {
                        new 
Float:vOrigin[3]
                        new 
Float:vAngles[3]
                        
entity_get_vector(idEV_VEC_originvOrigin)
                        
vOrigin[2] = vOrigin[2] + 12
                        entity_get_vector
(idEV_VEC_v_anglevAngles)
                        
                        new 
NewEnt create_entity("info_target")
                        
entity_set_string(NewEntEV_SZ_classname"RubberBullet")
                        
                        
entity_set_model(NewEnt"models/shell.mdl")
                        
                        
entity_set_vector(NewEntEV_VEC_originvOrigin)
                        
entity_set_vector(NewEntEV_VEC_anglesvAngles)
                        
entity_set_vector(NewEntEV_VEC_v_anglevAngles)
                        
entity_set_vector(NewEntEV_VEC_oldoriginvOrigin)
                        
                        
entity_set_int(NewEntEV_INT_solid2)
                        
entity_set_int(NewEntEV_INT_movetype5)
                        
entity_set_edict(NewEntEV_ENT_ownerid)
                        
                        new 
Float:MinBox[3] = {-1.0, -1.0, -1.0}
                        new 
Float:MaxBox[3] = {1.01.01.0}
                        
entity_set_vector(NewEntEV_VEC_minsMinBox)
                        
entity_set_vector(NewEntEV_VEC_maxsMaxBox)
                        
                        new 
Float:fNewVelocity[3]
                        
VelocityByAim(id3000fNewVelocity)
                        
entity_set_vector(NewEntEV_VEC_velocityfNewVelocity)
                        
                        
// Trail on entity. It's flawed by not being removable, so make it last long.
                        
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
                        
write_byte(22)        // TE_BEAMFOLLOW
                        
write_short(NewEnt)    // entity:attachment to follow
                        
write_short(beam)    // sprite index
                        
write_byte(3)    // life in 0.1's
                        
write_byte(1)        // line width in 0.1's
                        
write_byte(200)    //r,g,b
                        
write_byte(200)
                        
write_byte(70)
                        
write_byte(120)    // brightness
                        
message_end()
                        
                        new 
damage
                        
switch(tbody) {
                            case 
1damage h1_dam
                            
case 2damage h2_dam
                            
case 3damage h3_dam
                            
case 4damage h4_dam
                            
case 5damage h4_dam
                            
case 6damage h6_dam
                            
case 7damage h6_dam
                        
}
                        
                        
// som
                        
emit_sound(tid,CHAN_BODY"weapons/deagle-1.wav"1.0ATTN_NORM0PITCH_NORM)
                        
                        
// Make damage to target
                        
shExtraDamage(tididdamage"Bola de fogo")
                        
                        
set_task(30.0"remove_bullet"NewEnt)
                        
                        
//Increase xp
                        
PlayerXP[id] += get_pcvar_num(XP_Kill)
                        
                        
// evitar que use novamente
                        
Porcentagem[id] = 0
                        
                        ShowHud
(id)
                    }
                }
            }
            
            if (
PlayerLevel[id] == 9)
            {
                new 
rdm random(2)
                if (
rdm == 0)
                {
                    new 
aimvec[3]
                    new 
tidtbody
                    
                    
// Get weapon to saving
                    
new clipammoweaponID get_user_weapon(idclipammo)
                    
                    
// Get position from eyes
                    
get_user_origin(idaimvec3)
                    
// Get targeted player
                    
get_user_aiming(idtidtbody)
                    
                    if(
is_user_alive(tid) && fm_get_user_team(id) != fm_get_user_team(tid))
                    {
                        if(
weaponID != CSW_KNIFE) {
                            
// Switch weapon on knife
                            
engclient_cmd(id,"weapon_knife")
                        }
                        
                        
// Throw blue lightnings
                        
lightningEffects(idaimvec)
                        
                        
emit_sound(tid,CHAN_BODY"weapons/xbow_hitbod2.wav"1.0ATTN_NORM0PITCH_NORM)
                        
                        new 
damage
                        
switch(tbody) {
                            case 
1damage h1_dam
                            
case 2damage h2_dam
                            
case 3damage h3_dam
                            
case 4damage h4_dam
                            
case 5damage h4_dam
                            
case 6damage h6_dam
                            
case 7damage h6_dam
                        
}
                        
                        
// Make damage to target
                        
shExtraDamage(tididdamage"Meteoro")
                        
                        
//Increase xp
                        
PlayerXP[id] += get_pcvar_num(XP_Kill)
                        
                        
Porcentagem[id] = 0
                        
                        ShowHud
(id)
                    }
                }
                
                if (
rdm == 1)
                {
                    new 
tidtbody
                    
                    
// Get targeted player
                    
get_user_aiming(idtidtbody)
                    
                    
// if looking at something
                    
if(is_user_alive(tid))
                    {
                        
                        
// Get weapon to saving
                        
new clipammoweaponID get_user_weapon(idclipammo)
                        
                        if(
weaponID != CSW_KNIFE) {
                            
// Switch weapon on knife
                            
engclient_cmd(id,"weapon_knife")
                        }
                        
                        if(
fm_get_user_team(id) != fm_get_user_team(tid))
                        {
                            
// get target's origin
                            
new vorigin], pos];
                            
get_user_origintidvorigin );
                            
                            
// modify origins
                            
vorigin] -= 26;
                            
pos] = vorigin] + 150;
                            
pos] = vorigin] + 150;
                            
pos] = vorigin] + 800;
                            
                            
// block ClCorpse
                            
set_msg_blockg_msgclcorpseBLOCK_ONCE );
                            
                            new 
damage
                            
switch(tbody) {
                                case 
1damage h1_dam
                                
case 2damage h2_dam
                                
case 3damage h3_dam
                                
case 4damage h4_dam
                                
case 5damage h4_dam
                                
case 6damage h6_dam
                                
case 7damage h6_dam
                            
}
                            
                            
// Make damage to target
                            
shExtraDamage(tididdamage"Raio")
                            
                            
// create lightning bolt
                            
Thunderposvorigin );
                            
                            
// create smoke
                            
Smokevorigin1010 );
                            
                            
// create blood
                            
Bloodvorigin );
                            
                            
//Increase xp
                            
PlayerXP[id] += get_pcvar_num(XP_Kill)
                            
                            
Porcentagem[id] = 0
                            
                            ShowHud
(id)
                        }
                    }
                }
                
                if (
rdm == 2)
                {
                    new 
tidtbody
                    
                    
// Get targeted player
                    
get_user_aiming(idtidtbody)
                    
                    
// if looking at something
                    
if(is_user_alive(tid))
                    {
                        
// Get weapon to saving
                        
new clipammoweaponID get_user_weapon(idclipammo)
                        
                        if(
weaponID != CSW_KNIFE) {
                            
// Switch weapon on knife
                            
engclient_cmd(id,"weapon_knife")
                        }
                        
                        if(
fm_get_user_team(id) != fm_get_user_team(tid))
                        {
                            new 
Float:vOrigin[3]
                            new 
Float:vAngles[3]
                            
entity_get_vector(idEV_VEC_originvOrigin)
                            
vOrigin[2] = vOrigin[2] + 12
                            entity_get_vector
(idEV_VEC_v_anglevAngles)
                            
                            new 
NewEnt create_entity("info_target")
                            
entity_set_string(NewEntEV_SZ_classname"RubberBullet")
                            
                            
entity_set_model(NewEnt"models/shell.mdl")
                            
                            
entity_set_vector(NewEntEV_VEC_originvOrigin)
                            
entity_set_vector(NewEntEV_VEC_anglesvAngles)
                            
entity_set_vector(NewEntEV_VEC_v_anglevAngles)
                            
entity_set_vector(NewEntEV_VEC_oldoriginvOrigin)
                            
                            
entity_set_int(NewEntEV_INT_solid2)
                            
entity_set_int(NewEntEV_INT_movetype5)
                            
entity_set_edict(NewEntEV_ENT_ownerid)
                            
                            new 
Float:MinBox[3] = {-1.0, -1.0, -1.0}
                            new 
Float:MaxBox[3] = {1.01.01.0}
                            
entity_set_vector(NewEntEV_VEC_minsMinBox)
                            
entity_set_vector(NewEntEV_VEC_maxsMaxBox)
                            
                            new 
Float:fNewVelocity[3]
                            
VelocityByAim(id3000fNewVelocity)
                            
entity_set_vector(NewEntEV_VEC_velocityfNewVelocity)
                            
                            
// Trail on entity. It's flawed by not being removable, so make it last long.
                            
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
                            
write_byte(22)        // TE_BEAMFOLLOW
                            
write_short(NewEnt)    // entity:attachment to follow
                            
write_short(beam)    // sprite index
                            
write_byte(3)    // life in 0.1's
                            
write_byte(1)        // line width in 0.1's
                            
write_byte(200)    //r,g,b
                            
write_byte(200)
                            
write_byte(70)
                            
write_byte(120)    // brightness
                            
message_end()
                            
                            new 
damage
                            
switch(tbody) {
                                case 
1damage h1_dam
                                
case 2damage h2_dam
                                
case 3damage h3_dam
                                
case 4damage h4_dam
                                
case 5damage h4_dam
                                
case 6damage h6_dam
                                
case 7damage h6_dam
                            
}
                            
                            
// som
                            
emit_sound(tid,CHAN_BODY"weapons/deagle-1.wav"1.0ATTN_NORM0PITCH_NORM)
                            
                            
// Make damage to target
                            
shExtraDamage(tididdamage"Bola de fogo")
                            
                            
set_task(30.0"remove_bullet"NewEnt)
                            
                            
//Increase xp
                            
PlayerXP[id] += get_pcvar_num(XP_Kill)
                            
                            
// evitar que use novamente
                            
Porcentagem[id] = 0
                            
                            ShowHud
(id)
                        }
                    }
                }
            }
        }
    }

    return 
PLUGIN_CONTINUE
}

public 
detector(id)    //maybe    client    prethink()
{
    new    
target,    body,    distance    =    999999;
    
get_user_aiming(id,    target,    body,    distance);
    
    if(
is_user_connected(target) || !is_user_connected(target) && is_user_alive(id))
    {
        
ShowHud(id)
    }
}

public 
positionChangeTimer(id)
{
    if (!
is_user_alive(id)) return
    
    new 
Float:velocity[3]
    
get_user_origin(idg_lastPosition[id])

    
entity_get_vector(idEV_VEC_velocityvelocity)
    if ( 
velocity[0] == 0.0 && velocity[1] == 0.0 && velocity[2] ) {
        
velocity[0] = 50.0
        velocity
[1] = 50.0
        entity_set_vector
(idEV_VEC_velocityvelocity)
    }

    
set_task(0.1,"positionChangeCheck",id)
}

public 
positionChangeCheck(id)
{
    if (!
is_user_alive(id)) return

    new 
origin[3]
    
get_user_origin(idorigin)

    if ( 
g_lastPosition[id][0] == origin[0] && g_lastPosition[id][1] == origin[1] && g_lastPosition[id][2] == origin[2]) {
        switch(
checkCount[id]) {
            case 
blink_movecheck(id000)            // Original
            
case blink_movecheck(id0080)            // Up
            
case blink_movecheck(id00, -110)        // Down
            
case blink_movecheck(id0300)            // Forward
            
case blink_movecheck(id0, -300)            // Back
            
case blink_movecheck(id, -3000)            // Left
            
case blink_movecheck(id3000)            // Right
            
case blink_movecheck(id, -30300)        // Forward-Left
            
case blink_movecheck(id30300)            // Forward-Right
            
case blink_movecheck(id, -30, -300)        // Back-Left
            
case 10blink_movecheck(id30, -300)        // Back-Right
            
case 11blink_movecheck(id03060)            // Up-Forward
            
case 12blink_movecheck(id030, -110)        // Down-Forward
            
case 13blink_movecheck(id0, -3060)        // Up-Back
            
case 14blink_movecheck(id0, -30, -110)        // Down-Back
            
case 15blink_movecheck(id, -30060)        // Up-Left
            
case 16blink_movecheck(id30060)            // Up-Right
            
case 17blink_movecheck(id, -300, -110)        // Down-Left
            
case 18blink_movecheck(id300, -110)        // Down-Right
            
default: user_kill(id)
        }
        return
    }
}

public 
blink_movecheck(idmXmYmZ)
{
    
blinkSpot[id][0] = origBlinkSpot[id][0] + mX
    blinkSpot
[id][1] = origBlinkSpot[id][1] + mY
    blinkSpot
[id][2] = origBlinkSpot[id][2] + mZ
    set_user_origin
(id,blinkSpot[id])
    
checkCount[id]++
    
positionChangeTimer(id)
}

public 
bomb_defused(defuser)
{
    
PlayerXP[defuser] += get_pcvar_num(XP_Defuse)
    
ShowHud(defuser)
}

public 
bomb_planted(planter)
{
    
PlayerXP[planter] += get_pcvar_num(XP_Plant)
    
ShowHud(planter)
}

public 
level3_death()
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED
    
    
// Indexes (killer and victim)
    
new killer read_data(1)
    new 
victim read_data(2)
    new 
headshot read_data(3)

    if (
PlayerLevel[killer] == && killer != victim)
    {
        
// Health sets
        
if(is_user_connected(killer) && headshot)
        {
            
PlayerXP[killer] += 10
            PlayerXP
[victim] -= 5
        
}
        
        if(
is_user_connected(killer) && !headshot)
        {
            
PlayerXP[killer] += 7
            PlayerXP
[victim] -= 3
        
}
    }
    
    return 
PLUGIN_CONTINUE
}

public 
lvl2_damage(id)
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED

    
new attacker get_user_attacker(id)

    new 
damage read_data(2)
    
    if ( 
PlayerLevel[attacker] == && is_user_alive(attacker) && id != attacker )
    {
        new 
rdm random(10)
        
        if(
rdm == || rdm == || rdm == || rdm == || rdm == 10)
        {
            
// do extra damage
            
new returnDamage floatround5.0 damage )
            
            if (
returnDamage 0)
            {
                
shExtraDamageidattackerreturnDamage"shockwave" )
                
                new 
iRed,iGreen,iBlue,iWidth,iNoise
                iRed 
random_num(0,100)
                
iGreen random_num(0,100)
                
iBlue random_num(100,255)
                
iWidth random_num(10,40)
                
iNoise random_num(10,40)
                
                if(
iRed iBlueiBlue = (iRed 10)
                if(
iGreen iBlueiBlue = (iGreen 10)
                if(
iBlue 255iBlue 255
                
                message_begin
MSG_BROADCASTSVC_TEMPENTITY )
                
write_byte)
                
write_short(attacker)    // start entity
                
write_short(id)    // entity
                
write_short(gSpriteLightning )    // model
                
write_byte// starting frame
                
write_byte15 )  // frame rate
                
write_byte10 )  // life
                
write_byteiWidth )  // line width
                
write_byteiNoise )  // noise amplitude
                
write_byteiRed )    // r, g, b
                
write_byteiGreen )    // r, g, b
                
write_byteiBlue )    // r, g, b
                
write_byte255 )    // brightness
                
write_byte)    // scroll speed
                
message_end()
            }
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
lvl5_damage(id)
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED
    
    
new weaponbodypartattacker get_user_attacker(idweaponbodypart)
    
    if(
id && PlayerLevel[attacker] == || id && PlayerLevel[attacker] == 9)
    {
        if ( !
is_user_alive(id) || attacker <= || attacker 32) return PLUGIN_HANDLED
        
        
new headshot = (bodypart == 1) ? 0
        
        
if ( weapon == CSW_KNIFE && is_user_alive(id) )
        {
            
// do extra damage
            
shExtraDamageidattacker150"knife"headshot)
        }
    }
    
    return 
PLUGIN_CONTINUE
}

public 
lvl8_damage(id)
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED
    
    
if(id)
    {
        new 
attacker get_user_attacker(id)
        
        if(
PlayerLevel[attacker] == && id != attacker)
        {
            
set_user_gravity(id0.1)
            
            
client_cmd(id,"+jump")
            
client_cmd(id,"-jump")
            
            
movel[id] = 1
            
            
new parm[2]
            
            
parm[0] = id
            parm
[1] = attacker
            
            set_task
(0.1,"verificar",parm2"b")
        }
    }
    
    return 
PLUGIN_CONTINUE
}

public 
verificar(parm[])
{
    new 
vitima parm[0]
    new 
attacker parm[1]
    
    if(!
is_user_alive(attacker))
    {
        
movel[vitima] = 0
        
return PLUGIN_HANDLED
    
}
    
    return 
PLUGIN_CONTINUE
}

public 
remove_bullet(bullet)
{
    if(
is_valid_ent(bullet))
        
remove_entity(bullet)
}

// Evento de morte
public EnviarDeathMsg(attackervictim, const nome[])
{
    
message_begin(MSG_BROADCASTg_msgDeathMsg)
    
write_byte(attacker)
    
write_byte(victim)
    
write_byte(1)
    
write_string(nome)
    
message_end()
}

stock shExtraDamage(idattackerdamageweaponDescription[], headshot )
{
    
server_cmd("xp_extradamage ^"%d^" ^"%d^" ^"%d^" ^"%s^" ^"%d^""idattackerdamageweaponDescriptionheadshot )
}

//Our hud message
public ShowHud(id)
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED
    
    
new ammo[64]
    
    if(
PlayerLevel[id] < 8)
        
formatex(ammo63"Level:(%d/%d | XP:%d/%d | Karma:%d%s) "PlayerLevel[id], MAXLEVELSPlayerXP[id], LEVELS[PlayerLevel[id]], Porcentagem[id] / 15"%%")
    
    if(
PlayerLevel[id] > 8)
        
formatex(ammo63"Level:(Completo | Karma:%d%s) "Porcentagem[id] / 15"%%")
    
    if(!
id || !is_user_connected(id))
        return 
PLUGIN_HANDLED;

    
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLEg_msgStatusText, {0,0,0}, id
    
write_byte(0
    
write_string(ammo
    
message_end();
    return 
PLUGIN_HANDLED;
}

//When someone leaves cheek if the xp cvar if on savexp
public client_disconnect(id)
{
    if(
get_pcvar_num(XP) == 0) return PLUGIN_HANDLED
    
    
//After we saved we sets his values to 0 so the guy
    //ho joins later dont get his stuff
    
PlayerXP[id] = 0
    PlayerLevel
[id] = 0
    
    
return PLUGIN_CONTINUE
}

// Publics/ Stocks para os poderes

Thunderstart], end] )
{
    
message_beginMSG_BROADCASTSVC_TEMPENTITY ); 
    
write_byteTE_BEAMPOINTS ); 
    
write_coordstart] ); 
    
write_coordstart] ); 
    
write_coordstart] ); 
    
write_coordend] ); 
    
write_coordend] ); 
    
write_coordend] ); 
    
write_shortg_lightning ); 
    
write_byte);
    
write_byte);
    
write_byte);
    
write_byte20 );
    
write_byte30 );
    
write_byte200 ); 
    
write_byte200 );
    
write_byte200 );
    
write_byte200 );
    
write_byte200 );
    
message_end();
    
    
message_beginMSG_PVSSVC_TEMPENTITYend );
    
write_byteTE_SPARKS );
    
write_coordend]  );
    
write_coordend]);
    
write_coordend] );
    
message_end();
    
    
emit_sound,CHAN_ITEMthunder_sound1.0ATTN_NORM0PITCH_NORM );
}

Smokeiorigin], scaleframerate )
{
    
message_beginMSG_BROADCASTSVC_TEMPENTITY );
    
write_byteTE_SMOKE );
    
write_coordiorigin] );
    
write_coordiorigin] );
    
write_coordiorigin] );
    
write_shortg_smoke );
    
write_bytescale );
    
write_byteframerate );
    
message_end();
}

Bloodiorigin] )
{
    
message_beginMSG_BROADCASTSVC_TEMPENTITY ); 
    
write_byteTE_LAVASPLASH ); 
    
write_coordiorigin] ); 
    
write_coordiorigin] ); 
    
write_coordiorigin] ); 
    
message_end(); 
}

public 
localAddXP(idxp)
{
    if (
xp && PlayerXP[id] + xp PlayerXP[id]) {
        
PlayerXP[id] = 2147483647
    
}
    else if (
xp && (PlayerXP[id] + xp < -250000 || PlayerXP[id] + xp PlayerXP[id])) {
        
PlayerXP[id] = -250000
    
}
    else {
        
PlayerXP[id] += xp
    
}
}


public 
svrExtraDamage()
{
    new 
szid[4],szattacker[4],szdamage[6],weaponDescription[32], szheadshot[4]
    
read_argv(1,szid,3)
    
read_argv(2,szattacker,3)
    
read_argv(3,szdamage,5)
    
read_argv(4,weaponDescription,31)
    
read_argv(5,szheadshot,3)

    new 
id str_to_num(szid)
    new 
attacker str_to_num(szattacker)
    new 
damage str_to_num(szdamage)
    new 
headshot str_to_num(szheadshot)

    if ( !
is_user_alive(id) || !is_user_connected(attacker) ) return
    if ( 
get_user_godmode(id) ) return
    if ( 
damage <= ) return

    
// *** Damage calculation due to armor from: multiplayer/dlls/player.cpp ***
    
new Float:flNewDamage float(damage) * ARMOR_RATIO
    
new Float:flArmor = (float(damage) - flNewDamage) * ARMOR_BONUS
    
new plrArmor get_user_armor(id)

    
// Does this use more armor than we have figured for?
    
if ( flArmor float(plrArmor) ) {
        
flArmor float(plrArmor)
        
flArmor *= (1/ARMOR_BONUS)
        
flNewDamage float(damage) - flArmor
        plrArmor 
0
    
}
    else {
        
plrArmor floatround(plrArmor flArmor)
    }

    
//Commenting this out so it does the orginal ammount of damage still
    //damage = floatround(flNewDamage)

    //*** End of damage-armor calculations ***

    
new userHealth get_user_health(id)
    new 
FFon get_cvar_num("mp_friendlyfire")
    if (
userHealth damage <= ) {
        new 
bool:kill false
        
if (id == attacker) {
            
kill true
        
}
        else if (
FFon && get_user_team(id) == get_user_team(attacker)) {
            
kill true
            localAddXP
(attacker, -gXPGivenPlayerLevel[id] ] )
            
set_user_frags(attackerget_user_frags(attacker) - 1)
            
client_print(attacker,print_center,"You killed a teammate")
            new 
money get_user_money(attacker)
            if (
money != 0set_user_money(attacker,money 150)
        }
        else if (
get_user_team(id) != get_user_team(attacker)) {
            
kill true
            localAddXP
(attackergXPGivenPlayerLevel[id] ] )
            
set_user_frags(attackerget_user_frags(attacker) + 1)
            new 
money get_user_money(attacker)
            if (
money 16000set_user_money(attacker,money 300)
        }

        if (!
kill) return

        
//Log the Kill
        
logKill(attackeridweaponDescription)

        
//Kill the victim and block the messages
        
MessageBlock(g_msgDeathMsg,BLOCK_ONCE)
        
MessageBlock(gmsgScoreInfo,BLOCK_ONCE)
        
user_kill(id)

        
//user_kill removes a frag, this gives it back
        
set_user_frags(id,get_user_frags(id) + 1)

        
//Replaced HUD death message
        
message_begin(MSG_ALL,g_msgDeathMsg,{0,0,0},0)
        
write_byte(attacker)
        
write_byte(id)
        
write_byte(headshot)
        
write_string(weaponDescription)
        
message_end()

        
//Update killers scorboard with new info
        
message_begin(MSG_ALL,gmsgScoreInfo)
        
write_byte(attacker)
        
write_short(get_user_frags(attacker))
        
write_short(get_user_deaths(attacker))
        
write_short(0)
        
write_short(get_user_team(attacker))
        
message_end()

        
//Update victims scoreboard with correct info
        
message_begin(MSG_ALL,gmsgScoreInfo)
        
write_byte(id)
        
write_short(get_user_frags(id))
        
write_short(get_user_deaths(id))
        
write_short(0)
        
write_short(get_user_team(id))
        
message_end()

    }
    else {
        new 
bool:hurt false
        
if (id == attacker) {
            
hurt true
        
}
        else if (
FFon && get_user_team(id) == get_user_team(attacker)) {
            
hurt true
            
new name[33]
            
get_user_name(attacker,name,32)
            
client_print(0,print_chat,"%s attacked a teammate",name)
        }
        else if (
get_user_team(id) != get_user_team(attacker)) {
            
hurt true
        
}

        if (!
hurt) return

        
set_user_health(iduserHealth damage)
        
set_user_armor(idplrArmor)

        new 
aOrigin[3]
        
get_user_origin(attackeraOrigin)

        
//Damage message
        
message_begin(MSG_ONEgmsgDamage, {0,0,0}, id)
        
write_byte(0// dmg_save
        
write_byte(damage// dmg_take
        
write_long(0// visibleDamageBits
        
write_coord(aOrigin[0]) // damageOrigin.x
        
write_coord(aOrigin[1]) // damageOrigin.y
        
write_coord(aOrigin[2]) // damageOrigin.z
        
message_end()
    }
}

public 
lightningEffects(idaimvec[3])
{
    
emit_sound(idCHAN_ITEM"lightnin.wav"1.0ATTN_NORM0PITCH_NORM)

    new 
origin[3]
    
get_user_origin(idorigin)
    
// Height + 10 (From a stomach on hands)
    
origin[2] = origin[2] + 10

    
// DELIGHT
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(27)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_byte(10)
    
write_byte(19// r, g, b
    
write_byte(97// r, g, b
    
write_byte(255// r, g, b
    
write_byte(3// life
    
write_byte(1// decay
    
message_end()

    for(new 
1<= 5i++)
    {
        
// BEAMENTPOINTS
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(0// TE_BEAMENTPOINTS 0
        
if(== 1) {
            
write_coord(origin[0])
        } else if(
== || == 4) {
            
write_coord(origin[0] + (2))
        } else {
            
write_coord(origin[0] - (2))
        }
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(aimvec[0])
        
write_coord(aimvec[1])
        
write_coord(aimvec[2])
        
write_short(gSpriteFire)
        
write_byte(1// framestart
        
write_byte(10// framerate
        
write_byte(3// life
        
write_byte(50// width
        
write_byte(50// noise
        
write_byte(19// r, g, b
        
write_byte(97// r, g, b
        
write_byte(255// r, g, b
        
write_byte(200// brightness
        
write_byte(200// speed
        
message_end()
    }

    
// Sparks
    
message_begin(MSG_PVSSVC_TEMPENTITY)
    
write_byte(9)
    
write_coord(aimvec[0])
    
write_coord(aimvec[1])
    
write_coord(aimvec[2])
    
message_end()

    
// Fire
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(3)
    
write_coord(aimvec[0])
    
write_coord(aimvec[1])
    
write_coord(aimvec[2])
    
write_short(gSpriteBurning)
    
write_byte(22)
    
write_byte(10)
    
write_byte(0)
    
message_end()

    
// Smoke
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(5)
    
write_coord(aimvec[0])
    
write_coord(aimvec[1])
    
write_coord(aimvec[2])
    
write_short(gSpriteSmoke)// short (sprite index)
    
write_byte(60// byte (scale in 0.1's)
    
write_byte(15// byte (framerate)
    
message_end()

    
// TE_GUNSHOTDECAL
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(109// decal and ricochet sound
    
write_coord(aimvec[0]) // pos
    
write_coord(aimvec[1])
    
write_coord(aimvec[2])
    
write_short(0// I have no idea what thats supposed to be
    
write_byte(random_num(2830)) // decal
    
message_end()

}

// Gets offset data
get_offset_value(idtype)
{
    new 
key = -1
    
switch(type)
    {
        case 
OFFSET_TEAMkey OFFSET_TEAM
        
case OFFSET_MONEY:
        {
            
key OFFSET_MONEY
        
}
        case 
OFFSET_DEATHkey OFFSET_DEATH
    
}
    
    if(
key != -1)
    {
        if(
is_amd64_server()) key += 25
        
return get_pdata_int(idkeyOFFSET_LINUX)
    }
    
    return -
1
}

// Sets offset data
set_offset_value(idtypevalue)
{
    new 
key = -1
    
switch(type)
    {
        case 
OFFSET_TEAMkey OFFSET_TEAM
        
case OFFSET_MONEY:
        {
            
key OFFSET_MONEY
            
            
// Send Money message to update player's HUD
            
message_begin(MSG_ONE_UNRELIABLEg_msgMoney, {0,0,0}, id)
            
write_long(value)
            
write_byte(1)    // Flash (difference between new and old money)
            
message_end()
        }
        case 
OFFSET_DEATHkey OFFSET_DEATH
    
}
    
    if(
key != -1)
    {
        if(
is_amd64_server()) key += 25
        set_pdata_int
(idkeyvalueOFFSET_LINUX)
    }
    
    return 
PLUGIN_CONTINUE
}

stock logKill(idvictimweaponDescription[] ) 
{
    new 
namea[32],namev[32],authida[35],authidv[35],teama[16],teamv[16]
    
    
//Info On Attacker
    
get_user_name(id,namea,31)
    
get_user_team(id,teama,15)
    
get_user_authid(id,authida,34)
    
    
//Info On Victim
    
get_user_name(victim,namev,31)
    
get_user_team(victim,teamv,15)
    
get_user_authid(victim,authidv,34)
    
    
//Log This Kill
    
if(id != victim
    {
        
log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"",
        
namea,get_user_userid(id),authida,teama,namev,get_user_userid(victim),authidv,teamvweaponDescription )
    }
    else 
    {
        
log_message("^"%s<%d><%s><%s>^" committed suicide with ^"%s^"",
        
namea,get_user_userid(id),authida,teamaweaponDescription )
    }
}

// Get User Team
stock fm_get_user_team(id)
{
    return 
get_pdata_int(idOFFSET_CSTEAMSOFFSET_LINUX);

__________________

padilha007 is offline
BOYSplayCS
BANNED
Join Date: Apr 2008
Location: Gainesville, FL
Old 04-24-2009 , 10:28   Re: XP Based Plugin - Tutorial!
Reply With Quote #175

Normally, you don't need to check if a variable is true or false if you're using a pcvar.
BOYSplayCS is offline
xPaw
Retired AMX Mod X Moderator
Join Date: Jul 2008
Old 04-24-2009 , 11:33   Re: XP Based Plugin - Tutorial!
Reply With Quote #176

PHP Code:
    register_event("Damage""lvl2_damage""b""2!0")
    
register_event("Damage""lvl5_damage""b""2!0")
    
register_event("Damage""lvl8_damage""b""2!0"
what the hell?
__________________
xPaw is offline
BOYSplayCS
BANNED
Join Date: Apr 2008
Location: Gainesville, FL
Old 04-24-2009 , 11:53   Re: XP Based Plugin - Tutorial!
Reply With Quote #177

What is this?
PHP Code:
                if(iRed iBlueiBlue = (iRed 10)
                if(
iGreen iBlueiBlue = (iGreen 10)
                if(
iBlue 255iBlue 255 
WHAT?
PHP Code:
if(PlayerLevel[id] < 8)
        
formatex(ammo63"Level:(%d/%d | XP:%d/%d | Karma:%d%s) "PlayerLevel[id], MAXLEVELSPlayerXP[id], LEVELS[PlayerLevel[id]], Porcentagem[id] / 15"%%"
BOYSplayCS is offline
padilha007
Senior Member
Join Date: Jul 2008
Old 04-24-2009 , 12:40   Re: XP Based Plugin - Tutorial!
Reply With Quote #178

@xPawn
more organised

@BOYSplayCS

Look lvl2_damage(id)

PHP Code:
if(PlayerLevel[id] < 8)
        
formatex(ammo63"Level:(%d/%d | XP:%d/%d | Karma:%d%s) "PlayerLevel[id], MAXLEVELSPlayerXP[id], LEVELS[PlayerLevel[id]], Porcentagem[id] / 15"%%"
Read again
__________________

padilha007 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 19:55.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode