[Tutorial] Criando GangZones Dominбveis | Versгo 3.0
#1

Introduзгo::

lб neste tutorial ensinarei a criar Gang Zones,nгo serб como os tutoriais anteriores,neste tutorial usaremos 1 public para todas gang,assim nгo necessitando criar centenas de publics para um simples domнnio, e sim um array onde armazenarб tudo,eficiente,rбpido,simples e fбcil.

Para iniciarmos necessita que criem 2 Arrays,uma contendo as coordenadas das Gang Zones e outra contendo os nomes.

Colocando elas::


Topo GM:

pawn Код:
#define GZS_CRIADAS 4
Nъmero de Gang Zones que serгo criadas

Logo Abaixo:
Nome das GangZones (Nicks de players da FeK)

pawn Код:
new GZCriadas[GZS_CRIADAS];
new NomesGZs[GZS_CRIADAS][] =
{
"[FeK]DraKiNs",//1
"[FeK]Higor",//2
"[FeK]Vitor",//3
"[FeK]RockManN"//4  OBS: Ъltimo sem vнrgula
};
[GZS_CRIADAS] = Nъmero de Gang Zones
new GZCriadas = Array que irб armazenar no loop para criar as Gang Zones,posteriormente.
Obs: O ъltimo nгo deve conter Virgula ,

Agora vamos criar a Array onde armazenarб coordenadas das Gang Zones

Logo Abaixo da Array acima
pawn Код:
new CordGZs[GZS_CRIADAS][4] = {  
{2217,1901,2333,2013}, // [FeK]DraKiNs
{1875,641,1978,764}, // [FeK]Higor
{-2201,-281,-2011,-80}, // [FeK]Vitor
{-2015,1375,-1799,1601} // [FeK]RockManN
};
[GZS_CRIADAS] = Nъmeros de Gang Zones
[4] = Nъmero de Coordendas (x,y,x,y) [DEIXE 4 SEMPRE]



Criando elas::

Agora em OnGameModeInit vamos executar a criaзгo da Gang Zones:

pawn Код:
for (new i = 0; i <GZS_CRIADAS; i++) // Loop
{
     GZCriadas[i] = GangZoneCreate(CordGZs[i][0], CordGZs[i][1], CordGZs[i][2], CordGZs[i][3]);
     printf("Gang Zone %s Criada com sucesso",NomesGZs[i]);    
}
printf = Irб imprimir no console os nomes das Gang Zones que serгo criadas,esta funзгo й importante para checar se a gang zone foi criada ou nгo.
GangZoneCreate = Irб criar as gang zones,com base nas coordenadas definidas anteriormente.

Mostrando elas :
Para mostrar usamos o mesmo que criar,com loop e tudo.

EM OnPlayerSpawn
pawn Код:
for (new i = 0; i <GZS_CRIADAS; i++) // Loop
{
     GangZoneShowForPlayer(GZCriadas[i],COR_INICIAL_AQUI);
     printf("Gang Zone %s Criada com sucesso",NomesGZs[i]);    
}
Checando Бrea do Player::

Para checar a Бrea do player nessessitaremos de uma simples Stock chamada IsPlayerInArea

Ou atй mesmo use esta minha,ela checa se o player esta em alguma Gang Zone

pawn Код:
stock IsAreaInGangCheck(playerid)
{        
     new Float:x, Float:y, Float:z;
     GetPlayerPos(playerid, x, y, z);
     for (new i=0; i < GZS_CRIADAS; i++)
      if (x > CordGZs[i][0] && y > CordGZs[i][1] && x < CordGZs[i][2] && y < CordGZs[i][3]&& z < 500) return true;
     return false;
}
Esta stock checa se X,Y estгo igual as coordenadas da Gang Zone atravйs da Amplitude e checa se a Altura for menor que 500 para poder iniciar domнnio.

Agora usando o comando em OnPlayerCommandText:

Dominando elas::
pawn Код:
if(!strcmp(cmdtext, "/dominar", true))
{
    if(!IsAreaInGangCheck(playerid)) SendClientMessage(playerid, 0xFFFFFFFF, "SERVER: Vocк nгo estб em nenhuma Gang Zone,FAIL");
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new name[MAX_PLAYER_NAME], string[44];
    GetPlayerName(playerid, name, sizeof(name));
    for (new i=0; i < GZS_CRIADAS; i++)
    if (x > CordGZs[i][0] && y > CordGZs[i][1] && x < CordGZs[i][2] && y < CordGZs[i][3]&& z < 500) {
        format(string, sizeof(string), "%s comeзou a dominar a gang zone %s.",name,NomesGZs[i]);

    }
    SendClientMessageToAll(0xFFFF00AA, string);
    GangZoneFlashForAll(GZCriadas[i], GetPlayerColor(playerid))
        SetTimer("Terminar",60000,false);
    return 1;
}
Este comando detecta se o player estiver na бrea,caso estiver irб pegar o nome da gang zone que ele esta e comecarб a fazer ela piscar com sua cor,com isso iniciarб um timer que chamarб essa funзгo:

pawn Код:
forward Terminar(playerid);
public Terminar(playerid)
{
    if(!IsAreaInGangCheck(playerid)) {
        SendClientMessageToAll(0xFFFF00AA, "Nгo consiguiram dominar o territуrio");
    }
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new name[MAX_PLAYER_NAME], string[44];
    GetPlayerName(playerid, name, sizeof(name));
    for (new i=0; i < GZS_CRIADAS; i++)
    if (x > CordGZs[i][0] && y > CordGZs[i][1] && x < CordGZs[i][2] && y < CordGZs[i][3]&& z < 500) {
        format(string, sizeof(string), "%s conseguiu dominar %s.",name,NomesGZs[i]);
        GangZoneStopFlashForAll(GZCriadas[i]);

    }
    SendClientMessageToAll(0xFFFF00AA, string);
    return true;
}
estб public checa se o player estб na бrea,caso nгo estiver = Perdeu se Estiver = Ganhou

Tutorial acabado,criado por [FeK]DraKiNs do Blog [FeK]Squad.
NAO PERMITO POSTAR EM OUTROS BLOGS
ERROS -> PM
Reply
#2

Tutorial acabo,jб se pode postar
Reply
#3

Drakon te amo *-*
Estava precisando de 1 sistema de dominio pratico assim!
Eu ja tinha visto akeles do forum e pah, mas sгo muito lol mal feitos e grandes. tentei adaptar uns, deixar menores mas nunca conseguia, agora com esse seu, meus problemas acabaram.

PARABENS!

@Duvidas "Desculpe minha burrise"

Como eu checaria o nome da gang dominante? ou player tanto faz
Como eu faria pra dar dinheiro vida etc... pra quem estivesse na area?
Reply
#4

muito bom drakon
Reply
#5

Tambem achei sу tive essas duvidas

Como eu checaria o nome da gang dominante? ou player tanto faz
Como eu faria pra dar dinheiro vida etc... pra quem estivesse na area?
Reply
#6

boa cara.
Reply
#7

DraKiNs - o salva noob <-
Reply
#8

very nice
Reply
#9

kevin brasilgamelife й sua?
Reply
#10

muito bom
Reply
#11

@Kasura:
Nгo posso responder isso,nгo sei suas variбveis e tгo pouco importo а oom irб usar o tutorial,basta adaptar
Reply
#12

pensei que era pra domina so ficando na GZ...
quando eu vi que era por comando deu vontade de fecha ¬¬"
mesmo assim fico muito bom ^^
Reply
#13

Bom, agora que todos gostaram e "pб"...
Porque um GangZoneShowForAll a cada vez que o jogador nasce?
Reply
#14

valeu Cynic,ja arrumei
Reply
#15

prefiro domina por comando mesmo desto servidores que й por domineo sу de ficar em cima, o cara ta passando pela gz quando ver diz que ta preparando pra dominar dai quando ve diz vc nun conseguio dominar a gz depois de 5 minuts que vc atй ja esqueceu que tava dominando ~AFF
Reply
#16

Quote:
Originally Posted by Canabis
View Post
pensei que era pra domina so ficando na GZ...
quando eu vi que era por comando deu vontade de fecha ¬¬"
mesmo assim fico muito bom ^^
Vocк e tenso........
Reply
#17

rs,os moзos querem de mгe beijada,й mesma coisa para sem comando porйm com timer ¬
Reply
#18

@Higor
sou critico e detesto coisas bem mal feitas ^^
"Nгo estou falando do script do drakon pois й muito bom
To falando do sistema de dominio automatico de alguns servidores..."

@Drakon
"os moзos querem de >>mгe<< beijada" NO COMENTES
Depois to afim de fazer 1 sistema de gz dominavel com recompenзas pontos exp etc...
Eu poзo usar seu script pra criar esse fs e postar aki no forum? COM SEUS CRЙDITOS Й CLARO ?
Reply
#19

Quote:
Originally Posted by [FeK]DraKiNs
View Post
rs,os moзos querem de mгe beijada,й mesma coisa para sem comando porйm com timer ¬
eu tenho o meu pronto...
eu so ia comparar com o meu e tals xD
Reply
#20

Queee Bom
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)