SA-MP Forums Archive
[Ajuda] Fazer macro retornar? - 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] Fazer macro retornar? (/showthread.php?tid=421256)



Fazer macro retornar? - Kuddy - 08.03.2013

Nгo sei se й possнvel... mas vou citar um exemplo:

pawn Код:
#define pr(%1)  (for(new i;i<sizeof(i);i++){if(strfind(%1[i], input, false)){true})
Essa funзгo iria checar todas as strings da array a busca de um texto e iria retornar verdadeiro caso a array tivesse tal string.

Aonde estб o true no meu code, seria aonde ele supostamente iria retornar o valor na macro.

A macro seria usada assim:
pawn Код:
public:do:kokoroReply(playerid, input[])
{
    new buff_conj = pr(conj);
    // ...
    return 1;
}
Caso isso nгo seja possнvel, estarei usando SetProperty para fazer isso ;/


Re: Fazer macro retornar? - zSuYaNw - 09.03.2013

Macro й uma definiзгo.

Ou seja, no cуdigo estaria:
pawn Код:
#define MELANCIA "MELAO"
printf("Gosto de"  MELANCIA);
NO AMX:

pawn Код:
printf("Gosto de"  "MELAO");

Portanto, como falei em meu tutorial, macros sгo "apelidos",
Todos me chamam de Garfield, mбs meu nome й Suyann.

Esses apelidos sгo internos e nгo compilados, apenas substituidos pelos significados.


Re: Fazer macro retornar? - davi54723 - 09.03.2013

Quote:
Originally Posted by [Full]Garfield[XDB]
Посмотреть сообщение
Macro й uma definiзгo.

Ou seja, no cуdigo estaria:
pawn Код:
#define MELANCIA "MELAO"
printf("Gosto de"  MELANCIA);
NO AMX:

pawn Код:
printf("Gosto de"  "MELAO");
Portanto, como falei em meu tutorial, macros sгo "apelidos",
Todos me chamam de Garfield, mбs meu nome й Suyann.

Esses apelidos sгo internos e nгo compilados, apenas substituidos pelos significados.
Uhuahauh gostei de sua explicaзгo com frutas ^-^
Explicaзгo saudavel!



Re: Fazer macro retornar? - Kuddy - 09.03.2013

Exato, ja que nosso amiguinho davi reviveu o tуpico, vou aproveitar para fazer uma pergunta.

Eu preciso de um code que faзa essa varredura das arrays.. irei aplicar o mбximo de palavras para o mбximo de semanticas possнveis entгo tem que ser algo prбtico ;/

eu tinha pensado em usar algo como:

#define pr(%1) new buff_%1;if(/*bla bla bla*/) buff_%1 = 1

Sу que isso nгo й possнvel tambйm.

Acho que o jeito vai ser fazer em SetProperty.


Re: Fazer macro retornar? - Sky™ - 09.03.2013

Quote:
Originally Posted by Kuddy
Посмотреть сообщение
#define pr(%1) new buff_%1;if(/*bla bla bla*/) buff_%1 = 1

Sу que isso nгo й possнvel tambйm.
tentou pelo menos?

@edit

sу da para fazer um retorno no caso se a variavel ja for existente. neste seu caso nгo darб certo ¬¬


Re: Fazer macro retornar? - Kuddy - 09.03.2013

Quote:
Originally Posted by Sky_.
Посмотреть сообщение
tentou pelo menos?

@edit

sу da para fazer um retorno no caso se a variavel ja for existente. neste seu caso nгo darб certo ¬¬
Код:
C:\Users\Kuddy\Desktop\BLS\pawno\include\KOKOE/KOKORO.pwn(17) : error 029: invalid expression, assumed zero
C:\Users\Kuddy\Desktop\BLS\pawno\include\KOKOE/KOKORO.pwn(17) : warning 215: expression has no effect

C:\Users\Kuddy\Desktop\BLS\pawno\include\KOKOE/KOKORO.pwn(17) : error 017: undefined symbol "buff_conjuncao"
C:\Users\Kuddy\Desktop\BLS\pawno\include\KOKOE/KOKORO.pwn(17) : warning 215: expression has no effect
C:\Users\Kuddy\Desktop\BLS\pawno\include\KOKOE/KOKORO.pwn(17) : error 001: expected token: ";", but found "}"
C:\Users\Kuddy\Desktop\BLS\pawno\include\KOKOE/KOKORO.pwn(17) : fatal error 107: too many error messages on one line

Compilation aborted.
Compilation aborted.Pawn compiler 3.2.3664                          Copyright © 1997-2006, ITB CompuPhase


4 Errors.
pawn Код:
#define pr(%1)  (new buff_%1;for(new i;i<sizeof(i);i++){if(strfind(%1[i], input, false)){buff_%1 = 1})

public:do:kokoroReply(playerid, input[])
{
    //new buff_conjuncao, buff_admin, buff_helper, buff_negacao, buff_saudar;

    //if(strfind(conjuncao[i], input, false)) buff_conjuncao = true;

    pr(conjuncao); // Linha 17
    pr(admin);
    pr(helper);
    pr(negacao);
    pr(saudar);

    return 1;
}
As palavras estгo organizadas assim:

pawn Код:
new conjuncao[][] =
{
    {"mбs"}, {"porйm"}, {"todavia"}
};



Re: Fazer macro retornar? - paulor - 09.03.2013

pawn Код:
#define pr(%1)  for(new i;i<sizeof(%1);i++)if(strfind(%1[i], input))

new bool: buff_conj;
pr(conj) buff_conj = true;



Re: Fazer macro retornar? - Crueliz0n - 09.03.2013

nгo sei se isso pode lhe ajudar mas, ja tentou dar uma observada no macro do dcmd? :P

pawn Код:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1



Re: Fazer macro retornar? - Kuddy - 09.03.2013

Quote:
Originally Posted by paulor
Посмотреть сообщение
pawn Код:
#define pr(%1)  for(new i;i<sizeof(%1);i++)if(strfind(%1[i], input))

new bool: buff_conj;
pr(conj) buff_conj = true;
Exato!

Isso vai me quebrar o Senhor Galho, obrigado Paulo! Esse code com algumas customizaзхes vai caber perfeitamente а minha necessidade.

+rep a todos que me ajudaram =)


Re: Fazer macro retornar? - Skream - 09.03.2013

Nгo querendo reviver o tуpico, mas pode ser feito dessa maneira:
pawn Код:
#define pr(%1) for(new i, l = strlen(#%1); i < l; i++) if(strfind(#%1[i], input)) buff_%1 = true