Проблем с Go Spec плъгин-а на OciXCrom

Въпроси и проблеми свързани с ReHLDS и допълненията.
Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Проблем с Go Spec плъгин-а на OciXCrom

Мнение от southdivision » 26 Юли 2017, 03:24

Проблема,е че когато си влезна в сървъра и си избера да бъда Spectator и напиша /back ме възражда,нo не изписва долу в ляво нито кръвта нито колко броня имам (Празно е)

Аватар
aLbaShaRe
Извън линия
Потребител
Потребител
Мнения: 58
Регистриран на: 10 Окт 2016, 20:17
Се отблагодари: 1 път

Re: Проблем с Go Spec плъгин-а на OciXCrom

Мнение от aLbaShaRe » 26 Юли 2017, 16:09

Изпробвай този

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

 /* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN	"Spec Switch"
#define AUTHOR	"many"
#define VERSION	"0.2.2"

#define EXTRAOFFSET				5
#define OFFSET_TEAM				114
#define OFFSET_INTERALMODEL		126
#define OFFSET_BOMB_DEFUSE		193
#define HAS_DEFUSE_KIT			(1<<16)
#define BAD_WEAPONS				( ( 1 << CSW_KNIFE ) | ( 1 << CSW_HEGRENADE ) | ( 1 << CSW_FLASHBANG ) | ( 1 << CSW_SMOKEGRENADE ) | ( 1 << 2 ) )



enum ColorChatType
{
	NORMAL = 1, // clients con_color cvar color
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
};

new g_weaponconst[][] =
{
	"", // NULL
	"weapon_p228", "weapon_shield", "weapon_scout", "weapon_hegrenade",
	"weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug",
	"weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45",
	"weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18",
	"weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1",
	"weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle",
	"weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90"
};

new g_CvarSpecMode;
new Float:g_origin[33][3];
new CsTeams:g_team[33];
new g_health[33];

new bool:is_type_spec[33] = false;
new bool:is_type_verify[33] = false;

new spec_wpn[33][32];
new spec_num_wpn[33];
new g_wpn[33]
new g_ammo_amount[33][31]

new data[33][5]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	g_CvarSpecMode	= register_cvar("dm_specmode",	"2");
	/* 
	1 - enable only for ADMINs
	*/
	
	register_clcmd("say /spec", 		"cmd_spec", ADMIN_ALL, "- go to spectator");
	register_clcmd("say_team /spec", 	"cmd_spec", ADMIN_ALL, "- go to spectator");
	register_clcmd("say /back", 		"cmd_back", ADMIN_ALL, "- go back to your team");
	register_clcmd("say_team /back", 	"cmd_back", ADMIN_ALL, "- go back to your team");
	register_clcmd("say", "hook_code")
	
	set_msg_block(get_user_msgid( "ClCorpse" ), BLOCK_SET);
	
	RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawn", 1);
}

public client_connect(id)
{
	is_type_spec[id] = false;
	is_type_verify[id] = false;
}

public cmd_back(id)
{
	if(get_pcvar_num(g_CvarSpecMode) == 1 && !(get_user_flags(id) & ADMIN_CHAT))
		ColorChat(id, RED, "^x04[DeathMatch] ^x01Only^x03 Admins/VIP ^x01can use ^x04/spec, /back ^x01command.");
	else if(is_type_spec[id] && fm_get_user_team(id) == CS_TEAM_SPECTATOR)
		back(id);
	
	return PLUGIN_HANDLED
}

public spec(id)
{
	is_type_spec[id] = true;
	is_type_verify[id] = false;
	
	g_team[id] = fm_get_user_team(id);
	g_wpn[id] = get_user_weapon(id);
	pev(id, pev_health, g_health[id]);
	pev(id, pev_origin, g_origin[id]);
	
	spec_num_wpn[id] = 0;
	arrayset(spec_wpn[id], 0, sizeof(spec_wpn[]));
	
	get_user_weapons(id, spec_wpn[id], spec_num_wpn[id]);
	
	for(new i=0; i<spec_num_wpn[id]; i++) 
	{	
		if(!((1<<spec_wpn[id][i]) & BAD_WEAPONS))
        {
			g_ammo_amount[id][spec_wpn[id][i]] = cs_get_user_bpammo(id, spec_wpn[id][i]);
		}
	}
	
	fm_strip_user_weapons(id);
	
	set_pev(id, pev_movetype, MOVETYPE_NOCLIP);
	set_pev(id, pev_solid, SOLID_NOT);
	set_pev(id, pev_effects, EF_NODRAW);
	set_pev(id, pev_deadflag, DEAD_DEAD);
	set_pev(id, pev_takedamage, DAMAGE_NO);
	fm_set_user_team(id, CS_TEAM_SPECTATOR);
	
	ColorChat(id, GREY, "^x04[DeathMatch] ^x01Type ^x04/back^x01 for return from^x03 Spectator^x01.");
}

public back(id)
{
	ExecuteHam(Ham_CS_RoundRespawn,id);
}

public fwdPlayerSpawn(id)
{
	if(is_type_spec[id])
	{
		fm_set_user_team(id, g_team[id]);
		set_pev(id, pev_origin, g_origin[id]);
		set_pev(id, pev_health, g_health[id]);
		
		fm_strip_user_weapons(id);
		
		for(new i=0; i<spec_num_wpn[id]; i++) 
		{
			fm_give_item(id, g_weaponconst[spec_wpn[id][i]]);
			if(!((1<<spec_wpn[id][i]) & BAD_WEAPONS))
			{
				cs_set_user_bpammo(id, spec_wpn[id][i], g_ammo_amount[id][spec_wpn[id][i]])
			}
		}
		
		engclient_cmd(id, g_weaponconst[g_wpn[id]])
	}
	
	is_type_spec[id] = false;
}

public hook_code(id)
{
	static text[192];
	read_args(text, 191);
	remove_quotes(text);
	trim(text);
	if(!equali(text, "/spec") && is_type_verify[id])
	{
		if(equal(text, data[id]))
			spec(id);
		else
			ColorChat(id, RED, "^x04[DeathMatch] ^x01Please, try again.");
		
		is_type_verify[id] = false;
		
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

/* Fakemeta stocks */

stock fm_set_user_team(client, {CsTeams,_}:team, {CsInternalModel,_}:model=CS_DONTCHANGE)
{
	new CsTeams:oldteam = fm_get_user_team(client);
	if( oldteam != team )
	{
		switch( oldteam )
		{
			case CS_TEAM_T:
			{
				if( is_user_alive(client) && (pev(client, pev_weapons) & (1<<CSW_C4)) )
				{
					engclient_cmd(client, "drop", "weapon_c4");
				}
			}
			case CS_TEAM_CT:
			{
				fm_set_user_defuse(client, 0);
			}
		}
	}
	
	set_pdata_int(client, OFFSET_TEAM, _:team, EXTRAOFFSET);
	
	if( model != CS_DONTCHANGE )
	{
		set_pdata_int(client, OFFSET_INTERALMODEL, _:model, EXTRAOFFSET);
	}
	
	dllfunc(DLLFunc_ClientUserInfoChanged, client, engfunc(EngFunc_GetInfoKeyBuffer, client));
	
	static const team_names[CsTeams][] =
	{
		"UNASSIGNED",
		"TERRORIST",
		"CT",
		"SPECTATOR"
	};
	
	static TeamInfo;
	if( TeamInfo || (TeamInfo = get_user_msgid("TeamInfo")) )
	{
		emessage_begin(MSG_BROADCAST, TeamInfo);
		ewrite_byte(client);
		ewrite_string(team_names[team]);
		emessage_end();
	}
}

stock CsTeams:fm_get_user_team(client, &{CsInternalModel,_}:model=CS_DONTCHANGE)
{
	model = CsInternalModel:get_pdata_int(client, OFFSET_INTERALMODEL, EXTRAOFFSET);
	
	return CsTeams:get_pdata_int(client, OFFSET_TEAM, EXTRAOFFSET);
}

stock fm_set_user_defuse(client, defusekit=1, r=0, g=160, b=0, icon[]="defuser", flash=0)
{
	static StatusIcon;
	
	new kit = get_pdata_int(client, OFFSET_BOMB_DEFUSE, EXTRAOFFSET);
	
	if( defusekit && !(kit & HAS_DEFUSE_KIT) )
	{
		set_pev(client, pev_body, 1);
		
		set_pdata_int(client, OFFSET_BOMB_DEFUSE, (kit | HAS_DEFUSE_KIT), EXTRAOFFSET);
		
		if( StatusIcon || (StatusIcon = get_user_msgid("StatusIcon")) )
		{
			emessage_begin(MSG_ONE_UNRELIABLE, StatusIcon, _, client);
			ewrite_byte((flash == 1) ? 2 : 1);
			ewrite_string(icon);
			ewrite_byte(r);
			ewrite_byte(g);
			ewrite_byte(b);
			emessage_end();
		}
	}
	else if( !defusekit && (kit & HAS_DEFUSE_KIT) )
	{
		set_pev(client, pev_body, 0);
		
		set_pdata_int(client, OFFSET_BOMB_DEFUSE, (kit & ~HAS_DEFUSE_KIT), EXTRAOFFSET);
		
		if( StatusIcon || (StatusIcon = get_user_msgid("StatusIcon")) )
		{
			emessage_begin(MSG_ONE_UNRELIABLE, StatusIcon, _, client);
			ewrite_byte(0);
			ewrite_string("defuser");
			emessage_end();
		}
	}
}

stock fm_strip_user_weapons(index) {
	new ent = fm_create_entity("player_weaponstrip");
	if (!pev_valid(ent))
		return 0;
	
	dllfunc(DLLFunc_Spawn, ent);
	dllfunc(DLLFunc_Use, ent, index);
	engfunc(EngFunc_RemoveEntity, ent);
	
	return 1;
}

stock fm_give_item(index, const item[]) {
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0;
	
	new ent = fm_create_entity(item);
	if (!pev_valid(ent))
		return 0;
	
	new Float:origin[3];
	pev(index, pev_origin, origin);
	set_pev(ent, pev_origin, origin);
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
	dllfunc(DLLFunc_Spawn, ent);
	
	new save = pev(ent, pev_solid);
	dllfunc(DLLFunc_Touch, ent, index);
	if (pev(ent, pev_solid) != save)
		return ent;
	
	engfunc(EngFunc_RemoveEntity, ent);
	
	return -1;
}

stock fm_create_entity(const classname[])
	return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname));

/* Colorchat include */

enum
{
	proprint_console = 0,
	proprint_center,
	proprint_chat,
};

stock ProPrint(id, type, const msg[], {Float,Sql,Result,_}:...)
{
	if( (id!=0 && !is_user_connected(id)) || (!get_playersnum() && !id) )
		return 0;
	
	new message[192];
	vformat(message, 192, msg, 4);
	
	if( id )
		engfunc(EngFunc_ClientPrintf, id, clamp(type, 0, 2), message);
	else
	{
		static maxclients;
		if( !maxclients )
			maxclients = get_maxplayers();
		
		for( new i=1; i<=maxclients; i++ )
		{
			if( is_user_connected(i) )
				engfunc(EngFunc_ClientPrintf, i, clamp(type, 0, 2), message);
		}
	}
	
	return 1;
}

stock ColorChat(id, ColorChatType:type, const msg[], {Float,Sql,Result,_}:...)
{
	if( (id!=0 && !is_user_connected(id)) || (!get_playersnum() && !id) )
		return 0;
	
	new message[192], TeamName[4][] = 
	{
		"",
		"TERRORIST",
		"CT",
		"SPECTATOR"
	}
	
	vformat(message[1], 191, msg, 4);
	if( message[1]==0x01 || message[1]==0x03 || message[1]==0x04 )
		vformat(message, 192, msg, 4);
	else
	{
		switch( type )
		{
			case NORMAL: message[0] = 0x01; // clients con_color cvar color
			case GREEN: message[0] = 0x04; // Green
			default: message[0] = 0x03; // White, Red, Blue
		}
	}
	//replace_all(message, 192, "%", "%%");
	// Make sure message is not longer than 192 character. Will crash the server.
	//message[192] = '^0'; // max len is 192 anyway
	
	static get_user_msgid_saytext;
	if( !get_user_msgid_saytext )
		get_user_msgid_saytext = get_user_msgid("SayText");
	
	if( id )
	{
		
		new ColorChange, team = get_user_team(id);
		switch( type )
		{
			case RED: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[1]);
			case BLUE: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[2]);
			case GREY: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[0]);
			//default: ColorChange = 0;
		}
		
		message_begin(MSG_ONE_UNRELIABLE, get_user_msgid_saytext, _, id);
		write_byte(id);
		write_string(message);
		message_end();
		
		if( ColorChange )
			Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[team]);
		
		return 1;
	}
	else
	{
		static maxclients;
		if( !maxclients )
			maxclients = get_maxplayers();
		
		if( type!=GREY && type!=RED && type!=BLUE )
		{
			for( new i=1; i<=maxclients; i++ )
			{
				if( is_user_connected(i) )
				{
					message_begin(MSG_ONE_UNRELIABLE, get_user_msgid_saytext, _, i);
					write_byte(i);
					write_string(message);
					message_end();
				}
			}
			
			return 1;
		}
		
		for( new i=1; i<=maxclients; i++ )
		{
			if( is_user_connected(i) )
			{
				new ColorChange, team = get_user_team(i);
				switch( type )
				{
					case RED: ColorChange = Team_Info(i, MSG_ALL, TeamName[1]);
					case BLUE: ColorChange = Team_Info(i, MSG_ALL, TeamName[2]);
					case GREY: ColorChange = Team_Info(i, MSG_ALL, TeamName[0]);
					//default: ColorChange = 0;
				}
				
				message_begin(MSG_ALL, get_user_msgid_saytext, _, i);
				write_byte(i);
				write_string(message);
				message_end();
				
				if( ColorChange )
					Team_Info(i, MSG_ALL, TeamName[team]);
				
				return 1;
			}
		}
	}
	
	return 0;
}

stock Team_Info(id, type, team[])
{
	static get_user_msgid_teaminfo;
	if( !get_user_msgid_teaminfo )
		get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
	
	message_begin(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();
	
	return 1;
}
Има префикси [DeaThmach] можеш да си ги редактираш. Преди да компилираш.

Аватар
southdivision
Извън линия
Потребител
Потребител
Мнения: 279
Регистриран на: 14 Окт 2016, 23:17
Местоположение: София
Се отблагодари: 8 пъти
Получена благодарност: 5 пъти
Обратна връзка:

Re: Проблем с Go Spec плъгин-а на OciXCrom

Мнение от southdivision » 26 Юли 2017, 21:58

aLbaShaRe написа:Изпробвай този

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

 /* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN	"Spec Switch"
#define AUTHOR	"many"
#define VERSION	"0.2.2"

#define EXTRAOFFSET				5
#define OFFSET_TEAM				114
#define OFFSET_INTERALMODEL		126
#define OFFSET_BOMB_DEFUSE		193
#define HAS_DEFUSE_KIT			(1<<16)
#define BAD_WEAPONS				( ( 1 << CSW_KNIFE ) | ( 1 << CSW_HEGRENADE ) | ( 1 << CSW_FLASHBANG ) | ( 1 << CSW_SMOKEGRENADE ) | ( 1 << 2 ) )



enum ColorChatType
{
	NORMAL = 1, // clients con_color cvar color
	GREEN, // Green Color
	TEAM_COLOR, // Red, grey, blue
	GREY, // grey
	RED, // Red
	BLUE, // Blue
};

new g_weaponconst[][] =
{
	"", // NULL
	"weapon_p228", "weapon_shield", "weapon_scout", "weapon_hegrenade",
	"weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug",
	"weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45",
	"weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18",
	"weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1",
	"weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle",
	"weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90"
};

new g_CvarSpecMode;
new Float:g_origin[33][3];
new CsTeams:g_team[33];
new g_health[33];

new bool:is_type_spec[33] = false;
new bool:is_type_verify[33] = false;

new spec_wpn[33][32];
new spec_num_wpn[33];
new g_wpn[33]
new g_ammo_amount[33][31]

new data[33][5]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	g_CvarSpecMode	= register_cvar("dm_specmode",	"2");
	/* 
	1 - enable only for ADMINs
	*/
	
	register_clcmd("say /spec", 		"cmd_spec", ADMIN_ALL, "- go to spectator");
	register_clcmd("say_team /spec", 	"cmd_spec", ADMIN_ALL, "- go to spectator");
	register_clcmd("say /back", 		"cmd_back", ADMIN_ALL, "- go back to your team");
	register_clcmd("say_team /back", 	"cmd_back", ADMIN_ALL, "- go back to your team");
	register_clcmd("say", "hook_code")
	
	set_msg_block(get_user_msgid( "ClCorpse" ), BLOCK_SET);
	
	RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawn", 1);
}

public client_connect(id)
{
	is_type_spec[id] = false;
	is_type_verify[id] = false;
}

public cmd_back(id)
{
	if(get_pcvar_num(g_CvarSpecMode) == 1 && !(get_user_flags(id) & ADMIN_CHAT))
		ColorChat(id, RED, "^x04[DeathMatch] ^x01Only^x03 Admins/VIP ^x01can use ^x04/spec, /back ^x01command.");
	else if(is_type_spec[id] && fm_get_user_team(id) == CS_TEAM_SPECTATOR)
		back(id);
	
	return PLUGIN_HANDLED
}

public spec(id)
{
	is_type_spec[id] = true;
	is_type_verify[id] = false;
	
	g_team[id] = fm_get_user_team(id);
	g_wpn[id] = get_user_weapon(id);
	pev(id, pev_health, g_health[id]);
	pev(id, pev_origin, g_origin[id]);
	
	spec_num_wpn[id] = 0;
	arrayset(spec_wpn[id], 0, sizeof(spec_wpn[]));
	
	get_user_weapons(id, spec_wpn[id], spec_num_wpn[id]);
	
	for(new i=0; i<spec_num_wpn[id]; i++) 
	{	
		if(!((1<<spec_wpn[id][i]) & BAD_WEAPONS))
        {
			g_ammo_amount[id][spec_wpn[id][i]] = cs_get_user_bpammo(id, spec_wpn[id][i]);
		}
	}
	
	fm_strip_user_weapons(id);
	
	set_pev(id, pev_movetype, MOVETYPE_NOCLIP);
	set_pev(id, pev_solid, SOLID_NOT);
	set_pev(id, pev_effects, EF_NODRAW);
	set_pev(id, pev_deadflag, DEAD_DEAD);
	set_pev(id, pev_takedamage, DAMAGE_NO);
	fm_set_user_team(id, CS_TEAM_SPECTATOR);
	
	ColorChat(id, GREY, "^x04[DeathMatch] ^x01Type ^x04/back^x01 for return from^x03 Spectator^x01.");
}

public back(id)
{
	ExecuteHam(Ham_CS_RoundRespawn,id);
}

public fwdPlayerSpawn(id)
{
	if(is_type_spec[id])
	{
		fm_set_user_team(id, g_team[id]);
		set_pev(id, pev_origin, g_origin[id]);
		set_pev(id, pev_health, g_health[id]);
		
		fm_strip_user_weapons(id);
		
		for(new i=0; i<spec_num_wpn[id]; i++) 
		{
			fm_give_item(id, g_weaponconst[spec_wpn[id][i]]);
			if(!((1<<spec_wpn[id][i]) & BAD_WEAPONS))
			{
				cs_set_user_bpammo(id, spec_wpn[id][i], g_ammo_amount[id][spec_wpn[id][i]])
			}
		}
		
		engclient_cmd(id, g_weaponconst[g_wpn[id]])
	}
	
	is_type_spec[id] = false;
}

public hook_code(id)
{
	static text[192];
	read_args(text, 191);
	remove_quotes(text);
	trim(text);
	if(!equali(text, "/spec") && is_type_verify[id])
	{
		if(equal(text, data[id]))
			spec(id);
		else
			ColorChat(id, RED, "^x04[DeathMatch] ^x01Please, try again.");
		
		is_type_verify[id] = false;
		
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

/* Fakemeta stocks */

stock fm_set_user_team(client, {CsTeams,_}:team, {CsInternalModel,_}:model=CS_DONTCHANGE)
{
	new CsTeams:oldteam = fm_get_user_team(client);
	if( oldteam != team )
	{
		switch( oldteam )
		{
			case CS_TEAM_T:
			{
				if( is_user_alive(client) && (pev(client, pev_weapons) & (1<<CSW_C4)) )
				{
					engclient_cmd(client, "drop", "weapon_c4");
				}
			}
			case CS_TEAM_CT:
			{
				fm_set_user_defuse(client, 0);
			}
		}
	}
	
	set_pdata_int(client, OFFSET_TEAM, _:team, EXTRAOFFSET);
	
	if( model != CS_DONTCHANGE )
	{
		set_pdata_int(client, OFFSET_INTERALMODEL, _:model, EXTRAOFFSET);
	}
	
	dllfunc(DLLFunc_ClientUserInfoChanged, client, engfunc(EngFunc_GetInfoKeyBuffer, client));
	
	static const team_names[CsTeams][] =
	{
		"UNASSIGNED",
		"TERRORIST",
		"CT",
		"SPECTATOR"
	};
	
	static TeamInfo;
	if( TeamInfo || (TeamInfo = get_user_msgid("TeamInfo")) )
	{
		emessage_begin(MSG_BROADCAST, TeamInfo);
		ewrite_byte(client);
		ewrite_string(team_names[team]);
		emessage_end();
	}
}

stock CsTeams:fm_get_user_team(client, &{CsInternalModel,_}:model=CS_DONTCHANGE)
{
	model = CsInternalModel:get_pdata_int(client, OFFSET_INTERALMODEL, EXTRAOFFSET);
	
	return CsTeams:get_pdata_int(client, OFFSET_TEAM, EXTRAOFFSET);
}

stock fm_set_user_defuse(client, defusekit=1, r=0, g=160, b=0, icon[]="defuser", flash=0)
{
	static StatusIcon;
	
	new kit = get_pdata_int(client, OFFSET_BOMB_DEFUSE, EXTRAOFFSET);
	
	if( defusekit && !(kit & HAS_DEFUSE_KIT) )
	{
		set_pev(client, pev_body, 1);
		
		set_pdata_int(client, OFFSET_BOMB_DEFUSE, (kit | HAS_DEFUSE_KIT), EXTRAOFFSET);
		
		if( StatusIcon || (StatusIcon = get_user_msgid("StatusIcon")) )
		{
			emessage_begin(MSG_ONE_UNRELIABLE, StatusIcon, _, client);
			ewrite_byte((flash == 1) ? 2 : 1);
			ewrite_string(icon);
			ewrite_byte(r);
			ewrite_byte(g);
			ewrite_byte(b);
			emessage_end();
		}
	}
	else if( !defusekit && (kit & HAS_DEFUSE_KIT) )
	{
		set_pev(client, pev_body, 0);
		
		set_pdata_int(client, OFFSET_BOMB_DEFUSE, (kit & ~HAS_DEFUSE_KIT), EXTRAOFFSET);
		
		if( StatusIcon || (StatusIcon = get_user_msgid("StatusIcon")) )
		{
			emessage_begin(MSG_ONE_UNRELIABLE, StatusIcon, _, client);
			ewrite_byte(0);
			ewrite_string("defuser");
			emessage_end();
		}
	}
}

stock fm_strip_user_weapons(index) {
	new ent = fm_create_entity("player_weaponstrip");
	if (!pev_valid(ent))
		return 0;
	
	dllfunc(DLLFunc_Spawn, ent);
	dllfunc(DLLFunc_Use, ent, index);
	engfunc(EngFunc_RemoveEntity, ent);
	
	return 1;
}

stock fm_give_item(index, const item[]) {
	if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
		return 0;
	
	new ent = fm_create_entity(item);
	if (!pev_valid(ent))
		return 0;
	
	new Float:origin[3];
	pev(index, pev_origin, origin);
	set_pev(ent, pev_origin, origin);
	set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
	dllfunc(DLLFunc_Spawn, ent);
	
	new save = pev(ent, pev_solid);
	dllfunc(DLLFunc_Touch, ent, index);
	if (pev(ent, pev_solid) != save)
		return ent;
	
	engfunc(EngFunc_RemoveEntity, ent);
	
	return -1;
}

stock fm_create_entity(const classname[])
	return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname));

/* Colorchat include */

enum
{
	proprint_console = 0,
	proprint_center,
	proprint_chat,
};

stock ProPrint(id, type, const msg[], {Float,Sql,Result,_}:...)
{
	if( (id!=0 && !is_user_connected(id)) || (!get_playersnum() && !id) )
		return 0;
	
	new message[192];
	vformat(message, 192, msg, 4);
	
	if( id )
		engfunc(EngFunc_ClientPrintf, id, clamp(type, 0, 2), message);
	else
	{
		static maxclients;
		if( !maxclients )
			maxclients = get_maxplayers();
		
		for( new i=1; i<=maxclients; i++ )
		{
			if( is_user_connected(i) )
				engfunc(EngFunc_ClientPrintf, i, clamp(type, 0, 2), message);
		}
	}
	
	return 1;
}

stock ColorChat(id, ColorChatType:type, const msg[], {Float,Sql,Result,_}:...)
{
	if( (id!=0 && !is_user_connected(id)) || (!get_playersnum() && !id) )
		return 0;
	
	new message[192], TeamName[4][] = 
	{
		"",
		"TERRORIST",
		"CT",
		"SPECTATOR"
	}
	
	vformat(message[1], 191, msg, 4);
	if( message[1]==0x01 || message[1]==0x03 || message[1]==0x04 )
		vformat(message, 192, msg, 4);
	else
	{
		switch( type )
		{
			case NORMAL: message[0] = 0x01; // clients con_color cvar color
			case GREEN: message[0] = 0x04; // Green
			default: message[0] = 0x03; // White, Red, Blue
		}
	}
	//replace_all(message, 192, "%", "%%");
	// Make sure message is not longer than 192 character. Will crash the server.
	//message[192] = '^0'; // max len is 192 anyway
	
	static get_user_msgid_saytext;
	if( !get_user_msgid_saytext )
		get_user_msgid_saytext = get_user_msgid("SayText");
	
	if( id )
	{
		
		new ColorChange, team = get_user_team(id);
		switch( type )
		{
			case RED: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[1]);
			case BLUE: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[2]);
			case GREY: ColorChange = Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[0]);
			//default: ColorChange = 0;
		}
		
		message_begin(MSG_ONE_UNRELIABLE, get_user_msgid_saytext, _, id);
		write_byte(id);
		write_string(message);
		message_end();
		
		if( ColorChange )
			Team_Info(id, MSG_ONE_UNRELIABLE, TeamName[team]);
		
		return 1;
	}
	else
	{
		static maxclients;
		if( !maxclients )
			maxclients = get_maxplayers();
		
		if( type!=GREY && type!=RED && type!=BLUE )
		{
			for( new i=1; i<=maxclients; i++ )
			{
				if( is_user_connected(i) )
				{
					message_begin(MSG_ONE_UNRELIABLE, get_user_msgid_saytext, _, i);
					write_byte(i);
					write_string(message);
					message_end();
				}
			}
			
			return 1;
		}
		
		for( new i=1; i<=maxclients; i++ )
		{
			if( is_user_connected(i) )
			{
				new ColorChange, team = get_user_team(i);
				switch( type )
				{
					case RED: ColorChange = Team_Info(i, MSG_ALL, TeamName[1]);
					case BLUE: ColorChange = Team_Info(i, MSG_ALL, TeamName[2]);
					case GREY: ColorChange = Team_Info(i, MSG_ALL, TeamName[0]);
					//default: ColorChange = 0;
				}
				
				message_begin(MSG_ALL, get_user_msgid_saytext, _, i);
				write_byte(i);
				write_string(message);
				message_end();
				
				if( ColorChange )
					Team_Info(i, MSG_ALL, TeamName[team]);
				
				return 1;
			}
		}
	}
	
	return 0;
}

stock Team_Info(id, type, team[])
{
	static get_user_msgid_teaminfo;
	if( !get_user_msgid_teaminfo )
		get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
	
	message_begin(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();
	
	return 1;
}
Има префикси [DeaThmach] можеш да си ги редактираш. Преди да компилираш.
Сложих плъгина,но при влизане плъгина изхвърля всички играчи включително и мен от сървъра и изписва BAD .. и още много неща в конзолата

Аватар
botlike
Извън линия
Потребител
Потребител
Мнения: 96
Регистриран на: 11 Юни 2017, 23:37
Местоположение: София
Получена благодарност: 20 пъти

Re: Проблем с Go Spec плъгин-а на OciXCrom

Мнение от botlike » 27 Юли 2017, 13:40

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

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <colorchat>

#define PLUGIN   "Spec / Back"
#define AUTHOR   "kramesa"
#define VERSION   "v1.0"

new bool:TerroristTeam[33];

new CountTime[33];
public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR);
   
   register_clcmd("say /spec", "Spec");
   register_clcmd("say_team /spec", "Spec");
   register_clcmd("say /afk", "Spec");
   register_clcmd("say_team /afk", "Spec");
   register_clcmd("say /back", "Back");  
   register_clcmd("say_team /back", "Back");
}

public Spec(id)
{
   {
      
      if(cs_get_user_team(id) == CS_TEAM_T)
      {
         TerroristTeam[id] = true;
      }
      else
      {
         TerroristTeam[id] = false;
      }
      
      if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
      {
         ColorChat(id, GREEN, "^4Prefix -^1 You already ^3Spectator^1.");
         return PLUGIN_HANDLED;
      }
      else
      {
         cs_set_user_team(id, CS_TEAM_SPECTATOR);
         user_kill(id, 1);
         ColorChat(id, GREEN, "^4Prefix -^1 You are now in ^3Spectator^1.");
         
         CountTime[id]++;
         
         return PLUGIN_HANDLED;
      }
   }
   return PLUGIN_HANDLED;
}

public Back(id)
{
   {
      if(cs_get_user_team(id) == CS_TEAM_CT && CS_TEAM_T)
      {
         ColorChat(id, GREEN, "^4Prefix -^1 You already ^3Non-Spectator^1.");
         return PLUGIN_HANDLED;
      }
      
      if(cs_get_user_team(id) == CS_TEAM_SPECTATOR)
      {
         if(TerroristTeam[id] == true)
         {
            cs_set_user_team(id, CS_TEAM_T);
            ColorChat(id, GREEN, "^4Prefix -^1 You are now in ^3Terrorist team^1.");
            ExecuteHam(Ham_CS_RoundRespawn, id); 
            return PLUGIN_HANDLED;
         }
         
         if(TerroristTeam[id] == false)
         {
            cs_set_user_team(id, CS_TEAM_CT);
            ColorChat(id, GREEN, "^4Prefix -^1 You are now in ^3Counter-Terrorist team^1.");
            ExecuteHam(Ham_CS_RoundRespawn, id); 
            return PLUGIN_HANDLED;
         }
      }
   }
   return PLUGIN_HANDLED;
}
Изображение

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

Обратно към “Поддръжка / Помощ”

Кой е на линия

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