Page 1 of 1

[ZP] XP System and Level's

Posted: 01 Feb 2019, 10:42
by LondoN eXtream
Descriere: Este un plugin de zombie xp + level simplu..si cu native

Descarcare: https://pastebin.com/2XT1YhC3

Nume: [ZP] XP + Levels
Versiune: 1.0
Link oficial: http://www.legatura_catre_plugin.com/unde/se/afla/originalul.html

Instalare:
1. Fisierul nume_plugin.sma il puneti in addons/amxmodx/scripting
2. Fisierul nume_plugin.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

Code: Select all

nume_plugin.amxx
4. Alti pasi necesari....

Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):
  • zp_xp_damage_for_experience 600 - la cat damage facut sa primeasca intre 1, 3 XP
Astept ceva pareri..cat mai mult pentru optimizare..poate il dezvoltam si il facem si mai frumos de atat.

Re: [ZP] XP System and Level's

Posted: 01 Feb 2019, 14:07
by YONTU
Daca isi schimbaa numele pe server ce faci? Tine cont și de asta

Re: [ZP] XP System and Level's

Posted: 01 Feb 2019, 17:57
by LondoN eXtream
YONTU wrote:Daca isi schimbaa numele pe server ce faci? Tine cont și de asta
e doar un basic..cand am inceput realizarea pluginului am facut strict sistemul si salvarea...dar totusi o sa adaug si restrictia de schimbare a numelui.

Re: [ZP] XP System and Level's

Posted: 16 Apr 2019, 22:22
by dannyel98
Cum adaugi clase human si zombie pe levele?

Re: [ZP] XP System and Level's

Posted: 17 Apr 2019, 00:36
by levin
dannyel98 wrote:
16 Apr 2019, 22:22
Cum adaugi clase human si zombie pe levele?
prin nativele acestui plugin, incluzi native în plg pentru clasa pe care o veri pe level, și faci verificarea prin nativ dacă are levelul necesar(zpxp_get_level(id)==1)

Re: [ZP] XP System and Level's

Posted: 19 Apr 2019, 01:17
by Rainq
ar fi ok sa pui sursa pe forum de acum incolo pe alte site-uri se poate pierde

Code: Select all

#include < amxmodx >
#include < amxmisc >
#include < fvault >
 
#define PLUGIN  "Zombie XP"
#define VERSION "1.0 Beta"
#define AUTHOR  "LondoN eXtream"
 
#define SAVE_FILE_NAME  "ZPXP_fVault"
#define MAX_LEVEL   10
 
new g_PlayerName [ 33 ] [ 32 ];
new g_Experience [ 33 ], g_Level [ 33 ];
new g_CvarAmmoPacksDamage;
 
new const ExperienceNeed [ MAX_LEVEL ] =
{
    0,  //  Level 1
    500,    //  Level 2
    1000,   //  Level 3
    2000,   //  Level 4
    3500,   //  Level 5
    4000,   //  Level 6
    5500,   //  Level 7
    6300,   //  Level 8
    7200,   //  Level 9
    9000,   //  Level 10
}
 
public plugin_init ( )
{
    register_plugin ( PLUGIN, VERSION, AUTHOR );
    register_cvar ( "zombie_xp_london", VERSION, FCVAR_SERVER|FCVAR_SPONLY );
    set_cvar_string ( "zombie_xp_london", VERSION );
 
    g_CvarAmmoPacksDamage = register_cvar ( "zp_xp_damage_for_experience", "500" );
 
    register_event ( "Damage", "Event_UserMakeDamage", "b", "2!=0" );
    register_event ( "DeathMsg", "Event_UserKillSomeone", "a" );
}
 
public plugin_natives ( )
{
    register_native ( "zpxp_set_experience", "_set_experience", 1 );
    register_native ( "zpxp_get_experience", "_get_experience", 1 );
    register_native ( "zpxp_set_level", "_set_level", 1 );
    register_native ( "zpxp_get_level", "_get_level", 1 );
}
 
public _set_experience ( Player, Amount )
{
    if ( !is_user_connected ( Player ) )
        return;
 
    g_Experience [ Player ] += Amount;
 
    check_user_level ( Player );
}
 
public _get_experience ( Player )
{
    return g_Experience [ Player ];
}
 
public _set_level ( Player, Level )
{
    if ( !is_user_connected ( Player ) )
        return;
 
    if ( Level > MAX_LEVEL )
        return;
 
    g_Level [ Player ] = Level;
 
    g_Experience [ Player ] = ExperienceNeed [ g_Level [ Player ] ];
}
 
public _get_level ( Player )
{
    return g_Level [ Player ];
}
 
public Event_UserMakeDamage ( Player )
{
    new Damage = read_data ( 2 );
    new ID = get_user_attacker ( Player );
 
    if ( ID == Player || !ID || !is_user_alive ( ID ) )
        return;
 
    while ( Damage >= get_pcvar_num ( g_CvarAmmoPacksDamage ) )
    {
        Damage -= get_pcvar_num ( g_CvarAmmoPacksDamage );
        g_Experience [ ID ] += random_num ( 1, 3 );
    }
 
    check_user_level ( ID );
 
}
 
 
public Event_UserKillSomeone ( )
{
    new Attacker;   Attacker = read_data ( 1 );
    new Victim; Victim = read_data ( 2 );
 
    if ( Attacker == Victim || !Attacker || !is_user_alive ( Attacker ) )
        return;
 
    g_Experience [ Attacker ] += 20;
 
    check_user_level ( Attacker );
}
 
public check_user_level ( Player )
{
    if ( g_Level [ Player ] < MAX_LEVEL )
    {
        while ( g_Experience [ Player ] >= ExperienceNeed [ g_Level [ Player ] ] )
        {
            g_Level [ Player ]++;
        }
    }
 
    save_user_data ( Player );
}
 
public client_connect ( Player )
{
    if ( is_user_bot ( Player ) || is_user_hltv ( Player ) )
        return;
 
    get_user_name ( Player, g_PlayerName [ Player ], charsmax ( g_PlayerName ) );
 
    load_user_data ( Player );
}
 
public client_disconnect ( Player )
{
    if ( is_user_bot ( Player ) || is_user_hltv ( Player ) )
        return;
 
    save_user_data ( Player );
}
 
public save_user_data ( Player )
{
    new g_String [ 32 ];
    formatex ( g_String, charsmax ( g_String ), "%s %s", g_Level [ Player ], g_Experience [ Player ] );
 
    fvault_set_data ( SAVE_FILE_NAME, g_PlayerName [ Player ], g_String );
}
 
public load_user_data ( Player )
{
    new g_String [ 32 ];
   
    if ( fvault_get_data ( SAVE_FILE_NAME, g_PlayerName [ Player ], g_String, charsmax ( g_String ) ) )
    {
        // a = level | b = experience
        new a [ 16 ], b [ 16 ];
        parse ( g_String, a, charsmax ( a ), b, charsmax ( b ) );
 
        g_Level [ Player ] = str_to_num ( a );
        g_Experience [ Player ] = str_to_num ( b );
    }
    else
    {
        g_Level [ Player ] = 0;
        g_Experience [ Player ] = 0;
    }
}

Re: [ZP] XP System and Level's

Posted: 19 Apr 2019, 10:11
by levin
Event_UserMakeDamage - cam aiurea ce e în el

public Event_UserKillSomeone ( )
!Attacker || !is_user_alive ( Attacker ) (cam acleași..)


public save_user_data ( Player )
formatex ( g_String, charsmax ( g_String ), "%s %s", g_Level [ Player ], g_Experience [ Player ] );
>
formatex ( g_String, charsmax ( g_String ), "%d %d", g_Level [ Player ], g_Experience [ Player ] );