Criaзгo de gangzones de um modo simples! -
Rodrigues2015 - 01.09.2014
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!
Re: Criaзгo de gangzones de um modo simples! -
Rodrigues2015 - 01.09.2014
UP: Dicas para o prуximo tutorial :/
Re: Criaзгo de gangzones de um modo simples! -
Schocc - 01.09.2014
Legal parceiro, ensina a fazer um sistema completo se for possнvel, pois algo bem explicado em pt_br eu ainda nгo vi.
+5
Re: Criaзгo de gangzones de um modo simples! -
Patrick141 - 01.09.2014
Entendi seu tutorial , nгo entendia muito de GangZone agora entendi um pouco.
+ Rep
Re: Criaзгo de gangzones de um modo simples! -
Rodrigues2015 - 02.09.2014
Quote:
Originally Posted by Schocc
Legal parceiro, ensina a fazer um sistema completo se for possнvel, pois algo bem explicado em pt_br eu ainda nгo vi.
+5
|
Assim que tiver tempo livre irei fazer, agora estou trabalhando no sistema de gangs civis do meu gamemode.. Jб criei as funзхes:
pawn Код:
native CreateGang(playerid, gangname[]);
native LoadGangs();
native LoadGang(gangid);
native CheckGang(playerid);
native ClearSlot(slotid);
native InputMember(membername[]);
native GangZoneCreateIG(vargz, Float: radius, Float: X, Float: Y);
native DeleteGangZone(vargz);
estou pensando em postar como FS mas nгo sei se devo :/
Quote:
Originally Posted by Patrick141
Entendi seu tutorial , nгo entendia muito de GangZone agora entendi um pouco.
+ Rep
|
Obrigado pelo comentбrio! Eu tambйm nгo entendia muito.. Quando descobri este calculo melhorou minha vida e muito kk
Re: Criaзгo de gangzones de um modo simples! -
ViniBorn - 02.09.2014
Boa idйia, mas infelizmente nem sempre a GZ vai ter lados idкnticos
Re: Criaзгo de gangzones de um modo simples! -
Rodrigues2015 - 02.09.2014
Quote:
Originally Posted by ViniBorn
Boa idйia, mas infelizmente nem sempre a GZ vai ter lados idкnticos
|
Й sу fazer uma modificaзгo na parte do calculo para criar a gangzone..
Funзгo com X e Y ajustбvel:
pawn Код:
stock GangZoneCreateIG(vargz, Float: radius_x, Float: radius_y, Float: X, Float: Y)
{
vargz = GangZoneCreate(X-radius_x, Y-radius_y, X+radius_x, Y+radius_y);
GangZoneShowForAll(vargz, 0xC0C0C096);
printf("(%f, %f, %f, %f)", X-radius_x, Y-radius_y, X+radius_x, Y+radius_y);
return true;
}
Novo comando:
pawn Код:
new gztest;
CMD:criargz(playerid, params[])
{
new Float: radius[2], Float: pos[3];
if(sscanf(params, "ff", radius[0], radius[1]))
return SendClientMessage(playerid, 0xC0C0C0AA, "Use: /criargz [radius x] [radius y]");
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
GangZoneCreateIG(gztest, radius[0], radius[1], pos[0], pos[1]);
return true;
}