Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <cstrike>
- #include <zombieplague>
- #include <nvault_util>
- #include <nvault>
- #include <sqlx>
- #define TAG "ZP" // Change the tag from here ... MUST BE BETWEEN ""
- #define MAXPLAYERS 32
- #define MAXLEVELS 30 // EDIT MAX LEVELS
- #define DUARATION 1
- #define HOLD 3
- #define FFADE_IN 0x0000
- #define FFADE_OUT 0x0001
- #define DENSITY 150
- new const level_up [] = "zombie_plague/zp_LEVEL_UP.mp3" // EDIT SOUND
- new Level[33], XP[33]
- new savexp, g_Vault
- new g_msgSayText, g_MsgScreenFade
- new Handle:g_hTuple;
- new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass
- new save_type
- 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;"
- }
- 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)
- {
- return XP[id] = amount
- }
- public GET_XP(id)
- {
- return XP[id];
- }
- public SET_LEVEL(id, amount)
- {
- return Level[id] = amount
- }
- public fw_PlayerPreThink(id)
- {
- if(XP[id] >= 100)
- {
- XP[id] = 0
- Level[id] += 1
- }
- }
- public client_death(killer,victim,weapon,hitplace,TK)
- {
- XP[killer] += 1
- }
- public plugin_init()
- {
- register_plugin("[ZP] Best Level & XP System Ever", "1.0", "JaCk")
- register_clcmd("say /info", "show_xp")
- register_event("DeathMsg", "event_DeathMsg", "a")
- register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
- save_type = register_cvar("levels_savetype","0") // 0= Nvault .. 1= MySql
- savexp = register_cvar("levels_save", "1") // 0= IP..1= Steamid..2= Name
- g_msgSayText = get_user_msgid("SayText")
- g_MsgScreenFade = get_user_msgid( "ScreenFade" )
- register_clcmd("say", "custom_say")
- register_clcmd("say_team", "custom_say_team")
- g_msgSayText = get_user_msgid("SayText")
- register_message(g_msgSayText, "message_SayText")
- 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( "levels" ); // Ncault 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)
- new szName[32]
- get_user_name(id, szName, charsmax(szName))
- client_print_color(0, "!y[!g%s!y] !t%s !gwhose level !t%i !gconnected!y.", TAG, szName, Level[id]) // EDIT CONNECT MESSAGE
- }
- public client_disconnect(id)
- {
- SaveLevel(id)
- XP[id] = 0
- Level[id] = 0
- }
- /*=========SCREEN FADE EFFECT=========*/
- public Screen_Fade(id)
- {
- message_begin(MSG_ONE_UNRELIABLE, g_MsgScreenFade, {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()
- }
- /*==========LEVEL TAG !!!!!!!!!=================*/
- public custom_say(id)
- {
- new szMessage[192], szName[32]
- read_args(szMessage, charsmax(szMessage))
- remove_quotes(szMessage)
- get_user_name(id, szName, charsmax(szName))
- if(equali(szMessage[0], " ") || equali(szMessage[0], "") || !is_valid_msg(szMessage))
- return PLUGIN_HANDLED_MAIN
- if(is_user_alive(id))
- {
- format(szMessage, charsmax(szMessage), "^1[^4LEVEL ^3%i^1] ^3%s ^1: %s", Level[id], szName, szMessage)
- }
- else
- {
- format(szMessage, charsmax(szMessage), "^1*DEAD* [^4LEVEL ^3%i^1] ^3%s ^1: %s", Level[id], szName, szMessage)
- }
- new iPlayers[MAXPLAYERS], iPlayerCount, i, player
- get_players(iPlayers, iPlayerCount, "ch")
- for(i = 0; i < iPlayerCount; i++)
- {
- player = iPlayers[i]
- if(is_user_alive(id) && is_user_alive(player) || !is_user_alive(id) && !is_user_alive(player))
- {
- message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player)
- write_byte(id)
- write_string(szMessage)
- message_end()
- }
- }
- return PLUGIN_CONTINUE
- }
- public custom_say_team(id)
- {
- new szMessage[192], szName[32]
- read_args(szMessage, charsmax(szMessage))
- remove_quotes(szMessage)
- get_user_name(id, szName, charsmax(szName))
- if(equali(szMessage[0], " ") || equali(szMessage[0], "") || !is_valid_msg(szMessage))
- return PLUGIN_HANDLED_MAIN
- if(is_user_alive(id))
- {
- format(szMessage, charsmax(szMessage), "^1[^4LEVEL ^3%i^1] ^3%s ^1: %s", Level[id], szName, szMessage)
- }
- else
- {
- format(szMessage, charsmax(szMessage), "^1*DEAD* [^4LEVEL ^3%i^1] ^3%s ^1: %s", Level[id], szName, szMessage)
- }
- new iPlayers[MAXPLAYERS], iPlayerCount, i, player
- get_players(iPlayers, iPlayerCount, "ch")
- for(i = 0; i < iPlayerCount; i++)
- {
- player = iPlayers[i]
- if(is_user_alive(id) && is_user_alive(player) && get_user_team(id) == get_user_team(player) || !is_user_alive(id) && !is_user_alive(player) && get_user_team(id) == get_user_team(player))
- {
- message_begin(MSG_ONE, g_msgSayText, {0, 0, 0}, player)
- write_byte(id)
- write_string(szMessage)
- message_end()
- }
- }
- return PLUGIN_CONTINUE
- }
- public message_SayText(id)
- {
- return PLUGIN_HANDLED
- }
- bool:is_valid_msg(const szMessage[])
- {
- if(szMessage[0] == '@' || szMessage[0] == '/' || szMessage[0] == '!' || !strlen(szMessage))
- return false
- return true
- }
- /*===============STOCKS !!!===========*/
- /*=========SAVES THE LEVEL OF THE PLAYER=========*/
- 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);
- }
- }
- /*======LOAD LEVEL OF THE PLAYERS========*/
- 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();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement