←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Descriptive 'Fire in the hole!' (+colors)...

Zablokowany

PEREF - zdjęcie PEREF 30.05.2008

Jakiś typ przerobił ten plugin, żeby działał pod czero prawidłowo, ale jest jeden problem, otóż nick gracza jest taki sam jak granatu, czyli jak rzucamy HE to nick gracza jest na czerwono, FB - nick jest szary, tylko jak rzucam SG to nick gracza ma team color. Da się coś z tym zrobić? Pozdrawiam ;)

//http://forums.alliedmods.net/showthread.php?t=47109
//mod by SylverRat
#include <amxmodx>
#include <cstrike>
#include <amxmisc>

enum grenade {
	GRENADE_HE,
	GRENADE_FLASH,
	GRENADE_SMOKE
}

new const g_grenade_description[_][] = {
	" [HE]",
	" [flash]",
	" [smoke]"
}

enum color {
	COLOR_NORMAL,
	COLOR_RED,
	COLOR_BLUE,
	COLOR_GRAY,
	COLOR_GREEN
}

new const g_grenade_desccolor[_] = {
	COLOR_RED,
	COLOR_GRAY,
	COLOR_GREEN
}

new const g_grenade_weaponid[_] = {
	CSW_HEGRENADE,
	CSW_FLASHBANG,
	CSW_SMOKEGRENADE
}

#define COLORCODE_NORMAL 0x01
#define COLORCODE_TEAM 0x03
#define COLORCODE_LOCATION 0x04

new const g_color_code[_] = {
	COLORCODE_NORMAL,
	COLORCODE_TEAM,
	COLORCODE_TEAM,
	COLORCODE_TEAM,
	COLORCODE_LOCATION
}

new const g_color_teamname[_][] = {
	"",
	"TERRORIST",
	"CT",
	"SPECTATOR",
	""
}

#define RADIOTEXT_MSGARG_NUMBER 6

enum radiotext_msgarg {
	RADIOTEXT_MSGARG_PRINTDEST = 1,
	RADIOTEXT_MSGARG_CALLERID,
	RADIOTEXT_MSGARG_TEXTTYPE,
	RADIOTEXT_MSGARG_CALLERNAME,
	RADIOTEXT_MSGARG_LOCATION,
	RADIOTEXT_MSGARG_RADIOTYPE,
}

new const g_required_radiotype[] = "#Fire_in_the_hole"
new const g_radiotext_template[] = "Fire in the hole!"

new g_msgid_saytext
new g_msgid_teaminfo
new g_playerLocation[32][18]

public plugin_init() {
	register_plugin("Descriptive 'Fire in the hole!'", "0.1", "VEN")
	register_message(get_user_msgid("TextMsg"), "message_text")
	register_event ("Location", "setLocation", "b")
	g_msgid_saytext = get_user_msgid("SayText")
	g_msgid_teaminfo = get_user_msgid("TeamInfo")
}

public message_text(msgid, dest, id) {
	if (get_msg_args() != RADIOTEXT_MSGARG_NUMBER || get_msg_argtype(RADIOTEXT_MSGARG_RADIOTYPE) != ARG_STRING)
		return PLUGIN_CONTINUE

	static arg[32]
	get_msg_arg_string(RADIOTEXT_MSGARG_RADIOTYPE, arg, sizeof arg - 1)
	if (!equal(arg, g_required_radiotype))
		return PLUGIN_CONTINUE

	get_msg_arg_string(RADIOTEXT_MSGARG_CALLERID, arg, sizeof arg - 1)
	new caller = str_to_num(arg)
	if (!is_user_alive(caller))
		return PLUGIN_CONTINUE

	new clip, ammo, weapon
	weapon = get_user_weapon(caller, clip, ammo)
	for (new i; i < sizeof g_grenade_weaponid; ++i) {
		if (g_grenade_weaponid[i] == weapon) {
			new name[32]
			get_msg_arg_string(RADIOTEXT_MSGARG_CALLERNAME, arg, sizeof arg - 1)

			static text[192]
			new pos = 0
			text[pos++] = g_color_code[COLOR_NORMAL]

			pos += format(text[pos], sizeof text - pos - 1, g_radiotext_template)
			copy(text[++pos], sizeof text - pos - 1, g_grenade_description[i])

			new desccolor = g_grenade_desccolor[i]
			if ((text[--pos] = g_color_code[desccolor]) == COLORCODE_TEAM) {
				static teamname[12]
				get_user_team(id, teamname, sizeof teamname - 1)

				if (!equal(teamname, g_color_teamname[desccolor])) {
					msg_teaminfo(id, g_color_teamname[desccolor])
					msg_saytext(id, text, name)
					msg_teaminfo(id, teamname)

					return PLUGIN_HANDLED
				}
			}

			msg_saytext(id, text, name)

			return PLUGIN_HANDLED
		}
	}

	return PLUGIN_CONTINUE
}

msg_teaminfo(id, teamname[]) {
	message_begin(MSG_ONE, g_msgid_teaminfo, _, id)
	write_byte(id)
	write_string(teamname)
	message_end()
}

msg_saytext(id, text[], name[]) {
	message_begin(MSG_ONE, g_msgid_saytext, _, id)
	write_byte(id) 
	if (is_running("czero")) { 
		write_string("#Game_radio_location")
		write_string(name)
		write_string(g_playerLocation[id]) 
	} else {
		write_string("#Game_radio")
		write_string(name)
	}
	write_string(text)
	message_end()
}

public setLocation() {
	new p = read_data(1)
	read_data(2,g_playerLocation[p],17)
}


[ Dodano: 01-06-2008, 18:10 ]
panowie proszę o pomoc, bardzo zależy mi na tym plugu :)
Odpowiedz
Zablokowany