pls add Key G to open /knife in SMA

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Infamous2018
Извън линия
Foreigner
Foreigner
Мнения: 522
Регистриран на: 08 Апр 2018, 16:56
Се отблагодари: 14 пъти
Получена благодарност: 21 пъти

pls add Key G to open /knife in SMA

Мнение от Infamous2018 » 01 Май 2018, 16:03

Can anyone add when player use key G that he opens /knife with it ?

Код за потвърждение: Избери целия код

#include <amxmodx> 
#include <amxmisc> 
#include <engine>  
#include <vault> 
#include <hamsandwich> 
#include <fvault> 

#pragma tabsize 0

#define is_valid_player(%1) (1 <= %1 <= 32)

new knife_model[33];

new const g_VAULTNAME[] = "Knife-Menu";
new const VERSION[] = "2.2" 
new const AUTHOR[] = "Asafmazon." 


new iLevel[33];
new iXp[33];

new knife_on;

new MaxLevel;
new StartedLevel;

new cvar_KillXp;
new cvar_HsXp;
new cvar_KnifeXp;

new Forward_spawn;
new Forward_levelup;
new ForwardReturn;

new const g_KnifeNames[][32] =
{
"Normal Knife",
"Alien Knife",
"Ellium Dagger",
"Dark Dagger",
"Transparent Knife",
"Genuine Dagger",
"Hunt Blade",
"Shadow Blade",
"Slaughterer Axe",
"Golden Katana",
"Assasin's Blade",
"Lightsaber",
"Bloody Wolverine Claws",
"Proton Axe",
"Red Knife",
"Black Axe",
"Daedric Knife",
"Red Axe",
"Hammer",
"Sakica",
"Final Knife"
};

new const g_KnifevModels[][256] =
{
"models/v_knife.mdl",
"models/Knifes/v_knife_alien.mdl",
"models/Knifes/v_knife_ellium.mdl",
"models/Knifes/v_knife_dark.mdl",
"models/Knifes/v_knife_transparent.mdl",
"models/Knifes/v_knife_genuine.mdl",
"models/Knifes/v_knife_hunt.mdl",
"models/Knifes/v_knife_shadow.mdl",
"models/Knifes/v_knife_slaughterer.mdl",
"models/Knifes/v_knife_katana.mdl",
"models/Knifes/v_knife_assasins.mdl",
"models/Knifes/v_knife_lightsaber.mdl",
"models/Knifes/v_knife_wolverine.mdl",
"models/Knifes/v_knife_proton.mdl",
"models/Knifes/v_knife_bayonet.mdl",
"models/Knifes/v_knife_blackaxe.mdl",
"models/Knifes/v_knife_daedric.mdl",
"models/Knifes/v_knife_redaxe.mdl",
"models/Knifes/v_knife_hammer.mdl",
"models/Knifes/v_knife_sakica.mdl",
"models/Knifes/v_knife_final.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("knife_menu", VERSION, FCVAR_SERVER); // Find Servers on Game-Monitor
	set_cvar_string("knife_menu", 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("knife_givexp" ,"givexp",ADMIN_RCON,"add xp to any player")
	register_concmd("knife_takexp", "takexp",ADMIN_RCON,"removed xp any player")
	
	//Clcmd's
	
	knife_on = register_cvar( "knife_menu", "1" );
	
	register_clcmd("say","HandleSay"); 
	register_clcmd("say_team","HandleSay")
	register_clcmd("say /knife", "KnifeSkinsMenu");
	register_clcmd("say /thika", "KnifeSkinsMenu");
	register_clcmd("say g", "KnifeSkinsMenu");
	register_clcmd("say /g", "KnifeSkinsMenu");
	register_clcmd("say /level", "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_KnifeXp = register_cvar( "knife_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, "Knifemessage", 0, _, _, "b")
	set_task(35.0, "Levelmessage", 0, _, _, "b")
} 

public plugin_precache() {  
	
	precache_model("models/Knifes/v_knife_alien.mdl")  
	precache_model("models/Knifes/v_knife_ellium.mdl")  
	precache_model("models/Knifes/v_knife_dark.mdl") 
	precache_model("models/Knifes/v_knife_transparent.mdl") 
	precache_model("models/Knifes/v_knife_genuine.mdl") 
	precache_model("models/Knifes/v_knife_hunt.mdl") 
	precache_model("models/Knifes/v_knife_shadow.mdl") 
	precache_model("models/Knifes/v_knife_slaughterer.mdl") 
	precache_model("models/Knifes/v_knife_katana.mdl") 
	precache_model("models/Knifes/v_knife_assasins.mdl") 
	precache_model("models/Knifes/v_knife_lightsaber.mdl") 
	precache_model("models/Knifes/v_knife_wolverine.mdl") 
	precache_model("models/Knifes/v_knife_proton.mdl") 
	precache_model("models/Knifes/v_knife_bayonet.mdl") 
	precache_model("models/Knifes/v_knife_blackaxe.mdl") 
	precache_model("models/Knifes/v_knife_daedric.mdl") 
	precache_model("models/Knifes/v_knife_redaxe.mdl") 
	precache_model("models/Knifes/v_knife_hammer.mdl") 
	precache_model("models/Knifes/v_knife_sakica.mdl") 
	precache_model("models/Knifes/v_knife_final.mdl") 
	
}

public plugin_natives( )
{
	//Native's
	
	register_library( "Knife-Menu" );
	
	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,"^4Compliments!^1 You passed a level! ^4 LEVEL^1 yours is: ^3%i^1.", iLevel[id]); 
			ColorChat(0,"^3%s^1 the good ones^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(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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, "^4LEVEL^1 Yours is:^3 %i^4 |^1 ^4XP-and^1 yours is:^3 %i^1/^3%i^1.", iLevel[id], iXp[id], xp );
		} 
	} 
	
	return 0; 
} 

public EventDeathMsg(id)
{
	if (get_pcvar_num(knife_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, "knife" ) )   
	{
		XpAmount += get_pcvar_num( cvar_KnifeXp );
	}
	
	iXp[ killer ] += XpAmount;
	
	CheckLevel( killer );
	
	SaveData( killer );
	
	ColorChat( killer, "You just take it^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( knife_on ) == 0 )
		return HAM_IGNORED;
	
	if( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_KNIFE )
	{
		SetHamParamFloat(4, damage + knife_model[attacker]);
		
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

public KnifeSkinsMenu(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		return PLUGIN_HANDLED;
	}
	
	new szItem[256], szAlien[50], szEllium[50], szDark[50], szTransparent[50], szGenuine[50], szHunt[50], szShadow[50], szSlaughterer[50], szKatana[50], szAssasins[50],
	szLightsaber[50], szWolverine[50], szProton[50], szBayonet[50], szBlackaxe[50], szDaedric[50], szRedaxe[50], szHammer[50], szSakica[50], szFinal[50];
	
	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] \yKnife Menu \rv%s^n\yLevel your: \r%d \w- \yXp-yours: \r%d\w/\r%d\w.^n\yHome:\r", g_VAULTNAME, VERSION,iLevel[id],iXp[id], xp);
	formatex(szAlien, charsmax(szAlien),"%s", iLevel[id] >= 1 ? "\wAlien Knife [\yNEED LEVEL\w]" : "\dAlien Knife [\rLEVEL 1 needed\d]");
	formatex(szEllium, charsmax(szEllium),"%s", iLevel[id] >= 2 ? "\wEllium Knife [\yNEED LEVEL\w]" : "\dEllium Knife [\rLEVEL 2 needed\d]");
	formatex(szDark, charsmax(szDark),"%s", iLevel[id] >= 3 ? "\wDark Dagger [\yNEED LEVEL\w]" : "\dDark Dagger [\rLEVEL 3 needed\d]");
	formatex(szTransparent, charsmax(szTransparent),"%s", iLevel[id] >= 4 ? "\wTransparent Knife [\yNEED LEVEL\w]" : "\dTransparent Knife [\rLEVEL 4 needed\d]");
	formatex(szGenuine, charsmax(szGenuine),"%s", iLevel[id] >= 5 ? "\wGenuine Dagger [\yNEED LEVEL\w]" : "\dGenuine Dagger [\rLEVEL 5 needed\d]");
	formatex(szHunt, charsmax(szHunt),"%s", iLevel[id] >= 6 ? "\wHunt Blade [\yNEED LEVEL\w]" : "\dHunt Blade [\rLEVEL 6 needed\d]");
	formatex(szShadow, charsmax(szShadow),"%s", iLevel[id] >= 7 ? "\wShadow Blade [\yNEED LEVEL\w]" : "\dShadow Blade [\rLEVEL 7 needed\d]");
	formatex(szSlaughterer, charsmax(szSlaughterer),"%s", iLevel[id] >= 8 ? "\wSlaughterer Axe [\yNEED LEVEL\w]" : "\dSlaughterer Axe [\rLEVEL 8 needed\d]");
	formatex(szKatana, charsmax(szKatana),"%s", iLevel[id] >= 9 ? "\wGolden Katana [\yNEED LEVEL\w]" : "\dGolden Katana [\rLEVEL 9 needed\d]");
	formatex(szAssasins, charsmax(szAssasins),"%s", iLevel[id] >= 10 ? "\wAssasin's Blade [\yNEED LEVEL\w]" : "\dAssasin's Blade [\rLEVEL 10 needed\d]");
	formatex(szLightsaber, charsmax(szLightsaber),"%s", iLevel[id] >= 11 ? "\wLightsaber [\yNEED LEVEL\w]" : "\dLightsaber [\rLEVEL 11 needed\d]");
	formatex(szWolverine, charsmax(szWolverine),"%s", iLevel[id] >= 12 ? "\wBloody Wolverine Claws [\yNEED LEVEL\w]" : "\dBloody Wolverine Claws [\rLEVEL 12 needed\d]");
	formatex(szProton, charsmax(szProton),"%s", iLevel[id] >= 13 ? "\wProton Axe [\yNEED LEVEL\w]" : "\dProton Axe [\rLEVEL 13 needed\d]");
	formatex(szBayonet, charsmax(szBayonet),"%s", iLevel[id] >= 14 ? "\wRed Knife [\yNEED LEVEL\w]" : "\dRed Knife [\rLEVEL 14 needed\d]");
	formatex(szBlackaxe, charsmax(szBlackaxe),"%s", iLevel[id] >= 15 ? "\wBlack Axe [\yNEED LEVEL\w]" : "\dBlack Axe [\rLEVEL 15 needed\d]");
	formatex(szDaedric, charsmax(szDaedric),"%s", iLevel[id] >= 16 ? "\wDaedric Knife [\yNEED LEVEL\w]" : "\dDaedric Knife [\rLEVEL 16 needed\d]");
	formatex(szRedaxe, charsmax(szRedaxe),"%s", iLevel[id] >= 17 ? "\wRed Axe [\yNEED LEVEL\w]" : "\dRed Axe [\rLEVEL 17 needed\d]");
	formatex(szHammer, charsmax(szHammer),"%s", iLevel[id] >= 18 ? "\wHammer [\yNEED LEVEL\w]" : "\dHammer [\rLEVEL 18 needed\d]");
	formatex(szSakica, charsmax(szSakica),"%s", iLevel[id] >= 19 ? "\wSakica [\yNEED LEVEL\w]" : "\dSakica [\rLEVEL 19 needed\d]");
	formatex(szFinal, charsmax(szFinal),"%s", iLevel[id] >= 20 ? "\wFinal Knife [\yNEED LEVEL\w]" : "\dFinal Knife [\rLEVEL 20 needed\d]");
	
	new menu = menu_create( szItem, "KnifeSkinsMenu_Handler" ); 
	menu_additem(menu, "\wNormal Knife [\yQBLLOKUAR\w]", "", 0 );
	menu_additem(menu, szAlien, "", iLevel[id] >= 1 ? 0 : 1);
	menu_additem(menu, szEllium, "", iLevel[id] >= 2 ? 0 : 1);
	menu_additem(menu, szDark, "", iLevel[id] >= 3 ? 0 : 1);
	menu_additem(menu, szTransparent, "", iLevel[id] >= 4 ? 0 : 1);
	menu_additem(menu, szGenuine, "", iLevel[id] >= 5 ? 0 : 1);
	menu_additem(menu, szHunt, "", iLevel[id] >= 6 ? 0 : 1);
	menu_additem(menu, szShadow, "", iLevel[id] >= 7 ? 0 : 1);
	menu_additem(menu, szSlaughterer, "", iLevel[id] >= 8 ? 0 : 1);
	menu_additem(menu, szKatana, "", iLevel[id] >= 9 ? 0 : 1);
	menu_additem(menu, szAssasins, "", iLevel[id] >= 10 ? 0 : 1);
	menu_additem(menu, szLightsaber, "", iLevel[id] >= 11 ? 0 : 1);
	menu_additem(menu, szWolverine, "", iLevel[id] >= 12 ? 0 : 1);
	menu_additem(menu, szProton, "", iLevel[id] >= 13 ? 0 : 1);
	menu_additem(menu, szBayonet, "", iLevel[id] >= 14 ? 0 : 1);
	menu_additem(menu, szBlackaxe, "", iLevel[id] >= 15 ? 0 : 1);
	menu_additem(menu, szDaedric, "", iLevel[id] >= 16 ? 0 : 1);
	menu_additem(menu, szRedaxe, "", iLevel[id] >= 17 ? 0 : 1);
	menu_additem(menu, szHammer, "", iLevel[id] >= 18 ? 0 : 1);
	menu_additem(menu, szSakica, "", iLevel[id] >= 19 ? 0 : 1);
	menu_additem(menu, szFinal, "", iLevel[id] >= 20 ? 0 : 1);
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
	menu_display(id, menu, 0 );
	
	return PLUGIN_HANDLED;
} 

public KnifeSkinsMenu_Handler(id, menu, item) 
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	SetKnife(id, item);
	ColorChat(id, "Your knot that is cropped is: ^4%s^1.", g_KnifeNames[item]);
	
	SaveData(id);
	return PLUGIN_HANDLED;
}

public SetKnife(id, item) { 
	
	knife_model[id] = item
	
	new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)  
	if ( Weapon != CSW_KNIFE ) 
		return PLUGIN_HANDLED 
	
	new vModel[56],pModel[56] 
	
	if (get_pcvar_num(knife_on) == 0)
	{
		format(vModel,55,"models/v_knife.mdl") 
		return PLUGIN_HANDLED;
	}
	
	format(vModel,55, g_KnifevModels[item]) 
	format(pModel,55,"models/p_knife.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(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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] \yPlayers' Letters:\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 ^1me: ^3%i ^1me ^3%i^1/^3%i ^4XP^1.",get_player_name(player), iLevel[player], iXp[player], xp);
	PlayerLevelsMenu(id);
}

public CurWeapon(id) 
{
	// Set Knife Model
	SetKnife(id, knife_model[id])
} 

public givexp(id) {
	if (get_pcvar_num(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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^4 %s^3 %s^1 XP.", owner,name,XP );
		iXp[Player]+= XPtoGive
		CheckLevel(Player);
		SaveData(id)
		
	}
	
	else {
		
		client_print(id,print_console,"You do not have access to this command")
		
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_HANDLED;
}

public takexp(id) {
	if (get_pcvar_num(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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 took^4 %s^3 %s^1 XP.", owner,name,XP );
		iXp[ Player ]-=XPtoTake
		CheckLevel(Player);
		SaveData(id)
		
	}
	
	else {
		
		client_print(id,print_console,"You do not have access to this command.")
		
		return PLUGIN_HANDLED
		
	}
	
	return PLUGIN_HANDLED;
}

public client_disconnect(id) {   
	
	if(task_exists(id)){
		remove_task(id) 
	}
	SaveData(id);
}   


public Knifemessage(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
		return PLUGIN_HANDLED;
	
	ColorChat(0, "Say ^3/knife ^1in chat to open ^4Knife Menu^1."); 
	ColorChat(0, "This server is working ^1 from ^4Swarm Hunter^1.")
	return PLUGIN_HANDLED;
}   

public Levelmessage(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
		return PLUGIN_HANDLED;
	
	ColorChat(0,"^4Players' Letters ^1WRITE ^3/level ^1ne 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, "KNIFEMOD_%s", authid) 
	format(vaultdata, 63, "%d", knife_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, "KNIFEMOD_%s", authid) 
	get_vaultdata(vaultkey, vaultdata, 63) 
	knife_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;
len = formatex( msg, charsmax( msg ), "^x04[^x01 Knife-Menu^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++ )
	{
		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( );
		}
	}
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

pls add Key G to open /knife in SMA

Мнение от OciXCrom » 01 Май 2018, 19:30

Simply put the following in plugin_init(): register_clcmd("drop", "KnifeSkinsMenu");

Код за потвърждение: Избери целия код

#include <amxmodx> 
#include <amxmisc> 
#include <engine>  
#include <vault> 
#include <hamsandwich> 
#include <fvault> 

#pragma tabsize 0

#define is_valid_player(%1) (1 <= %1 <= 32)

new knife_model[33];

new const g_VAULTNAME[] = "Knife-Menu";
new const VERSION[] = "2.2" 
new const AUTHOR[] = "Asafmazon." 


new iLevel[33];
new iXp[33];

new knife_on;

new MaxLevel;
new StartedLevel;

new cvar_KillXp;
new cvar_HsXp;
new cvar_KnifeXp;

new Forward_spawn;
new Forward_levelup;
new ForwardReturn;

new const g_KnifeNames[][32] =
{
"Normal Knife",
"Alien Knife",
"Ellium Dagger",
"Dark Dagger",
"Transparent Knife",
"Genuine Dagger",
"Hunt Blade",
"Shadow Blade",
"Slaughterer Axe",
"Golden Katana",
"Assasin's Blade",
"Lightsaber",
"Bloody Wolverine Claws",
"Proton Axe",
"Red Knife",
"Black Axe",
"Daedric Knife",
"Red Axe",
"Hammer",
"Sakica",
"Final Knife"
};

new const g_KnifevModels[][256] =
{
"models/v_knife.mdl",
"models/Knifes/v_knife_alien.mdl",
"models/Knifes/v_knife_ellium.mdl",
"models/Knifes/v_knife_dark.mdl",
"models/Knifes/v_knife_transparent.mdl",
"models/Knifes/v_knife_genuine.mdl",
"models/Knifes/v_knife_hunt.mdl",
"models/Knifes/v_knife_shadow.mdl",
"models/Knifes/v_knife_slaughterer.mdl",
"models/Knifes/v_knife_katana.mdl",
"models/Knifes/v_knife_assasins.mdl",
"models/Knifes/v_knife_lightsaber.mdl",
"models/Knifes/v_knife_wolverine.mdl",
"models/Knifes/v_knife_proton.mdl",
"models/Knifes/v_knife_bayonet.mdl",
"models/Knifes/v_knife_blackaxe.mdl",
"models/Knifes/v_knife_daedric.mdl",
"models/Knifes/v_knife_redaxe.mdl",
"models/Knifes/v_knife_hammer.mdl",
"models/Knifes/v_knife_sakica.mdl",
"models/Knifes/v_knife_final.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("knife_menu", VERSION, FCVAR_SERVER); // Find Servers on Game-Monitor
	set_cvar_string("knife_menu", 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("knife_givexp" ,"givexp",ADMIN_RCON,"add xp to any player")
	register_concmd("knife_takexp", "takexp",ADMIN_RCON,"removed xp any player")
	
	//Clcmd's
	
	knife_on = register_cvar( "knife_menu", "1" );
	
	register_clcmd("say","HandleSay"); 
	register_clcmd("say_team","HandleSay")
	register_clcmd("say /knife", "KnifeSkinsMenu");
	register_clcmd("say /thika", "KnifeSkinsMenu");
	register_clcmd("say g", "KnifeSkinsMenu");
	register_clcmd("say /g", "KnifeSkinsMenu");
	register_clcmd("drop", "KnifeSkinsMenu");
	register_clcmd("say /level", "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_KnifeXp = register_cvar( "knife_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, "Knifemessage", 0, _, _, "b")
	set_task(35.0, "Levelmessage", 0, _, _, "b")
} 

public plugin_precache() {  
	
	precache_model("models/Knifes/v_knife_alien.mdl")  
	precache_model("models/Knifes/v_knife_ellium.mdl")  
	precache_model("models/Knifes/v_knife_dark.mdl") 
	precache_model("models/Knifes/v_knife_transparent.mdl") 
	precache_model("models/Knifes/v_knife_genuine.mdl") 
	precache_model("models/Knifes/v_knife_hunt.mdl") 
	precache_model("models/Knifes/v_knife_shadow.mdl") 
	precache_model("models/Knifes/v_knife_slaughterer.mdl") 
	precache_model("models/Knifes/v_knife_katana.mdl") 
	precache_model("models/Knifes/v_knife_assasins.mdl") 
	precache_model("models/Knifes/v_knife_lightsaber.mdl") 
	precache_model("models/Knifes/v_knife_wolverine.mdl") 
	precache_model("models/Knifes/v_knife_proton.mdl") 
	precache_model("models/Knifes/v_knife_bayonet.mdl") 
	precache_model("models/Knifes/v_knife_blackaxe.mdl") 
	precache_model("models/Knifes/v_knife_daedric.mdl") 
	precache_model("models/Knifes/v_knife_redaxe.mdl") 
	precache_model("models/Knifes/v_knife_hammer.mdl") 
	precache_model("models/Knifes/v_knife_sakica.mdl") 
	precache_model("models/Knifes/v_knife_final.mdl") 
	
}

public plugin_natives( )
{
	//Native's
	
	register_library( "Knife-Menu" );
	
	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,"^4Compliments!^1 You passed a level! ^4 LEVEL^1 yours is: ^3%i^1.", iLevel[id]); 
			ColorChat(0,"^3%s^1 the good ones^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(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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, "^4LEVEL^1 Yours is:^3 %i^4 |^1 ^4XP-and^1 yours is:^3 %i^1/^3%i^1.", iLevel[id], iXp[id], xp );
		} 
	} 
	
	return 0; 
} 

public EventDeathMsg(id)
{
	if (get_pcvar_num(knife_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, "knife" ) )   
	{
		XpAmount += get_pcvar_num( cvar_KnifeXp );
	}
	
	iXp[ killer ] += XpAmount;
	
	CheckLevel( killer );
	
	SaveData( killer );
	
	ColorChat( killer, "You just take it^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( knife_on ) == 0 )
		return HAM_IGNORED;
	
	if( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_KNIFE )
	{
		SetHamParamFloat(4, damage + knife_model[attacker]);
		
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

public KnifeSkinsMenu(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		return PLUGIN_HANDLED;
	}
	
	new szItem[256], szAlien[50], szEllium[50], szDark[50], szTransparent[50], szGenuine[50], szHunt[50], szShadow[50], szSlaughterer[50], szKatana[50], szAssasins[50],
	szLightsaber[50], szWolverine[50], szProton[50], szBayonet[50], szBlackaxe[50], szDaedric[50], szRedaxe[50], szHammer[50], szSakica[50], szFinal[50];
	
	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] \yKnife Menu \rv%s^n\yLevel your: \r%d \w- \yXp-yours: \r%d\w/\r%d\w.^n\yHome:\r", g_VAULTNAME, VERSION,iLevel[id],iXp[id], xp);
	formatex(szAlien, charsmax(szAlien),"%s", iLevel[id] >= 1 ? "\wAlien Knife [\yNEED LEVEL\w]" : "\dAlien Knife [\rLEVEL 1 needed\d]");
	formatex(szEllium, charsmax(szEllium),"%s", iLevel[id] >= 2 ? "\wEllium Knife [\yNEED LEVEL\w]" : "\dEllium Knife [\rLEVEL 2 needed\d]");
	formatex(szDark, charsmax(szDark),"%s", iLevel[id] >= 3 ? "\wDark Dagger [\yNEED LEVEL\w]" : "\dDark Dagger [\rLEVEL 3 needed\d]");
	formatex(szTransparent, charsmax(szTransparent),"%s", iLevel[id] >= 4 ? "\wTransparent Knife [\yNEED LEVEL\w]" : "\dTransparent Knife [\rLEVEL 4 needed\d]");
	formatex(szGenuine, charsmax(szGenuine),"%s", iLevel[id] >= 5 ? "\wGenuine Dagger [\yNEED LEVEL\w]" : "\dGenuine Dagger [\rLEVEL 5 needed\d]");
	formatex(szHunt, charsmax(szHunt),"%s", iLevel[id] >= 6 ? "\wHunt Blade [\yNEED LEVEL\w]" : "\dHunt Blade [\rLEVEL 6 needed\d]");
	formatex(szShadow, charsmax(szShadow),"%s", iLevel[id] >= 7 ? "\wShadow Blade [\yNEED LEVEL\w]" : "\dShadow Blade [\rLEVEL 7 needed\d]");
	formatex(szSlaughterer, charsmax(szSlaughterer),"%s", iLevel[id] >= 8 ? "\wSlaughterer Axe [\yNEED LEVEL\w]" : "\dSlaughterer Axe [\rLEVEL 8 needed\d]");
	formatex(szKatana, charsmax(szKatana),"%s", iLevel[id] >= 9 ? "\wGolden Katana [\yNEED LEVEL\w]" : "\dGolden Katana [\rLEVEL 9 needed\d]");
	formatex(szAssasins, charsmax(szAssasins),"%s", iLevel[id] >= 10 ? "\wAssasin's Blade [\yNEED LEVEL\w]" : "\dAssasin's Blade [\rLEVEL 10 needed\d]");
	formatex(szLightsaber, charsmax(szLightsaber),"%s", iLevel[id] >= 11 ? "\wLightsaber [\yNEED LEVEL\w]" : "\dLightsaber [\rLEVEL 11 needed\d]");
	formatex(szWolverine, charsmax(szWolverine),"%s", iLevel[id] >= 12 ? "\wBloody Wolverine Claws [\yNEED LEVEL\w]" : "\dBloody Wolverine Claws [\rLEVEL 12 needed\d]");
	formatex(szProton, charsmax(szProton),"%s", iLevel[id] >= 13 ? "\wProton Axe [\yNEED LEVEL\w]" : "\dProton Axe [\rLEVEL 13 needed\d]");
	formatex(szBayonet, charsmax(szBayonet),"%s", iLevel[id] >= 14 ? "\wRed Knife [\yNEED LEVEL\w]" : "\dRed Knife [\rLEVEL 14 needed\d]");
	formatex(szBlackaxe, charsmax(szBlackaxe),"%s", iLevel[id] >= 15 ? "\wBlack Axe [\yNEED LEVEL\w]" : "\dBlack Axe [\rLEVEL 15 needed\d]");
	formatex(szDaedric, charsmax(szDaedric),"%s", iLevel[id] >= 16 ? "\wDaedric Knife [\yNEED LEVEL\w]" : "\dDaedric Knife [\rLEVEL 16 needed\d]");
	formatex(szRedaxe, charsmax(szRedaxe),"%s", iLevel[id] >= 17 ? "\wRed Axe [\yNEED LEVEL\w]" : "\dRed Axe [\rLEVEL 17 needed\d]");
	formatex(szHammer, charsmax(szHammer),"%s", iLevel[id] >= 18 ? "\wHammer [\yNEED LEVEL\w]" : "\dHammer [\rLEVEL 18 needed\d]");
	formatex(szSakica, charsmax(szSakica),"%s", iLevel[id] >= 19 ? "\wSakica [\yNEED LEVEL\w]" : "\dSakica [\rLEVEL 19 needed\d]");
	formatex(szFinal, charsmax(szFinal),"%s", iLevel[id] >= 20 ? "\wFinal Knife [\yNEED LEVEL\w]" : "\dFinal Knife [\rLEVEL 20 needed\d]");
	
	new menu = menu_create( szItem, "KnifeSkinsMenu_Handler" ); 
	menu_additem(menu, "\wNormal Knife [\yQBLLOKUAR\w]", "", 0 );
	menu_additem(menu, szAlien, "", iLevel[id] >= 1 ? 0 : 1);
	menu_additem(menu, szEllium, "", iLevel[id] >= 2 ? 0 : 1);
	menu_additem(menu, szDark, "", iLevel[id] >= 3 ? 0 : 1);
	menu_additem(menu, szTransparent, "", iLevel[id] >= 4 ? 0 : 1);
	menu_additem(menu, szGenuine, "", iLevel[id] >= 5 ? 0 : 1);
	menu_additem(menu, szHunt, "", iLevel[id] >= 6 ? 0 : 1);
	menu_additem(menu, szShadow, "", iLevel[id] >= 7 ? 0 : 1);
	menu_additem(menu, szSlaughterer, "", iLevel[id] >= 8 ? 0 : 1);
	menu_additem(menu, szKatana, "", iLevel[id] >= 9 ? 0 : 1);
	menu_additem(menu, szAssasins, "", iLevel[id] >= 10 ? 0 : 1);
	menu_additem(menu, szLightsaber, "", iLevel[id] >= 11 ? 0 : 1);
	menu_additem(menu, szWolverine, "", iLevel[id] >= 12 ? 0 : 1);
	menu_additem(menu, szProton, "", iLevel[id] >= 13 ? 0 : 1);
	menu_additem(menu, szBayonet, "", iLevel[id] >= 14 ? 0 : 1);
	menu_additem(menu, szBlackaxe, "", iLevel[id] >= 15 ? 0 : 1);
	menu_additem(menu, szDaedric, "", iLevel[id] >= 16 ? 0 : 1);
	menu_additem(menu, szRedaxe, "", iLevel[id] >= 17 ? 0 : 1);
	menu_additem(menu, szHammer, "", iLevel[id] >= 18 ? 0 : 1);
	menu_additem(menu, szSakica, "", iLevel[id] >= 19 ? 0 : 1);
	menu_additem(menu, szFinal, "", iLevel[id] >= 20 ? 0 : 1);
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
	menu_display(id, menu, 0 );
	
	return PLUGIN_HANDLED;
} 

public KnifeSkinsMenu_Handler(id, menu, item) 
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu)
		return PLUGIN_HANDLED
	}
	
	SetKnife(id, item);
	ColorChat(id, "Your knot that is cropped is: ^4%s^1.", g_KnifeNames[item]);
	
	SaveData(id);
	return PLUGIN_HANDLED;
}

public SetKnife(id, item) { 
	
	knife_model[id] = item
	
	new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)  
	if ( Weapon != CSW_KNIFE ) 
		return PLUGIN_HANDLED 
	
	new vModel[56],pModel[56] 
	
	if (get_pcvar_num(knife_on) == 0)
	{
		format(vModel,55,"models/v_knife.mdl") 
		return PLUGIN_HANDLED;
	}
	
	format(vModel,55, g_KnifevModels[item]) 
	format(pModel,55,"models/p_knife.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(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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] \yPlayers' Letters:\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 ^1me: ^3%i ^1me ^3%i^1/^3%i ^4XP^1.",get_player_name(player), iLevel[player], iXp[player], xp);
	PlayerLevelsMenu(id);
}

public CurWeapon(id) 
{
	// Set Knife Model
	SetKnife(id, knife_model[id])
} 

public givexp(id) {
	if (get_pcvar_num(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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^4 %s^3 %s^1 XP.", owner,name,XP );
		iXp[Player]+= XPtoGive
		CheckLevel(Player);
		SaveData(id)
		
	}
	
	else {
		
		client_print(id,print_console,"You do not have access to this command")
		
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_HANDLED;
}

public takexp(id) {
	if (get_pcvar_num(knife_on) == 0)
	{
		ColorChat(id, "Fashion is inactive at the moment.");
		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 took^4 %s^3 %s^1 XP.", owner,name,XP );
		iXp[ Player ]-=XPtoTake
		CheckLevel(Player);
		SaveData(id)
		
	}
	
	else {
		
		client_print(id,print_console,"You do not have access to this command.")
		
		return PLUGIN_HANDLED
		
	}
	
	return PLUGIN_HANDLED;
}

public client_disconnect(id) {   
	
	if(task_exists(id)){
		remove_task(id) 
	}
	SaveData(id);
}   


public Knifemessage(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
		return PLUGIN_HANDLED;
	
	ColorChat(0, "Say ^3/knife ^1in chat to open ^4Knife Menu^1."); 
	ColorChat(0, "This server is working ^1 from ^4Swarm Hunter^1.")
	return PLUGIN_HANDLED;
}   

public Levelmessage(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
		return PLUGIN_HANDLED;
	
	ColorChat(0,"^4Players' Letters ^1WRITE ^3/level ^1ne 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, "KNIFEMOD_%s", authid) 
	format(vaultdata, 63, "%d", knife_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, "KNIFEMOD_%s", authid) 
	get_vaultdata(vaultkey, vaultdata, 63) 
	knife_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;
len = formatex( msg, charsmax( msg ), "^x04[^x01 Knife-Menu^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++ )
	{
		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( );
		}
	}
}

Аватар
Infamous2018
Извън линия
Foreigner
Foreigner
Мнения: 522
Регистриран на: 08 Апр 2018, 16:56
Се отблагодари: 14 пъти
Получена благодарност: 21 пъти

pls add Key G to open /knife in SMA

Мнение от Infamous2018 » 01 Май 2018, 19:48

Thank YOU

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 23 госта