Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <amxmisc>
- #include <engine>
- #include <vault>
- #include <hamsandwich>
- #include <fvault>
- #pragma tabsize 0
- #define is_valid_player(%1) (1 <= %1 <= 32)
- new Scout_model[33];
- new const g_VAULTNAME[] = "Scout-Skins";
- new const VERSION[] = "2.2"
- new const AUTHOR[] = "SerMajor"
- new iLevel[33];
- new iXp[33];
- new scout_on;
- new MaxLevel;
- new StartedLevel;
- new g_msgSayText;
- new cvar_KillXp;
- new cvar_HsXp;
- new cvar_ScoutXp;
- new Forward_spawn;
- new Forward_levelup;
- new ForwardReturn;
- const MAX_SCOUTS = 12
- new const g_scoutNames[MAX_SCOUTS][32] =
- {
- "Normal Scout",
- "yellow Scout",
- "steyr scout",
- "sig sauer sg3000 scout",
- "safari scout",
- "pharaoh scout",
- "komando steyrscout scout",
- "default scout reskin gtwalq",
- "crossbow scout",
- "blue scout",
- "badass m24 scout",
- "ak scout"
- };
- new const g_scoutLevels[MAX_SCOUTS] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }
- new const g_scoutvModels[MAX_SCOUTS][256] =
- {
- "models/v_scout.mdl",
- "models/lolscouthnr/v_scout_yellow.mdl",
- "models/lolscouthnr/v_scout_steyr.mdl",
- "models/lolscouthnr/v_scout_sg3000.mdl",
- "models/lolscouthnr/v_scout_safari.mdl",
- "models/lolscouthnr/v_scout_pharaoh.mdl",
- "models/lolscouthnr/v_scout_komando.mdl",
- "models/lolscouthnr/v_scout_default.mdl",
- "models/lolscouthnr/v_scout_crossbow.mdl",
- "models/lolscouthnr/v_scout_blue.mdl",
- "models/lolscouthnr/v_scout_badass.mdl",
- "models/lolscouthnr/v_scout_ak.mdl"
- }
- native register_maxlevels( maxlevel = 99, started_xp_level = 100 );
- native get_user_level( index );
- native get_user_xp( index );
- public plugin_init() {
- register_plugin(g_VAULTNAME, VERSION, AUTHOR);
- register_cvar("scout_skins", VERSION, FCVAR_SERVER); // Find Servers on Game-Monitor
- set_cvar_string("scout_skins", VERSION); // Find Servers on Game-Monitor
- // register max levels 13 is the top level, 100 is the started level xp.
- register_maxlevels( 13, 100 );
- //Admin commands
- register_concmd("scout_givexp" ,"givexp",ADMIN_RCON,"Add xp to a player")
- register_concmd("scout_takexp", "takexp",ADMIN_RCON,"Remove xp from a player")
- //Clcmd's
- scout_on = register_cvar( "Scout_skins", "1" )
- register_clcmd("say","HandleSay");
- register_clcmd("say_team","HandleSay")
- register_clcmd("say /scout", "ScoutSkinsMenu");
- register_clcmd("say /Slevel", "PlayerLevelsMenu");
- //Event's
- register_event("CurWeapon","CurWeapon","be","1=1");
- register_event( "DeathMsg", "EventDeathMsg", "a" );
- //Cvar's
- cvar_KillXp = register_cvar( "kill_xp", "5" );
- cvar_HsXp = register_cvar( "hs_xp", "2" );
- cvar_ScoutXp = register_cvar( "Scout_xp", "3" );
- //Ham's
- RegisterHam( Ham_Spawn, "player", "FwdPlayerSpawn", 1 );
- RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
- //Forward's
- Forward_levelup = CreateMultiForward( "forward_client_levelup", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL );
- Forward_spawn = CreateMultiForward( "forward_client_spawn", ET_IGNORE, FP_CELL , FP_CELL, FP_CELL );
- set_task(15.0, "scoutmessage", 0, _, _, "b")
- set_task(35.0, "Levelmessage", 0, _, _, "b")
- g_msgSayText = get_user_msgid("SayText");
- }
- public plugin_precache() {
- precache_model("models/lolscouthnr/v_scout_yellow.mdl")
- precache_model("models/lolscouthnr/v_scout_steyr.mdl")
- precache_model("models/lolscouthnr/v_scout_sg3000.mdl")
- precache_model("models/lolscouthnr/v_scout_safari.mdl")
- precache_model("models/lolscouthnr/v_scout_pharaoh.mdl")
- precache_model("models/lolscouthnr/v_scout_komando.mdl")
- precache_model("models/lolscouthnr/v_scout_default.mdl")
- precache_model("models/lolscouthnr/v_scout_crossbow.mdl")
- precache_model("models/lolscouthnr/v_scout_blue.mdl")
- precache_model("models/lolscouthnr/v_scout_badass.mdl")
- precache_model("models/lolscouthnr/v_scout_ak.mdl")
- }
- public plugin_natives( )
- {
- //Native's
- register_library( "scout-Skins" );
- register_native( "register_maxlevels", "_register_maxlevels" );
- register_native( "get_user_level", "_get_user_level" );
- register_native( "set_user_level", "_set_user_level" );
- register_native( "get_user_xp", "_get_user_xp" );
- register_native( "set_user_xp", "_set_user_xp" );
- }
- public _register_maxlevels( plugin, params )
- {
- if( MaxLevel != 0 && StartedLevel != 0 )
- {
- return;
- }
- else
- {
- MaxLevel = get_param( 1 );
- StartedLevel = get_param( 2 );
- }
- }
- public _get_user_level( plugin, params )
- {
- return iLevel[ get_param( 1 ) ];
- }
- public _set_user_level( plugin, params )
- {
- iLevel[ get_param( 1 ) ] = max( get_param( 2 ), MaxLevel );
- FlsahLevelUp( get_param( 1 ) );
- SaveData( get_param( 1 ) );
- LoadData( get_param( 1 ) );
- }
- public _get_user_xp( plugin, params )
- {
- return iXp[ get_param( 1 ) ];
- }
- public _set_user_xp( plugin, params )
- {
- iXp[ get_param( 1 ) ] = get_param( 2 );
- CheckLevel( get_param( 1 ) );
- SaveData( get_param( 1 ) );
- LoadData( get_param( 1 ) );
- }
- public CheckLevel( id )
- {
- if( iLevel[id] == MaxLevel )
- {
- return;
- }
- else
- {
- new level = iLevel[id] > 0 ? iLevel[id] : 1;
- new xp = level * StartedLevel;
- if( iLevel[id] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- while( iXp[id] >= xp )
- {
- iLevel[id]++;
- ColorChat(id,"^4Congratulations!^1 You'r have level up! You'r new^4 LEVEL^1 is: ^3%i^1.", iLevel[id]);
- ColorChat(0,"^3%s^1 has level up to^4 LEVEL^3 %i^1!",get_player_name(id), iLevel[id]);
- FlsahLevelUp(id);
- ExecuteForward( Forward_levelup, ForwardReturn, id, iLevel[id], iXp[id] );
- SaveData( id );
- CheckLevel( id );
- break;
- }
- }
- }
- public FlsahLevelUp( id )
- {
- message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), { 0, 0, 0}, id );
- write_short( 1 << 10 );
- write_short( 1 << 10 );
- write_short( 0 );
- write_byte( 0 );
- write_byte( 255 );
- write_byte( 215 );
- write_byte( 100 );
- message_end( );
- }
- public HandleSay(id){
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- new iMsg[200], iArgs[4][60];
- new level = iLevel[id] > 0 ? iLevel[id] : 1;
- new xp = level * StartedLevel;
- if( iLevel[id] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- read_argv(1,iMsg ,sizeof iMsg - 1);
- parse(iMsg,iArgs[0],charsmax(iArgs[]),iArgs[1],charsmax(iArgs[]),iArgs[2],charsmax(iArgs[]),iArgs[3],charsmax(iArgs[]));
- if (equali(iArgs[0],"/level") || equali(iArgs[0],"/lvl") || equali(iArgs[0],"/xp"))
- {
- new player = cmd_target(id,iArgs[1],CMDTARGET_NO_BOTS);
- if (!player)
- {
- ColorChat( id, "Your^4 LEVEL^1 is:^3 %i^4 |^1 Your^4 XP^1 is:^3 %i^1/^3%i^1.", iLevel[id], iXp[id], xp );
- }
- }
- return 0;
- }
- public EventDeathMsg(id)
- {
- if (get_pcvar_num(scout_on) == 0)
- return PLUGIN_HANDLED;
- new killer = read_data( 1 );
- new victim = read_data( 2 );
- if( killer == victim || ! is_user_connected( killer ) || ! is_user_connected( victim ) )
- {
- return PLUGIN_HANDLED;
- //return;
- }
- new XpAmount = get_pcvar_num( cvar_KillXp );
- if( read_data( 3 ) )
- {
- XpAmount += get_pcvar_num( cvar_HsXp );
- }
- static sWeapon[ 26 ];
- read_data( 4, sWeapon, sizeof( sWeapon ) - 1 );
- if( equal( sWeapon, "scout" ) )
- {
- XpAmount += get_pcvar_num( cvar_ScoutXp );
- }
- iXp[ killer ] += XpAmount;
- CheckLevel( killer );
- SaveData( killer );
- ColorChat( killer, "You have gained^3 %i^1 XP.", XpAmount );
- return PLUGIN_HANDLED;
- }
- public FwdPlayerSpawn( id )
- {
- ExecuteForward( Forward_spawn, ForwardReturn, id, iLevel[id], iXp[id] );
- }
- public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
- {
- if( get_pcvar_num( scout_on ) == 0 )
- return HAM_IGNORED;
- if( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_SCOUT )
- {
- SetHamParamFloat(4, damage + Scout_model[attacker]);
- return HAM_HANDLED;
- }
- return HAM_IGNORED;
- }
- public ScoutSkinsMenu(id) {
- if (!get_pcvar_num(scout_on))
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- new szItem[256];
- new level = iLevel[id] > 0 ? iLevel[id] : 1;
- new xp = level * StartedLevel;
- if( iLevel[id] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- formatex(szItem, charsmax(szItem), "\w[ \r%s \w] \yScout Skins Menu \rv%s^n\yYour Level: \r%d \w- \yYour XP: \r%d\w/\r%d\w.^n\yPage:\r", g_VAULTNAME, VERSION,iLevel[id],iXp[id], xp);
- new menu = menu_create( szItem, "ScoutSkinsMenu_Handler" );
- for (new i = 0; i < MAX_SCOUTS; i++)
- {
- formatex(szItem, charsmax(szItem), iLevel[id] >= g_scoutLevels[i] ? "%s [\yUNLOCKED\w]" : "\d%s [\rLEVEL %d REQUIRE\d]", iLevel[id] >= g_scoutLevels[i] ? g_scoutNames[i] : "?????????", g_scoutLevels[i]),
- menu_additem(menu, szItem, .paccess = (iLevel[id] >= g_scoutLevels[i]) ? 0 : 1);
- }
- menu_display(id, menu, 0 );
- return PLUGIN_HANDLED;
- }
- public ScoutSkinsMenu_Handler(id, menu, item)
- {
- if(item == MENU_EXIT)
- {
- menu_destroy(menu)
- return PLUGIN_HANDLED
- }
- SetScout(id, item);
- ColorChat(id, "The Scout you chose is: ^4%s^1.", g_scoutNames[item]);
- SaveData(id);
- return PLUGIN_HANDLED;
- }
- public SetScout(id, item) {
- Scout_model[id] = item
- new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
- if ( Weapon != CSW_SCOUT )
- return PLUGIN_HANDLED
- new vModel[56],pModel[56]
- if (get_pcvar_num(scout_on) == 0)
- {
- format(vModel,55,"models/v_scout.mdl")
- return PLUGIN_HANDLED;
- }
- format(vModel,55, g_scoutvModels[item])
- format(pModel,55,"models/p_Scout.mdl")
- entity_set_string(id, EV_SZ_viewmodel, vModel)
- entity_set_string(id, EV_SZ_weaponmodel, pModel)
- return PLUGIN_HANDLED;
- }
- public PlayerLevelsMenu(id)
- {
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- new some[256], menu;
- static players[32],szTemp[10],pnum;
- get_players(players,pnum,"ch");
- formatex(some,255,"\w[ \r%s \w] \yPlayer's Level:\r", g_VAULTNAME);
- menu = menu_create(some,"PlayerLevelsMenu_Handler");
- for (new i; i < pnum; i++)
- {
- new level = iLevel[players[i]] > 0 ? iLevel[players[i]] : 1;
- new xp = level * StartedLevel;
- if( iLevel[players[i]] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- formatex(some,256,"%s \y(Level: \r%i\y) \w- \y(XP: \r%i\w/\r%i\y)",get_player_name(players[i]), iLevel[players[i]], iXp[players[i]], xp);
- num_to_str(players[i],szTemp,charsmax(szTemp));
- menu_additem(menu, some, szTemp);
- }
- menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
- menu_display(id, menu);
- return PLUGIN_HANDLED;
- }
- public PlayerLevelsMenu_Handler(id,menu, item){
- if (item == MENU_EXIT)
- {
- menu_destroy(menu);
- return;
- }
- new data[6] ,szName[64],access,callback;
- menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
- new player = str_to_num(data);
- new level = iLevel[player] > 0 ? iLevel[player] : 1;
- new xp = level * StartedLevel;
- if( iLevel[player] > 0 )
- {
- xp += ( xp * 4 / 2 );
- }
- ColorChat(id,"^3%s's ^4LEVEL ^1is: ^3%i ^1with ^3%i^1/^3%i ^4XP^1.",get_player_name(player), iLevel[player], iXp[player], xp);
- PlayerLevelsMenu(id);
- }
- public CurWeapon(id)
- {
- // Set Knife Model
- SetScout(id, Scout_model[id])
- }
- public givexp(id) {
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- if( get_user_flags( id ) & ADMIN_RCON ) {
- new PlayerToGive[32], XP[32]
- read_argv(1,PlayerToGive,31)
- read_argv(2,XP, 31)
- new Player = cmd_target(id,PlayerToGive,9)
- if(!Player) {
- return PLUGIN_HANDLED
- }
- new XPtoGive = str_to_num(XP)
- new name[32],owner[32]
- get_user_name(id,owner,31)
- get_user_name(Player,name,31)
- ColorChat(0,"^4ADMIN^3 %s^1 give to^4 %s^3 %s^1 XP.", owner,name,XP );
- iXp[Player]+= XPtoGive
- CheckLevel(Player);
- SaveData(id)
- }
- else {
- client_print(id,print_console,"You have no acces to that command")
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED;
- }
- public takexp(id) {
- if (get_pcvar_num(scout_on) == 0)
- {
- ColorChat(id, "The mod has been disabale.");
- return PLUGIN_HANDLED;
- }
- if(get_user_flags(id) & ADMIN_RCON ) {
- new PlayerToTake[32], XP[32]
- read_argv(1,PlayerToTake,31 )
- read_argv(2,XP,31 )
- new Player = cmd_target(id,PlayerToTake,9)
- if(!Player) {
- return PLUGIN_HANDLED
- }
- new XPtoTake = str_to_num(XP)
- new name[32],owner[32]
- get_user_name(id,owner,31)
- get_user_name(Player,name,31)
- ColorChat(0,"^4ADMIN^3 %s^1 take to^4 %s^3 %s^1 XP.", owner,name,XP );
- iXp[ Player ]-=XPtoTake
- CheckLevel(Player);
- SaveData(id)
- }
- else {
- client_print(id,print_console,"You have no acces to that command.")
- return PLUGIN_HANDLED
- }
- return PLUGIN_HANDLED;
- }
- public client_disconnect(id) {
- if(task_exists(id)){
- remove_task(id)
- }
- SaveData(id);
- }
- public Scoutmessage(id) {
- if (get_pcvar_num(scout_on) == 0)
- return PLUGIN_HANDLED;
- ColorChat(0, "Type ^3/Scout ^1in chat to open the ^4Scout Skins Menu^1.");
- ColorChat(0, "This server is running ^4%s ^3v%s^1 by ^4%s^1.",g_VAULTNAME, VERSION, AUTHOR)
- return PLUGIN_HANDLED;
- }
- public Levelmessage(id) {
- if (get_pcvar_num(scout_on) == 0)
- return PLUGIN_HANDLED;
- ColorChat(0,"To see other ^4Players Level ^1type ^3/level ^1in chat.");
- return PLUGIN_HANDLED;
- }
- public client_putinserver(id) LoadData(id);
- public SaveData(id){
- new authid[32]
- get_user_authid(id, authid, 31)
- new vaultkey[64]
- new vaultdata[64]
- format(vaultkey, 63, "SCOUTMOD_%s", authid)
- format(vaultdata, 63, "%d", Scout_model[id])
- set_vaultdata(vaultkey, vaultdata)
- new data[ 16 ];
- get_user_authid( id, authid, sizeof( authid ) - 1 );
- formatex( data, sizeof( data ) - 1, "%d %d", iLevel[id], iXp[id] );
- fvault_set_data(g_VAULTNAME, authid, data );
- return;
- }
- public LoadData(id){
- new authid[32]
- get_user_authid(id,authid,31)
- new vaultkey[64], vaultdata[64]
- format(vaultkey, 63, "SCOUTMOD_%s", authid)
- get_vaultdata(vaultkey, vaultdata, 63)
- Scout_model[id] = str_to_num(vaultdata)
- new data[ 16 ], szLevel[ 8 ], szXp[ 8 ];
- get_user_authid( id, authid, sizeof( authid ) - 1 );
- if( fvault_get_data(g_VAULTNAME, authid, data, sizeof( data ) - 1 ) )
- {
- strbreak( data, szLevel, sizeof( szLevel ) - 1, szXp, sizeof( szXp ) - 1 );
- iLevel[id] = str_to_num( szLevel );
- iXp[id] = str_to_num( szXp );
- return;
- }
- else
- {
- iLevel[id] = 0;
- iXp[id] = 0;
- return;
- }
- }
- stock get_player_name(id){
- static szName[32];
- get_user_name(id,szName,31);
- return szName;
- }
- stock ColorChat( const id, const string[ ], { Float, Sql, Resul, _ } : ... )
- {
- new msg[ 191 ], players[ 32 ], count = 1;
- static len;
- if (!len)
- len = formatex( msg, charsmax( msg ), "^x04[^x01 Scout-Skins^x04 ]^x01 " );
- vformat( msg[ len ], charsmax( msg ) - len, string, 3 );
- if( id )
- players[ 0 ] = id;
- else
- get_players( players,count,"ch" );
- for( new i = 0; i < count; i++ )
- {
- message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _ , players[ i ] );
- write_byte( players[ i ] );
- write_string( msg );
- message_end( );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement