Portal SAMP
[Ajuda] Ajuda para criar Chat Local Para Os Jogadores se comunicar - 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] Ajuda para criar Chat Local Para Os Jogadores se comunicar (/showthread.php?tid=4624)



Ajuda para criar Chat Local Para Os Jogadores se comunicar - Cyclopeta - 15/03/2024

slv rpzd, entao queria saber como faço um chat local completo, tipo(so para jogadores perto)

[Cidadao][ID] Disse: blabla

e caso o player fosse admin, e ele desse /trabalhar, tag de cidadao, mudasse para Admin, Exemplo: [Administrador][ID] Disse: oi.

e tbm igualmente se o player fosse de org, queria mudasse automaticamente tudo as tag q no exemplo acima, e tbm automaticamente mudar a cor da tag, tipo. um roxo pra administrador


Se puderem ajudar nisso, vou agredecer, to quebrando a cabeça nisso do chat local


RE: Ajuda para criar Chat Local Para Os Jogadores se comunicar - White_Blue - 15/03/2024

Basta criar um loop que itere todos os jogadores online e verificar a proximidade entre esses jogadores no loop, caso estiver dentro da distância desejada, você envia a mensagem, caso contrário não. Quanto a questão de tags, também é simples, basta verificar se o jogador é um administrador, se sim você formata a mensagem com tag, se não você formata sem tag.


RE: Ajuda para criar Chat Local Para Os Jogadores se comunicar - xbruno1000x - 15/03/2024

Só fazer algumas adaptações:

Código:
forward Float:GetDistanceBetweenPlayers(p1,p2);
public Float:GetDistanceBetweenPlayers(p1,p2)
{
    new Float:Pos1[3], Float:Pos2[3];

    if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
        return -1.00;

    GetPlayerPos(p1, Pos1[0], Pos1[1], Pos1[2]),
    GetPlayerPos(p2, Pos2[0], Pos2[1], Pos2[2]);

    return floatsqroot(floatpower(floatabs(floatsub(Pos2[0],Pos1[0])),2)+floatpower(floatabs(floatsub(Pos2[1],Pos1[1])),2)+floatpower(floatabs(floatsub(Pos2[2],Pos1[2])),2));
}

stock MensagemLocal(playerid, cor, text[], distancia)
{
    foreach(new i : Player)
        if(GetDistanceBetweenPlayers(playerid, i) <= distancia)
            if(GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i))
                SendClientMessage(i, cor, text);

    return 1;
}

public OnPlayerText(playerid, text[])
{
    new string[180];
    if(!*VARIAVEL DO ADMIN AQUI*)format(string, sizeof(string), "[Cidadão][%d] Disse: {FFFFFF}%s", playerid, text);
    else if(*VARIAVEL DO ADMIN AQUI*)format(string, sizeof(string), "[Administrador][%d] Disse: {FFFFFF}%s", playerid, text);
    MensagemLocal(playerid, 0xE3E3E3FF, string, 20);
    SetPlayerChatBubble(playerid, text, 0xE3E3E3FF, 100.0, 10000);
    return false;
}



RE: Ajuda para criar Chat Local Para Os Jogadores se comunicar - Cyclopeta - 15/03/2024

deu super certo o sistema de chat local mt obrigado. tenho outra duvida/questao, eu coloquei pra abrir so quem e da org corresponde, eu to setado de lider e nao consigo abrir, aparece mensagem "voce nao faz parte dessa organizaçao" oq eu teria q fazer?

CODIGO: if(pDados[playerid][Cargo] != Groove_Street)
if(pDados[playerid][Organizacao] != Groove_Street) return SendClientMessage(playerid, -1, "{FF0000}[ERRO]: Voce Nao Faz Parte Dessa Organizacao");

Oq eu errei? oq eu devo fazer? queria que aparece o erro somente para quem e Civil/Cidadao, e nao pra quem ta setado na org

agreço pela atencao desde ja.


RE: Ajuda para criar Chat Local Para Os Jogadores se comunicar - xbruno1000x - 15/03/2024

Código:
if(pDados[playerid][Organizacao] != Groove_Street)
    return SendClientMessage(playerid, -1, "{FF0000}[ERRO]: Voce Nao Faz Parte Dessa Organizacao");

Se a única condição para usar o chat é estar setado na org, basta fazer assim. O cargo pouco faria diferença.

Mas podem haver outros problemas no código, você enviou só um pequeno trecho que não dá muita base pra nada.


RE: Ajuda para criar Chat Local Para Os Jogadores se comunicar - Cyclopeta - 16/03/2024

era pra abrir o portao esse codigo, so que eu me seto na org e mesmo assim aparece essa msg de erro q n e da org sendo to setado de lider


RE: Ajuda para criar Chat Local Para Os Jogadores se comunicar - Ryzen_ - 16/03/2024

(16/03/2024 00:18)Cyclopeta Escreveu: era pra abrir o portao esse codigo, so que eu me seto na org e mesmo assim aparece essa msg de erro q n e da org sendo to setado de lider

Você está vinculando corretamente o cargo ao player? Até onde pude ver o seu código está correto, então o mais provável é estar ocorrendo algum erro ao setar o player como membro da organização.