[Ajuda] Sistema de duvida
#1

Estou com um problema no servidor, que quando um administrador vai responder a duvida de um jogador, quando ele responde nгo aparece a duvida do jogador acima, como deveria aparecer.
PHP код:
if(strcmp(cmd"/duvida"true) == 0)
    {
        if(
IsPlayerConnected(playerid))
        {
            if(
gPlayerLogged[playerid] == 0)
            {
                
SendClientMessage(playeridCOLOR_GREY"Vocк nгo estб logado!");
                return 
1;
            }
            
GetPlayerName(playeridsendernamesizeof(sendername));
            new 
length strlen(cmdtext);
            while ((
idx length) && (cmdtext[idx] <= ' '))
            {
                
idx++;
            }
            new 
offset idx;
            new 
result[64];
            while ((
idx length) && ((idx offset) < (sizeof(result) - 1)))
            {
                
result[idx offset] = cmdtext[idx];
                
idx++;
            }
            
result[idx offset] = EOS;
            if(!
strlen(result))
            {
                
SendClientMessage(playeridCOLOR_GRAD2"USE: /duvida [texto]");
                return 
1;
            }
            if(
gPlayerLogged[playerid] == 1)
            {
                
format(stringsizeof(string), "Dъvida enviada de %s[%d]: %s "sendernameplayerid, (result));
                
ABroadCast(COLOR_ORANGE,string,1);
                
SendClientMessage(playeridCOLOR_ORANGE"Sua Dъvida foi enviado aos Admins, aguarde uma resposta...");
                
Duvida[giveplayerid] = strlen(result);
                
DuvidaEntregue[playerid] = 1;
            }
        }
        return 
1;
    } 
PHP код:
if(strcmp(cmd"/rduvida"true) == 0)
    {
        if(
IsPlayerConnected(playerid))
        {
            if(
gPlayerLogged[playerid] == 0)
            {
                
SendClientMessage(playeridCOLOR_GREY"Vocк nгo estб logado!");
                return 
1;
            }
           
tmp strtok(cmdtextidx);
        if(!
strlen(tmp))
        {
            
SendClientMessage(playeridCOLOR_GRAD2"USE: /rduvida [id] [Resposta]");
            return 
1;
        }
        
giveplayerid ReturnUser(tmp);
        new 
length strlen(cmdtext);
        while ((
idx length) && (cmdtext[idx] <= ' '))
        {
          
idx++;
        }
        new 
offset idx;
        new 
result[64];
        while ((
idx length) && ((idx offset) < (sizeof(result) - 1)))
        {
            
result[idx offset] = cmdtext[idx];
            
idx++;
        }
        
result[idx offset] = EOS;
        if(!
strlen(result))
        {
            
SendClientMessage(playeridCOLOR_GRAD2"USE: /rduvida [id] [Resposta]");
            return 
1;
        }
            new 
id strval(tmp);
               if(!
IsPlayerConnected(id))
               {
            
SendClientMessage(playeridCOLOR_RED"  O ID Informado й Invalido.");
            return 
1;
            }
            if(
gPlayerLogged[playerid] == 1)
            {
                
GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
                
GetPlayerName(playeridsendernamesizeof(sendername));
                
format(stringsizeof(string), "%s"Duvida[giveplayerid]); //linha do problema, a duvida do jogador nao aparece.
                
SendClientMessage(giveplayeridCOLOR_ORANGEstring);
                
format(stringsizeof(string), " O %s %s Respondeu sua Duvida: %s"CargoAdmin(playerid), sendername, (result));
                
SendClientMessage(giveplayeridCOLOR_ORANGEstring);
                
SendClientMessage(playeridCOLOR_ORANGE" Sua Resposta Foi enviado ao Jogador.");
            }
            
DuvidaEntregue[playerid] = 1;
            
SetTimerEx("MandarDuvida"30000,false,"i",playerid);
        }
        return 
1;
    } 
Reply
#2

PHP код:
/*
    Consideraзхes:
    - Qualquer jogador tinha acesso ao comando /rDuvida.
        Eu adicionei uma condicional para isto, IsPlayerAdmin(somente Rcons), vocк pode alterar.
    - O timer no comando /rDuvida serve para quк?
        A resposta й enviada instantaneamente, se for para zerar a vбriavel DuvidaEntregue й
        desnecessбrio tambйm.
        Demais funзхes encontradas nele, SE NECESSБRIAS, remover o comentбrio no script.
    - A variбvel Duvida seja ela string(que teria que ser) ou nгo, й desnecessбria, eu usei 
        PVar's para guardar a dъvida do jogador, use apenas DuvidaEntregue para 
        verificaзхes de dъvidas.
            
    - Eu nгo testei o script, qualquer erro tente solucionar olhando o log do compilador,
        se mesmo assim nгo obter кxito vir ao fуrum solicitar ajuda.
        Se houver erros de lуgica no script e nгo conseguir solucionar, me chame no privado.
*/
if(strcmp(cmd"/duvida"true) == 0)
{
    if(
gPlayerLogged[playerid] == 0)
        return 
SendClientMessage(playeridCOLOR_GREY"Vocк nгo estб logado!");
    
GetPlayerName(playeridsendernamesizeof(sendername));
    new 
length strlen(cmdtext);
    while ((
idx length) && (cmdtext[idx] <= ' '))
    {
        
idx++;
    }
    new 
offset idx;
    new 
result[64];
    while ((
idx length) && ((idx offset) < (sizeof(result) - 1)))
    {
        
result[idx offset] = cmdtext[idx];
        
idx++;
    }
    
result[idx offset] = EOS;
    if(!
strlen(result))
        return 
SendClientMessage(playeridCOLOR_GRAD2"USE: /duvida [texto]");
    
format(stringsizeof(string), "Dъvida enviada de %s[%d]: {FFFF00}%s "sendernameplayerid, (result));
    
ABroadCast(COLOR_ORANGE,string,1);
    
SendClientMessage(playeridCOLOR_ORANGE"Sua dъvida foi enviada aos administradores, aguarde uma resposta...");
    
SetPVarString(playerid"duv", (result));
    
DuvidaEntregue[playerid] = 1;
    return 
1;
}
if(
strcmp(cmd"/rduvida"true) == 0)
{
    if(!
IsPlayerAdmin(playerid))
        return 
SendClientMessage(playeridCOLOR_GREY"Vocк nгo й um Administrador RCON!");
    if(
gPlayerLogged[playerid] == 0)
        return 
SendClientMessage(playeridCOLOR_GREY"Vocк nгo estб logado!");
    
tmp strtok(cmdtextidx);
    if(!
strlen(tmp))
        return 
SendClientMessage(playeridCOLOR_GRAD2"USE: /rduvida [id] [Resposta]");
    new 
length strlen(cmdtext);
    while ((
idx length) && (cmdtext[idx] <= ' '))
    {
        
idx++;
    }
    new 
offset idx;
    new 
result[64];
    while ((
idx length) && ((idx offset) < (sizeof(result) - 1)))
    {
        
result[idx offset] = cmdtext[idx];
        
idx++;
    }
    
result[idx offset] = EOS;
    if(!
strlen(result))
        return 
SendClientMessage(playeridCOLOR_GRAD2"USE: /rduvida [id] [Resposta]");
    new 
id strval(tmp);
    if(!
IsPlayerConnected(id))
        return 
SendClientMessage(playeridCOLOR_RED"O ID informado й invбlido.");
    if(
DuvidaEntregue[id] == 0// Verificar se o jogador enviou alguma dъvida, se nгo retorna erro para o Administrador
        
return SendClientMessage(playeridCOLOR_RED"O ID informado nгo possuн nenhuma dъvida pendente.");
    
GetPlayerName(idgiveplayersizeof(giveplayer));
    
GetPlayerName(playeridsendernamesizeof(sendername));
    new 
duv[128];
    
GetPVarString(id"duv"duvsizeof(duv));
    
format(stringsizeof(string), "Sua dъvida: {FFFF00}%s"duv);
    
SendClientMessage(idCOLOR_ORANGEstring);
    
format(stringsizeof(string), "O [%s] %s respondeu sua dъvida: {FFFF00}%s"CargoAdmin(playerid), sendername, (result));
    
SendClientMessage(idCOLOR_ORANGEstring);
    
format(stringsizeof(string), "Sua resposta foi enviada ao jogador {FFFF00}%s."giveplayer);
    
SendClientMessage(playeridCOLOR_ORANGEstring);
    
//SetTimerEx("MandarDuvida", 30000, false, "i", playerid); // Isso й necessбrio? A resposta й enviada instantaneamente.
    // Zerando a variбvel de dъvida do jogador.
    
DuvidaEntregue[id] = 0;
    return 
1;

Reply
#3

Quote:
Originally Posted by InsaneBR
Посмотреть сообщение
[php]
Consideraзхes:

- Qualquer jogador tinha acesso ao comando /rDuvida.
Eu adicionei uma condicional para isto, IsPlayerAdmin(somente Rcons), vocк pode alterar.

- O timer no comando /rDuvida serve para quк?
A resposta й enviada instantaneamente, se for para zerar a vбriavel DuvidaEntregue й
desnecessбrio tambйm.
Demais funзхes encontradas nele, SE NECESSБRIAS, remover o comentбrio no script.

- A variбvel Duvida seja ela string(que teria que ser) ou nгo, й desnecessбria, eu usei
PVar's para guardar a dъvida do jogador, use apenas DuvidaEntregue para
verificaзхes de dъvidas.

- Eu nгo testei o script, qualquer erro tente solucionar olhando o log do compilador,
se mesmo assim nгo obter кxito vir ao fуrum solicitar ajuda.
Se houver erros de lуgica no script e nгo conseguir solucionar, me chame no privado.
Realmente havia me esquecido de colocar o /rduvida para admins, e o timer serviria para o jogador aguardar 30s antes de mandar outra duvida, como criei o /rduvida com base no /duvida acabei esquecendo de me tirar, realmente ele nгo tinha necessidade de estar no /rduvida
Reply
#4

Mas consegui mano vlw.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)