SA-MP Forums Archive
[Ajuda] Melhora na sintaxe de Pawn - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Melhora na sintaxe de Pawn (/showthread.php?tid=467979)



Melhora na sintaxe de Pawn - ipsBruno - 05.10.2013

Sabe aqueles simbolos chatos em Pawn %f %d %i %s? Estou estudando a possibilidade de remove-los usando uma sintaxe similar ao PHP.

Em PHP fizemos:

PHP код:
$var 10;
echo 
"bruno"" top "$var
e eu tentei adaptar isto para pawn, me deu um trabalhгo reconhecer as tags, e estб ainda bastante incompleto. Mas sу vim postar isto aqui para mostra-los como ficaria mais ou menos


pawn Код:
stock TypeCat: pvp = TypeCat: 34542;
stock Float: suckTagOf ;
stock _@GlobalStr[1024];

#define tagof("%1") -47

#define boop(%0,%1,%2,%3,%4,%5,%6,%7,%8,%9) \
                (sintaxeCat(\
                    %0,  (tagof(%0)),\
                    %1,  (tagof(%1)),\
                    %2,  (tagof(%2)),\
                    %3,  (tagof(%3)),\
                    %4,  (tagof(%4)),\
                    %5,  (tagof(%5))\
                ),_@GlobalStr)

#define s(%0) \
        boop(%0,pvp,pvp,pvp,pvp,pvp,pvp,pvp,pvp,pvp)


sintaxeCat({Float,TypeCat,_}:...) {

    new szReturn[1028];

    for(new i = 1, j, tag; i < 10; i += 2, j += 2)
    {
        tag = getarg(i, 0);

        switch (tag) {

            case tagof(pvp): continue;

            case 0: format(szReturn, 1024, "%s%d", szReturn, getarg(j,0));

            case tagof(suckTagOf): {
                new Float: f =  Float:getarg(j,0);
                format(szReturn, 1024, "%s%0.2f", szReturn, f);
            }

            case -47: for(new x; getarg(j, x); x++) format(szReturn, 1024, "%s%c", szReturn, getarg(j,x));

            default: format(szReturn, 1024, "%s%d", szReturn, getarg(j,0));

        }

    }
   
    return strcat((_@GlobalStr[0]=EOS,_@GlobalStr), szReturn);

}
Exemplo:
pawn Код:
main() {

    new var1 = 10;
    new Float:var2 = 2.5;

    print(s("Cуdigo top ", var1, " do forum samp versгo ", var2));
}

LIMITES, TEM MUITOS limites. NГO podemos usar muitos parвmetros (se fizer mais que 5 buga), tem que cuidar com o tipo de variбvel que passa ali.


EU AINDA NГO TERMINEI, apenas estou demonstrando a possibilidade de eu conseguir fazer isto


Wilian me ajudou no apoio moral


Re: Melhora na sintaxe de Pawn - WLSF - 05.10.2013

O meu ficou muito diferente disso, mas tб funcionando com alguns valores jб, mais tarde te mostro, quando voltar...


Respuesta: Melhora na sintaxe de Pawn - ipsBruno - 05.10.2013

Tб me enrolando pra mostrar desde de tarde, eu mostrei o meu, mostra o teu agora ¬¬


Re: Melhora na sintaxe de Pawn - Mteck - 05.10.2013

"Mostrei o meu, agora mostre o teu"




Respuesta: Melhora na sintaxe de Pawn - ipsBruno - 05.10.2013

Cуdigo. Obvio


Re : Re: Melhora na sintaxe de Pawn - ThiagoMK - 05.10.2013

Quote:
Originally Posted by Mteck
Посмотреть сообщение
"Mostrei o meu, agora mostre o teu"

Nossa como vocк й um porco malicioso cara :\


Re: Melhora na sintaxe de Pawn - [THs]ShadoW - 05.10.2013

Ainda prefiro usar "%f, %i, %s, %d", pq a necessidade de mudar ? D:


Respuesta: Re: Melhora na sintaxe de Pawn - ipsBruno - 05.10.2013

Quote:
Originally Posted by [THs]ShadoW
Посмотреть сообщение
Ainda prefiro usar "%f, %i, %s, %d", pq a necessidade de mudar ? D:
Programe Javascript e PHP, e verб a diferenзa. Й mais leve, prбtico, nгo precisa usar format, definir tamanhos, declarar toda hora variбveis. Уtimo!


Re: Melhora na sintaxe de Pawn - PT - 05.10.2013

mas e muito mais trabalhoso e a finalidade e quase a mesma


Respuesta: Melhora na sintaxe de Pawn - ipsBruno - 05.10.2013

Eu fiz para estudos, nгo para usar. Mas quem quiser usar, sinta-se a vontade. Vai do seu costume


PHP код:

    
new FloathealthGetPlayerHealth(playeridhealth);
    
SendClientMessage(playerid, -1s("Vocк tem "health" de vida")); 
pawn Код:
new Float: health; GetPlayerHealth(playerid, health);
new string[128];
format(string,128, "Vocк tem %f de vida", health);
SendClientMessage(playerid,-1, string);