Portal SAMP
[Include] notifications - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Lançamentos (https://portalsamp.com/forumdisplay.php?fid=26)
+---- Fórum: Includes (https://portalsamp.com/forumdisplay.php?fid=27)
+---- Tópico: [Include] notifications (/showthread.php?tid=2747)

Páginas: 1 2


notifications - MarcosBrazz - 01/09/2022

* Notification-System


Sistema de notificações para SA-MP


Essa include permite criar até 3 notificações ao mesmo tempo, podendo escolher em cada notificação: Titulo e Mensagem. Cada notificação fica visivel por um tempo estimado de 8-10 segundos

Função:
Código PHP:
native Notificacao(playerid, const titulo[], const mensagem[]); 
Retornos:
Código:
0: Função falhou e/ou exedeu o limite de 3 notificações ao mesmo tempo
1: Função foi executada com sucesso!




Exemplo de Uso:
Código:
public OnPlayerSpawn(playerid){
    Notificacao(playerid, "Spawnado", "Voce acaba de spawnar no servidor, parabens. seja bem vindo ao servidor!");
    SetPlayerPos(playerid, 1212.4865,-977.6506,43.4766);
    return 1;
}
public OnPlayerConnect(playerid){
    Notificacao(playerid, "Conectando", "Voce esta conectando ao servidor!");
    return 1;
}

public OnPlayerText(playerid, text[]){
    Notificacao(playerid, "Ajuda", "Se voce tiver duvidas, use /ajuda!");
    return 1;
}

Resultado do Exemplo:



[Imagem: r0lrvy5.png]
[Imagem: UPq2oTh.png]
[Imagem: nRAUVSH.png]



-> Observações finais:
  • É recomendado utilizar de 0-100 caracteres na mensagem para não ultrapassar a box
  • O Sistema gerencia os 3 slots de notificação automaticamente sem a necessidade de escolher, basta chamar a função.
  • Chamar a função enquanto existem 3 notificações sendo mostradas ao jogador fará com que a função retorne 0 e falhe.
  • Sei que poderia ser mais otimizado, porém fiz em 1 hora e meia, quem sabe venha otimizações em futuras versões (apenas no github)

-> Download & Assets -> Créditos:
  • Brazz (Criador da include)



RE: Notification-System - xbruno1000x - 01/09/2022

Ótima contribuição! +Rep

Se encaixa muito bem como um substituto para o SendClientMessage. Acredito que você poderia implementar a stock fixtext, para permitir acentuação das palavras em português.

caso deseje o código do fixtext:
Código:
stock FixText(const string[])
{
    new szFixed[1024], iPos, iLen;

    for(iLen = strlen(string); iPos < iLen; iPos ++)
        switch(string[iPos])
        {
            case '%':          szFixed[iPos] = 37;
            case '&':          szFixed[iPos] = 38;
            case '¡':          szFixed[iPos] = 64;
            case '°':          szFixed[iPos] = 124;
            case 'À':          szFixed[iPos] = 128;
            case 'Á':          szFixed[iPos] = 129;
            case 'Â':          szFixed[iPos] = 130;
            case 'Ä', 'Ã':     szFixed[iPos] = 131;
            case 'Ç':          szFixed[iPos] = 133;
            case 'È':          szFixed[iPos] = 134;
            case 'É':          szFixed[iPos] = 135;
            case 'Ê':          szFixed[iPos] = 136;
            case 'Ë':          szFixed[iPos] = 137;
            case 'Ì':          szFixed[iPos] = 138;
            case 'Í':          szFixed[iPos] = 139;
            case 'Î':          szFixed[iPos] = 140;
            case 'Ï':          szFixed[iPos] = 141;
            case 'Ò':          szFixed[iPos] = 142;
            case 'Ó':          szFixed[iPos] = 143;
            case 'Ô':          szFixed[iPos] = 144;
            case 'Ö', 'Õ':     szFixed[iPos] = 145;
            case 'Ù':          szFixed[iPos] = 146;
            case 'Ú':          szFixed[iPos] = 147;
            case 'Û':          szFixed[iPos] = 148;
            case 'Ü':          szFixed[iPos] = 149;
            case 'à':          szFixed[iPos] = 151;
            case 'á':          szFixed[iPos] = 152;
            case 'â':          szFixed[iPos] = 153;
            case 'ä', 'ã':     szFixed[iPos] = 154;
            case 'ç':          szFixed[iPos] = 156;
            case 'è':          szFixed[iPos] = 157;
            case 'é':          szFixed[iPos] = 158;
            case 'ê':          szFixed[iPos] = 159;
            case 'ë':          szFixed[iPos] = 160;
            case 'ì':          szFixed[iPos] = 161;
            case 'í':          szFixed[iPos] = 162;
            case 'î':          szFixed[iPos] = 163;
            case 'ï':          szFixed[iPos] = 164;
            case 'ò':          szFixed[iPos] = 165;
            case 'ó':          szFixed[iPos] = 166;
            case 'ô':          szFixed[iPos] = 167;
            case 'ö', 'õ':     szFixed[iPos] = 168;
            case 'ù':          szFixed[iPos] = 169;
            case 'ú':          szFixed[iPos] = 170;
            case 'û':          szFixed[iPos] = 171;
            case 'ü':          szFixed[iPos] = 172;
            case 'Ñ':          szFixed[iPos] = 173;
            case 'ñ':          szFixed[iPos] = 174;
            case '¿':          szFixed[iPos] = 175;
            case '`':          szFixed[iPos] = 177;
            default:           szFixed[iPos] = string[iPos];
          }
    return szFixed;
}



RE: Notification-System - MarcosBrazz - 01/09/2022

(01/09/2022 22:57)xbruno1000x Escreveu: Ótima contribuição! +Rep

Se encaixa muito bem como um substituto para o SendClientMessage. Acredito que você poderia implementar a stock fixtext, para permitir acentuação das palavras em português.

caso deseje o código do fixtext:
Código:
stock FixText(const string[])
{
    new szFixed[1024], iPos, iLen;

    for(iLen = strlen(string); iPos < iLen; iPos ++)
        switch(string[iPos])
        {
            case '%':          szFixed[iPos] = 37;
            case '&':          szFixed[iPos] = 38;
            case '¡':          szFixed[iPos] = 64;
            case '°':          szFixed[iPos] = 124;
            case 'À':          szFixed[iPos] = 128;
            case 'Á':          szFixed[iPos] = 129;
            case 'Â':          szFixed[iPos] = 130;
            case 'Ä', 'Ã':     szFixed[iPos] = 131;
            case 'Ç':          szFixed[iPos] = 133;
            case 'È':          szFixed[iPos] = 134;
            case 'É':          szFixed[iPos] = 135;
            case 'Ê':          szFixed[iPos] = 136;
            case 'Ë':          szFixed[iPos] = 137;
            case 'Ì':          szFixed[iPos] = 138;
            case 'Í':          szFixed[iPos] = 139;
            case 'Î':          szFixed[iPos] = 140;
            case 'Ï':          szFixed[iPos] = 141;
            case 'Ò':          szFixed[iPos] = 142;
            case 'Ó':          szFixed[iPos] = 143;
            case 'Ô':          szFixed[iPos] = 144;
            case 'Ö', 'Õ':     szFixed[iPos] = 145;
            case 'Ù':          szFixed[iPos] = 146;
            case 'Ú':          szFixed[iPos] = 147;
            case 'Û':          szFixed[iPos] = 148;
            case 'Ü':          szFixed[iPos] = 149;
            case 'à':          szFixed[iPos] = 151;
            case 'á':          szFixed[iPos] = 152;
            case 'â':          szFixed[iPos] = 153;
            case 'ä', 'ã':     szFixed[iPos] = 154;
            case 'ç':          szFixed[iPos] = 156;
            case 'è':          szFixed[iPos] = 157;
            case 'é':          szFixed[iPos] = 158;
            case 'ê':          szFixed[iPos] = 159;
            case 'ë':          szFixed[iPos] = 160;
            case 'ì':          szFixed[iPos] = 161;
            case 'í':          szFixed[iPos] = 162;
            case 'î':          szFixed[iPos] = 163;
            case 'ï':          szFixed[iPos] = 164;
            case 'ò':          szFixed[iPos] = 165;
            case 'ó':          szFixed[iPos] = 166;
            case 'ô':          szFixed[iPos] = 167;
            case 'ö', 'õ':     szFixed[iPos] = 168;
            case 'ù':          szFixed[iPos] = 169;
            case 'ú':          szFixed[iPos] = 170;
            case 'û':          szFixed[iPos] = 171;
            case 'ü':          szFixed[iPos] = 172;
            case 'Ñ':          szFixed[iPos] = 173;
            case 'ñ':          szFixed[iPos] = 174;
            case '¿':          szFixed[iPos] = 175;
            case '`':          szFixed[iPos] = 177;
            default:           szFixed[iPos] = string[iPos];
          }
    return szFixed;
}

Obrigado pela dica Bruno, atualizei a include  Big Grin


RE: A include e bem impressionante mesmo, pena que ta com um erro aqui - LuizFraga - 07/09/2022

invalid expression, assumed zero linha 32

quem souber o erro Big Grin

Dentro Da Include ta dando esse erro!


RE: A include e bem impressionante mesmo, pena que ta com um erro aqui - MarcosBrazz - 07/09/2022

(07/09/2022 16:54)LuizFraga Escreveu: invalid expression, assumed zero linha 32

quem souber o erro Big Grin

Dentro Da Include ta dando esse erro!

Acabei de testar a compilação com a include em 2 gamemodes com os compiladores versões 3.2.3664 e 3.10.10 e compilou sem nenhum erro.
A linha 32 está entre esse código e não vejo nenhum problema neles dentro da include:
Código:
new
    Brazz_BarUsed[MAX_PLAYERS][Brazz_MAX_NOTIFICATIONS] = {-1, ...},
    Float:Brazz_BarPercent[MAX_PLAYERS][Brazz_MAX_NOTIFICATIONS] = {100.0, ...};



RE: A include e bem impressionante mesmo, pena que ta com um erro aqui - xbruno1000x - 07/09/2022

(07/09/2022 16:54)LuizFraga Escreveu: invalid expression, assumed zero linha 32

quem souber o erro Big Grin

Dentro Da Include ta dando esse erro!

Acabei de compilar usando o community compiler 3.10.10.

Link de download:
https://github.com/pawn-lang/compiler/releases


RE: notifications - k2bi_YT - 08/09/2022

Muito bom, isso pode deixar o servidor com uma cara ainda mais profissional e interessante. Parabéns


RE: A include e bem impressionante mesmo, pena que ta com um erro aqui - LuizFraga - 09/09/2022

(07/09/2022 17:24)MarcosBrazz Escreveu:
(07/09/2022 16:54)LuizFraga Escreveu: invalid expression, assumed zero linha 32

quem souber o erro Big Grin

Dentro Da Include ta dando esse erro!

Acabei de testar a compilação com a include em 2 gamemodes com os compiladores versões 3.2.3664 e 3.10.10 e compilou sem nenhum erro.
A linha 32 está entre esse código e não vejo nenhum problema neles dentro da include:
Código:
new
    Brazz_BarUsed[MAX_PLAYERS][Brazz_MAX_NOTIFICATIONS] = {-1, ...},
    Float:Brazz_BarPercent[MAX_PLAYERS][Brazz_MAX_NOTIFICATIONS] = {100.0, ...};

Essa Versão do pawno compiler simplesmente cria varios erros e warnings na gamemode, como seria o adequada a atualização?
simplesmente coloquei os arquivos https://github.com/pawn-lang/compiler/releases da ultima versão na pasta pawno, tem algum problema?


RE: A include e bem impressionante mesmo, pena que ta com um erro aqui - xbruno1000x - 09/09/2022

(09/09/2022 17:49)LuizFraga Escreveu: Essa Versão do pawno compiler simplesmente cria varios erros e warnings na gamemode, como seria o adequada a atualização?
simplesmente coloquei os arquivos https://github.com/pawn-lang/compiler/releases da ultima versão na pasta pawno, tem algum problema?

Esses warnings podem ser desabilitados.

Abaixo das includes:
Código:
#pragma warning disable (NUMERO DO WARNING AQUI)



RE: A include e bem impressionante mesmo, pena que ta com um erro aqui - LuizFraga - 09/09/2022

(09/09/2022 18:01)xbruno1000x Escreveu:
(09/09/2022 17:49)LuizFraga Escreveu: Essa Versão do pawno compiler simplesmente cria varios erros e warnings na gamemode, como seria o adequada a atualização?
simplesmente coloquei os arquivos https://github.com/pawn-lang/compiler/releases da ultima versão na pasta pawno, tem algum problema?

Esses warnings podem ser desabilitados.

Abaixo das includes:
Código:
#pragma warning disable (NUMERO DO WARNING AQUI)
São mais de 1k de warnings e erros, não entendi nada...