Portal SAMP
[Ajuda] Criar um Chat Global - 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] Criar um Chat Global (/showthread.php?tid=356)

Páginas: 1 2


[Ajuda] Criar um Chat Global - jnXX - 19/11/2020

Como consigo fazer um codigo no estilo desse aqui que irei colocar em primeiro?
Código:
if(strcmp(cmd, "/V", true) == 0)
    {
        if(pInfo[playerid][VIP] == 1 || pInfo[playerid][Admin] == 1)
        {
            if(CHATV[playerid] == true)
            {
                strmid(tmp, cmdtext, 2, strlen(cmdtext));
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COR_ERRO, "| ERRO | Digite: /v [Texto]");
                    return 1;
                }
                else
                {
                    foreach(Player, i)
                    {
                         if(pInfo[i][VIP] == 1 || pInfo[i][Admin] == 1)
                        {
                             if(pInfo[i][NoTuto] == false)
                            {
                                if(CHATV[i] == true)
                                {
                                    format(gstring, sizeof(gstring), "| Chat-VIP | %s[%d] diz:%s", PlayerName(playerid), playerid, tmp);
                                    SendClientMessage(i, 0x00FFFFAA, gstring);
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                return SendClientMessage(playerid, COR_ERRO, "| ERRO | Seu chat VIP está desativado");
            }
        }
        else
        {
            return SendClientMessage(playerid, COR_ERRO, "| ERRO | Você não tem permissão");
        }
        return 1;
Estilo de Codigo usada na GM

[*]Por Exemplo: Eu queria criar um chat global para que qualquer player use mas com um tempo de 10 segundos por mensagem do player.
Exemplo do Codigo ->





Código:
CMD:cg(playerid, params[])
{
    new Str[144], Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof Name);

    format(Str, sizeof Str,  "{AFAFAA}[Chat Global]{6347FF} %s (id:%d):{FFFFFF} %s", Name, playerid, params);
    SendClientMessageToAll(-1, Str);
    return true;
}

Comando que quero so que no estilo de cima que e usado na GM
[*]Acho que consegui explicar mais ou menos kk.
Quem conseguir me ajudar a criar um chat global eu agradeço  Big Grin


RE: [Ajuda] Criar um Chat Global - Hazard - 19/11/2020

você quer um chat global que pode ser usado a cada 10 segundos?


RE: [Ajuda] Criar um Chat Global - jnXX - 19/11/2020

(19/11/2020 19:24)Hazard Escreveu: [*]
você quer um chat global que pode ser usado a cada 10 segundos?
[*]Sim. Mas queria aprender também como se faz porque iniciei faz pouco tempo a scriptar


RE: [Ajuda] Criar um Chat Global - Hazard - 19/11/2020

o caminho mais fácil é usar um timer, mas tem outro jeito bem mais otimizado de fazer usando o gettime veja:

Código PHP:
CMD:cg(playeridparams[])
{
    new UltimoCmd[MAX_PLAYERS];
    new Str[144], Name[MAX_PLAYER_NAME];
    GetPlayerName(playeridNamesizeof Name);
    if(UltimoCmd[playerid] < gettime() + 10) return SendClientMessage(playerid,-1,"Aguarde 10 segundos");

    format(Strsizeof Str,  "{AFAFAA}[Chat Global]{6347FF} %s (id:%d):{FFFFFF} %s"Nameplayeridparams);
    SendClientMessageToAll(-1Str);
    UltimoCmd[playerid] = gettime();
    return true;



basicamente a var "UltimoCmd" vai guardar o valor de gettime, que é um número que vai crescendo a cada segundo, e ali vamos verificar se a var que guardou os numeros é menor que o gettime atual + os segundos que quiser (no caso 10) e se ela for menor o player não vai conseguir usar o comando.

se quiser mais sobre o número que o gettime() retorna veja aqui

https://pt.wikipedia.org/wiki/Era_Unix


RE: [Ajuda] Criar um Chat Global - jnXX - 19/11/2020

(19/11/2020 20:15)Hazard Escreveu: o caminho mais fácil é usar um timer, mas tem outro jeito bem mais otimizado de fazer usando o gettime veja:

Código PHP:
CMD:cg(playeridparams[])
{
    new UltimoCmd[MAX_PLAYERS];
    new Str[144], Name[MAX_PLAYER_NAME];
    GetPlayerName(playeridNamesizeof Name);
    if(UltimoCmd[playerid] < gettime() + 10) return SendClientMessage(playerid,-1,"Aguarde 10 segundos");

    format(Strsizeof Str,  "{AFAFAA}[Chat Global]{6347FF} %s (id:%d):{FFFFFF} %s"Nameplayeridparams);
    SendClientMessageToAll(-1Str);
    UltimoCmd[playerid] = gettime();
    return true;



basicamente a var "UltimoCmd" vai guardar o valor de gettime, que é um número que vai crescendo a cada segundo, e ali vamos verificar se a var que guardou os numeros é menor que o gettime atual + os segundos que quiser (no caso 10) e se ela for menor o player não vai conseguir usar o comando.

se quiser mais sobre o número que o gettime() retorna veja aqui

https://pt.wikipedia.org/wiki/Era_Unix

Eu coloquei e deu um warning aqui

( warning 203: symbol is never used: "cg" )

Acho que esse warning deu por todos os comandos que tem dentro do servidor serem de outro jeito como o de baixo
Código PHP:
if(strcmp(cmd"/v"true) == 0Todos são feitos assim na GM 



RE: [Ajuda] Criar um Chat Global - xbruno1000x - 19/11/2020

Eu coloquei e deu um warning aqui

( warning 203: symbol is never used: "cg" )

Acho que esse warning deu por todos os comandos que tem dentro do servidor serem de outro jeito como o de baixo
Código PHP:
if(strcmp(cmd"/v"true) == 0Todos são feitos assim na GM 
remova
Código PHP:
CMD:cg(playeridparams[]) 

e deixe somente o: if(strcmp(cmd"/v"true) == 0

Mas recomendo que use ZCmd para fazer seus comandos, é mais usado atualmente.


RE: [Ajuda] Criar um Chat Global - Hazard - 19/11/2020

sim, baixe a include zcmd e coloque #include zcmd no topo e vai sumir esse erro


RE: [Ajuda] Criar um Chat Global - jnXX - 19/11/2020

(19/11/2020 23:05)Hazard Escreveu: sim, baixe a include zcmd e coloque #include zcmd no topo e vai sumir esse erro
Consegui colocar sem erros mas agora quando executo o comando ele já aparece o aviso pra aguardar 10 segundos e não sai dele.
No caso eu não consigo mandar mensagem no /cg porque fica aparecendo o aviso dos 10 segundos

(19/11/2020 23:22)jnXX Escreveu:
(19/11/2020 23:05)Hazard Escreveu: sim, baixe a include zcmd e coloque #include zcmd no topo e vai sumir esse erro
Consegui colocar sem erros mas agora quando executo o comando ele já aparece o aviso pra aguardar 10 segundos e não sai dele.
No caso eu não consigo mandar mensagem no /cg porque fica aparecendo o aviso dos 10 segundos

E Também agora todos os comandos do servidor deram ( Unknown Command ).

Como irei colocar todos igual o ZCMD?

Se tiver como explicar agradeço.


RE: [Ajuda] Criar um Chat Global - Hazard - 20/11/2020

tenta assim
Código:
CMD:cg(playerid, params[])
{
    new UltimoCmd[MAX_PLAYERS];

    new Str[144], Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof Name);
    if(gettime() < UltimoCmd[playerid] + 10) return SendClientMessage(playerid,-1,"Aguarde 10 segundos");

    format(Str, sizeof Str,  "{AFAFAA}[Chat Global]{6347FF} %s (id:%d):{FFFFFF} %s", Name, playerid, params);
    SendClientMessageToAll(-1, Str);
    UltimoCmd[playerid] = gettime();
    return true;
}



RE: [Ajuda] Criar um Chat Global - jnXX - 20/11/2020

(20/11/2020 00:45)Hazard Escreveu: tenta assim
Código:
CMD:cg(playerid, params[])
{
    new UltimoCmd[MAX_PLAYERS];

    new Str[144], Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof Name);
    if(gettime() < UltimoCmd[playerid] + 10) return SendClientMessage(playerid,-1,"Aguarde 10 segundos");

    format(Str, sizeof Str,  "{AFAFAA}[Chat Global]{6347FF} %s (id:%d):{FFFFFF} %s", Name, playerid, params);
    SendClientMessageToAll(-1, Str);
    UltimoCmd[playerid] = gettime();
    return true;
}

Agora foi.
Mas Agora nenhum comando funciona somente o /cg kkk 
o que faço? Acho que e por causa do ZCMD