[Ajuda] #define
#2

#define й uma diretiva, com uma diretiva й possнvel emitir uma ordem direta ao compilador, a diretiva define й usada frequentemente para setar cores e valores, o que poderia ser facilmente setado com o const.
As diretivas аs quais vocк se refere sгo chamadas de macro, um macro pode servir pra muitas coisas de acorco com o pra que ele foi programado, vocк pode por exemplo traduzir uma funзгo ou criar novas possibilidades para ela.
#define DarArma GivePlayerWeapon < com isto, dararma serб equivalente а giveplayerweapon, ou seja, terб o mesmo papel, um macro geralmente executa uma sйrie de funзхes ordenadas separadas pelo vнrgula e/ou laзos ( )
Vou usar como exemplo o primeiro macro citado por vocк:
pawn Код:
#define YesNo(%0) ((%0) == (1)) ? ("Yes") : ("No")
O simbolo de interrogaзгo ? й um operador condicional, com este macro й criado a funзгo YesNo(valor); o %0 й o primeiro parametro, com isto: ((%0) == (1)) Serб verificado se o valor obtido no primeiro parвmetro que й %0 й igual == а 1, caso seja verdadeiro, true com o operador condicional isso retornarб а ("Yes"), caso contrбrio, retornarб а ("No").

Vocк pode por exemplo expandir uma funзгo usando macro, veja 2 macros que criei:

pawn Код:
#define VDaOrg(%0,%1,%2) GetPlayerVehicleID(playerid) >= %0[%1] && GetPlayerVehicleID(playerid) <= %0[%2]
Com este macro serб possнvel verificar se o veнculo que o player estб й o mesmo veнculo setado em uma variбvel com array.
Por exemplo:
pawn Код:
new CarrosDoJosma[3];
CarrosDoJosma[1] = CreateVehicle(...);
Eu poderia setar nele:
pawn Код:
if(VDaOrg(CarrosDoJosma, 0, 3))
E entгo ele verificaria se eu estou em algum carro setado nas arrays de 0 а 3 da variбvel CarrosDoJosma utilizando para isso o GetPlayerVehicleID presente no macro.
Veja este outro exemplo:
pawn Код:
#define CriarUmaExplosao(%0,%1,%2,%4,%5) CreateExplosion(%0, %1, %2, %4, %5), CreateExplosion(%0+5, %1+5, %2, %4, %5), CreateExplosion(%0-5, %1-5, %2, %4, %5), CreateExplosion(%0-10, %1-10, %2, %4, %5), CreateExplosion(%0+10, %1+10, %2, %4, %5)
Й criada uma nova funзгo com o nome de "CriarUmaExplosao", os parвmetros sгo:
Код:
%0 = X
%1 = Y
%2 = Z
%4 = Estilo de explosгo
%5 = Raio de alcance.
Repare que o primeiro parвmetro do CriarUmaExplosгo й nomeado de %0 e estб sendo usado em todos os CreateExplosion seguidos dele, ou seja, se o primeiro parвmetro й a coordenada X, todas as outras funзхes criarгo a explosгo na coordenada X, porem, se vocк notar nesta coordenada estб sendo incrementada ou decrementada valores, como: %1-10 ele criarб a explosгo na coordenada Y - 10 pontos, em resumo juntando tudo este macro criarб uma explosгo na coordenada principal, X, Y e Z, e outras 4 explosхes ao seu redor incrementando ou decrementando valores.

Espero nгo ter deixado nenhuma lacuna, mas acho que deixei to com sono kk.
Reply


Messages In This Thread
[Ajuda] #define - by dudaefj - 18.10.2011, 01:00
Re: [Duvida] #define - by Josma_cmd - 18.10.2011, 03:09
Re: [Duvida] #define - by Sergiinhonike - 18.10.2011, 03:34

Forum Jump:


Users browsing this thread: 1 Guest(s)