[Tutorial] Como usar macros.
#1

Introduзгo
Bom, nгo sou muito bom com explicaзхes mas vou tentar ensinar como usar macros pois vejo que muitas pessoas aqui no forъm nгo sabem usar.

Mгos na Massa
Usar macros й uma maneira de criar funзхes mais otimizadas para seu script. Veja um exemplo de como formatar uma mensagem e envia-la usando format e SendClientMessage em um macro.
pawn Код:
#define MSGFormatada(%0,%1,%2,%3)   new string[128];format(string, sizeof string, %2, %3) && SendClientMessage(%0,%1,string)
Parametros:
Код:
%0 = playerid.
%1 = Cor.
%2 = Mensagem.
%3 = String.
Modo de uso:
pawn Код:
MSGFormatada(playerid, COR, MSG, STRING);
Jб a SendClientMessage normal os parametros seriam:
pawn Код:
SendClientMessage(playerid, COR, MSG);
Bom, estudando as funзхes que eu estou ensinando a fazer em macros jб da para vocкs terem uma ideia que %0 %1 %2.. sгo como mascaras de formataзгo para uma certa string.

Agora, o DirectHit me pediu para falar de como usar macros para retirar a necessidade de por as forwards no gamemode, entгo o macro seria mais ou menos assim:


pawn Код:
#define callback %0(%1) forward %0(%1);public %0(%1)

Parametros:

Код:
%0 = Nome da Callback.
%1 = Funзхes da callback.
Exemplo:
#define MSGALLFormatada(%0,%1,%2) new string[128];format(string,sizeof string,%1,%2) && SendClientMessageToAll(%0,string)

callback tuegay(playerid)
{
    new snd[MAX_PLAYER_NAME];
    GetPlayerName(playerid,snd,sizeof snd);
    MSGALLFormatada(-1,"%s й gay kkkk!",snd);
    return 1;
}
Й um tutorial й basico.. Espero que gostem e nгo falem merdas no topicos ou seram reportados '-'
Depois irei postar mais atualizaзхes atй que fique um tutorial completo, se hб algum erro nos scripts falados acima me fale pois acabei de acordar e estou quase caindo da cadeira

Abraзos.
Reply
#2

Acho mais fбcil fazer com y_va.

pawn Код:
SendClientMessageEx ( playerid, hex_colour, str [ ], {Float, _}:... )
{
    new
        str_text [ 128 ];

    format ( str_text, sizeof str_text, str, va_start < 3 > );

    return SendClientMessage ( playerid, colour, str );
}
Apesar de bбsico, bom tutorial.
Reply
#3

Sу que jб existe um semelhante...

http://forum.sa-mp.com/showthread.ph...ighlight=macro
Reply
#4

Quote:
Originally Posted by Los
Посмотреть сообщение
Acho mais fбcil fazer com y_va.

pawn Код:
SendClientMessageEx ( playerid, hex_colour, str [ ], {Float, _}:... )
{
    new
        str_text [ 128 ];

    format ( str_text, sizeof str_text, str, va_start < 3 > );

    return SendClientMessage ( playerid, colour, str );
}
Apesar de bбsico, bom tutorial.
Foi sу um exemplo de uso mas й um tutorial bem simples mesmo.. Espero que esteja facil de ser entendido

@Edit

Vini, eu aprendi a usar macros pelo tutorial do blackdonely e sу tentei passar minha ideia sobre macros para os membros.. Obrigado por comentar!
Reply
#5

Cara isso nгo й um tutorial para usar Macros e sim um Codigo que define uma SendClientMessageFormated.

Ensinar sobre macros й falar como й que й o processo dela antes e depois da compilaзгo e nгo tem esse negocio de otimizado, a unica diferenзa para uma CallBack й que vocк nгo estarб criando um CallBack e sim colocando direto no script depois da compilaзгo.

http://slice.nl/ppg/

Esse site mostra bem como funciona, pena que nгo estб online!!
Reply
#6

Quote:
Originally Posted by paulor
Посмотреть сообщение
Cara isso nгo й um tutorial para usar Macros e sim um Codigo que define uma SendClientMessageFormated.

Ensinar sobre macros й falar como й que й o processo dela antes e depois da compilaзгo e nгo tem esse negocio de otimizado, a unica diferenзa para uma CallBack й que vocк nгo estarб criando um CallBack e sim colocando direto no script depois da compilaзгo.

http://slice.nl/ppg/

Esse site mostra bem como funciona, pena que nгo estб online!!
Eu so entendi no SendClienteMessage
Em outras situaзхes de usar macro seu tutorial nao serveria.
o paulor ta certo
Vocк explico a usar em SendClientMessageFormated.
Mais bom o seu tutorial =)
Reply
#7

KK legal mano, nem sabia que isso era possнvel '-'
Valeu
Reply
#8

Gostei do tutorial Toni, apesar de simples, bem explicado .

@Depois Atualiza o Tуpico, ensinando usar nas Forwards, e muito ъtil tambйm .
Reply
#9

Mais tarde eu vou dar uma atualizaзгo no topico dando mais exemplos e mais explicaзхes
Reply
#10

Nгo achei bem explicado! ...

Tem mais informaзгo pra colocar ai ^^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)