18.10.2011, 03:09
#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к:
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:
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:
Eu poderia setar nele:
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:
Й criada uma nova funзгo com o nome de "CriarUmaExplosao", os parвmetros sгo:
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.
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")
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]
Por exemplo:
pawn Код:
new CarrosDoJosma[3];
CarrosDoJosma[1] = CreateVehicle(...);
pawn Код:
if(VDaOrg(CarrosDoJosma, 0, 3))
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)
Код:
%0 = X %1 = Y %2 = Z %4 = Estilo de explosгo %5 = Raio de alcance.
Espero nгo ter deixado nenhuma lacuna, mas acho que deixei to com sono kk.