Raised This Month: $12 Target: $400
 3% 

Sistema de grupos para pug/yap u otro


  
 
 
Thread Tools Display Modes
Author Message
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 09-28-2013 , 15:42   Sistema de grupos para pug/yap u otro
#1

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();             }         }     } }
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"

Last edited by Roccoxx; 09-28-2013 at 15:51.
Roccoxx is offline
Send a message via MSN to Roccoxx
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 09-28-2013 , 16:25   Re: Sistema de grupos para pug/yap u otro
#2

Se guarda en que los grupos de lugar?
__________________
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
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 09-28-2013 , 16:27   Re: Sistema de grupos para pug/yap u otro
#3

Quote:
Originally Posted by ^SmileY View Post
Se guarda en que los grupos de lugar?
no entendi xD
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"
Roccoxx is offline
Send a message via MSN to Roccoxx
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 09-28-2013 , 17:14   Re: Sistema de grupos para pug/yap u otro
#4

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
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 09-28-2013 , 17:43   Re: Sistema de grupos para pug/yap u otro
#5

Quote:
Originally Posted by rak View Post
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?
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"

Last edited by Roccoxx; 09-28-2013 at 17:44.
Roccoxx is offline
Send a message via MSN to Roccoxx
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 09-28-2013 , 17:48   Re: Sistema de grupos para pug/yap u otro
#6

Quote:
Originally Posted by Roccoxx View Post
no entendi xD
Este código no es el ahorro de los grupos en cualquier parte.

This plugin is not saving any data..
__________________
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
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 09-28-2013 , 17:51   Re: Sistema de grupos para pug/yap u otro
#7

explicame como es el sistema de guardar grupos
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"
Roccoxx is offline
Send a message via MSN to Roccoxx
^SmileY
Veteran Member
Join Date: Jan 2010
Location: Brazil [<o>]
Old 09-28-2013 , 19:19   Re: Sistema de grupos para pug/yap u otro
#8

Quote:
Originally Posted by Roccoxx View Post
explicame como es el sistema de guardar grupos
sql, nvault etc.

e use client_print_color despos remova o ChatColor stock.
__________________
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
Roccoxx
AlliedModders Donor
Join Date: Jan 2012
Location: Argentina
Old 09-28-2013 , 19:29   Re: Sistema de grupos para pug/yap u otro
#9

Quote:
Originally Posted by ^SmileY View Post
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
__________________
Tutorials here (Spanish)

Like as another Pijudo said: "Tired and retired"
Roccoxx is offline
Send a message via MSN to Roccoxx
^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
 


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 20:43.


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