[Tutorial] Criaзгo de gangzones de um modo simples!
#1

Bom galera, decidi fazer um tutorial sobre um assunto que estava me deixando meio chateado por me dar um pouco de dor de cabeзa..
Nгo sei se isso aconteceu com todos de ao tentar criar uma gangzone ela ficar meio que "bugada", mas enfim, vamos comeзar!

Para resolver este problema fui ler na wiki sa-mp sobre a funзгo GangZoneCreate e vi a seguinte dica para pegar as coordenadas:
Код:
// Como pegar coordenadas.
               (North)
                ymax
            |----------|
            |          |
(West) xmin |          | xmax (East)
            |          |
            |----------|
                ymin
               (South)
Entгo achei uma alternativa para criar gangzone de um modo simples, apenas criando duas funзхes.
As funзхes criadas foram estas:
pawn Код:
stock GangZoneCreateIG(vargz, Float: radius, Float: X, Float: Y)
{
    vargz = GangZoneCreate(X-radius, Y-radius, X+radius, Y+radius);
    GangZoneShowForAll(vargz, 0xC0C0C096);
    printf("(%f, %f, %f, %f)", X-radius, Y-radius, X+radius, Y+radius);
    return true;
}

stock DeleteGangZone(vargz)
    return GangZoneHideForAll(vargz);
Acredito que as funзхes nгo precisam de explicaзхes, porйm, vou resumir o calculo simples que fiz:
pawn Код:
X Min = X - radius // Radius й o perimetro da gangzone.
Y Min = Y - radius // Radius й o perimetro da gangzone.
X Max = X + radius // Radius й o perimetro da gangzone.
Z Max = Y + radius // Radius й o perimetro da gangzone.
Quando usamos a funзгo GangZoneCreateIG ela imprime no sa-mp server as coordenadas para serem colocadas no GangZoneCreate na sequencia correta,
para criar a gangzone e ajustar da forma que eu queria eu criei um gamemode para testes, ele ficou assim:
pawn Код:
#include a_samp
#include zcmd
#include sscanf2

main() return print("Gamemode para testes.");

new gztest;

CMD:criargz(playerid, params[])
{
    new Float: radius, Float: pos[3];
    if(sscanf(params, "f", radius))
        return SendClientMessage(playerid, 0xC0C0C0AA, "Use: /criargz [radius]");
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    GangZoneCreateIG(gztest, radius, pos[0], pos[1]);
    return true;
}

CMD:deletargz(playerid)
{
    DeleteGangZone(gztest);
    return true;
}
Pronto! a partir dai й sу criar e deletar a gangzone aumentando/diminuindo o parвmetro "radius" atй ficar como deseja..
por agora й sу isso, й meu primeiro tutorial entгo por favor peguem leve.. Obrigado pela atenзгo!
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)