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