Member
|
01-22-2013
, 09:38
Re: DeathRun XP & Level Mod (Version 1.0) (Bonus for Lvl / AdminChatColors and more..
|
#75
|
What's wrong with this plugin, it compiles but does not work, like, the information does not appear on the HUD or the controls work, please help me!
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <colorchat>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
new Level[33], eXP[33]
new KillXp, HsXp, HeXp/*, KnifeXp*/
new gVault
new const szPrefix[] = "[^4inFury | Surf XP^3] -"
#define MaxLevels 15
#define IsPlayer(%1) ( 1 <= %1 <= g_iMaxPlayers )
#define TASK_SHOW_HUD 10113
new g_msgHudSync
new bool:is_user_ignored[ 33 ]
new const Levels[MaxLevels] =
{
100, // Noob #1
150, // Novato #2
250, // Aprendiz #3
400, // Knifer #4
600, // Rambo #5
850, // JogaNice #6
1150, // Extreme #7
1500, // ProSurf #8
1900, // Fenomeno #9
2350, // ProKill #10
2850, // Matador #11
3400, // Mito #12
4000, // Monster #13
4650, // ChuckNorris #14
6000 // Lenda #15
}
new const Prefix[MaxLevels +1][] =
{
"Iniciante", // 0
"Noob", // 1
"Novato", // 2
"Aprendiz", // 3
"Knifer", // 4
"Rambo", // 5
"JogaNice", // 6
"Extreme", // 7
"ProSurf", // 8
"Fenomeno", // 9
"ProKill", // 10
"Matador", // 11
"Mito", // 12
"Monster", // 13
"ChuckNorris", // 14
"Lenda" // 15
}
// Bonus Stuff
new healthperlevel,
armorperlevel
new g_iMaxPlayers
// ADMIN CHAT COLORS by ConnorMcLeod
enum _:ADMIN_DATAS
{
m_szName[32],
m_iFlag
}
new const AdminsDatas[][ADMIN_DATAS] =
{
{"Dono", ADMIN_IMMUNITY},
{"Manager", ADMIN_BAN},
// {"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_Item_PreFrame, "player", "Ham_CheckSpeed_Bonus", 1);
g_iMaxPlayers = get_maxplayers( );
register_cvar( "AdminChatColors_On", "1" ); // Admin Tag EX: [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 /nivel", "ShowPlayerLevel")
register_clcmd ( "say_team /nivel", "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", "5")
// Armor Per Level //
armorperlevel = register_cvar("armor_per_lvl", "5")
g_msgHudSync = CreateHudSyncObj()
}
public plugin_precache()
{
precache_sound("iF_Surf/Uhul.wav")
return PLUGIN_CONTINUE
}
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(id, GREY, "%s Voce tem ^4%i^3 XP e seu nivel e ^4%s^3!", szPrefix, eXP[id], Prefix[Level[id]])
}
public ShowPlayerLevel(id)
{
new name[32]
get_user_name(id, name, sizeof(name) -1)
ColorChat(id, GREY, "%s Voce esta no nivel ^4%s^3 com ^4%i^3 XP!", szPrefix, Prefix[Level[id]], eXP[id])
}
/* HP & AP & Gravity Check */
public Ham_CheckOthers_Bonus(id)
{
if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
return HAM_IGNORED;
// HP Check
new HPCheck = ( get_user_health(id) + get_pcvar_num(healthperlevel) * Level[ id ] );
set_user_health( id, HPCheck );
// AP Check
new APCheck = ( get_user_armor(id) + get_pcvar_num(armorperlevel) * Level[ id ] );
set_user_armor( id, APCheck );
remove_task( TASK_SHOW_HUD + id );
set_task(0.1, "ShowHud", TASK_SHOW_HUD + id)
return HAM_IGNORED;
}
/* Respected Player Join / Leave Stuff */
public LvL_15_PlayerJoin(id)
{
new name[32]
get_user_name(id, name, sizeof(name) -1)
ColorChat(0, GREY, "%s ^4Lenda : ^1%s^4 entrou com ^1%i^4 XP!", szPrefix, name, eXP[id])
}
public LvL_15_PlayerRemove(id)
{
new name[32]
get_user_name(id, name, sizeof(name) -1)
ColorChat(0, GREY, "%s ^4Lenda : %s deixou com %i XP!", szPrefix, name, eXP[id])
}
public plugin_end( )
nvault_close( gVault )
public client_putinserver(id)
{
LoadData(id)
set_task( 3.0, "ShowHud", id, .flags = "b" );
if(Level[id] == 15)
{
set_task(5.0, "LvL_15_PlayerJoin", id)
}
}
public client_disconnect(id)
{
SaveData(id)
if(Level[id] == 15)
{
set_task(1.0, "LvL_15_PlayerRemove", id)
}
}
/* XP REWARDS */
public client_death( iKiller, iVictim, wpnindex, hitplace )
{
new vname[32]
new kname[32]
get_user_name( iKiller, kname, charsmax( kname ) )
get_user_name( iVictim, vname, charsmax( vname ) )
if( is_user_ignored[ iKiller ] )
return PLUGIN_HANDLED_MAIN
get_user_name( iKiller, kname, charsmax( kname ) )
get_user_name( iVictim, vname, charsmax( vname ) )
if( iKiller != iVictim && ( 1 <= iKiller <= g_iMaxPlayers ) && ( 1 <= iVictim <= g_iMaxPlayers ) && !( hitplace == HIT_HEAD ) && !( wpnindex == CSW_HEGRENADE ) )
{
eXP[iKiller] += get_pcvar_num(KillXp)
if( get_cvar_num("XP_Reward_MSG") == 1 )
{
ColorChat ( iKiller, GREY, "%s Voce tem^4 %i^3 XP por matar^4 %s^3", szPrefix, get_pcvar_num(KillXp), vname )
}
}
if( hitplace == HIT_HEAD )
{
eXP[iKiller] += get_pcvar_num(HsXp)
if( get_cvar_num("XP_Reward_MSG") == 1 )
{
ColorChat ( iKiller, GREY, "%s Voce tem ^4%i^3 XP por matar ^4%s^3 com ^4HeadShot", szPrefix, get_pcvar_num (HsXp), vname )
}
}
if( wpnindex == CSW_HEGRENADE && iKiller != iVictim )
{
eXP[iKiller] += get_pcvar_num(HeXp)
if( get_cvar_num("XP_Reward_MSG") == 1 )
{
ColorChat( iKiller, GREEN, "%s^1 Voce tem^4 %i^3 XP por matar^4 %s^3 com uma ^4Granada", szPrefix, get_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] += 1
ColorChat(id, GREY, "%s Parabens, voce subiu de nivel! Voce esta agora no nivel : ^4%i^3", szPrefix, Level[id])
client_cmd(id,"spk iF_Surf/Uhul.wav")
}
}
}
/* HUD PERMANENT INFO */
public ShowHud(task)
{
new id = task - TASK_SHOW_HUD
if(!is_user_alive(id))
return;
set_hudmessage(0, 255, 0, 0.02, 0.49, 0, 0.0, 0.3, 0.0, 0.0)
ShowSyncHudMsg(id, g_msgHudSync,"inFury^n[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 Name[35]
get_user_name(id,Name,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",Name)
format(vaultdata,255,"%i#%i#",eXP[id],Level[id])
nvault_set(gVault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadData(id)
{
new Name[35]
get_user_name(id,Name,34)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-Mod",Name)
format(vaultdata,255,"%i#%i#",eXP[id],Level[id])
nvault_get(gVault,vaultkey,vaultdata,255)
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
}
/* Remove And Add XP */
public CmdAddXP ( iPlayer, level, cid )
{
if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new AddXP [ 32 ]
read_argv ( 2, AddXP, charsmax ( AddXP ) )
new XPtoGive = str_to_num ( AddXP )
new iTarget
new AdminName [ 32 ]
new TargetName [ 32 ]
get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )
if ( equali ( arg, "@all" ) )
{
new iPlayer [ 32 ], iNum, All
get_players ( iPlayer, iNum )
for ( new i; i < iNum; i++ )
{
All = iPlayer [ i ]
eXP[ All ] += XPtoGive
}
CheckLevel( All )
ColorChat ( 0, GREY, "%s ^1%s^3 deu^1 %i^3 XP para todos ^1 players^3!", szPrefix, AdminName, XPtoGive )
}
else
{
iTarget = cmd_target( iPlayer, arg, 31 )
get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
if( !iTarget )
return PLUGIN_HANDLED
eXP[ iTarget ] += XPtoGive
CheckLevel( iTarget )
ColorChat ( 0, GREY, "%s ^1%s^3 deu^1 %i^3 XP para^1 %s^3", szPrefix, AdminName, XPtoGive, TargetName )
}
return PLUGIN_HANDLED
}
public CmdRemoveXP ( iPlayer, level, cid )
{
if( !cmd_access(iPlayer, level, cid, 3) ) return PLUGIN_HANDLED;
new arg [ 32 ]
read_argv ( 1, arg, charsmax ( arg ) )
new RemoveXP [ 32 ]
read_argv ( 2, RemoveXP, charsmax ( RemoveXP ) )
new XPtoRemove = str_to_num ( RemoveXP )
new iTarget
new AdminName [ 32 ]
new TargetName [ 32 ]
get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )
if ( equali ( arg, "@all" ) )
{
new iPlayer [ 32 ], iNum, All
get_players ( iPlayer, iNum )
for ( new i; i < iNum; i++ )
{
All = iPlayer [ i ]
eXP[ All ] -= XPtoRemove
}
ColorChat ( 0, GREY, "%s ^1%s^3 removeu^1 %i^3 XP de todos^1 players^3!", szPrefix, AdminName, XPtoRemove )
}
else
{
iTarget = cmd_target( iPlayer, arg, 31 )
get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
if( !iTarget )
return PLUGIN_HANDLED
eXP[ iTarget ] -= XPtoRemove
ColorChat ( 0, GREY, "%s ^1%s^3 removeu^1 %i^3 XP de ^1 %s^3", szPrefix, AdminName, XPtoRemove, TargetName )
}
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") == 1 )
{
new flags = get_user_flags(id)
for(new i; i<sizeof(AdminsDatas); i++)
{
if( flags & AdminsDatas[i][m_iFlag] )
{
new szChannel[64]
get_msg_arg_string(2, szChannel, charsmax(szChannel))
if( equal(szChannel, "#Cstrike_Chat_All") )
{
formatex(szChannel, charsmax(szChannel), "^4[%s - %s] ^3%%s1 ^1: %%s2", Prefix[Level[id]], AdminsDatas[i][m_szName])
set_msg_arg_string(2, szChannel)
}
else if( !equal(szChannel, "#Cstrike_Name_Change") )
{
format(szChannel, charsmax(szChannel), "^4[%s - %s] %s", Prefix[Level[id]], AdminsDatas[i][m_szName], szChannel)
set_msg_arg_string(2, szChannel)
}
return
}
else
{
new szChannel[64]
get_msg_arg_string(2, szChannel, charsmax(szChannel))
if( equal(szChannel, "#Cstrike_Chat_All") )
{
formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2", Prefix[Level[id]])
set_msg_arg_string(2, szChannel)
}
else if( !equal(szChannel, "#Cstrike_Name_Change") )
{
format(szChannel, charsmax(szChannel), "^4[%s] %s", Prefix[Level[id]], szChannel)
set_msg_arg_string(2, szChannel)
}
return
}
}
}
else
{
new szChannel[64]
get_msg_arg_string(2, szChannel, charsmax(szChannel));
if( equal(szChannel, "#Cstrike_Chat_All") )
{
formatex(szChannel, charsmax(szChannel), "^4[%s] ^3%%s1 ^1: %%s2", Prefix[Level[id]])
set_msg_arg_string(2, szChannel)
}
else if( !equal(szChannel, "#Cstrike_Name_Change") )
{
format(szChannel, charsmax(szChannel), "^4[%s] %s", Prefix[Level[id]], szChannel)
set_msg_arg_string(2, szChannel)
}
return
}
}
}
|
|