View Single Post
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 09-29-2013 , 23:10   Re: Sistema de grupos para pug/yap u otro
#10

Quote:
Originally Posted by Roccoxx View Post
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;

__________________
Projects:

- See my Git Hub: https://github.com/SmileYzn
PHP Code:
set_pcvar_num(pCvar, !get_pcvar_num(pCvar)); 
^SmileY is offline
Send a message via MSN to ^SmileY Send a message via Skype™ to ^SmileY