Member
|
01-26-2014
, 10:18
xp level + tag level
|
#1
|
hy all
i nee to change forom steam id in nick (name)
Code:
/////////////////////////////////////////////////////////////////////////////
//==============================
//= DeathRun XP & Level Mod =
//==============================
//
//---------------------
//- Description -
//---------------------
//
//This plugin include the features:
//** XP System - nVault
//** Level System - nVault
//** Cvars to control all bonus per lvl
//** Commands to Add & Remove XP
//** Level behind the Nick Name
//** Bonus Per level
//** ADM Chat Colors Support
//** ...
//
//----------------------
//- Requirements -
//----------------------
//
//** AMXX: Version 1.8.1
//** AMXX Modules: Cstrike, Fun, Engine, Fakemeta, ColorChat, nVault and Hamsandwich modules
//
//----------------------
//- Installation -
//----------------------
//
//1- Download and compile the plugin from:
//2- Upload the amxx file to your server (cstrike>addons>amxmodx>plugins).
//3- Edit the config file and add the plugin (cstrike>addons>amxmodx>configs>plugins.ini).
//
//----------------------
//- Contact Info -
//----------------------
//
//For reporting bugs or post your feedback visit:
//https://forums.alliedmods.net/showthread.php?p=1810627
//
//If you want some private job PM ME on alliedmodders Forum's or send me and email to:
//[email protected]
//
//-----------------
//- Credits -
//-----------------
//
//** Ex1ne
//- XP System & Level System
//
//** matsi
//- Observations and optimizations
//
//** tre3fla
//- Suggestion and request
//
//** ConnorMcLeod
//- Suggestion, SayTxt and Admin Chat Colors Code
//
//** xBatista
//- ShowHud Help
//
//------------------
//- Updates Logs -
//------------------
//
//** v0.0.1 [Oct 2012]
//- First Release
//
//** v0.0.2 [Oct 2012]
//- Optimize & Improve Code
//
//** v0.0.3 [Oct 2012]
//- Optimize Code
//
//** v0.0.4 [Oct 2012]
//- Improve Level Prefix and Personal Info
//
//** v0.0.5 [Oct 2012]
//- Optimize EventDeathMsg
//- Improve Check Level
//
//** v0.0.6 [Oct 2012]
//- Fix Damage Bug
//- Fix Messages Bugs
//
//** v0.0.7 [Oct 2012]
//- Fix Index of Bounds
//
//** v0.0.8 [Oct 2012]
//- Added feature Admin Chat Colors
//
//** v0.0.9 [Oct 2012]
//- Fix some Bugs & Added XP Reward MSG CVAR
//
//** v1.0 [Jan 2013]
//- Fix Give & Remove XP Command
//
////////////////////////////////////////////////////////////////////
#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[] = "[^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_ignored[ 33 ]
new const Levels[MaxLevels] =
{
100, // Recruit #1
500, // Private #2
1000, //Private First Class #3
2000, // Lance Corporal #4
3000, // Corporal #5
4000, // Sergeant #6
5000, // Staff Sergeant #7
6000, // Gunnery Sergeant #8
7000, // Master Sergeant #9
8000, // First Sergeant #10
9000, // Master Chief #11
10000, // Sergeant Major #12
20000, // Ensign #13
30000, // Third Lieutenant #14
40000, // Second Lieutenant #15
50000, // First Lieutenant #16
60000, // Captain #17
70000, // Group Captain #18
80000, // Senior Captain #19
90000, // Lieutenant Major #20
100000, // Major #21
200000, // Group Major #22
300000, // Lieutenant Commander #23
400000, // Commander #24
500000, // Group Commander #25
600000, // Lieutenant Colonel #26
700000, // Colonel #27
800000, // Brigadier #28
900000, // Brigadier General #29
1000000, // Major General #30
2000000, //Lieutenant General #31
3000000, // General #32
4000000, // Commander General #33
5000000, // Field Vice Marshal #34
7500000, // Field Marshal #35
10000000, // Vice Commander of the Army #36
20000000, // Commander of the Army #37
30000000 , // High Commander #38
50000000, // Supreme Commander #39
100000000 // Terminator #40
}
new const Prefix[MaxLevels +1][] =
{
"Recruit", // 0
"Private", // 1
"Private First Class", // 2
"Lance Corporal", // 3
"Corporal", // 4
"Sergeant", // 5
"Staff Sergeant", // 6
"Gunnery Sergeant", // 7
"Master Sergeant", // 8
"First Sergeant", // 9
"Master Chief", // 10
"Sergeant Major", // 11
"Ensign", // 12
"Third Lieutenant", // 13
"Second Lieutenant", // 14
"First Lieutenant", // 15
"Captain", // 16
"Group Captain", // 17
"Senior Captain", // 18
"Lieutenant Major", // 19
"Major", // 20
"Group Major", // 21
"Lieutenant Commander", // 22
"Commander", // 23
"Group Commander", // 24
"Lieutenant Colonel", // 25
"Colonel", // 26
"Brigadier", // 27
"Brigadier General", // 28
"Major General", // 29
"Lieutenant General", // 30
"General", // 31
"Commander General", // 32
"Field Vice Marshal", // 33
"Field Marshal", // 34
"Vice Commander of the Army", // 35
"Commander of the Army", // 36
"High Commander", // 37
"Supreme Commander", // 38
"Terminator" // 39
}
// 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] =
{
{"Owner", 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_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", "2")
HsXp = register_cvar("drxp_per_hs", "5")
HeXp = register_cvar("drxp_per_nade_kill", "2")
//KnifeXp = register_cvar("drxp_per_knife_kill", "5")
// 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", "1")
// Armor Per Level //
armorperlevel = register_cvar("armor_per_lvl", "1")
// Speed Per Level //
speedperlevel = register_cvar("speed_per_lvl", "1")
// Gravity Per Level //
gravityperlvl = register_cvar("gravity_per_lvl", "1") // NERVER MORE THAN 66 PER LVL
// Damage Per Level //
damageperlevel = register_cvar("damage_per_lvl", "1")
g_msgHudSync = CreateHudSyncObj()
}
public plugin_cfg( )
{
gVault = nvault_open( "StRiKeMoD_XP" )
if ( gVault == INVALID_HANDLE )
set_fail_state( "Error opening nVault" );
}
/* INFO ABOUT PERSONAL XP/LEVEL */
public ShowPlayerXP(id)
{
ColorChat(id, GREY, "%s You have ^4%i^3 XP and your Level are ^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 You are Level ^4%s^3 with ^4%i^3 XP!", szPrefix, Prefix[Level[id]], eXP[id])
}
public Ham_CheckDamage_Bonus( pevVictim, pevInflictor, pevAttacker, Float:flDamage, iDmgBits )
{
if( !( 1 <= pevAttacker <= g_iMaxPlayers) )
{
return HAM_HANDLED;
}
if( !is_user_alive( pevAttacker ) )
{
return HAM_HANDLED;
}
SetHamParamFloat( 4 , flDamage + ( get_pcvar_num( damageperlevel ) * Level[ pevAttacker ] ) )
return HAM_IGNORED;
}
/* Speed Check */
public Ham_CheckSpeed_Bonus( id )
{
if( !is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_T )
{
return HAM_IGNORED;
}
set_user_maxspeed( id, 250.0 + ( get_pcvar_num(speedperlevel) * Level[ id ] ) );
return HAM_IGNORED;
}
/* 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 );
// Gravity
new GRAVITYCheck = 800 - ( get_pcvar_num( gravityperlvl ) * Level[ id ] );
if(get_pcvar_num(gravityperlvl) > 66)
{
set_user_gravity( id, float( 8 ) / 800.0 );
}
else
{
set_user_gravity( id, float( GRAVITYCheck ) / 800.0 );
}
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_12_PlayerJoin(id)
{
new name[32]
get_user_name(id, name, sizeof(name) -1)
ColorChat(0, GREY, "%s ^4Respected Player : ^1%s^4 has joined with ^1%i^4 XP!", szPrefix, name, eXP[id])
}
public LvL_12_PlayerRemove(id)
{
new name[32]
get_user_name(id, name, sizeof(name) -1)
ColorChat(0, GREY, "%s ^4Respected Player : %s has left with %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] == 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_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 You got^4 %i^3 XP for killing^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 You got ^4%i^3 XP for killing ^4%s^3 with a ^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 You got^4 %i^3 XP for killing^4 %s^3 with a ^4Grenade", 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 Congratulations, you've leveled up! You are now level : ^4%i^3", szPrefix, Level[id])
}
}
}
/* 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.33, 0, 0.0, 0.3, 0.0, 0.0)
ShowSyncHudMsg(id, g_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(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, 31 )
new AddXP [ 32 ]
read_argv ( 2, AddXP, charsmax ( AddXP ) )
new XPtoGive = str_to_num ( AddXP )
new AdminName [ 32 ]
new TargetName [ 32 ]
get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )
if( arg[0]=='@' )
{
if( equali(arg[1],"All") || equali(arg[1],"ALL") )
{
new players[32], totalplayers, All
get_players( players, totalplayers )
for ( new i = 0; i < totalplayers; i++ )
{
All = players[ i ]
eXP[ All ] += XPtoGive
}
CheckLevel( All )
ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to all ^1 players^3!", szPrefix, AdminName, XPtoGive )
}
else if( equali(arg[1],"T") || equali(arg[1],"t") )
{
new players[32], totalplayers, T
get_players( players, totalplayers )
for ( new i = 0; i < totalplayers; i++ )
{
if ( get_user_team(players[ i ]) == 1 )
{
T = players[ i ]
eXP[ T ] += XPtoGive
}
}
CheckLevel( T )
ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to all ^1 Terrorists^3!", szPrefix, AdminName, XPtoGive )
}
else if( equali(arg[1],"CT") || equali(arg[1],"ct") )
{
new players[32], totalplayers, CT
get_players( players, totalplayers )
for( new i = 0; i < totalplayers; i++ )
{
if( get_user_team(players[ i ] ) == 2 )
{
CT = players[ i ]
eXP[ CT ] += XPtoGive
}
}
CheckLevel( CT )
ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to all ^1 Counter-Terrorists^3!", szPrefix, AdminName, XPtoGive )
}
}
else
{
new iTarget = cmd_target( iPlayer, arg, 3 )
get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
if( iTarget )
{
eXP[ iTarget ] += XPtoGive
CheckLevel( iTarget )
ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to^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, 31 )
new RemoveXP [ 32 ]
read_argv ( 2, RemoveXP, charsmax ( RemoveXP ) )
new XPtoRemove = str_to_num ( RemoveXP )
new AdminName [ 32 ]
new TargetName [ 32 ]
get_user_name ( iPlayer, AdminName, charsmax ( AdminName ) )
if( arg[0]=='@' )
{
if( equali(arg[1],"All") || equali(arg[1],"ALL") )
{
new players[32], totalplayers, All
get_players( players, totalplayers )
for ( new i = 0; i < totalplayers; i++ )
{
All = players[ i ]
eXP[ All ] -= XPtoRemove
}
CheckLevel( All )
ColorChat ( 0, GREY, "%s ^1%s^3 toke^1 %i^3 XP of all ^1 players^3!", szPrefix, AdminName, XPtoRemove )
}
else if( equali(arg[1],"T") || equali(arg[1],"t") )
{
new players[32], totalplayers, T
get_players( players, totalplayers )
for ( new i = 0; i < totalplayers; i++ )
{
if ( get_user_team(players[ i ]) == 1 )
{
T = players[ i ]
eXP[ T ] -= XPtoRemove
}
}
CheckLevel( T )
ColorChat ( 0, GREY, "%s ^1%s^3 toke^1 %i^3 XP of all ^1 Terrorists^3!", szPrefix, AdminName, XPtoRemove )
}
else if( equali(arg[1],"CT") || equali(arg[1],"ct") )
{
new players[32], totalplayers, CT
get_players( players, totalplayers )
for( new i = 0; i < totalplayers; i++ )
{
if( get_user_team(players[ i ] ) == 2 )
{
CT = players[ i ]
eXP[ CT ] -= XPtoRemove
}
}
CheckLevel( CT )
ColorChat ( 0, GREY, "%s ^1%s^3 toke^1 %i^3 XP of all ^1 Counter-Terrorists^3!", szPrefix, AdminName, XPtoRemove )
}
}
else
{
new iTarget = cmd_target( iPlayer, arg, 3 )
get_user_name ( iTarget, TargetName, charsmax ( TargetName ) )
if( !iTarget )
return PLUGIN_HANDLED
eXP[ iTarget ] -= XPtoRemove
CheckLevel( iTarget )
ColorChat ( 0, GREY, "%s ^1%s^3 give^1 %i^3 XP to^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
}
}
}
and i want to add
/xp
/level
/lvl
/levels
/toplevel
from this plugin
Code:
/* AMX Mod X
* Level Mod Plugin
*
* by LordOfNothing
*
* This file is part of AMX Mod X.
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <nvault>
#include <cstrike>
#include <fakemeta>
new const PLUGIN_NAME[] = "Level Mod";
new const hnsxp_version[] = "5.5";
new const LEVELS[311] = {
1000, // 1
3000, // 2
5000, // 3
7000, // 4
9000, // 5
10000, // 6
15000, // 7
20000, // 8
25000, // 10
30000, // 11
40000, // 12
50000, // 13
60000, // 14
70000, // 15
100000, // 16
120000, // 17
130000, // 18
150000, // 19
200000, // 20
250000, // 21
300000, // 22
350000, // 23
400000, // 24
450000, // 25
500000, // 26
600000, // 27
700000, // 28
800000, // 29
1000000, // 30
1200000, // 31
1300000, //32
1400000, // 33
1500000, // 34
1600000, // 35
1700000, // 36
1800000, // 37
1900000, // 38
1950000, // 39
2000000, // 40
2500000, // 41
3000000, // 42
3500000, // 43
4000000, // 44
5000000, // 45
6000000, // 46
7000000, // 47
8000000, // 48
9000000, // 49
10000000, // 50
13000000, // 51
15000000, // 2
18000000, // 3
20000000, // 4
22500000, // 5
25000000, // 6
27500000, // 7
29000000, // 8
30000000, // 10
35000000, // 11
40000000, // 12
45000000, // 13
50000000, // 14
55000000, // 15
60000000, // 16
65000000, // 17
70000000, // 18
75000000, // 19
85000000, // 20
90000000, // 21
100000000, // 22
110000000, // 23
220000000, // 24
230000000, // 25
240000000, // 26
250000000, // 27
260000000, // 28
270000000, // 29
280000000, // 30
290000000, // 31
300000000, //32
400000000, // 33
500000000, // 34
600000000, // 35
700000000, // 36
800000000, // 37
900000000, // 38
1000000000, // 39
1500000000, // 40
2000000000, // 41
3000000000, // 42
4000000000, // 43
5000000000, // 44
6000000000, // 45
7000000000, // 46
7500000000, // 47
8500000000, // 48
9099090000, // 97
10000000000, // 98
10000500000, // 99
20000000000, // 100
20000100000, // 1
20000110000,// 2
20000130000,
20000134000,
20000135000,
20000136000,
20000138000,
20000139000,
20000113000,
20000213000,
20000313000,
20000413000,
20000513000,
20000613000,
20000713000,
20000813000,
20000913000,
20001113000,
20002113000,
20003113000,
20004113000,
20005113000,
20006113000,
20007113000,
20008113000,
20009113000,
20011113000,
20021113000,
20031113000,
20041113000,
20051113000,
20061113000,
20071113000,
20081113000,
20091113000,
20101113000,
20201113000,
20301113000,
20401113000,
20501113000,
20601113000,
20701113000,
20901113000,
21101113000,
22101113000,
23101113000,
24101113000,
25101113000,
26101113000,
27101113000,
28101113000,
29101113000,
30000000000,
30000130000,
30000134000,
30000135000,
30000136000,
30000138000,
30000139000,
30000113000,
30000213000,
30000313000,
30000413000,
30000513000,
30000613000,
30000713000,
30000813000,
30000913000,
30001113000,
30002113000,
30003113000,
30004113000,
30005113000,
30006113000,
30007113000,
30008113000,
30009113000,
30011113000,
30021113000,
30031113000,
30041113000,
30051113000,
30061113000,
30071113000,
30081113000,
30091113000,
30101113000,
30201113000,
30301113000,
30401113000,
30501113000,
30601113000,
30701113000,
30901113000,
31101113000,
32101113000,
33101113000,
34101113000,
35101113000,
36101113000,
37101113000,
38101113000,
39101113000,
40000000000,
40000130000,
40000134000,
40000135000,
40000136000,
40000138000,
40000139000,
40000113000,
40000213000,
40000313000,
40000413000,
40000513000,
40000613000,
40000713000,
40000813000,
40000913000,
40001113000,
40002113000,
40003113000,
40004113000,
40005113000,
40006113000,
40007113000,
40008113000,
40009113000,
40011113000,
40021113000,
40031113000,
40041113000,
40051113000,
40061113000,
40071113000,
40081113000,
40091113000,
40101113000,
40201113000,
40301113000,
40401113000,
40501113000,
40601113000,
40701113000,
40901113000,
41101113000,
42212113000,
43210111300,
44101113000,
45101113000,
46101113000,
47101113000,
48101113000,
49101113000,
50000000000, // 46
50000001000, // 1
50000002000, // 2
50000003000, // 3
50000004000, // 4
50000005000,
50000006000,
50000007000,
50000008000,
50000009000, // 58 !
50000010000, // 10
50000011000,
50000020000,
50000030000, // 13
50000040000,
50000050000,
50000060000,
50000070000,
50000080000,
50000090000, // 19
50000200000,
50000300000,
50000400000, // 22
50000500000,
50000600000,
50000700000,
50000800000,
50000800500, // 27
50000900000,
50001000000,
50002090000, // 30/58
50003000000,
50004000000,
50005000000,
50006000000,
50007000000,
50008000000,
50009000000,
50009005000,
50009900000,
50009995000, // 40/58
50010000000,
50020000000,
50030000000,
50040000000,
50050000000,
50060000000,
50070000000,
50080000000,
50090000000,
50100000000, // 50 !
50200000000,
50300000000,
50400000000,
50500000000,
50600000000,
99999999999999999999999999 // 300 !
}
new hnsxp_playerxp[33], hnsxp_playerlevel[33];
new hnsxp_kill, hnsxp_savexp, g_hnsxp_vault, tero_win, vip_enable, vip_xp, xlevel, wxp;
new Data[64];
new toplevels[33];
new topnames[33][33];
public plugin_init()
{
register_plugin(PLUGIN_NAME, hnsxp_version, "LordOfNothing");
RegisterHam(Ham_Spawn, "player", "hnsxp_spawn", 1);
RegisterHam(Ham_Killed, "player", "hnsxp_death", 1);
hnsxp_savexp = register_cvar("hnsxp_savexp","1");
hnsxp_kill = register_cvar("hnsxp_kill", "1000");
tero_win = register_cvar("hnsxp_terowin_xp","1500");
vip_enable = register_cvar("hnsxp_vip_enable","1");
vip_xp = register_cvar("hnsxp_vip_xp","100000");
register_clcmd("say /level","plvl");
register_clcmd("say /xp","plvl");
register_clcmd("say /levels","plvls");
register_clcmd("say_team /level","plvl");
register_clcmd("say_team /xp","plvl");
register_clcmd("say /lvl","tlvl");
g_hnsxp_vault = nvault_open("levelmod_vault");
register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
xlevel = CreateMultiForward("PlayerMakeNextLevel", ET_IGNORE, FP_CELL);
wxp = CreateMultiForward("PlayerIsHookXp", ET_IGNORE, FP_CELL);
register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged")
register_clcmd("say /toplevel","sayTopLevel");
register_clcmd("say_team /toplevel","sayTopLevel");
register_concmd("amx_resetleveltop","concmdReset_Top");
get_datadir(Data, 63);
read_top();
}
public save_top() {
new path[128];
formatex(path, 127, "%s/LevelTop.dat", Data);
if( file_exists(path) ) {
delete_file(path);
}
new Buffer[256];
new f = fopen(path, "at");
for(new i = 0; i < 15; i++)
{
formatex(Buffer, 255, "^"%s^" ^"%d^"^n",topnames[i],toplevels[i] );
fputs(f, Buffer);
}
fclose(f);
}
public concmdReset_Top(id) {
if( !(get_user_flags(id) & read_flags("abcdefghijklmnopqrstu"))) {
return PLUGIN_HANDLED;
}
new path[128];
formatex(path, 127, "%s/LevelTop.dat", Data);
if( file_exists(path) ) {
delete_file(path);
}
static info_none[33];
info_none = "";
for( new i = 0; i < 15; i++ ) {
formatex(topnames[i], 31, info_none);
toplevels[i]= 0;
}
save_top();
new aname[32];
get_user_name(id, aname, 31);
MesajColorat(0, "!normal[ !echipaLevel Mod !normal] Adminul !echipa%s!normal a resetat top level!", aname);
return PLUGIN_CONTINUE;
}
public checkandupdatetop(id, levels) {
new name[32];
get_user_name(id, name, 31);
for (new i = 0; i < 15; i++)
{
if( levels > toplevels[i] )
{
new pos = i;
while( !equal(topnames[pos],name) && pos < 15 )
{
pos++;
}
for (new j = pos; j > i; j--)
{
formatex(topnames[j], 31, topnames[j-1]);
toplevels[j] = toplevels[j-1];
}
formatex(topnames[i], 31, name);
toplevels[i]= levels;
MesajColorat(0, "!normal[!echipaLevel Mod!normal] Jucatorul !echipa%s!normal a intrat pe locul !echipa%i!normal in top level !", name,(i+1));
if(i+1 == 1) {
client_cmd(0, "spk vox/doop");
} else {
client_cmd(0, "spk buttons/bell1");
}
save_top();
break;
}
else if( equal(topnames[i], name))
break;
}
}
public read_top() {
new Buffer[256],path[128];
formatex(path, 127, "%s/LevelTop.dat", Data);
new f = fopen(path, "rt" );
new i = 0;
while( !feof(f) && i < 15+1)
{
fgets(f, Buffer, 255);
new lvls[25];
parse(Buffer, topnames[i], 31, lvls, 24);
toplevels[i]= str_to_num(lvls);
i++;
}
fclose(f);
}
public sayTopLevel(id) {
static buffer[2368], name[131], len, i;
len = formatex(buffer, 2047, "<body bgcolor=#FFFFFF><table width=100%% cellpadding=2 cellspacing=0 border=0>");
len += format(buffer[len], 2367-len, "<tr align=center bgcolor=#52697B><th width=10%% > # <th width=45%%> Nume <th width=45%%>Level");
for( i = 0; i < 100; i++ ) {
if( toplevels[i] == 0) {
len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td> %s <td> %s",((i%2)==0) ? "" : " bgcolor=#A4BED6", (i+1), "-", "-");
//i = NTOP
}
else {
name = topnames[i];
while( containi(name, "<") != -1 )
replace(name, 129, "<", "<");
while( containi(name, ">") != -1 )
replace(name, 129, ">", ">");
len += formatex(buffer[len], 2047-len, "<tr align=center%s><td> %d <td> %s <td> %d",((i%2)==0) ? "" : " bgcolor=#A4BED6", (i+1), name,toplevels[i]);
}
}
len += format(buffer[len], 2367-len, "</table>");
len += formatex(buffer[len], 2367-len, "<tr align=bottom font-size:11px><Center><br><br><br><br>Level Mod by LordOfNothing </body>");
static strin[20];
format(strin,33, "Top Level");
show_motd(id, buffer, strin);
}
public ClientUserInfoChanged(id)
{
static const name[] = "name"
static szOldName[32], szNewName[32]
pev(id, pev_netname, szOldName, charsmax(szOldName))
if( szOldName[0] )
{
get_user_info(id, name, szNewName, charsmax(szNewName))
if( !equal(szOldName, szNewName) )
{
set_user_info(id, name, szOldName)
MesajColorat(id, "!normal[!echipaLevel Mod!normal] Pe acest server nu este permisa schimbarea numelui !");
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public plugin_natives()
{
register_native("get_user_xp","_get_user_xp");
register_native("get_user_level","_get_user_level");
}
public _get_user_xp(plugin, params)
{
return hnsxp_playerxp[get_param(1)];
}
public _get_user_level(plugin, params)
{
return hnsxp_playerlevel[get_param(1)];
}
public gItem(id)
{
new dgl = give_item(id, "weapon_deagle")
if(is_user_alive(id))
{
switch(hnsxp_playerlevel[id])
{
case 0:
{
give_item(id, "weapon_smokegrenade");
set_user_health(id, get_user_health(id) + 3);
cs_set_weapon_ammo(dgl, 1);
remove_task(id);
}
case 1..10:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
cs_set_user_bpammo(id, CSW_FLASHBANG, 1);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 1);
set_user_health(id, get_user_health(id) + 5);
cs_set_weapon_ammo(dgl, 1);
remove_task(id);
}
case 11..20:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 1);
cs_set_user_bpammo(id, CSW_FLASHBANG, 1);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 1);
cs_set_weapon_ammo(dgl, 1);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 10);
remove_task(id);
}
case 21..30:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 2);
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
cs_set_weapon_ammo(dgl, 2);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 10);
remove_task(id);
}
case 31..40:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 2);
cs_set_user_bpammo(id, CSW_FLASHBANG, 2);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 2);
cs_set_weapon_ammo(dgl, 3);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 10);
remove_task(id);
}
case 41..50:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 3);
cs_set_user_bpammo(id, CSW_FLASHBANG, 3);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 3);
cs_set_weapon_ammo(dgl, 4);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 20);
remove_task(id);
}
case 51..60:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 3);
cs_set_user_bpammo(id, CSW_FLASHBANG, 3);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 3);
cs_set_weapon_ammo(dgl, 4);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 20);
remove_task(id);
}
case 61..70:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 4);
cs_set_user_bpammo(id, CSW_FLASHBANG, 4);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 4);
cs_set_weapon_ammo(dgl, 4);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 25);
remove_task(id);
}
case 71..80:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 4);
cs_set_user_bpammo(id, CSW_FLASHBANG, 4);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 4);
cs_set_weapon_ammo(dgl, 5);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 30);
remove_task(id);
}
case 81..90:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 4);
cs_set_user_bpammo(id, CSW_FLASHBANG, 4);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 4);
cs_set_weapon_ammo(dgl, 6);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 30);
remove_task(id);
}
case 91..100:
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
cs_set_user_bpammo(id, CSW_HEGRENADE, 5);
cs_set_user_bpammo(id, CSW_FLASHBANG, 5);
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 5);
cs_set_weapon_ammo(dgl, 6);
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
set_user_health(id, get_user_health(id) + 50);
remove_task(id);
}
}
}
}
UpdateLevel(id)
{
if((hnsxp_playerlevel[id] < 101) && (hnsxp_playerxp[id] >= LEVELS[hnsxp_playerlevel[id]]))
{
MesajColorat(id,"!normal[!echipa%s!normal] Felicitari ai trecut la nivelul urmator !", PLUGIN_NAME);
MesajColorat(id,"!normal[!echipa%s!normal] Felicitari ai trecut la nivelul urmator !", PLUGIN_NAME);
MesajColorat(id,"!normal[!echipa%s!normal] Felicitari ai trecut la nivelul urmator !", PLUGIN_NAME);
MesajColorat(id,"!normal[!echipa%s!normal] Felicitari ai trecut la nivelul urmator !", PLUGIN_NAME);
MesajColorat(id,"!normal[!echipa%s!normal] Felicitari ai trecut la nivelul urmator !", PLUGIN_NAME);
new ret;
ExecuteForward(xlevel, ret, id);
while(hnsxp_playerxp[id] >= LEVELS[hnsxp_playerlevel[id]])
{
hnsxp_playerlevel[id] += 1;
}
}
}
public hnsxp_spawn(id)
{
set_task(15.0, "gItem", id);
UpdateLevel(id);
checkandupdatetop(id,hnsxp_playerlevel[id]);
}
public plvl(id)
{
MesajColorat(id, "!normal[!echipaLevel Mod!normal] !verdeLVL !normal: !echipa%i !normal, !verdeXP !normal: !echipa %i !normal/ !echipa%i ", hnsxp_playerlevel[id], hnsxp_playerxp[id], LEVELS[hnsxp_playerlevel[id]]);
return PLUGIN_HANDLED
}
public plvls(id)
{
new players[32], playersnum, name[40], motd[1024], len;
len = formatex(motd, charsmax(motd), "<html> <center> <font color=red> <b>LEVEL NUME XP <br ></font> </b> <body bgcolor=black></center> ");
get_players(players, playersnum);
for ( new i = 0 ; i < playersnum ; i++ ) {
get_user_name(players[i], name, charsmax(name));
len += formatex(motd[len], charsmax(motd) - len, "<center> <br><font color=red> <b> [%i] %s: %i</font> </center> ",hnsxp_playerlevel[players[i]], name, hnsxp_playerxp[players[i]]);
}
formatex(motd[len], charsmax(motd) - len, "</html>");
show_motd(id, motd);
return PLUGIN_HANDLED
}
public tlvl(id)
{
new poj_Name [ 32 ];
get_user_name(id, poj_Name, 31)
MesajColorat(0, "!normal[!echipaLevel-Mod!normal] Jucatorul !echipa%s !normalare nivelul !verde%i",poj_Name, hnsxp_playerlevel[id]);
return PLUGIN_HANDLED
}
public hnsxp_death( iVictim, attacker, shouldgib )
{
if( !attacker || attacker == iVictim )
return;
hnsxp_playerxp[attacker] += get_pcvar_num(hnsxp_kill);
new ret;
ExecuteForward(wxp, ret, attacker);
UpdateLevel(attacker);
UpdateLevel(iVictim);
checkandupdatetop(iVictim,hnsxp_playerlevel[iVictim]);
checkandupdatetop(attacker,hnsxp_playerlevel[attacker]);
if(get_user_flags(attacker) & ADMIN_IMMUNITY && get_pcvar_num(vip_enable))
{
hnsxp_playerxp[attacker] += get_pcvar_num(vip_xp);
}
}
public client_connect(id)
{
if(get_pcvar_num(hnsxp_savexp) == 1)
LoadData(id);
checkandupdatetop(id,hnsxp_playerlevel[id])
}
public client_disconnect(id)
{
if(get_pcvar_num(hnsxp_savexp) == 1)
SaveData(id);
hnsxp_playerxp[id] = 0;
hnsxp_playerlevel[id] = 0;
checkandupdatetop(id,hnsxp_playerlevel[id])
}
public SaveData(id)
{
new PlayerName[35];
get_user_name(id,PlayerName,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",PlayerName);
format(vaultdata,255,"%i`i%",hnsxp_playerxp[id],hnsxp_playerlevel[id]);
nvault_set(g_hnsxp_vault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id)
{
new PlayerName[35];
get_user_name(id,PlayerName,34);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s",PlayerName);
format(vaultdata,255,"%i`%i",hnsxp_playerxp[id],hnsxp_playerlevel[id]);
nvault_get(g_hnsxp_vault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "`", " ");
new playerxp[32], playerlevel[32];
parse(vaultdata, playerxp, 31, playerlevel, 31);
hnsxp_playerxp[id] = str_to_num(playerxp);
hnsxp_playerlevel[id] = str_to_num(playerlevel);
return PLUGIN_CONTINUE;
}
public t_win(id)
{
new iPlayer [ 32 ], iNum;
get_players(iPlayer, iNum, "ae", "TERRORIST")
for ( new i = 0; i < iNum; i++ ) {
hnsxp_playerxp[iPlayer [ i ]] += get_pcvar_num(tero_win);
MesajColorat(iPlayer[i], "!normal[!echipaLevel Mod!normal] Ai primit !verde %i !normalxp pentru ca echipa !verdeTERO a castigat !",get_pcvar_num(tero_win));
UpdateLevel(iPlayer[i]);
checkandupdatetop(iPlayer[i],hnsxp_playerlevel[iPlayer[i]])
}
}
stock MesajColorat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!verde", "^4")
replace_all(msg, 190, "!normal", "^1")
replace_all(msg, 190, "!echipa", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Last edited by strikegino; 01-27-2014 at 10:21.
|
|