[Ajuda] Melhora na sintaxe de Pawn
#1

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
Reply
#2

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

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

"Mostrei o meu, agora mostre o teu"

Reply
#5

Cуdigo. Obvio
Reply
#6

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

Nossa como vocк й um porco malicioso cara :\
Reply
#7

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

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!
Reply
#9

mas e muito mais trabalhoso e a finalidade e quase a mesma
Reply
#10

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);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)