Как да фиксна този Knife Model плъгин? (повече инфо в темата)

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1796
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 358 пъти
Обратна връзка:

Как да фиксна този Knife Model плъгин? (повече инфо в темата)

Мнение от illusion » 29 Юни 2018, 15:07

Здравейте,
Днес сложих един Knife Model плъгин и като го сложих си бачка всичко, но забелязах едно нещо.. В плъгина никъде не виждам да има проверка примерно при админи с определен флаг да не им се изисква левел за да си вземат скина на ножа. Та проблема е следния -> админите с флаг "A" могат да си вземат който поискат нож, а по принцип не виждам да има проверка в плъгина. Кода ще ви го дам по-долу, ако може да ми помогнете да разбера от къде идва този флаг "а", защото така всеки админ с флаг а ще има достъп до всички Knife-ове а аз искам да сменя флага.

Ето ви .sma:

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

#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-Skins";
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] =
{
"Default Knife",
"Skull Knife",
"ARROW Knife",
"Dragon Knife",
"Adidas Knife",
"Adidas Knife(2)",
"Electric Knife",
"Karambit Knife",
"Monster Knife",
"Neutral Knife",
"RETEXTURE Knife",
"Turkish Knife",
"Bulgarian Knife",
"Black & White Karambit"
};

new const g_KnifevModels[][256] =
{
"models/v_knife.mdl",
"models/DangerKnifes/v_knife_skull.mdl",
"models/DangerKnifes/v_knife_arrow.mdl",
"models/DangerKnifes/v_knife_dragon.mdl",
"models/DangerKnifes/v_knife_adidas.mdl",
"models/DangerKnifes/v_knife_adidas2.mdl",
"models/DangerKnifes/v_knife_electric.mdl",
"models/DangerKnifes/v_knife_karambit.mdl",
"models/DangerKnifes/v_knife_monster.mdl",
"models/DangerKnifes/v_knife_neutral.mdl",
"models/DangerKnifes/v_knife_retexture.mdl",
"models/DangerKnifes/v_knife_turkish.mdl",
"models/DangerKnifes/v_knife_bgflag.mdl",
"models/DangerKnifes/v_knife_karambit_white_black.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_skins", VERSION, FCVAR_SERVER); // Find Servers on Game-Monitor
	set_cvar_string("knife_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("knife_givexp" ,"givexp",ADMIN_RCON,"Add xp to a player")
	register_concmd("knife_takexp", "takexp",ADMIN_RCON,"Remove xp from a player")
	
	//Clcmd's
	
	knife_on = register_cvar( "knife_skins", "1" );
	
	register_clcmd("say","HandleSay"); 
	register_clcmd("say_team","HandleSay")
	register_clcmd("say /knife", "KnifeSkinsMenu");
	register_clcmd("say /level2", "PlayerLevelsMenu");
	
	//Event's
	
	register_event("CurWeapon","CurWeapon","be","1=1");
	register_event( "DeathMsg", "EventDeathMsg", "a" );
	
	//Cvar's
	
	cvar_KillXp = register_cvar( "kill_xp", "3" );
	cvar_HsXp = register_cvar( "hs_xp", "5" );
	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(35.0, "Levelmessage", 0, _, _, "b")
} 

public plugin_precache() {  
	
	precache_model("models/DangerKnifes/v_knife_skull.mdl")  
	precache_model("models/DangerKnifes/v_knife_arrow.mdl")  
	precache_model("models/DangerKnifes/v_knife_dragon.mdl") 
	precache_model("models/DangerKnifes/v_knife_adidas.mdl") 
	precache_model("models/DangerKnifes/v_knife_adidas2.mdl") 
	precache_model("models/DangerKnifes/v_knife_electric.mdl") 
	precache_model("models/DangerKnifes/v_knife_karambit.mdl") 
	precache_model("models/DangerKnifes/v_knife_monster.mdl") 
	precache_model("models/DangerKnifes/v_knife_neutral.mdl") 
	precache_model("models/DangerKnifes/v_knife_retexture.mdl") 
	precache_model("models/DangerKnifes/v_knife_turkish.mdl") 
	precache_model("models/DangerKnifes/v_knife_bgflag.mdl") 
	precache_model("models/DangerKnifes/v_knife_karambit_white_black.mdl") 
	
}

public plugin_natives( )
{
	//Native's
	
	register_library( "Knife-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(knife_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],"/level2") || equali(iArgs[0],"/lvl2") || equali(iArgs[0],"/xp2")) 
	{     
		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(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 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( 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, "The mod has been disabale.");
		return PLUGIN_HANDLED;
	}
	
	new szItem[256], szSkull[50], szARROW[50], szDragon[50], szAdidas[50], szAdidas2[50], szElectric[50], szKarambit[50], szMonster[50], szNeutral[50], szRetexture[50],
	szTurkish[50], szBulgarian[50], szKarambit2[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 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);
	formatex(szSkull, charsmax(szSkull),"%s", iLevel[id] >= 1 ? "\wSkull Knife [\yUNLOCKED\w]" : "\dSkull Knife [\rLEVEL 1 REQUIRE\d]");
	formatex(szARROW, charsmax(szARROW),"%s", iLevel[id] >= 2 ? "\wARROW Knife [\yUNLOCKED\w]" : "\dARROW Knife [\rLEVEL 2 REQUIRE\d]");
	formatex(szDragon, charsmax(szDragon),"%s", iLevel[id] >= 3 ? "\wDragon Knife [\yUNLOCKED\w]" : "\dDragon Knife [\rLEVEL 3 REQUIRE\d]");
	formatex(szAdidas, charsmax(szAdidas),"%s", iLevel[id] >= 4 ? "\wAdidas Knife [\yUNLOCKED\w]" : "\dAdidas Knife [\rLEVEL 4 REQUIRE\d]");
	formatex(szAdidas2, charsmax(szAdidas2),"%s", iLevel[id] >= 5 ? "\wAdidas Knife(2) [\yUNLOCKED\w]" : "\dAdidas Knife(2) [\rLEVEL 5 REQUIRE\d]");
	formatex(szElectric, charsmax(szElectric),"%s", iLevel[id] >= 6 ? "\wElectric Knife [\yUNLOCKED\w]" : "\dElectric Knife [\rLEVEL 6 REQUIRE\d]");
	formatex(szKarambit, charsmax(szKarambit),"%s", iLevel[id] >= 7 ? "\wKarambit Knife [\yUNLOCKED\w]" : "\dKarambit Knife [\rLEVEL 7 REQUIRE\d]");
	formatex(szMonster, charsmax(szMonster),"%s", iLevel[id] >= 8 ? "\wMonster Knife [\yUNLOCKED\w]" : "\dMonster Knife [\rLEVEL 8 REQUIRE\d]");
	formatex(szNeutral, charsmax(szNeutral),"%s", iLevel[id] >= 9 ? "\wNeutral Knife [\yUNLOCKED\w]" : "\dNeutral Knife [\rLEVEL 9 REQUIRE\d]");
	formatex(szRetexture, charsmax(szRetexture),"%s", iLevel[id] >= 10 ? "\wRETEXTURE Knife [\yUNLOCKED\w]" : "\dRETEXTURE Knife [\rLEVEL 10 REQUIRE\d]");
	formatex(szTurkish, charsmax(szTurkish),"%s", iLevel[id] >= 11 ? "\wTurkish Knife [\yUNLOCKED\w]" : "\dTurkish Knife [\rLEVEL 11 REQUIRE\d]");
	formatex(szBulgarian, charsmax(szBulgarian),"%s", iLevel[id] >= 12 ? "\wBulgarian Knife [\yUNLOCKED\w]" : "\dBulgarian Knife [\rLEVEL 12 REQUIRE\d]");
	formatex(szKarambit2, charsmax(szKarambit2),"%s", iLevel[id] >= 13 ? "\wBlack & White Karambit [\yUNLOCKED\w]" : "\dBlack & White Karambit [\rLEVEL 13 REQUIRE\d]");
	
	new menu = menu_create( szItem, "KnifeSkinsMenu_Handler" ); 
	menu_additem(menu, "\wDefault Knife [\yUNLOCKED\w]", "", 0 );
	menu_additem(menu, szSkull, "", iLevel[id] >= 1 ? 0 : 1);
	menu_additem(menu, szARROW, "", iLevel[id] >= 2 ? 0 : 1);
	menu_additem(menu, szDragon, "", iLevel[id] >= 3 ? 0 : 1);
	menu_additem(menu, szAdidas, "", iLevel[id] >= 4 ? 0 : 1);
	menu_additem(menu, szAdidas2, "", iLevel[id] >= 5 ? 0 : 1);
	menu_additem(menu, szElectric, "", iLevel[id] >= 6 ? 0 : 1);
	menu_additem(menu, szKarambit, "", iLevel[id] >= 7 ? 0 : 1);
	menu_additem(menu, szMonster, "", iLevel[id] >= 8 ? 0 : 1);
	menu_additem(menu, szNeutral, "", iLevel[id] >= 9 ? 0 : 1);
	menu_additem(menu, szRetexture, "", iLevel[id] >= 10 ? 0 : 1);
	menu_additem(menu, szTurkish, "", iLevel[id] >= 11 ? 0 : 1);
	menu_additem(menu, szBulgarian, "", iLevel[id] >= 12 ? 0 : 1);
	menu_additem(menu, szKarambit2, "", iLevel[id] >= 13 ? 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, "The knife you chose 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, "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
	SetKnife(id, knife_model[id])
} 

public givexp(id) {
	if (get_pcvar_num(knife_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(knife_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 Levelmessage(id) { 
	
	if (get_pcvar_num(knife_on) == 0)
		return PLUGIN_HANDLED;
	
	ColorChat(0,"To see other ^4Players Level ^1type ^3/level2 ^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, "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[Knife-Skins]^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( );
		}
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ fbidis\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang1033\\ f0\\ fs16 \n\\ par }
*/

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

Как да фиксна този Knife Model плъгин? (повече инфо в темата)

Мнение от OciXCrom » 29 Юни 2018, 15:52

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

ColorChat(id, "The mod has been disabale.");
Дисабале. Освен английският, който е мега зле, всичко останало в плъгина е двойно по-зле. Едва успях да намеря въпросната проверка. Намира се във всеки един menu_additem ред:

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

menu_additem(menu, szSkull, "", iLevel[id] >= 1 ? 0 : 1);
Преводът на този код е, че ако играчът е на ниво 1 или по-високо, ножът ще е за всички играчи (0 = ADMIN_ALL), в противен случай ще е за хора с флаг "a" (1 = ADMIN_IMMUNITY), а всичко това важи само за играча който е отворил менюто. Ако успееш да разбереш логиката на това, евала, обаче аз бих забранил на този човек да пише плъгини.

Общо взето, редовете трябва да изглеждат така:

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

menu_additem(menu, szSkull, "", ADMIN_IMMUNITY);
И тук вече можеш да си промениш флага. Страх ме е да погледна какви глупости има на други места в кода, обаче аз СИЛНО ти препоръчвам да изтриеш целия плъгин и никога повече да не го ползваш, тъй като това няма да е единственият проблем, който ще намериш.

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1796
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 358 пъти
Обратна връзка:

Как да фиксна този Knife Model плъгин? (повече инфо в темата)

Мнение от illusion » 29 Юни 2018, 17:36

Направих го така и не мога да избера никой скин освен default knife-a..

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

Как да фиксна този Knife Model плъгин? (повече инфо в темата)

Мнение от OciXCrom » 30 Юни 2018, 17:41

Ползвай това - viewtopic.php?f=21&t=1079
Добавих поддръжка за ранк системата ми - viewtopic.php?f=21&t=4478

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1796
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 358 пъти
Обратна връзка:

Как да фиксна този Knife Model плъгин? (повече инфо в темата)

Мнение от illusion » 30 Юни 2018, 22:21

Ключ, благодаря!

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

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта