05.10.2013, 21:14
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:
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
Exemplo:
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
Em PHP fizemos:
PHP код:
$var = 10;
echo "bruno", " top ", $var;
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);
}
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