[Ajuda] Sistema de Celular
#1

Fala ae, to tentando colocar esse sistema no meu Gamemode e tipo, atй estб funcionando uma parte. Os problemas que eu achei foi o seguinte.

Quando o player da /at da um flood falando "* Fulano atendeu o celular."
Quando o player atende, vocк escreve algo, nгo chega atй o outro que estб na linha, e aparece pra vocк "Ninguйm lб..."

Se alguйm ai puder ajudar й nуis <3

PHP код:
CMD:at(playerid)
{
    if(
PlayerInfo[playerid][pMuted] == 1)
    {
        
        
SendClientMessage(playerid, -1"Vocк nгo pode falar, pois foi calado");
        return 
true;
    }
    if(
Mobile[playerid] != 255)
    {
        
        
SendClientMessage(playeridCOLOR_GRAD2"Vocк jб estб em uma ligaзгo.");
        return 
true;
    }
    new 
string[128];
    for(new 
0MAX_PLAYERSi++)
    {
        
        if(
Mobile[i] == playerid)
        {
            
            
Mobile[playerid] = i//caller connecting
            
SendClientMessage(i,  COLOR_GRAD2"Atendeu o celular.");
            
GetPlayerName(playeridsendernamesizeof(sendername));
            
format(stringsizeof(string), "* %s atendeu o celular."NomePlayer(playerid));
            
SendClientMessageInRange(30.0playeridstringCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
            
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
            
RingTone[playerid] = 0;
        }
    }
    return 
true;
}
public 
OnPlayerText(playeridtext[])
{
    new 
string[256],
    
tmp_text[256];
    if(
Mobile[playerid] != 255)
    {
        
        new 
idx;
        
tmp_text strtok(textidx);
        
GetPlayerName(playeridsendernamesizeof(sendername));
        
format(stringsizeof(string), "%s diz (Celular): %s"sendernametext);
        
SetPlayerChatBubble(playeridstringCOLOR_AZULBB20.010000);
        
SendClientMessageInRange(20.0playeridstring,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
        if(
IsPlayerConnected(Mobile[playerid]))
        {
            
            if(
Mobile[Mobile[playerid]] == playerid)
            {
                
                
SendClientMessage(Mobile[playerid], COLOR_YELLOW,string);
                
format(stringsizeof string"((Celular %s para %s: %s))"NomePlayer(playerid), NomePlayer(Mobile[playerid]), text);
                
SendGrampoMessage(playeridstring);
            }
        }
        else
        {
            
            
SendClientMessage(playeridCOLOR_YELLOW,"Ninguйm lб...");
        }
        return 
0;
    }
    if(
realchat)
    {
        
        if(
gPlayerLogged[playerid] == 0)
        {
            
            
SendClientMessage(playerid, -1"Vocк nao esta logado. USE: /logar.");
            return 
0;
        }
        
format(stringsizeof(string), "%s diz: %s"NomePlayer(playerid), text);
        
SendClientMessageInRange(35.0playeridstring,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
        
SetPlayerChatBubble(playeridtextCOLOR_WHITE35.010000);
        return 
0;
    }
    return 
0;

Reply
#2

HELP ;-;
Reply
#3

Pode me mandar o comando de oferecer uma ligaзгo?
Reply
#4

for(new i = 0; i < MAX_PLAYERS; i++)
Seu erro estб aн amigгo, nгo tem necessidade de fazer um loop all
SendClientMessage(i ...
Invez de verificar todos os jogadores, envie apenas para o playerid
Reply
#5

Mudou algumas coisas, eu refiz algumas coisas, mas o problema ainda estб no flood.

PHP код:
CMD:ligar(playeridparams[])
{
    new 
string[128];
    if(
PlayerInfo[playerid][pMuted] == 1)
        return 
SendClientMessage(playerid0xA92BF6F6"Vocк nao pode falar, pois foi calado");
    
    if(
PlayerInfo[playerid][pJailed] == 9)
        return 
SendClientMessage(playerid,COLOR_GRAD1,"Vocк nao pode usar este comando nas Celas da Administracao!");
    if(
PlayerInfo[playerid][pJailed] != 0)
        return 
SendClientMessage(playerid,COLOR_YELLOW,"Vocк nao pode usar celular na cadeia!");
    new 
phonenumb;
    if(
sscanf(params"d"phonenumb))
        return 
SendClientMessage(playeridCOLOR_GRAD2"USE: /ligar [Telefone]");
    
    if(
PlayerInfo[playerid][pPnumber] == 0)
        return 
SendClientMessage(playeridCOLOR_GRAD2"Voce nao tem um celular");
    if(
phonenumb == 000)
        return 
SendClientMessage(playeridCOLOR_YELLOW ,"SMS: BUUUUU!!, enviou: Agencia Telefonica (555)");
    
    if(
phonenumb == 0)
        return  
SendClientMessage(playeridCOLOR_YELLOW"Este nъmero estб ocupado...");
    
    if(
phonenumb == PlayerInfo[playerid][pPnumber])
        return 
SendClientMessage(playeridCOLOR_GRAD2"Voce nao pode ligar para si mesmo");
    if(
IDCall[playerid] != 999)
        return 
SendClientMessage(playeridCOLOR_GRAD2"Voce ja esta em uma ligacao...");
    
format(stringsizeof(string), "(( %s pegou seu celular ))"NomePlayer(playerid));
    
SendClientMessageInRange(30.0playeridstring0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF);
    
PlayerPlaySound(playerid3600,  0.00.00.0);
            
    for(new 
0MAX_PLAYERSi++)
    {
        if(
PlayerInfo[i][pPnumber] == phonenumb && phonenumb != 0)
        {
            
giveplayerid i;
            
IDCall[playerid] = giveplayerid;
            if(
PhoneOnline[giveplayerid] > 0)
                return 
SendClientMessage(playeridCOLOR_GREY"   O celular chamado esta desligado !");
            if(
IDCall[giveplayerid] == 999)
            {
                
SendClientMessage(playerid0xFFFFFFFF"Info: Digite no chat para falar no celular.");
                
SendClientMessage(playerid0xFFFFFFFF"Info: Para desligar seu telefone use /des.");
                
SendClientMessage(giveplayeridCOLOR_YELLOW"Seu celular esta recebendo uma chamada, use: /at para atender.");
                
format(stringsizeof(string), "(( O telefone celular de: %s esta tocando ))"NomePlayer(i));
                
SendClientMessageInRange(30.0istring0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF);
                
PlayerPlaySound(giveplayerid230000.00.00.0);
                
PlayerPlaySound(playerid230000.00.00.0);
            }
            else 
SendClientMessage(playeridCOLOR_YELLOW"Este nъmero estб ocupado...");
        }
    }
    return 
1;
}
CMD:at(playerid)
{
    if(
PlayerInfo[playerid][pMuted] == 1)
    {
        
SendClientMessage(playerid, -1"Vocк nгo pode falar, pois foi calado");
        return 
true;
    }
    if(
IDCall[playerid] != 999)
    {
        
SendClientMessage(playeridCOLOR_GRAD2"Vocк jб estб em uma ligaзгo.");
        return 
true;
    }
    new 
string[128];
    for(new 
0MAX_PLAYERSi++)
    {
        if(
IDCall[i] == playerid)
        {
            
IDCall[playerid] = i//caller connecting
            
SendClientMessage(i,  COLOR_GRAD2"Chama de voz iniciada... (Digite no chat para se comunicar)");
            
format(stringsizeof(string), "(( %s atendeu uma chamada de voz ))"NomePlayer(playerid));
            
SendClientMessageInRange(30.0playeridstring0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF);
        }
    }
    return 
true;

Reply
#6

Eu consegui achar o Bug, sу nгo estou conseguindo resolver. O bug й apenas quando o jogador com ID 0 atende o celular, estб dando direto bugs com jogadores de ID 0, alguйm sabe o por que e como posso resolver??
Reply
#7

Amigгo , lhe dei a dica , de que nгo tem necessidades de fazer um loop, seu prуximo erro encontra-se

Quote:

for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IDCall[i] == playerid)
{
IDCall[playerid] = i; //caller connecting
SendClientMessage(i, COLOR_GRAD2, "Chama de voz iniciada... (Digite no chat para se comunicar)");

Realmente com esse loop gigante que e o MAX PLAYERS, vc ainda seta no sendc....
Reply
#8

Mas como que eu faзo para fazer sem o loop?
Reply
#9

PHP код:
CMD:at(playerid) { 
  
    if(
PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid0xb30059FF"[ATENЗГO]: {FFFFFF}Vocк nгo pode falar, pois foi silenciado.");
    if(
Mobile[playerid] != 255) return SendClientMessage(playerid0xb30059FF"[ATENЗГO]: {FFFFFF}Atualmente vocк jб encontra-se em uma ligaзгo.");
   
    new 
string[128]; 
    for(new 
0MAX_PLAYERSi++) 
    { 
         
        if(
Mobile[i] == playerid
        { 
             
            
Mobile[playerid] = i//caller connecting 
            
SendClientMessage(playerid,  COLOR_GRAD2"|CELULAR| Vocк atendeu a ligaзгo."); 
            
GetPlayerName(playeridsendernamesizeof(sendername)); 
            
format(stringsizeof(string), "( %s ) atendeu o celular."NomePlayer(playerid)); 
            
SendClientMessageInRange(30.0playeridstringCOLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); 
            
SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE); 
            
RingTone[playerid] = 0
        } 
    } 
    return 
true

PHP код:
public OnPlayerText(playeridtext[]) { 
    
    new 
string[256], 
    
tmp_text[256]; 
    if(
Mobile[playerid] != 255
    { 
         
        new 
idx
        
tmp_text strtok(textidx); 
        
GetPlayerName(playeridsendernamesizeof(sendername)); 
        
format(stringsizeof(string), "%s diz (Celular): %s"sendernametext); 
        
SetPlayerChatBubble(playeridstringCOLOR_AZULBB20.010000); 
        
SendClientMessageInRange(20.0playeridstring,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5); 
        if(
IsPlayerConnected(Mobile[playerid])) 
        { 
             
            if(
Mobile[Mobile[playerid]] == playerid
            { 
                 
                
SendClientMessage(Mobile[playerid], COLOR_YELLOW,string); 
                
format(stringsizeof string"((Celular %s para %s: %s))"NomePlayer(playerid), NomePlayer(Mobile[playerid]), text); 
                
SendGrampoMessage(playeridstring); 
            } 
        } else { 
             
            
SendClientMessage(playeridCOLOR_YELLOW,"Ninguйm lб..."); 
        } 
        return 
true
    } 
    if(
realchat
    { 
         
        if(
gPlayerLogged[playerid] == 0) return SendClientMessage(playerid0xb30059FF"[ATENЗГO]: {FFFFFF}Vocк nao esta logado. USE: /logar.");
        
format(stringsizeof(string), "%s diz: %s"NomePlayer(playerid), text); 
        
SendClientMessageInRange(35.0playeridstring,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5); 
        
SetPlayerChatBubble(playeridtextCOLOR_WHITE35.010000);       
        return 
true
    } 
    return 
0

Da uma olhada aew, vк se vai funcionar, odeio pegar oque eu nгo fiz, nгo acostuma, aprenda desenvolver seu prуprio sistema, pedir ajuda e uma coisa , pedir ajuda para resolver um sistema que nгo foi vocк que fez e outra, dei uma pequena otimizada no comando /at, bem pequena.... nгo entenda esse pequeno texto como ofensivo..
Reply
#10

Consegui resolver qui mano, mesmo assim agradeзo, vlw. +REP

PHP код:
CMD:at(playerid)
{
    if(
PlayerInfo[playerid][pMuted] == 1)
        return 
SendClientMessage(playerid, -1"Voce nao pode falar, pois foi calado");
    
    if(
IDCall[playerid] != 999)
        return 
SendClientMessage(playeridCOLOR_GRAD2"Voce ja esta em uma ligacao.");
    
    new 
string[128];
    for(new 
0MAX_PLAYERSi++)
    {
        if(
PhoneID[playerid] == i)
        {
            
IDCall[playerid] = i//caller connecting
            
SendClientMessage(i,  COLOR_GRAD2"Chama de voz iniciada... (Digite no chat para se comunicar)");
            
format(stringsizeof(string), "(( %s atendeu uma chamada de voz ))"NomePlayer(playerid));
            
SendClientMessageInRange(30.0playeridstring0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF0x66CDAAFF);
          }
    }
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)