Portal SAMP
[Ajuda] Sistema de ligação - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Sistema de ligação (/showthread.php?tid=2649)



Sistema de ligação - TheGuilherme020 - 12/08/2022

Oi, tudo bem? Bom eu estou com uma duvida em um sistema de ligacao que estou fazendo.
Ja fiz a parte de gerar o numero do jogador e salvar no arquivo dele na pasta Contas.

Só preciso de orientacao para conectar os jogadores que quiserem fazer ligação entrei si.

tipo /ligar [Numero do Jogador]

Alguem pode me dar uma base de como conecto os jogadores pelos numeros para poderem falar na ligacao?



RE: Sistema de ligação - MarcosBrazz - 12/08/2022

Aqui está uma pequena base...


Código:
new InCall[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...};

CMD:ligar(playerid, params[]){
    extract params -> new numero; else return SendClientMessage(playerid, -1, "Use /ligar [numero]"); //é assim mesmo
    for(new i; i < MAX_PLAYERS; i++){
        if(PlayerInfo[i][pNumero] == numero){ //variavel de numero dos jogadores
            InCall[playerid] = i;
            InCall[i] = playerid;
            SendClientMessage(i, -1, "Alguem ligou para voce, fale no chat!");
            return 1;
        }
    }
    /*com foreach
        foreach(new i: Player){
            if(PlayerInfo[i][pNumero] == numero){
                InCall[playerid] = i;
                InCall[i] = playerid;
                SendClientMessage(i, -1, "Alguem ligou para voce, fale no chat!");
                return 1;
            }
        }
    */
    SendClientMessage(playerid, -1, "Nenhum jogador com esse numero foi encontrado no servidor!");
    return 1;
}
CMD:desligar(playerid){
    if(InCall[playerid] != INVALID_PLAYER_ID){
        new str[128],
        Nomep[24];
        GetPlayerName(playerid, Nomep, 24);
        format(str, 128, "%s desligou a ligação!", Nomep);
        SendClientMessage(InCall[playerid], -1, str);
        SendClientMessage(playerid, -1, "Voce desligou!");
        InCall[InCall[playerid]] = INVALID_PLAYER_ID;
        InCall[playerid] = INVALID_PLAYER_ID;
    }
    else {
        SendClientMessage(playerid, -1, "Voce nao esta em uma ligação!");
    }
    return 1;
}
public OnPlayerText(playerid, text[]){
    if(InCall[playerid] != INVALID_PLAYER_ID){
        new str[128],
        Nomep[24];
        GetPlayerName(playerid, Nomep, 24);
        format(str, 128, "%s (ligação): %s", Nomep, text);
        SendClientMessage(InCall[playerid], 0xE4FF00FF, str);
        SendClientMessage(playerid, -1, str);
        return 0;
    }
    return 0;
}



RE: Sistema de ligação - TheGuilherme020 - 12/08/2022

(12/08/2022 19:30)MarcosBrazz Escreveu: Aqui está uma pequena base...


Código:
new InCall[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...};

CMD:ligar(playerid, params[]){
    extract params -> new numero; else return SendClientMessage(playerid, -1, "Use /ligar [numero]"); //é assim mesmo
    for(new i; i < MAX_PLAYERS; i++){
        if(PlayerInfo[i][pNumero] == numero){ //variavel de numero dos jogadores
            InCall[playerid] = i;
            InCall[i] = playerid;
            SendClientMessage(i, -1, "Alguem ligou para voce, fale no chat!");
            return 1;
        }
    }
    /*com foreach
        foreach(new i: Player){
            if(PlayerInfo[i][pNumero] == numero){
                InCall[playerid] = i;
                InCall[i] = playerid;
                SendClientMessage(i, -1, "Alguem ligou para voce, fale no chat!");
                return 1;
            }
        }
    */
    SendClientMessage(playerid, -1, "Nenhum jogador com esse numero foi encontrado no servidor!");
    return 1;
}
CMD:desligar(playerid){
    if(InCall[playerid] != INVALID_PLAYER_ID){
        new str[128],
        Nomep[24];
        GetPlayerName(playerid, Nomep, 24);
        format(str, 128, "%s desligou a ligação!", Nomep);
        SendClientMessage(InCall[playerid], -1, str);
        SendClientMessage(playerid, -1, "Voce desligou!");
        InCall[InCall[playerid]] = INVALID_PLAYER_ID;
        InCall[playerid] = INVALID_PLAYER_ID;
    }
    else {
        SendClientMessage(playerid, -1, "Voce nao esta em uma ligação!");
    }
    return 1;
}
public OnPlayerText(playerid, text[]){
    if(InCall[playerid] != INVALID_PLAYER_ID){
        new str[128],
        Nomep[24];
        GetPlayerName(playerid, Nomep, 24);
        format(str, 128, "%s (ligação): %s", Nomep, text);
        SendClientMessage(InCall[playerid], 0xE4FF00FF, str);
        SendClientMessage(playerid, -1, str);
        return 0;
    }
    return 0;
}
Eu agredeço muito mano, vou adaptar ela e dar uma implementada e volto pra mandar fotos de como ficouu, Valeu!


RE: Sistema de ligação - TheGuilherme020 - 12/08/2022

MarcosBrazzAqui está uma pequena base...


Código:
new InCall[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...};

CMD:ligar(playerid, params[]){
    extract params -> new numero; else return SendClientMessage(playerid, -1, "Use /ligar [numero]"); //é assim mesmo
    for(new i; i < MAX_PLAYERS; i++){
        if(PlayerInfo[i][pNumero] == numero){ //variavel de numero dos jogadores
            InCall[playerid] = i;
            InCall[i] = playerid;
            SendClientMessage(i, -1, "Alguem ligou para voce, fale no chat!");
            return 1;
        }
    }
    /*com foreach
        foreach(new i: Player){
            if(PlayerInfo[i][pNumero] == numero){
                InCall[playerid] = i;
                InCall[i] = playerid;
                SendClientMessage(i, -1, "Alguem ligou para voce, fale no chat!");
                return 1;
            }
        }
    */
    SendClientMessage(playerid, -1, "Nenhum jogador com esse numero foi encontrado no servidor!");
    return 1;
}
CMD:desligar(playerid){
    if(InCall[playerid] != INVALID_PLAYER_ID){
        new str[128],
        Nomep[24];
        GetPlayerName(playerid, Nomep, 24);
        format(str, 128, "%s desligou a ligação!", Nomep);
        SendClientMessage(InCall[playerid], -1, str);
        SendClientMessage(playerid, -1, "Voce desligou!");
        InCall[InCall[playerid]] = INVALID_PLAYER_ID;
        InCall[playerid] = INVALID_PLAYER_ID;
    }
    else {
        SendClientMessage(playerid, -1, "Voce nao esta em uma ligação!");
    }
    return 1;
}
public OnPlayerText(playerid, text[]){
    if(InCall[playerid] != INVALID_PLAYER_ID){
        new str[128],
        Nomep[24];
        GetPlayerName(playerid, Nomep, 24);
        format(str, 128, "%s (ligação): %s", Nomep, text);
        SendClientMessage(InCall[playerid], 0xE4FF00FF, str);
        SendClientMessage(playerid, -1, str);
        return 0;
    }
    return 0;
}

Bom mano adaptei em meu gamemode e coloquei algumas funcoes no OnPlayerText, pra aparecer o numero e nao o name do jogador. Testet comigo mesmo mas ja coloquei as verificacoes necessarias pra nao dar pra ligar pra si mesmo kkkkk, Obrigado!

https://imgur.com/a/ndWanoh


RE: Sistema de ligação - MarcosBrazz - 12/08/2022

Muito bom mano, qualquer problema só nos procurar