Como nгo venho postando muitos projetos ultimamente .. venho postar este tutorial sobre como criar um sistema dominavel via comandos.
PS: Nгo sei explicar nada.. essa foi uma tentativa meio fail.. AEHUAEHEHUHEHUAE
Vamos ao tutorial!
0- Irei usar a Pista de Skate como Ponto de Dominio.
1- Iremos adicionar as includes :
PS: Nгo sei explicar nada.. essa foi uma tentativa meio fail.. AEHUAEHEHUHEHUAE
Vamos ao tutorial!
0- Irei usar a Pista de Skate como Ponto de Dominio.
1- Iremos adicionar as includes :
pawn Код:
- Código:
#include <a_samp>
#include <zcmd>
2-Depois de adicionar as includes, Iremos definir As Cores .
pawn Код:
- Código:
#define Vermelho 0xFF0000AA
#define Amarelo 0xFFFF00FF
3-Iremos Criar as news necessбrias , incluindo a da criaзгo da gangzone e a das variaveis da dominaзгo
pawn Код:
- Código:
new Dominando[MAX_PLAYERS], ProvocouSkate[MAX_PLAYERS], TempoGuerraSkate,
AlguemDominando, GzParque;
4- Adicione essa stock no final do gamemode / filterscript pois ela irб checar se o player estб na posiзгo da pista de skate ( local escolhido pro tutorial )
pawn Код:
- Código:
stock IsPlayerInPSkate(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 1861.328 && y >= -1455.078 && x <= 1972.656 && y <= -1349.609) return 1;
else return 0;
}
- Código:
/*Exemplo de Uso:
Positivo:
if(IsPlayerInPSkate(playerid) return SendClientMessage(playerid, -1, "Vocк estб na pista de skate. legal!");
Negativo:
if(!IsPlayerInPSkate(playerid) return SendClientMessage(playerid, -1, "Vocк nгo estб na pista de skate. que pena!");
*/
5- Adicionando a GangZone
pawn Код:
- Código:
[center][left]// Colocar no OnFilterScriptInit / GameModeInit \/
GzParque = GangZoneCreate(1861.328125, -1455.078125, 1972.65625, -1349.609375);
// X = 1861.328125, Y= -1455.078125, Z = 1972.65625, xX = -1349.609375);[/left][/center]
[center][/center]
6-Agora deixe o "OnPlayerSpawn" O Seguitne cуdigo:
pawn Код:
- Código:
public OnPlayerSpawn(playerid)
{
GangZoneShowForAll(GzParque , 0xFF000096); // GangZoneShowForAll = Essa funзгo irб fazer com que todos que spanwarem no servidor irгo ver a gangzone que estб no parque.
return 1;
}
7-Deixe o Seu onPlayerdeath da seguinte forma:
pawn Код:
- Código:
public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerInPSkate(playerid)) // Isto irб checar se ele estб na pista de skate.
{
Dominando[playerid] = 0; // Aqui setarб que ele nгo estб mais dominando.
AlguemDominando = 0; // Aqui vai setar que nгo tem niguem dominando a pista.
ProvocouSkate[playerid] = 0; // Aqui jб vai setar que niguem provocou uma dominaзгo
}
return 1;
}
8-CallBack da Dominaзгo
pawn Код:
- Código:
[center][left]forward GuerraSkate(playerid); // Forward
public GuerraSkate(playerid) // Callback
{
if(IsPlayerInPSkate(playerid)) // Irб checar se ele estб na pista
{
new string[100];
GangZoneStopFlashForAll(GzParque); // Aqui irб parar de "Piscar" a gangzone em branco.
GangZoneShowForAll(GzParque, GetPlayerColor(playerid)); // Aqui vai alterar a cor da gangzone para a cor do player que dominou ela.
Dominando[playerid] = 0; // Vai setar que nгo O player nгo estб dominando a pista.
ProvocouSkate[playerid] = 0; // Vai setar que o player nгo provocou nenhuma guerra na pista.
AlguemDominando = 0; // Vai setar que nгo tem niguem dominando a pista de skate.
KillTimer(TempoGuerraSkate);// Aqui zera o tempo de dominaзгo
format(string, sizeof(string), "( GangZones ) %s conseguiu dominar a pista de skate!", GetName(playerid)); // Mensagem
SendClientMessageToAll(Amarelo, string); // Mensagem
SendClientMessage(playerid, Amarelo, "( Info - GZ ) Vocк dominou um territуrio e ganhou 200R$."); // Mensagem
GivePlayerMoney(playerid, 200);// Aqui vai dar 200R$ Ao player por ter dominado a pista de skate..
}
else // Caso ele nгo esteja no local da dominaзгo ou seja na pista de skate.. a cor da gangzone vai voltar ao normal , padrгo = vermelho
{
GangZoneStopFlashForAll(GzParque);
GangZoneShowForAll(GzParque, 0xFF000096); // Setando a cor da gangzone = Vermelho
}
return 1;
}[/left][/center]
[center][/center]
9- Comando
pawn Код:
- Código:
CMD:dominar(playerid) // Comando
{
if(IsPlayerInPSkate(playerid)) // vai checar se ele estб na pista de skate
{
if(Dominando[playerid] == 1) return SendClientMessage(playerid, Vermelho, "( Info ) Vocк jб estб dominando este territуrio"); // vai checar se o player jб estб dominando o territorio
if(AlguemDominando == 1) return SendClientMessage(playerid, Vermelho, "( Info ) Alguem jб estб dominando este territуrio! Aguarde"); // vai checar se jб tem alguem dominando o territorio
new string[100];
Dominando[playerid] = 1;// setando que alguem comeзou a dominar a dominar a pista
ProvocouSkate[playerid] = 1; // setando que alguem provocou uma guerra na psita..
AlguemDominando = 1; // setando que alguem estб dominando a pista.
format(string, sizeof(string), "( GangZones ) %s estб tentando dominar a pista de skate!", GetName(playerid)); // mensagem
SendClientMessageToAll(Amarelo, string); // msg
SendClientMessage(playerid, Amarelo, "( Info - GZ ) Vocк estб Dominando a Pista de Skate.. Aguarde 1 Minuto"); // mensagem
TempoGuerraSkate = SetTimerEx("GuerraSkate", 60000, 0, "i", playerid); // tempo que irб aguardar atй a dominaзгo total da pista.. ( 1 minuto )
GangZoneFlashForAll(GzParque, -1);// A GangZone Irб ficar piscando , vermelho & BRANCO
}
else
{
SendClientMessage(playerid, Vermelho, "Vocк nгo estб em nenhum territуrio!"); // Aqui vai mandar a mensagem caso ele nгo esteja em nenhum territуrio
}
return 1;
}
10 - GetName
pawn Код:
- Código:
[center][left]//Adicione esta stock no fim do seu gamemode / filterscript .. irб getar o nome do jogador com a funзгo = GetName(playerid);
stock GetName(playerid)
{
new Name[24];
GetPlayerName(playerid,Name,24);
return Name;
}[/left][/center]
[center][/center]
Cуdigo completo pros preguiзosos que nгo vгo ler Palavrão bloqueado nenhuma.. '-'
pawn Код:
- Código:
#include <a_samp>
#include <zcmd>
- Código:
#define Vermelho 0xFF0000AA
#define Amarelo 0xFFFF00FF
- Código:
new Dominando[MAX_PLAYERS], ProvocouSkate[MAX_PLAYERS], TempoGuerraSkate,
AlguemDominando, GzParque;
stock IsPlayerInPSkate(playerid)
{
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid, x, y, z);
if(x >= 1861.328 && y >= -1455.078 && x <= 1972.656 && y <= -1349.609) return 1;
else return 0;
}
- Código:
public OnFilterScriptInit()
{
GzParque = GangZoneCreate(1861.328125, -1455.078125, 1972.65625, -1349.609375);
return 1;
}
public OnPlayerSpawn(playerid)
{
GangZoneShowForAll(GzParque , 0xFF000096);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerInPSkate(playerid))
{
Dominando[playerid] = 0;
AlguemDominando = 0;
ProvocouSkate[playerid] = 0;
}
return 1;
}
- Código:
forward GuerraSkate(playerid);
public GuerraSkate(playerid)
{
if(IsPlayerInPSkate(playerid))
{
new string[100];
GangZoneStopFlashForAll(GzParque);
GangZoneShowForAll(GzParque, GetPlayerColor(playerid));
Dominando[playerid] = 0;
ProvocouSkate[playerid] = 0;
AlguemDominando = 0;
KillTimer(TempoGuerraSkate);
format(string, sizeof(string), "( GangZones ) %s conseguiu dominar a pista de skate!", GetName(playerid));
SendClientMessageToAll(Amarelo, string);
SendClientMessage(playerid, Amarelo, "( Info - GZ ) Vocк dominou um territуrio e ganhou 200R$.");
GivePlayerMoney(playerid, 200);
}
else
{
GangZoneStopFlashForAll(GzParque);
GangZoneShowForAll(GzParque, 0xFF000096);
}
return 1;
}
CMD:dominar(playerid)
{
if(IsPlayerInPSkate(playerid))
{
if(Dominando[playerid] == 1) return SendClientMessage(playerid, Vermelho, "( Info ) Vocк jб estб dominando este territуrio");
if(AlguemDominando == 1) return SendClientMessage(playerid, Vermelho, "( Info ) Alguem jб estб dominando este territуrio! Aguarde");
new string[100];
Dominando[playerid] = 1;
ProvocouSkate[playerid] = 1;
AlguemDominando = 1;
format(string, sizeof(string), "( GangZones ) %s estб tentando dominar a pista de skate!", GetName(playerid));
SendClientMessageToAll(Amarelo, string);
SendClientMessage(playerid, Amarelo, "( Info - GZ ) Vocк estб Dominando a Pista de Skate.. Aguarde 1 Minuto");
TempoGuerraSkate = SetTimerEx("GuerraSkate", 60000, 0, "i", playerid);
GangZoneFlashForAll(GzParque, -1);
}
else
{
SendClientMessage(playerid, Vermelho, "Vocк nгo estб em nenhum territуrio!");
}
return 1;
}
- Código:
stock GetName(playerid)
{
new Name[24];
GetPlayerName(playerid,Name,24);
return Name;
}