Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <cstrike>
- #include <hamsandwich>
- #include <zombieplague>
- #include <nvault_util>
- #include <nvault>
- #include <sqlx>
- #define TAG "Premium-ZM" // Change the tag from here ... MUST BE BETWEEN ""
- #define MAXPLAYERS 32
- #define MAXLEVEL 60
- #define DUARATION 1
- #define HOLD 3
- #define FFADE_IN 0x0000
- #define FFADE_OUT 0x0001
- #define DENSITY 150
- new const level_up [] = "premium_zombie/level_up.wav" // EDIT SOUND
- new bool:g_bKilledZombie[MAXPLAYERS+1][33]
- new Level[33], XP[33]
- new savexp, g_Vault, save_type, mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass
- new Handle:g_hTuple
- new const szTables[][] =
- {
- "CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
- }
- new const LEVELS[MAXLEVEL] = {
- 90, // Needed on level 1
- 180, // Needed on level 2
- 300, // Needed on level 3
- 450, // Needed on level 4
- 700, // Needed on level 5
- 1200, // Needed on level 6
- 1800, // Needed on level 7
- 2800, // Needed on level 8
- 4100, // Needed on level 9
- 5200, // Needed on level 10
- 6000, // Needed on level 11
- 6800, // Needed on level 12
- 8200, // Needed on level 13
- 10200, // Needed on level 14
- 12000, // Needed on level 15
- 15000, // Needed on level 16
- 17500, // Needed on level 17
- 20500, // Needed on level 18
- 25500, // Needed on level 19
- 29000, // Needed on level 20
- 35000, // Needed on level 21
- 46000, // Needed on level 22
- 58000, // Needed on level 23
- 150000, // Needed on level 24
- 180000, // Needed on level 25
- 200000, // Needed on level 26
- 225000, // Needed on level 27
- 250000, // Needed on level 28
- 270000, // Needed on level 29
- 300000, // Needed on level 30
- 325000, // Needed on level 31
- 350000, // Needed on level 32
- 370000, // Needed on level 33
- 400000, // Needed on level 34
- 425000, // Needed on level 35
- 450000, // Needed on level 36
- 470000, // Needed on level 37
- 500000, // Needed on level 38
- 525000, // Needed on level 39
- 550000, // Needed on level 40
- 575000, // Needed on level 41
- 600000, // Needed on level 42
- 625000, // Needed on level 43
- 650000, // Needed on level 44
- 670000, // Needed on level 45
- 700000, // Needed on level 46
- 725000, // Needed on level 47
- 750000, // Needed on level 48
- 770000, // Needed on level 49
- 800000, // Needed on level 50
- 825000, // Needed on level 51
- 850000, // Needed on level 52
- 875000, // Needed on level 53
- 900000, // Needed on level 54
- 925000, // Needed on level 55
- 950000, // Needed on level 56
- 975000, // Needed on level 57
- 1000000, // Needed on level 58
- 1500000, // Needed on level 59
- 2000000, // Needed on level 60
- }; // Needed Xp on each Levels
- public plugin_natives()
- {
- register_native("zp_get_user_level", "GET_LEVEL", 1)
- register_native("zp_set_user_level", "SET_LEVEL", 1)
- register_native("zp_get_user_xp", "GET_XP", 1)
- register_native("zp_set_user_xp", "SET_XP", 1)
- }
- public GET_LEVEL(id)
- {
- return Level[id];
- }
- public SET_XP(id, amount)
- {
- XP[id] = amount
- }
- public GET_XP(id)
- {
- return XP[id];
- }
- public SET_LEVEL(id, amount)
- {
- Level[id] = amount
- }
- public fw_PlayerPreThink(id)
- {
- if(Level[id] < MAXLEVEL-1)
- {
- while(XP[id] >= LEVELS[Level[id]])
- {
- XP[id] = 0
- Level[id]++
- message_begin(MSG_ONE_UNRELIABLE, get_user_msgid( "ScreenFade" ), {0,0,0}, id)
- write_short(DUARATION * 4096) // Duration
- write_short(HOLD * 4096) // Hold time
- write_short(FFADE_OUT) // Fade type
- write_byte (random(256)) // Red
- write_byte (random(256)) // Green
- write_byte (random(256)) // Blue
- write_byte (DENSITY) // Alpha
- message_end()
- }
- }
- }
- public plugin_init()
- {
- register_plugin("[ZP] Addons: Level & XP System", "5.0", "JaCk")
- register_event("DeathMsg", "event_DeathMsg", "a")
- save_type = register_cvar("levels_savetype","0") // 0= Nvault .. 1= MySql
- savexp = register_cvar("levels_save", "1") // 0= IP..1= Steamid..2= Name
- mysqlx_host = register_cvar ("levels_host", ""); // The host from the db
- mysqlx_user = register_cvar ("levels_user", ""); // The username from the db login
- mysqlx_pass = register_cvar ("levels_pass", ""); // The password from the db login
- mysqlx_db = register_cvar ("levels_dbname", ""); // The database name
- }
- public plugin_cfg()
- {
- g_Vault = nvault_open( "ZR_levels" ); // Nvault file name
- if ( g_Vault == INVALID_HANDLE )
- set_fail_state( "Error opening levels nVault, file does not exist!" );
- }
- public plugin_precache()
- {
- precache_sound(level_up)
- }
- public plugin_end()
- {
- nvault_close( g_Vault );
- }
- public client_connect(id)
- {
- LoadLevel(id)
- }
- public client_disconnect(id)
- {
- SaveLevel(id)
- XP[id] = 0
- Level[id] = 0
- }
- public on_damage(id)
- {
- static attacker,damage;
- if ((damage >= 1400) && is_user_connected(attacker) && (!(zp_get_user_zombie(attacker))) && (attacker != id))
- {
- XP[attacker] += 2
- set_hudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.7, 0, 3.0, 8.0, 0.5, 0.5)
- show_hudmessage(attacker, "+2 XP")
- fw_PlayerPreThink(id)
- }
- }
- public zp_user_infected_post(id, infector)
- {
- if(is_user_alive(infector) && infector != id)
- {
- XP[infector] += 2
- fw_PlayerPreThink(infector)
- }
- }
- public zp_round_ended(iTeam)
- {
- new iPlayers[MAXPLAYERS], iPlayerCount, i, player
- get_players(iPlayers, iPlayerCount, "ac")
- player = iPlayers[i]
- switch(iTeam)
- {
- case WIN_ZOMBIES:
- {
- for(i = 0; i < iPlayerCount; i++)
- {
- if(zp_get_user_zombie(player))
- {
- XP[player] += 4
- fw_PlayerPreThink(player)
- }
- }
- }
- case WIN_HUMANS:
- {
- for(i = 0; i < iPlayerCount; i++)
- {
- if(!zp_get_user_zombie(player))
- {
- XP[player] += 4
- fw_PlayerPreThink(player)
- }
- }
- }
- case WIN_NO_ONE:
- {
- for(i = 0; i < iPlayerCount; i++)
- {
- if((zp_get_user_zombie(player)) || (!(zp_get_user_zombie(player))))
- {
- XP[player] += 2
- fw_PlayerPreThink(player)
- }
- }
- }
- }
- }
- public event_DeathMsg()
- {
- new iKiller; iKiller = read_data(1)
- new iVictim; iVictim = read_data(2)
- new iIsHeadshot; iIsHeadshot = read_data(3)
- if(iVictim == iKiller || !is_user_alive(iKiller))
- return
- if(!zp_get_user_zombie(iKiller) || zp_get_user_survivor(iKiller))
- {
- if(zp_get_user_nemesis(iVictim))
- {
- XP[iKiller] += 30
- fw_PlayerPreThink(iKiller)
- fw_PlayerPreThink(iVictim)
- }
- else
- {
- if(iIsHeadshot)
- {
- g_bKilledZombie[iKiller][iVictim] = true
- XP[iKiller] += 5
- fw_PlayerPreThink(iKiller)
- }
- else
- {
- g_bKilledZombie[iKiller][iVictim] = true
- XP[iKiller] += 2
- fw_PlayerPreThink(iKiller)
- }
- }
- }
- else if(zp_get_user_zombie(iKiller) || zp_get_user_nemesis(iKiller))
- {
- if(zp_get_user_survivor(iVictim))
- {
- XP[iKiller] += 30
- fw_PlayerPreThink(iKiller)
- }
- else
- {
- XP[iKiller] += 2
- fw_PlayerPreThink(iKiller)
- }
- }
- }
- SaveLevel(id)
- {
- new szAuth[33];
- new szKey[64];
- if ( get_pcvar_num(savexp) == 0 )
- {
- get_user_ip( id, szAuth , charsmax(szAuth), 1);
- formatex( szKey , 63 , "%s-IP" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 1 )
- {
- get_user_authid( id , szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-ID" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 2 )
- {
- get_user_name( id, szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-NAME" , szAuth);
- }
- if ( !get_pcvar_num(save_type) )
- {
- new szData[256];
- formatex( szData , 255 , "%i#%i#" , Level[id], XP[id] );
- nvault_set( g_Vault , szKey , szData );
- }
- else
- {
- static szQuery[ 128 ];
- formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , Level[id], XP[id] );
- SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
- }
- }
- LoadLevel(id)
- {
- new szAuth[33];
- new szKey[40];
- if ( get_pcvar_num(savexp) == 0 )
- {
- get_user_ip( id, szAuth , charsmax(szAuth), 1);
- formatex( szKey , 63 , "%s-IP" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 1 )
- {
- get_user_authid( id , szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-ID" , szAuth);
- }
- else if ( get_pcvar_num(savexp) == 2 )
- {
- get_user_name( id, szAuth , charsmax(szAuth) );
- formatex( szKey , 63 , "%s-NAME" , szAuth);
- }
- if ( !get_pcvar_num(save_type) )
- {
- new szData[256];
- formatex(szData , 255, "%i#%i#", Level[id], XP[id])
- nvault_get(g_Vault, szKey, szData, 255)
- replace_all(szData , 255, "#", " ")
- new xp[32], level[32]
- parse(szData, level, 31, xp, 31)
- Level[id] = str_to_num(level)
- XP[id] = str_to_num(xp)
- }
- else
- {
- static szQuery[ 128 ], iData[ 1 ];
- formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth );
- iData[ 0 ] = id;
- SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
- }
- }
- public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
- {
- if( iFailState == TQUERY_CONNECT_FAILED
- || iFailState == TQUERY_QUERY_FAILED )
- {
- log_amx( "%s", szError );
- return;
- }
- else
- {
- new id = iData[ 0 ];
- new ColLevel = SQL_FieldNameToNum(hQuery, "player_level")
- new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
- while (SQL_MoreResults(hQuery))
- {
- Level[id] = SQL_ReadResult(hQuery, ColLevel);
- XP[id] = SQL_ReadResult(hQuery, ColXp);
- SQL_NextRow(hQuery)
- }
- }
- }
- public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
- {
- if( iFailState == TQUERY_CONNECT_FAILED
- || iFailState == TQUERY_QUERY_FAILED )
- {
- log_amx( "%s", szError );
- return;
- }
- }
- public MySQLx_Init()
- {
- if (!get_pcvar_num(save_type))
- return;
- new szHost[64], szUser[32], szPass[32], szDB[128];
- get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
- get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
- get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
- get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
- g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
- for ( new i = 0; i < sizeof szTables; i++ )
- {
- SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
- }
- }
- public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
- {
- if( iFailState == TQUERY_CONNECT_FAILED
- || iFailState == TQUERY_QUERY_FAILED )
- {
- log_amx( "%s", szError );
- return;
- }
- }
- stock client_print_color(const id, const input[], any:...)
- {
- new count = 1, players[32];
- static msg[191];
- vformat(msg, 190, input, 3);
- replace_all(msg, 190, "!g", "^x04"); // Green Color
- replace_all(msg, 190, "!y", "^x01"); // Default Color
- replace_all(msg, 190, "!t", "^x03"); // Team Color
- 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();
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment