AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Spanish (https://forums.alliedmods.net/forumdisplay.php?f=135)
-   -   Sistema de grupos para pug/yap u otro (https://forums.alliedmods.net/showthread.php?t=227210)

Roccoxx 09-28-2013 15:42

Sistema de grupos para pug/yap u otro
 
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.

aca lo tienen disfrutenlo:

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();             }         }     } }

^SmileY 09-28-2013 16:25

Re: Sistema de grupos para pug/yap u otro
 
Se guarda en que los grupos de lugar?

Roccoxx 09-28-2013 16:27

Re: Sistema de grupos para pug/yap u otro
 
Quote:

Originally Posted by ^SmileY (Post 2042264)
Se guarda en que los grupos de lugar?

no entendi xD

rak 09-28-2013 17:14

Re: Sistema de grupos para pug/yap u otro
 
PHP Code:

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4");
    
replace_all(msg190"!y""^1");
    
replace_all(msg190"!team""^3");
    
replace_all(msg190"!team2""^0");
    
    if (
idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }


pls...

btw.. q diferencia tiene con un party? o.o

Roccoxx 09-28-2013 17:43

Re: Sistema de grupos para pug/yap u otro
 
Quote:

Originally Posted by rak (Post 2042292)
PHP Code:

stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4");
    
replace_all(msg190"!y""^1");
    
replace_all(msg190"!team""^3");
    
replace_all(msg190"!team2""^0");
    
    if (
idplayers[0] = id; else get_players(playerscount"ch");
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }


pls...

btw.. q diferencia tiene con un party? o.o

lo del tag xD y otras boludeces como el . adelante de las cosas, es de pug xD

edit: que pasa con el chatcolor?

^SmileY 09-28-2013 17:48

Re: Sistema de grupos para pug/yap u otro
 
Quote:

Originally Posted by Roccoxx (Post 2042266)
no entendi xD

Este código no es el ahorro de los grupos en cualquier parte.

This plugin is not saving any data..

Roccoxx 09-28-2013 17:51

Re: Sistema de grupos para pug/yap u otro
 
explicame como es el sistema de guardar grupos

^SmileY 09-28-2013 19:19

Re: Sistema de grupos para pug/yap u otro
 
Quote:

Originally Posted by Roccoxx (Post 2042320)
explicame como es el sistema de guardar grupos

sql, nvault etc.

e use client_print_color despos remova o ChatColor stock.

Roccoxx 09-28-2013 19:29

Re: Sistema de grupos para pug/yap u otro
 
Quote:

Originally Posted by ^SmileY (Post 2042356)
sql, nvault etc.

e use client_print_color despos remova o ChatColor stock.

ya se como, como consiste el sistema de guardado quiero saber.

algun comentario y tema donde pueda observar el uso de la native client_print_color ya que la lectura del include no me dejo claro :)

^SmileY 09-29-2013 23:10

Re: Sistema de grupos para pug/yap u otro
 
Quote:

Originally Posted by Roccoxx (Post 2042361)
ya se como, como consiste el sistema de guardado quiero saber.

algun comentario y tema donde pueda observar el uso de la native client_print_color ya que la lectura del include no me dejo claro :)

No se ha probado:

Ps.

Probar y publicar los errores y mejoras. Cuando esté listo voy a añadir el sistema de SQL para guardar los datos.

PHP Code:

#include <amxmodx>
#include <amxmisc>

#pragma semicolon 1

new const PUG_szHead[] = "[Groups]";

/*
    .group <tag> - Crear un grupo con el tag especificado
    .add <name> - Invitar a el jugador con el tag especifico del grupo
    .accept <name> - Aceptar la invitación de grupo por el jugador que se especifica
    .leavegroup - Dejar el grupo que se encuentra actualmente 
*/

#define PUG_GROUP_MAX_NAME     16

new g_szGroups[33][PUG_GROUP_MAX_NAME];
new 
g_szCaptain[33][PUG_GROUP_MAX_NAME];

new 
bool:g_bInvited[33][33];

public 
plugin_init()
{
    
register_plugin("PUG Groups",AMXX_VERSION_STR,"SmileY");
    
    
register_clcmd(".group","PUG_Group",         .info="Criar um grupo com a TAG especificada");
    
register_clcmd(".add","PUG_Add",         .info="Convidar um jogador a ser membro de seu grupo");
    
register_clcmd(".accept","PUG_Accept",         .info="Aceitar o convite do capitao de grupo que lhe chamou");
    
register_clcmd(".leavegroup","PUG_LeaveGroup",     .info="Deixar o grupo que se encontra atualmente");
}

public 
client_disconnect(id)
{
    
arrayset(g_bInvited[id],false,sizeof(g_bInvited));
}

public 
PUG_Group(id)
{
    if(
g_szGroups[id][0])
    {
        
client_print
        
(
            
id,
            
print_chat,
            
"%s Desculpe, voce ja esta no Grupo %s, use .leavegroup para sair.",
            
PUG_szHead,
            
g_szGroups[id]
        );
    }
    else
    {
        new 
szGroup[32];
        
read_args(szGroup,charsmax(szGroup));
        
remove_quotes(szGroup);
        
        new 
iLen strlen(szGroup);
        
        if(!
iLen || iLen PUG_GROUP_MAX_NAME)
        {
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Desculpe, a TAG do grupo deve ter entre 1 e %d caracteres.",
                
PUG_szHead,
                
PUG_GROUP_MAX_NAME
            
);
            
            return 
PLUGIN_HANDLED;
        }
    
        for(new 
i;sizeof(g_szGroups);i++)
        {
            if(
equali(g_szGroups[i],szGroup))
            {
                
client_print
                
(
                    
id,
                    
print_chat,
                    
"%s Desculpe, ja existe um grupo com a TAG %s",
                    
PUG_szHead,
                    
g_szGroups[i]
                );
                
                return 
PLUGIN_HANDLED;
            }
        }
        
        
copy(g_szGroups[id],charsmax(g_szGroups[]),szGroup);
        
copy(g_szCaptain[id],charsmax(g_szCaptain[]),szGroup);
        
        
client_print
        
(
            
id,
            
print_chat,
            
"%s O Grupo %s foi criado, agora voce e o capitao do grupo!",
            
PUG_szHead,
            
g_szGroups[id]
        );
        
        new 
szName[64];
        
get_user_name(id,szName,charsmax(szName));
        
        
format
        
(
            
szName,
            
charsmax(szName),
            
"%s %s %s",
            (
containi(szName,g_szGroups[id]) != -1) ? "" g_szGroups[id],
            
szName,
            (
containi(szName,"(C)") != -1) ? "" "(C)"
        
);
            
        
set_user_info(id,"name",szName);
        
client_cmd(id,"name ^"%s^"",szName);
        
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_Add(id)
{
    if(!
g_szGroups[id][0] || !g_szCaptain[id][0])
    {
        
client_print
        
(
            
id,
            
print_chat,
            
"%s Para adicionar um jogador voce deve ser capitao de um grupo antes.",
            
PUG_szHead
        
);
    }
    else
    {
        new 
szPlayer[32];
        
read_args(szPlayer,charsmax(szPlayer));
        
remove_quotes(szPlayer);
        
        if(!
szPlayer[0])
        {
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Uso: .add <Nome>",
                
PUG_szHead
            
);
            
            return 
PLUGIN_HANDLED;
        }
        
        new 
iPlayer cmd_target(id,szPlayer,CMDTARGET_ALLOW_SELF);
        
        if(!
iPlayer)
        {
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Usuario %s Nao encontrado.",
                
PUG_szHead,
                
szPlayer
            
);
        }
        else
        {
            if(!
g_szGroups[iPlayer][0] &&  !g_szCaptain[id][0])
            {
                
g_bInvited[id][iPlayer] = true;
                
                if(
is_user_connected(iPlayer))
                {
                    new 
szName[32];
                    
get_user_name(id,szName,charsmax(szName));
                    
                    
client_print
                    
(
                        
iPlayer,
                        
print_chat,
                        
"%s %s o convidou para entrar no grupo %s (Use .accept %s para aceitar)",
                        
PUG_szHead,
                        
szName,
                        
szName
                    
);
                }
            }
            else
            {
                
client_print
                
(
                    
id,
                    
print_chat,
                    
"%s %s ja esta no grupo %s",
                    
PUG_szHead,
                    
szPlayer,
                    
g_szGroups[iPlayer]
                );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_Accept(id)
{
    if(!
g_szGroups[id][0] || !g_szCaptain[id][0])
    {
        new 
szPlayer[32];
        
read_args(szPlayer,charsmax(szPlayer));
        
remove_quotes(szPlayer);
        
        if(!
szPlayer[0])
        {
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Uso: .accept <Nome do capitao>",
                
PUG_szHead
            
);
            
            return 
PLUGIN_HANDLED;
        }
        
        new 
iPlayer cmd_target(id,szPlayer,CMDTARGET_ALLOW_SELF);
        
        if(!
iPlayer)
        {
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Usuario %s Nao encontrado.",
                
PUG_szHead,
                
szPlayer
            
);
        }
        else
        {
            if((
g_bInvited[iPlayer][id] == true) && is_user_connected(iPlayer) && g_szCaptain[iPlayer][0])
            {
                new 
szName[64];
                
get_user_name(iPlayer,szName,charsmax(szName));
                
                
client_print
                
(
                    
id,
                    
print_chat,
                    
"%s Voce agora e membro do grupo %s [%s]",
                    
PUG_szHead,
                    
g_szCaptain[iPlayer],
                    
szName
                
);
                
                
get_user_name(id,szName,charsmax(szName));
                
                if(!
containi(g_szCaptain[iPlayer],szName))
                {
                    
format
                    
(
                        
szName,
                        
charsmax(szName),
                        
"%s %s",
                        
g_szCaptain[iPlayer],
                        
szName
                    
);
                    
                    
set_user_info(id,"name",szName);
                    
client_cmd(id,"name ^"%s^"",szName);
                }
                
                
g_bInvited[iPlayer][id] = false;
                
copy(g_szGroups[id],charsmax(g_szGroups[]),g_szCaptain[iPlayer]);
            }
            else
            {
                
client_print
                
(
                    
id,
                    
print_chat,
                    
"%s Voce nao foi chamado para fazer parte desse grupo.",
                    
PUG_szHead
                
);
            }
        }
    }
    else
    {
        
client_print
        
(
            
id,
            
print_chat,
            
"%s Para aceitar um convite, voce nao pode ter nenhum grupo.",
            
PUG_szHead
        
);
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_LeaveGroup(id)
{
    if(
g_szGroups[id][0])
    {
        new 
szTitle[64];
        
formatex(szTitle,charsmax(szTitle),"Voce deseja deixar o grupo^n\r%s ?",g_szGroups[id]);
        
        new 
iMenu menu_create(szTitle,"PUG_MenuHandler");
        
        
menu_additem(iMenu,"Sim","0");
        
menu_additem(iMenu,"Nao","1");
        
        
menu_setprop(iMenu,MPROP_EXIT,MEXIT_NEVER);
        
        
menu_display(id,iMenu);
    }
    else
    {
        
client_print
        
(
            
id,
            
print_chat,
            
"%s Desculpe, voce nao faz parte de nenhum grupo.",
            
PUG_szHead
        
);
    }
    
    return 
PLUGIN_HANDLED;
}

public 
PUG_MenuHandler(id,iMenu,iKey)
{
    if(
iKey == MENU_EXIT) return PLUGIN_HANDLED;
    
    switch(
iKey)
    {
        case 
0:
        {
            new 
szName[64];
            
get_user_name(id,szName,charsmax(szName));
            
            if(
containi(g_szGroups[id],szName))
            {
                
replace_all(szName,charsmax(szName),g_szGroups[id],"");
            }
            
            if(
containi(szName,"(C)"))
            {
                
replace_all(szName,charsmax(szName),"(C)","");
            }
            
            
trim(szName);
            
            
set_user_info(id,"name",szName);
            
client_cmd(id,"name ^"%s^"",szName);
        
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Voce saiu do grupo %s",
                
PUG_szHead,
                
g_szGroups[id]
            );
        
            if(
g_szGroups[id][0]) arrayset(g_szGroups[id],0,sizeof(g_szGroups[]));
                
            if(
g_szCaptain[id][0]) arrayset(g_szCaptain[id],0,sizeof(g_szCaptain[]));
        }
        case 
1:
        {
            
client_print
            
(
                
id,
                
print_chat,
                
"%s Acao cancelada.",
                
PUG_szHead
            
);
        }
    }
    
    return 
PLUGIN_HANDLED;




All times are GMT -4. The time now is 22:44.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.