Код за потвърждение: Избери целия код
L 03/30/2020 - 07:50:35: [AMXX] Displaying debug trace (plugin "kp-admin-chat-bind.amxx", version "1.1")
L 03/30/2020 - 07:50:35: [AMXX] Run time error 4: index out of bounds
L 03/30/2020 - 07:50:35: [AMXX] [0] kp-admin-chat-bind.sma::handle_teamsay (line 83)
L 03/30/2020 - 07:52:35: [AMXX] Displaying debug trace (plugin "kp-admin-chat-bind.amxx", version "1.1")
L 03/30/2020 - 07:52:35: [AMXX] Run time error 4: index out of bounds
L 03/30/2020 - 07:52:35: [AMXX] [0] kp-admin-chat-bind.sma::handle_teamsay (line 83)
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define ADMIN ADMIN_KICK // Custom admin level
new gMaxPlayers
new gMsgSayText
new gTeams[3][] =
{
"Spectator",
"Terrorist",
"Counter-Terrorist"
}
public plugin_init()
{
register_plugin("Green Admin Chat", "1.1", "Arion")
register_clcmd("say", "handle_say")
register_clcmd("say_team", "handle_teamsay")
gMaxPlayers = get_maxplayers()
gMsgSayText = get_user_msgid("SayText")
}
public handle_say(id)
{
new message[192]
read_args(message, 191)
remove_quotes(message)
if(!valid_message(message)) // Checks if message starts with / or @ or @@ or @@@
{
return PLUGIN_CONTINUE
}
new name[32]
get_user_name(id, name, 31)
new alive = is_user_alive(id)
new userFlags = get_user_flags(id)
if((userFlags & ADMIN) && alive) format(message, 191, "^x04%s ^x01: ^x04 %s", name, message) // Live admin
else if((userFlags & ADMIN) && !alive) format(message, 191, "^x01*DEAD*^x04%s ^x01: ^x04 %s", name, message) // Dead admin
else if((!(userFlags & ADMIN)) && alive) format(message, 191, "^x03%s ^x01: %s", name, message) // Live normal player
else format(message, 191, "^x01*DEAD*^x03%s ^x01: %s", name, message) // Dead normal player
for(new i = 1; i <= gMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(alive && is_user_alive(i) || !alive && !is_user_alive(i)) // Prints the message
{
message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
write_byte(id)
write_string(message)
message_end()
}
}
return PLUGIN_HANDLED
}
public handle_teamsay(id)
{
new message[192]
read_args(message, 191)
remove_quotes(message)
if(!valid_message(message))
{
return PLUGIN_CONTINUE
}
new name[32]
get_user_name(id, name, 31)
new alive = is_user_alive(id)
new team = get_user_team(id)
new userFlags = get_user_flags(id)
if((userFlags & ADMIN) && alive) format(message, 191, "^x01(%s)^x03 %s^x01 : ^x04 %s", gTeams[team], name, message)
else if((userFlags & ADMIN) && !alive) format(message, 191, "^x01*DEAD*(%s)^x03 %s^x01 : ^x04 %s", gTeams[team], name, message)
else if((!(userFlags & ADMIN)) && alive) format(message, 191, "^x01(%s)^x03 %s^x01 : %s", gTeams[team], name, message)
else format(message, 191, "^x01*DEAD*(%s)^x03 %s^x01 : %s", gTeams[team], name, message)
for(new i = 1; i <= gMaxPlayers; i++)
{
if(!is_user_connected(i))
continue
if(get_user_team(i) != team)
continue
if(alive && is_user_alive(i) || !alive && !is_user_alive(i))
{
message_begin(MSG_ONE, gMsgSayText, {0, 0, 0}, i)
write_byte(id)
write_string(message)
message_end()
}
}
return PLUGIN_HANDLED
}
bool:valid_message(const message[]) // Returns False case message starts with / or @ or @@ or @@@, otherwise, returns True
{
if(message[0] == '/'
|| message[0] == '@'
|| message[0] == '@' && message[1] == '@'
|| message[0] == '@' && message[1] == '@' && message[2] == '@'
|| !strlen(message))
{
return false
}
return true
}