Bueno he visto varios temas pidiendo lo mismo y comentarios pidiendo lo mismo y se me dio la gana de hacer uno y aportarlo, no encontre bugs pero tampoco pude probar bien la parte de .accept o .add, tenia pensado postearlo en la seccion ingles pero bueno, seguramente lo hare despues, el plugin lo hice hace mucho para uno de venezuela y me dio permiso de subirlo.
Code:
#include <amxmodx>
#include <amxmisc>
/*.group <nombre> - Crear un grupo con el tag especificado
.add <nombre> - Invitar a el jugador con el tag especifico del grupo
.accept <nombre> - Unirse a un grupo
.leavegroup - Dejar el grupo que se encuentra actualmente */
#define MAX_CHR 14 // max group name lenght
new g_grupo[33], g_nombre[33][33], g_groupname[33][MAX_CHR]
public plugin_init(){
register_plugin("Group", "1.0", "Roccoxx")
register_clcmd("say", "hook_say")
}
public hook_say(id){
if(!is_user_connected(id)) return PLUGIN_HANDLED;
new say[40]
read_args(say, charsmax(say))
if(equal(say, "")) return PLUGIN_HANDLED;
remove_quotes(say[0])
if(say[0] == '.'){
if(say[1] == 'g' && say[2] == 'r' && say[3] == 'o' && say[4] == 'u' && say[5] == 'p')
{
if(g_grupo[id]){
client_print(id, print_center, "Ya tienes un grupo")
return PLUGIN_HANDLED;
}
replace_all(say, charsmax(say), ".group ", "")
replace_all(say, charsmax(say), ".group", "")
if(strlen(say) > MAX_CHR) client_print(id, print_center, "Nombre muy largo")
else if(equal(say, "")) client_print(id, print_center, "No escribiste Nada")
else{
ChatColor(id, "!gFelicitaciones !teamCreaste el grupo: !y%s",say)
formatex(g_groupname[id], charsmax(g_groupname), say)
format(say, charsmax(say), "[%s] ", say)
add(say ,charsmax(say), g_nombre[id])
set_user_info(id, "name", say);
client_cmd(id, "name ^"%s^"", say)
set_task(3.0, "tiene_grupo", id)
}
return PLUGIN_HANDLED;
}
else if(say[1] == 'a' && say[2] == 'd' && say[3] == 'd'){
if(!g_grupo[id]){
client_print(id, print_center, "No tienes un grupo")
return PLUGIN_HANDLED;
}
replace_all(say, charsmax(say), ".add ", "")
replace_all(say, charsmax(say), ".add", "")
new player = cmd_target(id, say, 8);
if(!player) client_print(id, print_center, "Jugador no encontrado")
else if(g_grupo[player]) client_print(id, print_center, "El Jugador Ya pertenece a un Grupo")
else{
static name[33]; get_user_name(id, name, charsmax(name))
ChatColor(id, "!teamInvitacion enviada a !y%s",say)
ChatColor(player, "!g%s !yquiere invitarte a su grupo!",name)
}
return PLUGIN_HANDLED
}
else if(say[1] == 'a' && say[2] == 'c' && say[3] == 'c' && say[4] == 'e' && say[5] == 'p' && say[6] == 't'){
replace_all(say, charsmax(say), ".accept ", "")
replace_all(say, charsmax(say), ".accept", "")
new player = cmd_target(id, say, 8);
if(!player) client_print(id, print_center, "Jugador no encontrado")
else if(!g_grupo[player]) client_print(id, print_center, "El Jugador no tiene un Grupo")
else{
static name[33]; get_user_name(id, name, charsmax(name))
ChatColor(id, "!teamFelicitaciones te uniste al grupo de !y%s",say)
ChatColor(player, "!g%s !ySe ha unido a tu grupo!",name)
formatex(g_groupname[id], charsmax(g_groupname), g_groupname[player])
format(say, charsmax(say), "[%s] ", g_groupname[player])
add(say ,charsmax(say), g_nombre[id])
set_user_info(id, "name", say);
client_cmd(id, "name ^"%s^"", say)
set_task(3.0, "tiene_grupo", id)
}
return PLUGIN_HANDLED
}
else if(say[1] == 'l' && say[2] == 'e' && say[3] == 'a' && say[4] == 'v' && say[5] == 'e' && say[6] == 'g'
&& say[7] == 'r' && say[8] == 'o' && say[9] == 'u' && say[10] == 'p'){
if(!g_grupo[id]){
client_print(id, print_center, "No perteneces a ningun grupo")
return PLUGIN_HANDLED;
}
g_grupo[id] = false
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE
}
public tiene_grupo(id){
g_grupo[id] = true
get_user_name(id, g_nombre[id], charsmax(g_nombre))
}
public client_putinserver(id){
g_grupo[id] = false
get_user_name(id, g_nombre[id], charsmax(g_nombre))
}
public client_infochanged(id)
{
new sNewName[33]
get_user_info(id, "name", sNewName, charsmax(sNewName));
if(!equali(sNewName, g_nombre[id]) && g_grupo[id])
{
set_user_info(id, "name", g_nombre[id]);
client_cmd(id, "name ^"%s^"", g_nombre[id]);
ChatColor(id, "!team Atencion: No podes cambiarte de nombre si perteneces a un !ggrupo!!!")
}
else if(!equali(sNewName, g_nombre[id])) formatex(g_nombre[id], charsmax(g_nombre), sNewName)
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!team", "^3");
replace_all(msg, 190, "!team2", "^0");
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();
}
}
}
}