View Single Post
Vechta
Veteran Member
Join Date: Jun 2010
Old 10-24-2010 , 06:23   Re: Deathrun XP V1.1 [24.10.2010]
Reply With Quote #4

Added Take & give XP and save methodes by cvar (Name, Steamid, IP)

PHP Code:
/*

Plugin: Deathrun XP
Version: 1.1
Author: KronoS 

Changelog:
____________________________________________________________________
V 1.0
-first release
____________________________________________________________________
V 1.1
-added a hudmessage that shows informations about current level/xp
-added xp reward for killing the enemy with a he grenade
-respawn rewards for some levels
____________________________________________________________________

Credits:
XunTric - xp based tutorial
Il3gal - for his idea

*/

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <nvault>

new const CHAT_TAG[]="[Deathrun XP]"

new const LEVELS[10] = {
     
50
     
100
     
150
     
200,
     
250,
     
300,
    
350,
    
400,
    
450,
    
500
}

new 
drxp_playerxp[33], drxp_playerlevel[33], drxp_respawn[33]
new 
drxp_killdrxp_knifedrxp_grenadedrxp_hsdrxp_savexpg_drxp_vaultsave_methode

public plugin_init()
{
    
register_plugin("Deathrun XP""1.1""KronoS")

    
// Events
    
register_event("HLTV""drxp_newround""a""1=0""2=0")
    
register_event("ResetHUD","drxp_spawn","be")
     
register_event("DeathMsg""drxp_death""a"

    
// Cvars
     
drxp_savexp register_cvar("drxp_savexp","1")
     
drxp_kill register_cvar("drxp_kill""10")
     
drxp_knife register_cvar("drxp_knife","5")
    
drxp_grenade register_cvar("drxp_grenade","15")
     
drxp_hs register_cvar("drxp_hs","10")
    
save_methode register_cvar("drxp_save_methode""2"// 1. Name, 2. Steamid, 3. IP
    
    // nvault
     
g_drxp_vault nvault_open("drxp_mod")
    
    
// Give xp commands
    
register_concmd("drxp_take_exp""cmd_take_exp"ADMIN_BAN"<target> <amount>");  
    
register_concmd("drxp_give_exp""cmd_give_exp"ADMIN_BAN"<target> <amount>");
}

public 
drxp_newround(id)
{
    if((
drxp_playerlevel[id] > 4) && (drxp_playerlevel[id] < 9))
        
drxp_respawn[id] = 1
    
else if(drxp_playerlevel[id] == 10)
        
drxp_respawn[id] = 2
}
public 
drxp_spawn(id)
{
    if(
drxp_playerlevel[id] > 0)
        
set_user_health(idget_user_health(id) + 5*drxp_playerlevel[id])
}

public 
drxp_death() 
{
     new 
iVictim read_data)
     new 
weaponhitplaceattacker get_user_attacker(iVictim,weapon,hitplace)

    new 
victimname[32]
       
get_user_name(iVictim,victimname,31)

     
drxp_playerxp[attacker] += get_pcvar_num(drxp_kill)

     if(
hitplace == HIT_HEAD)
    {
         
drxp_playerxp[attacker] += get_pcvar_num(drxp_hs)
        
client_print(attacker,print_chat,"%s You have received %i XP for killing %s with headshot!"CHAT_TAGget_pcvar_num(drxp_hs), victimname)
    }
     else if(
weapon == CSW_KNIFE)
    {
          
drxp_playerxp[attacker] += get_pcvar_num(drxp_knife)
        
client_print(attacker,print_chat,"%s You have received %i XP for killing %s with knife!"CHAT_TAGget_pcvar_num(drxp_knife), victimname)
    }
    else if(
weapon == CSW_HEGRENADE)
    {
          
drxp_playerxp[attacker] += get_pcvar_num(drxp_grenade)
        
client_print(attacker,print_chat,"%s You have received %i XP for killing %s with HE!"CHAT_TAGget_pcvar_num(drxp_grenade), victimname)
    }
     else if(
drxp_playerxp[attacker] >= LEVELS[drxp_playerlevel[attacker]])
    {
          
drxp_playerlevel[attacker] += 1
        client_print
(attacker,print_chat,"%s Congratulations!You have gained a new level!"CHAT_TAG)
    }
    
drxp_hudinfo(attacker)
     
SaveData(attacker)
    
    if(
drxp_respawn[iVictim] != 0)
        
set_task5.0"drxp_revive"iVictim)
}

public 
drxp_revive(id)
    
ExecuteHamB(Ham_CS_RoundRespawnid)

public 
drxp_hudinfo(id)
{
    
set_hudmessage(2552552550.010.203.03.0)
     
show_hudmessage(id"Level: %i^nXP: %i^n",drxp_playerlevel[id],drxp_playerxp[id])
    
    
set_task2.0"drxp_hudinfo"id)
}

public 
client_connect(id)
{
     if(
get_pcvar_num(drxp_savexp) == 1)
          
LoadData(id)
        
    
set_task10.0"drxp_hudinfo"id)
}

public 
client_disconnect(id)
{
     if(
get_pcvar_num(drxp_savexp) == 1)
          
SaveData(id)
        
     
drxp_playerxp[id] = 0
     drxp_playerlevel
[id] = 0
    drxp_respawn
[id] = 0
}

public 
SaveData(id)
{
    switch(
get_pcvar_num(save_methode))
    {
        case 
1:
        {
            new 
PlayerName[35]
            
get_user_name(id,PlayerName,34)
        
            new 
vaultkey[64],vaultdata[256]
            
format(vaultkey,63,"%s",PlayerName)
            
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id])
            
nvault_set(g_drxp_vault,vaultkey,vaultdata)
        }
        case 
2:
        {
            
            new 
szAuthid[32]
            
get_user_authid(idszAuthid31)
        
            new 
vaultkey[64],vaultdata[256]
            
format(vaultkey,63,"%s"szAuthid)
            
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id])
            
nvault_set(g_drxp_vault,vaultkey,vaultdata)
        }
        case 
3:
        {
            
            new 
szIP[32]
            
get_user_ip(idszIP31)
        
            new 
vaultkey[64],vaultdata[256]
            
format(vaultkey,63,"%s"szIP)
            
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id])
            
nvault_set(g_drxp_vault,vaultkey,vaultdata)
        }
    }
}

public 
LoadData(id)
{
    switch(
get_pcvar_num(save_methode))
    {
        case 
1:
        {
            new 
PlayerName[35]
            
get_user_name(id,PlayerName,34)
        
            new 
vaultkey[64],vaultdata[256]
            
format(vaultkey,63,"%s",PlayerName)
            
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id])
            
nvault_get(g_drxp_vault,vaultkey,vaultdata,255)
        
            
replace_all(vaultdata255"#"" ")
        
            new 
playerxp[32], playerlevel[32]
        
            
parse(vaultdataplayerxp31playerlevel31)
        
            
drxp_playerxp[id] = str_to_num(playerxp)
            
drxp_playerlevel[id] = str_to_num(playerlevel)
        }
        case 
2:
        {
            new 
szAuthid[32]
            
get_user_name(idszAuthid31)
        
            new 
vaultkey[64],vaultdata[256]
            
format(vaultkey,63,"%s",szAuthid)
            
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id])
            
nvault_get(g_drxp_vault,vaultkey,vaultdata,255)
        
            
replace_all(vaultdata255"#"" ")
        
            new 
playerxp[32], playerlevel[32]
        
            
parse(vaultdataplayerxp31playerlevel31)
        
            
drxp_playerxp[id] = str_to_num(playerxp)
            
drxp_playerlevel[id] = str_to_num(playerlevel)
        }
        case 
3:
        {
            new 
szIP[32]
            
get_user_name(idszIP31)
        
            new 
vaultkey[64],vaultdata[256]
            
format(vaultkey,63,"%s"szIP)
            
format(vaultdata,255,"%i#%i#",drxp_playerxp[id],drxp_playerlevel[id])
            
nvault_get(g_drxp_vault,vaultkey,vaultdata,255)
        
            
replace_all(vaultdata255"#"" ")
        
            new 
playerxp[32], playerlevel[32]
        
            
parse(vaultdataplayerxp31playerlevel31)
        
            
drxp_playerxp[id] = str_to_num(playerxp)
            
drxp_playerlevel[id] = str_to_num(playerlevel)
        }
    }
}  

public 
cmd_give_expidlevel,cid 

    if( ! 
cmd_access idlevelcid) ) 
        return 
PLUGIN_HANDLED

    new 
target[32], amount[21], reason[21]; 

    
read_argv1target31 ); 
    
read_argv(2amount20 ); 
    
read_argv3reason20 ); 

    new 
player cmd_targetidtarget); 

    if( ! 
player )  
        return 
PLUGIN_HANDLED

    new 
admin_name[32], player_name[32]; 
    
get_user_nameidadmin_name31 ); 
    
get_user_nameplayerplayer_name31 ); 

    new 
expnum str_to_numamount ); 

    
drxp_playerxp[player] += expnum
    
SaveDataid ); 

    return 
PLUGIN_CONTINUE

  
public 
cmd_take_expidlevel,cid 

    if( ! 
cmd_access idlevelcid) ) 
    return 
PLUGIN_HANDLED

    new 
target[32], amount[21], reason[21]; 

    
read_argv1target31 ); 
    
read_argv2amount20 ); 
    
read_argv3reason20 ); 

    new 
player cmd_targetidtarget); 

    if( ! 
player )  
        return 
PLUGIN_HANDLED

    new 
admin_name[32], player_name[32]; 
    
    
get_user_nameidadmin_name31 ); 
    
get_user_nameplayerplayer_name31 ); 

    new 
expnum str_to_numamount ); 

    
drxp_playerxp[player] -= expnum
    
SaveDataid ); 

    return 
PLUGIN_CONTINUE

Vechta is offline