Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement