Allied Modders en español
[aporte] Dr+xp - Versión para impresión

+- Allied Modders en español (https://amxmodx-es.com)
+-- Foro: AMX Mod X - Plugins (https://amxmodx-es.com/Forum-AMX-Mod-X-Plugins)
+--- Foro: Aportes (https://amxmodx-es.com/Forum-Aportes--40)
+--- Tema: [aporte] Dr+xp (/Thread-aporte-Dr-xp)



[aporte] Dr+xp - player wii solider - 16/04/2014

hola este es mi primer aporte xd bueno primero que nada este sma no es mio. segundo hago este aporte para gente que por hay lo necesita para un futuro (: bueno , de que se trata este dr+xp tenes que matar tt como el mod dr y a medidas que frageas subis nivel/rango algo simple y lindo(? no tiene menu ni nada por el estilo.. solo subis de rango , espero que les guste (: saludos

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <nvault>  
#include <colorchat>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta>

new Level[33], eXP[33]
new 
KillXpHsXpHeXp/*, KnifeXp*/
new gVault

new const szPrefix[] = "[^4DeathRun XP^3] -"

#define MaxLevels 12
#define IsPlayer(%1) ( 1 <= %1 <=  g_iMaxPlayers )
#define TASK_SHOW_HUD 10113

new g_msgHudSync
new bool:is_user_ignored33 ]

new const 
Levels[MaxLevels] = 
{
    
100// Noob #1
    
150// Starter #2
    
200// Beginner #3
    
250// Knifer #4
    
300// Rambo #5
    
350// Butcher #6
    
400// Matrix #7
    
450// Probhop #8
    
550// Freak #9
    
600// Racer #10
    
650// Kill Bill #11
    
700 // Respected Player #12
}
new const 
Prefix[MaxLevels +1][] =
{
    
"Noob"// 0
    
"Starter"// 1
    
"Beginner",  // 2
    
"Learning"// 3
    
"Knifer"// 4
    
"Rambo",  // 5
    
"Butcher"// 6
    
"Matrix"// 7
    
"Probhop"// 8
    
"Freak"// 9
    
"Racer"// 10
    
"Kill Bill"// 11
    
"Respected Player" // 12
}

// Bonus Stuff
new healthperlevel,
    
armorperlevel,
    
speedperlevel,
    
damageperlevel,
    
gravityperlvl
    
new g_iMaxPlayers

// ADMIN CHAT COLORS by ConnorMcLeod
enum _:ADMIN_DATAS 

    
m_szName[32], 
    
m_iFlag 


new const 
AdminsDatas[][ADMIN_DATAS] =  

    {
"[Administrador][STAFF]"ADMIN_RCON}, 
    {
"Semi-MOD"ADMIN_LEVEL_H}, 
    
// {"SuperAdmin", ADMIN_CFG}, 
    
{"Admin"ADMIN_KICK}, 
    {
"VIP"ADMIN_RESERVATION
};

public 
plugin_init() 
{
    
register_plugin("Deathrun XP & Level Mod""0.0.9""Freestyle")
    
    
register_message(get_user_msgid("SayText"),"Message_SayText"); // CREDITS TO ConnorMcLeod
    
    
RegisterHam Ham_Spawn"player""Ham_CheckOthers_Bonus"1);
    
RegisterHam Ham_TakeDamage"player""Ham_CheckDamage_Bonus", .Post false );
    
RegisterHam Ham_Item_PreFrame"player""Ham_CheckSpeed_Bonus"1);
    
    
g_iMaxPlayers get_maxplayers( );
    
    
register_cvar"AdminChatColors_On""1" ); // Admin Tag - Example: [Admin] Freestyle
    
register_cvar"XP_Reward_MSG""1" ); // Message of the XP Gain
    
    // CHAT COMMANDS //
    
register_clcmd "say /xp""ShowPlayerXP")
    
register_clcmd "say_team /xp""ShowPlayerXP")
    
register_clcmd "say /level""ShowPlayerLevel")
    
register_clcmd "say_team /level""ShowPlayerLevel")
    
    
// XP SYSTEM //
    
KillXp    register_cvar("drxp_per_kill""5")
    
HsXp    register_cvar("drxp_per_hs""10")
    
HeXp    register_cvar("drxp_per_nade_kill""10")
    
//KnifeXp    = register_cvar("drxp_per_knife_kill", "10")
    
    // Give & Remove XP //
    
register_concmd "give_xp""CmdAddXP"ADMIN_RCON"<nick, #userid, authid | @all> <xp>" )
    
register_concmd "remove_xp""CmdRemoveXP"ADMIN_RCON"<nick, #userid, authid | @all> <xp>" )
    
    
/* Bonus Stuff */
    
    // Health Per Level //
    
healthperlevel    register_cvar("health_per_lvl""10")
    
    
// Armor Per Level //
    
armorperlevel    register_cvar("armor_per_lvl""10"
    
    
// Speed Per Level //
    
speedperlevel    register_cvar("speed_per_lvl""0")
    
    
// Gravity Per Level //
    
gravityperlvl    register_cvar("gravity_per_lvl""0"// NERVER MORE THAN 66 PER LVL
    
    // Damage Per Level //
    
damageperlevel    register_cvar("damage_per_lvl""0")
    
    
g_msgHudSync CreateHudSyncObj()
}

public 
plugin_cfg( )
{    
    
gVault nvault_open"DEATHRUN_XP" )
    
    if ( 
gVault == INVALID_HANDLE )
        
set_fail_state"Error opening nVault" );
}

/*      INFO ABOUT PERSONAL XP/LEVEL      */
public ShowPlayerXP(id)
{
    
ColorChat(idGREY"%s Tenes ^4%i^3 XP Tu nivel es ^4%s^3!"szPrefixeXP[id], Prefix[Level[id]])
}

public 
ShowPlayerLevel(id)
{
    new 
name[32]
    
get_user_name(idnamesizeof(name) -1)
        
    
ColorChat(idGREY"%s Eres nivel ^4%s^3 con ^4%i^3 XP!"szPrefixPrefix[Level[id]], eXP[id])
}

public 
Ham_CheckDamage_BonuspevVictimpevInflictorpevAttackerFloat:flDamageiDmgBits 

    if( !( 
<= pevAttacker <= g_iMaxPlayers) ) 
    { 
        return 
HAM_HANDLED
    } 
     
    if( !
is_user_alivepevAttacker )  ) 
    { 
        return 
HAM_HANDLED
    } 

    
SetHamParamFloatflDamage + ( get_pcvar_numdamageperlevel ) * LevelpevAttacker ] ) ) 

    return 
HAM_IGNORED


/*      Speed Check      */
public Ham_CheckSpeed_Bonusid )
{
    if( !
is_user_aliveid ) || cs_get_user_teamid ) != CS_TEAM_T )
    {
        return 
HAM_IGNORED;
    }
    
    
set_user_maxspeedid250.0 + ( get_pcvar_num(speedperlevel) * Levelid ] ) );
            
    return 
HAM_IGNORED;
}

/*      HP & AP & Gravity Check      */
public Ham_CheckOthers_Bonus(id)
{
    if( !
is_user_aliveid ) || cs_get_user_teamid ) != CS_TEAM_T )
        return 
HAM_IGNORED;
        
    
// HP Check
    
new HPCheck = ( get_user_health(id) + get_pcvar_num(healthperlevel) * Levelid ] );
    
set_user_healthidHPCheck );
    
    
// AP Check
    
new APCheck = ( get_user_armor(id) + get_pcvar_num(armorperlevel) * Levelid ] );
    
set_user_armoridAPCheck );
    
    
// Gravity
    
new GRAVITYCheck 800 - ( get_pcvar_numgravityperlvl ) * Levelid ] );
    
    if(
get_pcvar_num(gravityperlvl) > 66)
    {
        
set_user_gravityidfloat) / 800.0 );
    }
    else
    {
        
set_user_gravityidfloatGRAVITYCheck ) / 800.0 );
    }
    
    
remove_taskTASK_SHOW_HUD id );        

    
set_task(0.1"ShowHud"TASK_SHOW_HUD id)
            
    return 
HAM_IGNORED;
}

/*      Respected Player Join / Leave Stuff      */

public LvL_12_PlayerJoin(id)
{
    new 
name[32]
    
get_user_name(idnamesizeof(name) -1)
        
    
ColorChat(0GREY"%s ^4Respected Player : ^1%s^4 entro al server con ^1%i^4 XP!"szPrefixnameeXP[id])
}

public 
LvL_12_PlayerRemove(id)
{
    new 
name[32]
    
get_user_name(idnamesizeof(name) -1)
        
    
ColorChat(0GREY"%s ^4Respected Player : %s se fue del server con %i XP!"szPrefixnameeXP[id])
}

public 
plugin_end( )
    
nvault_closegVault )
    
public 
client_putinserver(id)
{
    
LoadData(id)
    
set_task3.0"ShowHud"id, .flags "b" );
    
    if(
Level[id] == 12)
    {
        
set_task(5.0"LvL_12_PlayerJoin"id)
    }
}

public 
client_disconnect(id)
{
    
SaveData(id)
    
    if(
Level[id] == 12)
    {
        
set_task(1.0"LvL_12_PlayerRemove"id)
    }
}

/*      XP REWARDS      */
public client_deathiKilleriVictimwpnindexhitplace )
{
    new 
vname[32]
    new 
kname[32]
    
    
get_user_nameiKillerknamecharsmaxkname ) )
    
get_user_nameiVictimvnamecharsmaxvname ) )

    if( 
is_user_ignorediKiller ] )
        return 
PLUGIN_HANDLED_MAIN
    
    get_user_name
iKillerknamecharsmaxkname ) )
    
get_user_nameiVictimvnamecharsmaxvname ) )
    
    if( 
iKiller != iVictim && ( <= iKiller <= g_iMaxPlayers ) && ( <= iVictim <= g_iMaxPlayers ) && !( hitplace == HIT_HEAD ) && !( wpnindex == CSW_HEGRENADE ) )
    {
        
eXP[iKiller] += get_pcvar_num(KillXp)
        
        if( 
get_cvar_num("XP_Reward_MSG") == 
        {
            
ColorChat iKillerGREY"%s You got^4 %i^3 XP for killing^4 %s^3"szPrefixget_pcvar_num(KillXp), vname )
        }
    }
    
    if( 
hitplace == HIT_HEAD )
    {
        
eXP[iKiller] += get_pcvar_num(HsXp)
        
        if( 
get_cvar_num("XP_Reward_MSG") == 
        {
            
ColorChat iKillerGREY"%s You got ^4%i^3 XP for killing ^4%s^3 with a ^4HeadShot"szPrefixget_pcvar_num (HsXp), vname )
        }
    }
    
    if( 
wpnindex == CSW_HEGRENADE && iKiller != iVictim )
    {
        
eXP[iKiller] += get_pcvar_num(HeXp)
        
        if( 
get_cvar_num("XP_Reward_MSG") == 
        {
            
ColorChatiKillerGREEN"%s^1 You got^4 %i^3 XP for killing^4 %s^3 with a ^4Grenade"szPrefixget_pcvar_num (HeXp), vname )
        }
    }
    
CheckLevel(iKiller)
    
SaveData(iKiller)
    
    return 
PLUGIN_CONTINUE
}

public 
CheckLevel(id)
{
    if(
Level[id] < MaxLevels-1)
    {
        while(
eXP[id] >= Levels[Level[id]])
        {
            
Level[id] += 
            ColorChat
(idGREY"%s Felicitaciones ,Subiste de nivel!! ahora sos  : ^4%i^3"szPrefixLevel[id])
        }
    } 
}

/*      HUD PERMANENT INFO      */
public ShowHud(task)
{
    new 
id task TASK_SHOW_HUD
    
    
if(!is_user_alive(id))
        return;
    
    
set_hudmessage(025500.020.3300.00.30.00.0)
    
ShowSyncHudMsg(idg_msgHudSync,"[Status : %s]^n[XP : %i]"Prefix[Level[id]], eXP[id])
    
    
set_task(0.1"ShowHud"TASK_SHOW_HUD id)    
}

/*      nVault Stuff      */
public SaveData(id

    new 
AuthID[35]
    
get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]) 
    
    
nvault_set(gVault,vaultkey,vaultdata
    
    return 
PLUGIN_CONTINUE 

public 
LoadData(id

    new 
AuthID[35]
    
get_user_authid(id,AuthID,34
    new 
vaultkey[64],vaultdata[256
    
    
format(vaultkey,63,"%s-Mod",AuthID
    
format(vaultdata,255,"%i#%i#",eXP[id],Level[id]) 
    
    
nvault_get(gVault,vaultkey,vaultdata,255
    
    
replace_all(vaultdata255"#"" "
    
    new 
playerxp[32], playerlevel[32
    
    
parse(vaultdataplayerxp31playerlevel31
    
    
eXP[id] = str_to_num(playerxp
    
    
Level[id] = str_to_num(playerlevel
    
    return 
PLUGIN_CONTINUE 


/*      Remove And Add XP      */
public CmdAddXP iPlayerlevelcid )
{
    if( !
cmd_accessiPlayerlevelcid) ) return PLUGIN_HANDLED;
       
    new 
arg 32 ]
    
read_argv 1arg31 
 
    new 
AddXP 32 ]
    
read_argv 2AddXPcharsmax AddXP ) )
 
    new 
XPtoGive str_to_num AddXP )
       
    new 
AdminName 32 ]
    new 
TargetName 32 ]
    
get_user_name iPlayerAdminNamecharsmax AdminName ) )
       
    if( 
arg[0]=='@' )
    { 
        if( 
equali(arg[1],"All") || equali(arg[1],"ALL") )
        {
            new 
players[32], totalplayersAll
            get_players
playerstotalplayers )
            
            for ( new 
0totalplayersi++ )
            {
                
All players]
                       
                
eXPAll ] += XPtoGive
            
}
            
            
CheckLevelAll )
            
ColorChat 0GREY"%s ^1%s^3 give^1 %i^3 XP to all ^1 players^3!"szPrefixAdminNameXPtoGive )
        }
        else if( 
equali(arg[1],"T") || equali(arg[1],"t") )
        {
            new 
players[32], totalplayersT
            get_players
playerstotalplayers )
            
            for ( new 
0totalplayersi++ )
            {
                if ( 
get_user_team(players]) == )
                {
                    
players]
                           
                    
eXP] += XPtoGive
                
}
            }
            
            
CheckLevel)
            
ColorChat 0GREY"%s ^1%s^3 give^1 %i^3 XP to all ^1 Terrorists^3!"szPrefixAdminNameXPtoGive )
        }
        else if( 
equali(arg[1],"CT") || equali(arg[1],"ct") )
        {
            new 
players[32], totalplayersCT
            get_players
playerstotalplayers )
            
            for( new 
0totalplayersi++ )
            {
                if( 
get_user_team(players] ) == )
                {
                    
CT players]
                           
                    
eXPCT ] += XPtoGive
                
}
            }
            
            
CheckLevelCT )
            
ColorChat 0GREY"%s ^1%s^3 give^1 %i^3 XP to all ^1 Counter-Terrorists^3!"szPrefixAdminNameXPtoGive )
        }
    }
    else
    {
        new 
iTarget cmd_targetiPlayerarg)
        
get_user_name iTargetTargetNamecharsmax TargetName ) )
        
        if( 
iTarget )
        {
            
eXPiTarget ] += XPtoGive
            
            CheckLevel
iTarget )
            
ColorChat 0GREY"%s ^1%s^3 give^1 %i^3 XP to^1 %s^3"szPrefixAdminNameXPtoGiveTargetName )
        }
    }
    return 
PLUGIN_HANDLED
}
 
public 
CmdRemoveXP iPlayerlevelcid )
{
    if( !
cmd_access(iPlayerlevelcid3) ) return PLUGIN_HANDLED;
       
    new 
arg 32 ]
    
read_argv 1arg31 
 
    new 
RemoveXP 32 ]
    
read_argv 2RemoveXPcharsmax RemoveXP ) )
 
    new 
XPtoRemove str_to_num RemoveXP )
       
    new 
AdminName 32 ]
    new 
TargetName 32 ]
    
get_user_name iPlayerAdminNamecharsmax AdminName ) )
       
    if( 
arg[0]=='@' )
    { 
        if( 
equali(arg[1],"All") || equali(arg[1],"ALL") )
        {
            new 
players[32], totalplayersAll
            get_players
playerstotalplayers )
            
            for ( new 
0totalplayersi++ )
            {
                
All players]
                       
                
eXPAll ] -= XPtoRemove
            
}
            
            
CheckLevelAll )
            
ColorChat 0GREY"%s ^1%s^3 toke^1 %i^3 XP of all ^1 players^3!"szPrefixAdminNameXPtoRemove )
        }
        else if( 
equali(arg[1],"T") || equali(arg[1],"t") )
        {
            new 
players[32], totalplayersT
            get_players
playerstotalplayers )
            
            for ( new 
0totalplayersi++ )
            {
                if ( 
get_user_team(players]) == )
                {
                    
players]
                           
                    
eXP] -= XPtoRemove
                
}
            }
            
            
CheckLevel)
            
ColorChat 0GREY"%s ^1%s^3 toke^1 %i^3 XP of all ^1 Terrorists^3!"szPrefixAdminNameXPtoRemove )
        }
        else if( 
equali(arg[1],"CT") || equali(arg[1],"ct") )
        {
            new 
players[32], totalplayersCT
            get_players
playerstotalplayers )
            
            for( new 
0totalplayersi++ )
            {
                if( 
get_user_team(players] ) == )
                {
                    
CT players]
                           
                    
eXPCT ] -= XPtoRemove
                
}
            }
            
            
CheckLevelCT )
            
ColorChat 0GREY"%s ^1%s^3 toke^1 %i^3 XP of all ^1 Counter-Terrorists^3!"szPrefixAdminNameXPtoRemove )
        }
    }
    else
    {
        new 
iTarget cmd_targetiPlayerarg)
        
get_user_name iTargetTargetNamecharsmax TargetName ) )
        
        if( !
iTarget )
            return 
PLUGIN_HANDLED
            
        eXP
iTarget ] -= XPtoRemove
            
        CheckLevel
iTarget )
        
ColorChat 0GREY"%s ^1%s^3 give^1 %i^3 XP to^1 %s^3"szPrefixAdminNameXPtoRemoveTargetName )
    }
    
    return 
PLUGIN_HANDLED
}
/*      Level Behind Nick & AdminChatColors
              CREDITS TO ConnorMcLeod            */
public Message_SayText(msgId,msgDest,msgEnt

    new 
id get_msg_arg_int(1); 
    if( 
is_user_connected(id) ) 
    { 
        if( 
get_cvar_num("AdminChatColors_On") == 
        {
            new 
flags get_user_flags(id)
            for(new 
ii<sizeof(AdminsDatas); i++) 
            { 
                if( 
flags AdminsDatas[i][m_iFlag] ) 
                { 
                    new 
szChannel[64]
                    
get_msg_arg_string(2szChannelcharsmax(szChannel))
        
                    if( 
equal(szChannel"#Cstrike_Chat_All") ) 
                    { 
                        
formatex(szChannelcharsmax(szChannel), "^4[%s - %s] ^3%%s1 ^1:  %%s2"Prefix[Level[id]], AdminsDatas[i][m_szName])
                        
set_msg_arg_string(2szChannel)
                    } 
                    else if( !
equal(szChannel"#Cstrike_Name_Change") ) 
                    { 
                        
format(szChannelcharsmax(szChannel), "^4[%s - %s] %s"Prefix[Level[id]], AdminsDatas[i][m_szName], szChannel)
                        
set_msg_arg_string(2szChannel)
                    } 
                    return
                } 
                else
                {
                    new 
szChannel[64]
                    
get_msg_arg_string(2szChannelcharsmax(szChannel))
        
                    if( 
equal(szChannel"#Cstrike_Chat_All") ) 
                    { 
                        
formatex(szChannelcharsmax(szChannel), "^4[%s] ^3%%s1 ^1:  %%s2"Prefix[Level[id]])
                        
set_msg_arg_string(2szChannel)
                    } 
                    else if( !
equal(szChannel"#Cstrike_Name_Change") ) 
                    { 
                        
format(szChannelcharsmax(szChannel), "^4[%s] %s"Prefix[Level[id]], szChannel)
                        
set_msg_arg_string(2szChannel)
                    } 
                    return 
                }
            } 
        }
        else
        {
            new 
szChannel[64]
            
get_msg_arg_string(2szChannelcharsmax(szChannel));
        
            if( 
equal(szChannel"#Cstrike_Chat_All") ) 
            { 
                
formatex(szChannelcharsmax(szChannel), "^4[%s] ^3%%s1 ^1:  %%s2"Prefix[Level[id]])
                
set_msg_arg_string(2szChannel)
            } 
            else if( !
equal(szChannel"#Cstrike_Name_Change") ) 
            { 
                
format(szChannelcharsmax(szChannel), "^4[%s] %s"Prefix[Level[id]], szChannel
                
set_msg_arg_string(2szChannel)
            } 
            return 
        }
    } 




RE: [aporte] Dr+xp - K.-' - 16/04/2014

creo que estaria bien si lo pasas un poco a español los mensajes si se podria ?

Saludos,
K.-

( a lo clanns pacman )


RE: [aporte] Dr+xp - 3mcy daimon't - 17/04/2014

Solo como sugerencia podrias usar un macro para la exp


RE: [aporte] Dr+xp - player wii solider - 17/04/2014

(17/04/2014, 02:09 AM)3mcy daimont escribió: Solo como sugerencia podrias usar un macro para la exp

si tambien , podria usar un macro...


RE: [aporte] Dr+xp - K.-' - 17/04/2014

(17/04/2014, 09:51 AM)player wii solider escribió:
(17/04/2014, 02:09 AM)3mcy daimont escribió: Solo como sugerencia podrias usar un macro para la exp

si tambien , podria usar un macro...

y no lo vos a hacer ? pacman


RE: [aporte] Dr+xp - Kane - 17/04/2014

(17/04/2014, 01:53 PM)K.- escribió:
(17/04/2014, 09:51 AM)player wii solider escribió:
(17/04/2014, 02:09 AM)3mcy daimont escribió: Solo como sugerencia podrias usar un macro para la exp

si tambien , podria usar un macro...

y no lo vos a hacer ? pacman
Por la cantidad de niveles que usa, creo que seria lo mismo


RE: [aporte] Dr+xp - Thebest - 19/04/2014

Lindo code , no lo probe pero por lo que veo no tiene errores , si , se puede usar un macro y en mi opinion habria que hacerle un macro para la exp , saludos


RE: [aporte] Dr+xp - UnrealT - 20/04/2014

Código PHP:
/* Sets indexes of players.
* Flags:
* "a" - don't collect dead players.
* "b" - don't collect alive players.
* "c" - skip bots.
* "d" - skip real players.
* "e" - match with team.
* "f" - match with part of name.
* "g" - ignore case sensitivity.
* "h" - skip HLTV.
* Example: Get all alive CTs: get_players(players,num,"ae","CT") */

native get_players(players[32], &num ,const flags[]="", const team[]=""



RE: [aporte] Dr+xp - player wii solider - 20/04/2014

(20/04/2014, 12:45 AM)UnrealT escribió:
Código PHP:
/* Sets indexes of players.
* Flags:
* "a" - don't collect dead players.
* "b" - don't collect alive players.
* "c" - skip bots.
* "d" - skip real players.
* "e" - match with team.
* "f" - match with part of name.
* "g" - ignore case sensitivity.
* "h" - skip HLTV.
* Example: Get all alive CTs: get_players(players,num,"ae","CT") */

native get_players(players[32], &num ,const flags[]="", const team[]=""


y eso ??


RE: [aporte] Dr+xp - Savonis - 15/07/2014

No tengo el " #include <colorchat> " Me lo pueden pasar porfavro que sea compatible al que aportaron aqui


RE: [aporte] Dr+xp - K.-' - 15/07/2014

Creo que esto es aportes , pueden revivir ..

http://amxmodx-es.com/Thread-AYUDA-Colorchat


RE: [aporte] Dr+xp - Fran - 15/07/2014

Ya que ha sido revivido pues.. No he visto el code la verdad, pero supongo que esto sera un taran.. Whatever


https://forums.alliedmods.net/showthread.php?t=197347?t=197347


RE: [aporte] Dr+xp - Cloudest - 03/01/2019

Una cosa que salga en el chat s2 es algo normal?