25.08.2011, 19:22
(
Последний раз редактировалось JonathanFeitosa; 01.07.2016 в 13:21.
)
Nesse Tutorial, Vamos Criar um GangZone do 0, uma no Casarгo e outra prуximo ao aeroporto.
PS: vamos utilizar as seguintes organizaзхes Imaginarias:
1.0 - Pegando Coordenada da Nossa GangZone.
Como vocк ver a cima, Vocк tem que da /save do lado esquerdo abaixo, e do lado direito em cima. Veja o Vнdeo
( OBRIGATORIO PARA APRENDER ):
[ame]http://www.youtube.com/watch?v=QGFMfLCWSFs[/ame]
Vocк tambйm pode usar meu FS para criar: https://sampforum.blast.hk/showthread.php?tid=562970
1.1 - Coordenada Criada.
Essas Sгo as Coordenadas Que Criamos Usando o Vнdeo.
Vamos Usar a Funзгo:
Agora vamos pegar nossa coordenada e bota-lб no GangZoneCreate Ficando.
Verifique Agora a Coordenada X,Y Do Nosso Vнdeo e a GangZoneCreate a cima.
pronto, criamos nossa primeira GangZone, agora vamos dar continuidade...
1.2 - Criando a GangZone
Bote Isso no Topo do Seu GameMode:
Depois de Definir, Vamos Definir Para Quando Algum Player Entrar no Servidor, Setar a Cor da GangZone.
Bote Isso Abaixo No OnPlayerConnect.
Bote Isso Abaixo no OnPlayerDisconnect
Se Vocк Quiser Por Essa Parte, й a mesma coisa que a gente fez em cima, sу que, se o Player Morrer ele й resetado, se vocк quiser por para quando o player morrer, resetar bote na public OnPlayerDeath:
Agora no OnGameModeInit, Bote o Cуdigo Abaixo, Que Criarб nossa GangZone.
Pronto Criamos a Nossa GZ e as funзхes, Agora Vamos Criar o Comando.
1.3 - Criando o Comando.
1.4 - Completando o Timer SetTimerEx.
Agora Bote no Final do GameMode, Quando Dominar:
1.5 - Finazilando o IsPlayerInCasarao.
Se Lembra da Coordenada Que Criamos Lб no Comeзo ?
Entгo Basta Fazer o Seguinte.
No Final do Seu GameMode, Bote:
Ou Seja, Basta Aplicar na Ordem Que Estб na GangZoneCreate.
Pronto Terminou o Nosso Tutorial, Caso Queria Um Code Sem Erros, й Pegando Normalmente, Abaixo um FilterScript Criado Por Mim:
PS: vamos utilizar as seguintes organizaзхes Imaginarias:
pawn Код:
if(MinhaGang[playerid] == Vagos)
if(MinhaGang[playerid] == Grove)
Como vocк ver a cima, Vocк tem que da /save do lado esquerdo abaixo, e do lado direito em cima. Veja o Vнdeo
( OBRIGATORIO PARA APRENDER ):
[ame]http://www.youtube.com/watch?v=QGFMfLCWSFs[/ame]
Vocк tambйm pode usar meu FS para criar: https://sampforum.blast.hk/showthread.php?tid=562970
1.1 - Coordenada Criada.
Код:
AddPlayerClass(78,1208.1812,-2068.6694,69.0078,91.1575,0,0,0,0,0,0); // Esquerda Abaixo AddPlayerClass(78,1122.5748,-1994.9491,69.0078,92.7242,0,0,0,0,0,0); // Direita Acima
Vamos Usar a Funзгo:
pawn Код:
GangZoneCreate(MinX, MinY, MaxX, MaxY);
// Ou Seja, a Menor Coordenada X e Y, e maior Coordenada X,Y.
pawn Код:
GangZoneCreate(1122.5748, -2068.6694, 1208.1812, -1994.9491);
pronto, criamos nossa primeira GangZone, agora vamos dar continuidade...
1.2 - Criando a GangZone
Bote Isso no Topo do Seu GameMode:
pawn Код:
new Dominando[MAX_PLAYERS]; // Usaremos Quando o Player For Dominar
new GZCasarao; // Da Nome a Nossa GZ
new donoCasarao; // Define quem й o dono da GZ
new GuerranoCasarao; // Se Estiver Em Guerra o Casarao.
new ProvocoCasarao[MAX_PLAYERS]; // Se Ele der /do no casarгo.
new TempoGuerraCasarao; // Tempo Para Dominar/
forward GuerraCasarao(playerid); // Public de Dominar.
new CelulasJFS[128]; // new Que Iremos usar Para Nossas format.
new NomeJFS[MAX_PLAYER_NAME]; // Pegarб o Nome do Player ^^
Bote Isso Abaixo No OnPlayerConnect.
pawn Код:
if(donoConstrucao == 0) // Se o DonoCasarao For 0, й Branca, de Ninguem.
{
GangZoneShowForPlayer(playerid, GZConstrucao, 0xC0C0C0AA); // GangZone de Cor Normal ( Branca ).
}
if(donoConstrucao == 1) // Se o DonoCasarao For 1, й Dos Vagos.
{
GangZoneShowForPlayer(playerid, GZConstrucao, CorVagos); // GangZone de Cor Vagos ( Amarela )
}
if(donoConstrucao == 2) // Se o DonoCasarao For 2, й Dos Grove.
{
GangZoneShowForPlayer(playerid, GZConstrucao,CorGrove); // GangZone de Cor Grove ( Verde )
}
pawn Код:
if(ProvocoConstrucao[playerid] == 1) // Se o Player Estiver Domindo ( /do ), se ele sair, a GZ Ficarб Branca Denovo, Assim Podendo Dominar Denovo.
{
// Essas Funзхes Abaixo Reseta a GangZone, Porque o Player que estavб dominando saiu, a GZ Volta ao seu estado de inнcio.
GangZoneStopFlashForAll(GZCasarao); // Para Fazer a GangZone Parar de Piscar.
GangZoneShowForAll(GZCasarao, 0xFFFFFF96); // GangZone Voltarб a Ficar Branca.
GuerranoCasarao = 0; // Setando Para poder dominar.
ProvocoCasarao[playerid] = 0; // Setando Para poder dominar.
donoCasarao = 0; // Setando para o dono 0 ( ninguem ).
Dominando[playerid] = 0; // Setando que ninguem estб dominando.
KillTimer(TempoGuerraCasarao); // Destroi o SetTimer Criado Para Dominar a GZ
}
pawn Код:
if(ProvocoConstrucao[playerid] == 1) // Se o Player Estiver Domindo ( /do ), se ele Morrer, a GZ Ficarб Branca Denovo, Assim Podendo Dominar Denovo.
{
// Essas Funзхes Abaixo Reseta a GangZone, Porque o Player que estavб dominando e morreu, a GZ Volta ao seu estado de inнcio.
GangZoneStopFlashForAll(GZCasarao); // Para Fazer a GangZone Parar de Piscar.
GangZoneShowForAll(GZCasarao, 0xFFFFFF96); // GangZone Voltarб a Ficar Branca.
GuerranoCasarao = 0; // Setando Para poder dominar.
ProvocoCasarao[playerid] = 0; // Setando Para poder dominar.
donoCasarao = 0; // Setando para o dono 0 ( ninguem ).
Dominando[playerid] = 0; // Setando que ninguem estб dominando.
KillTimer(TempoGuerraCasarao); // Destroi o SetTimer Criado Para Dominar a GZ
}
pawn Код:
GZCasarao = GangZoneCreate(1122.5748, -2068.6694, 1208.1812, -1994.9491);
// a GangZoneCreate foi o que a gente criou no nosso vнdeo, e demos o nome a ela.
1.3 - Criando o Comando.
pawn Код:
if(strcmp(cmdtext, "/dominar", true) == 0 || strcmp(cmdtext, "/do", true) == 0) // Ou /dominar ou /do ^^
{
if(MinhaGang[playerid] == Vagos) // se for vagos
{
if(!IsPlayerInCasarao(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo estб em nenhum territуrio!");
if(Dominando[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк Jб Estб Dominando um Territorio.");
if(GuerranoCasarao == 1) return SendClientMessage(playerid, -1, "Jб estб tendo uma guerra nesse territorio.");
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME); // pegando o nome do player
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Vagos Estгo Dominando o Casarгo",NomeJFS); // mensagem ao dominar
SendClientMessageToAll(CorVagos, CelulasJFS); // para todos a mensagem.
SendClientMessage(playerid, -1, "Fique esperto, Todos os Terroristas Foi Avisados!");
SendClientMessage(playerid, -1, "Espere 1 minuto para dominar estб area.");
GangZoneFlashForAll(GZCasarao, CorVagos); // Ficar piscando para todos.
Dominando[playerid] = 1; // setando o 'DOMINANDO' Para 1.
ProvocoCasarao[playerid] = 1; // setando o 'ProvocoCasarao' Para 1.
GuerranoCasarao = 1; // setando o 'GuerranoCasarao ' Para 1.
TempoGuerraCasarao = SetTimerEx("GuerraCasarao", 60000, 0, "i", playerid); // SetTimer Atй dominar ( 1 MIN )
return true;
}
if(MinhaGang[playerid] == Grove) // se for grove
{
if(!IsPlayerInCasarao(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo estб em nenhum territуrio!");
if(Dominando[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк Jб Estб Dominando um Territorio.");
if(GuerranoCasarao == 1) return SendClientMessage(playerid, -1, "Jб estб tendo uma guerra nesse territorio.");
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME); // getando o nome do player.
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Grove Estгo Dominando o Casarгo",NomeJFS); // mensagem
SendClientMessageToAll(CorGrove, CelulasJFS); // mensagem a cima para todos
SendClientMessage(playerid, -1, "Fique esperto, Todos os Terroristas Foi Avisados!");
SendClientMessage(playerid, -1, "Espere 1 minuto para dominar estб area.");
GangZoneFlashForAll(GZCasarao, CorGrove);// Ficar piscando para todos.
Dominando[playerid] = 1; // setando o 'DOMINANDO' Para 1.
ProvocoCasarao[playerid] = 1; // setando o 'ProvocoCasarao' Para 1.
GuerranoCasarao = 1; // setando o 'GuerranoCasarao ' Para 1.
TempoGuerraCasarao = SetTimerEx("GuerraCasarao", 60000, 0, "i", playerid);// SetTimer Atй dominar ( 1 MIN )
return true;
}
return true;
}
Agora Bote no Final do GameMode, Quando Dominar:
pawn Код:
public GuerraCasarao(playerid)
{
if(MinhaGang[playerid] == Vagos)
{
if(ProvocoCasarao[playerid] == 1)
{
if(IsPlayerInCasarao(playerid))
{
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Vagos Dominaram a GangZone do Casarгo.",NomeJFS);
SendClientMessageToAll(CorVagos, CelulasJFS);
SendClientMessage(playerid, -1, "Vocк Dominou a GangZone do Casarгo.");
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, CorVagos);
Dominando[playerid] = 0;
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 1;
KillTimer(TempoGuerraCasarao);
return true;
}
else
{
SendClientMessage(playerid, CorVagos, "Vocк nгo estб na Construзгo Abandonada.");
Dominando[playerid] = 0;
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 0;
KillTimer(TempoGuerraCasarao);
return true;
}
}
return true;
}
if(MinhaGang[playerid] == Grove)
{
if(ProvocoCasarao[playerid] == 1)
{
if(IsPlayerInCasarao(playerid))
{
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Grove Dominaram o Casarгo.",NomeJFS);
SendClientMessageToAll(CorGrove, CelulasJFS);
SendClientMessage(playerid, -1, "Vocк dominou o Casarгo.");
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, CorGrove);
Dominando[playerid] = 0;
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 2;
KillTimer(TempoGuerraCasarao);
return true;
}
else
{
SendClientMessage(playerid, CorGrove, "Vocк nгo estб na Construзгo Abandonada.");
Dominando[playerid] = 0;
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 0;
KillTimer(TempoGuerraCasarao);
return true;
}
}
return true;
}
return true;
}
Se Lembra da Coordenada Que Criamos Lб no Comeзo ?
pawn Код:
GangZoneCreate(1122.5748, -2068.6694, 1208.1812, -1994.9491);
No Final do Seu GameMode, Bote:
pawn Код:
stock IsPlayerInCasarao(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 1122.5748 && y >= -2068.6694 && x <= 1208.1812 && y <= -1994.9491) return true;
else return false;
}
Pronto Terminou o Nosso Tutorial, Caso Queria Um Code Sem Erros, й Pegando Normalmente, Abaixo um FilterScript Criado Por Mim:
pawn Код:
#include <a_samp>
new Dominando[MAX_PLAYERS];
new GZCasarao;
new donoCasarao;
new GuerranoCasarao;
new ProvocoCasarao[MAX_PLAYERS];
new TempoGuerraCasarao;
forward GuerraCasarao(playerid);
new CelulasJFS[128];
new NomeJFS[MAX_PLAYER_NAME];
//========================
//S istema de Gang Criado
new MinhaGang[MAX_PLAYERS];
#define Vagos 1
#define Grove 2
#define CorGrove 0x00FF00C8
#define CorVagos 0xFFFF00C8
//=========================
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print("FS GangZ5one Casarгo Por Jonathan Feitosa Carregado.");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
print("\n--------------------------------------");
print("FS GangZone Casarгo Por Jonathan Feitosa Descarregado..");
print("--------------------------------------\n");
return 1;
}
main()
{
print("\n----------------------------------");
print("Criado Por: Jonathan Feitosa");
print("----------------------------------\n");
}
public OnGameModeInit()
{
GZCasarao = GangZoneCreate(1122.5748, -2068.6694, 1208.1812, -1994.9491);
return 1;
}
public OnPlayerConnect(playerid)
{
MinhaGang[playerid] = Grove;
if(donoCasarao == 0)
{
GangZoneShowForPlayer(playerid, GZCasarao, 0xC0C0C0AA);
}
if(donoCasarao == 1)
{
GangZoneShowForPlayer(playerid, GZCasarao, CorVagos);
}
if(donoCasarao == 2)
{
GangZoneShowForPlayer(playerid, GZCasarao,CorGrove);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(ProvocoCasarao[playerid] == 1)
{
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
GuerranoCasarao = 0;
ProvocoCasarao[playerid] = 0;
donoCasarao = 0;
Dominando[playerid] = 0;
KillTimer(TempoGuerraCasarao);
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(ProvocoCasarao[playerid] == 1)
{
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
GuerranoCasarao = 0;
ProvocoCasarao[playerid] = 0;
donoCasarao = 0;
Dominando[playerid] = 0;
KillTimer(TempoGuerraCasarao);
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/dominar", true) == 0 || strcmp(cmdtext, "/do", true) == 0) // Ou /dominar ou /do ^^
{
if(MinhaGang[playerid] == Vagos)
{
if(!IsPlayerInCasarao(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo estб em nenhum territуrio!");
if(Dominando[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк Jб Estб Dominando um Territorio.");
if(GuerranoCasarao == 1) return SendClientMessage(playerid, -1, "Jб estб tendo uma guerra nesse territorio.");
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Vagos Estгo Dominando o Casarгo",NomeJFS);
SendClientMessageToAll(CorVagos, CelulasJFS);
SendClientMessage(playerid, -1, "Fique esperto, Todos os Terroristas Foi Avisados!");
SendClientMessage(playerid, -1, "Espere 1 minuto para dominar estб area.");
GangZoneFlashForAll(GZCasarao, CorVagos);
Dominando[playerid] = 1;
ProvocoCasarao[playerid] = 1;
GuerranoCasarao = 1;
TempoGuerraCasarao = SetTimerEx("GuerraCasarao", 60000, 0, "i", playerid);
return true;
}
if(MinhaGang[playerid] == Grove)
{
if(!IsPlayerInCasarao(playerid)) return SendClientMessage(playerid, -1, "Vocк nгo estб em nenhum territуrio!");
if(Dominando[playerid] == 1) return SendClientMessage(playerid, -1, "Vocк Jб Estб Dominando um Territorio.");
if(GuerranoCasarao == 1) return SendClientMessage(playerid, -1, "Jб estб tendo uma guerra nesse territorio.");
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Grove Estгo Dominando o Casarгo",NomeJFS);
SendClientMessageToAll(CorVagos, CelulasJFS);
SendClientMessage(playerid, -1, "Fique esperto, Todos os Terroristas Foi Avisados!");
SendClientMessage(playerid, -1, "Espere 1 minuto para dominar estб area.");
GangZoneFlashForAll(GZCasarao, CorGrove);
Dominando[playerid] = 1;
ProvocoCasarao[playerid] = 1;
GuerranoCasarao = 1;
TempoGuerraCasarao = SetTimerEx("GuerraCasarao", 60000, 0, "i", playerid);
return true;
}
return true;
}
if(strcmp(cmdtext, "/virarvagos", true) == 0)
{
MinhaGang[playerid] = Vagos;
return true;
}
if(strcmp(cmdtext, "/virargrove", true) == 0)
{
MinhaGang[playerid] = Grove;
return true;
}
return false;
}
public GuerraCasarao(playerid)
{
if(MinhaGang[playerid] == Vagos)
{
if(ProvocoCasarao[playerid] == 1)
{
if(IsPlayerInCasarao(playerid))
{
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Vagos Dominaram a GangZone do Casarгo.",NomeJFS);
SendClientMessageToAll(CorVagos, CelulasJFS);
SendClientMessage(playerid, -1, "Vocк Dominou a GangZone do Casarгo.");
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, CorVagos);
Dominando[playerid] = 0;
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 1;
KillTimer(TempoGuerraCasarao);
return true;
}
else
{
SendClientMessage(playerid, CorVagos, "Vocк nгo estб na Construзгo Abandonada.");
Dominando[playerid] = 0;
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 0;
KillTimer(TempoGuerraCasarao);
return true;
}
}
return true;
}
if(MinhaGang[playerid] == Grove)
{
if(ProvocoCasarao[playerid] == 1)
{
if(IsPlayerInCasarao(playerid))
{
GetPlayerName(playerid, NomeJFS, MAX_PLAYER_NAME);
format(CelulasJFS, sizeof(CelulasJFS), "%s e os Grove Dominaram o Casarгo.",NomeJFS);
SendClientMessageToAll(CorGrove, CelulasJFS);
SendClientMessage(playerid, -1, "Vocк dominou o Casarгo.");
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, CorGrove);
Dominando[playerid] = 0;
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 2;
KillTimer(TempoGuerraCasarao);
return true;
}
else
{
SendClientMessage(playerid, CorGrove, "Vocк nгo estб na Construзгo Abandonada.");
Dominando[playerid] = 0;
GangZoneStopFlashForAll(GZCasarao);
GangZoneShowForAll(GZCasarao, 0xFFFFFF96);
ProvocoCasarao[playerid] = 0;
GuerranoCasarao = 0;
donoCasarao = 0;
KillTimer(TempoGuerraCasarao);
return true;
}
}
return true;
}
return true;
}
stock IsPlayerInCasarao(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 1122.5748 && y >= -2068.6694 && x <= 1208.1812 && y <= -1994.9491) return true;
else return false;
}
Crйditos: Jonathan Feitosa
Antes de Terminar a GZ Ficou Pequena Como eu Criei, Simples, e Bem Legal.
Dъvidas ? Mande Por MSN, ( john_feat@hotmail.com ).
PS: Tutorial em Construзгo ( Explicaзхes. )
Ajudei ? Reputation.
Antes de Terminar a GZ Ficou Pequena Como eu Criei, Simples, e Bem Legal.
Dъvidas ? Mande Por MSN, ( john_feat@hotmail.com ).
PS: Tutorial em Construзгo ( Explicaзхes. )
Ajudei ? Reputation.