Senior Member
|
10-26-2014
, 05:38
Level sistem simple
|
#1
|
Hi, ca you to look to this plugin and you look if is OK?
Code:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
#include <nvault>
#include <dhudmessage>
#include <zp50_core>
static const
PLUGIN[] = "",
VERSION[] = "1.0",
AUTHOR[] = "scosmyn";
new Xp[33],Level[33],g_vault
new minutes = 180
new bool:Have_UP[33]
new g_max_players
public plugin_init() {
register_plugin(PLUGIN,VERSION,AUTHOR);
RegisterHam(Ham_Spawn,"player","fwd_spawn",1);
register_event("DeathMsg","ev_msg","a");
register_event("CurWeapon","ev_weapon","be","1=1");
g_max_players = get_maxplayers()
g_vault = nvault_open("lvlmod");
set_task(20.0,"save",_,_,_,"b")
}
public getNeededPacks(id)
{
switch(Level[id])
{
case 1 : return 20
case 2 : return 40
case 3 : return 120
case 4 : return 190
case 5 : return 320
case 6 : return 400
case 7 : return 450
case 8 : return 550
case 9 : return 700
case 10 : return 780
case 11 : return 810
case 12 : return 820
case 13 : return 830
case 14 : return 840
case 15 : return 850
case 16 : return 860
case 17 : return 870
case 18 : return 890
case 19 : return 920
case 20 : return 1000
case 21 : return 999999
}
return 0;
}
public save(id) {
if(get_maxplayers() < 1)
return;
else
SaveData(id)
}
public client_putinserver(id)
{
LoadData(id)
set_task(1.0,"hud_stats",id+0x138F,_,_,"b")
if(Level[id] == 0)
{
Level[id] = 1
}
}
public hud_stats(id) {
id -= 0x138F
if(is_user_alive(id) && !is_user_bot(id) && Level[id] < 21)
{
set_dhudmessage(238,216,16, 0.0,0.20,0,6.0, 1.0)
show_dhudmessage(id, "[XP: %d/%d] | [LVL: %d]",Xp[id], getNeededPacks(id),Level[id])
}
else if(is_user_alive(id) && !is_user_bot(id) && Level[id] > 20)
{
set_dhudmessage(238,216,16, 0.0,0.20,0,6.0, 1.0)
show_dhudmessage(id, "[XP:COMPLET] | [LVL: %d]",Level[id])
}
}
public client_disconnect(id) {
remove_task(id+0x138F)
remove_task(id)
SaveData(id)
Level[id] = 0
Xp[id] = 0
}
public ev_weapon(id) {
if(!zp_core_is_zombie(id))
set_user_maxspeed(id,get_user_maxspeed(id) + (Level[id] * 2))
else
return
}
public ev_msg( ) {
static kiler,victim
kiler = read_data(1)
victim = read_data(2)
if(kiler == victim || !is_user_alive(kiler))
return
if(kiler != victim)
Xp[kiler]++
while(Xp[kiler] >= getNeededPacks(kiler))
{
Level[kiler]++;
Xp[kiler] = 0
color(kiler,"!team[DARKNESS]!yFelicitari,tocmai ai ajuns la level %i",Level[kiler])
if(zp_core_is_zombie(kiler))
{
set_user_health(kiler,get_user_health(kiler) + 200 * Level[kiler])
set_user_armor(kiler,get_user_armor(kiler) + 20 * Level[kiler])
}
else
{
set_user_health(kiler,get_user_health(kiler) + 5 * Level[kiler])
ev_weapon(kiler)
}
return
}
SaveData(kiler)
}
public fwd_spawn(id) {
if(!is_user_alive(id))
return HAM_IGNORED
Have_UP[id] = false
if(task_exists(id))
remove_task(id)
set_task(2.1,"upgrade",id,_,_,"a",minutes)
return HAM_HANDLED
}
public upgrade(id) {
if(Have_UP[id])
return
if(zp_core_is_zombie(id))
{
Have_UP[id] = true
set_user_health(id,get_user_health(id) + 200 * Level[id])
set_user_armor(id,get_user_armor(id) + 20 * Level[id])
}
else
{
Have_UP[id] = true
set_user_health(id,get_user_health(id) + 5 * Level[id])
ev_weapon(id)
}
}
public SaveData(id)
{
new vaultkey[64],vaultdata[256],name[32]
get_user_name(id,name,charsmax(name))
format(vaultkey,63,"%s-Mod",name)
format(vaultdata,255,"%i#%i#",Xp[id],Level[id])
nvault_set(g_vault,vaultkey,vaultdata)
return 0
}
public LoadData(id) {
new vaultkey[64],vaultdata[256],name[32]
get_user_name(id,name,charsmax(name))
format(vaultkey,63,"%s-Mod",name)
format(vaultdata,255,"%i#%i#",Xp[id],Level[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new XP[32], LEVEL[32]
parse(vaultdata, XP, 31, LEVEL, 31)
Xp[id] = str_to_num(XP)
Level[id] = str_to_num(LEVEL)
return 0
}
public event_infect(victim, attacker) {
if(is_user_alive(victim))
{
set_user_health(victim,get_user_health(victim) + 200 * Level[victim])
set_user_armor(victim,get_user_armor(victim) + 20 * Level[victim])
}
Xp[attacker]++
if(Xp[attacker] >= getNeededPacks(attacker))
{
Level[attacker]++;
Xp[attacker] = 0
color(attacker,"!team[Darkness]!yFelicitari,tocmai ai ajuns la level %i",Level[attacker])
}
SaveData(attacker)
}
public plugin_end() nvault_close(g_vault)
stock color( const id, const input[ ], any:... )
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" ) //- verde
replace_all( msg, 190, "!y", "^1" ) //- galben
replace_all( msg, 190, "!team", "^3" ) //- echipa
replace_all( msg, 190, "!n", "^0" ) //- normal
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( );
}
}
}
}
And.. maybe you add: amx_give_xp (set to player xp)
amx_take_xp (take player xp)
and a top per lvl (if a player write /toplvl ,show a menu with player levels (HUD))
Last edited by SnowFake; 10-26-2014 at 05:39.
|
|