[Tutorial] [TUT]Sistema de Guerra
#1

Bem Vamos lб...

Primeiro de tudo, adicione no todo do seu gamemode, 1 variбvel (new) e um forward:

pawn Код:
new guerra;
forward guerrat();
Sugiro deixar os nomes como estгo!

Entгo, vamos ao comando, procure por OnPlayerCommandText e adicione:

pawn Код:
if(strcmp(cmd,"/guerra", true) == 0)
  {
    if(PlayerInfo[playerid][pLider]==3)
    {      
      new Float:X,Float:Y,Float:Z;        
      GetPlayerPos(playerid, X,Y,Z);
      guerra = GangZoneCreate(X-100,Y-100,X+100,Y+100);        
      GangZoneShowForAll(guerra,COR);
      SetTimer("guerrat",60000,1);      
      new pName[MAX_PLAYER_NAME];
      GetPlayerName(playerid, pName, sizeof(pName));      
      format(string, sizeof(string), "[NOTICIA DE ULTIMA HORA] O General %s e o Exйrcito acabam de iniciar uma guerra!!", pName);
      SendClientMessageToAll(COR, string);
    }
    return 1;
  }
Significado:

pawn Код:
if(strcmp(cmd,"/guerra", true) ==0)
Esse й o comando, digitando ele (/guerra) tudo o que for programado a seguir dele irб acontecer/aparecer/etc

pawn Код:
if(PlayerInfo[playerid][pLider] == 3)
Significa que somente o lнder da organizaзгo representada pelo nъmero (ID) (Que foi definido #define TEAM_TAL 3) poderб usar o comando
Em TDM ou DM, ficaria assim normalmente:

pawn Код:
if(gTeam[playerid] == 3
gTeam para saber qual o time e 3 й o id que poderia ser mudado como expliquei acima

pawn Код:
new Float:X,Float:Y,Float:Z;
Essa variбvel, vai permitir com que vocк pegue a posiзгo do jogador para que a Area de Guerra seja feita aonde ele estб

pawn Код:
GetPlayerPos(playerid, X,Y,Z);
Pega a posiзгo do jogador, como podem ver X, Y, Z й o mesmo que estб no Float:X, etc, й ai que entra aquela variбvel que fizemos a pouco

pawn Код:
guerra = GangZoneCreate(X-100,Y-100,X+100,Y+100);
guerra й o nome da variбvel que estб lб no topo do gamemode, й para isso que ela serve, os X-100 e o resto, definem o tamanho da Area de guerra

pawn Код:
GangZoneShowForAll(guerra,COR);
Mostrarб a GangZone para TODOS no servidor, guerra й o nome da variбvel e COR й aonde vocк coloca a cor, sugiro usar o Xtreme Vehicle Plotter para
pegar uma cor sem muita opacidade o que ficaria уtimo =)

pawn Код:
SetTimer("guerrat",60000,1);
Temporizador, guerrat й o forward que fizemos antes, 60000 define que algo em 1 minuto vai acontece (Saberemos o que mais adiante), e 1 й o numero de repetiзхes que isso irб ocorrer

pawn Код:
new pName[MAX_PLAYER_NAME];
Variбvel que nos ajudarб a enviar uma mensagem a todos dizendo quem iniciou a guerra

pawn Код:
GetPlayerName(playerid, pName, sizeof(pName));
Pega o Nome do Player, ali temos a variбvel de antes que nos ajudarб a pegar o nome do player para a mensagem a seguir

pawn Код:
format(string, sizeof(string), "[NOTICIA DE ULTIMA HORA] O General %s e o Exйrcito acabam de iniciar uma guerra!!", pName);
String, ela nos ajudarб a coloca o nome do player na mensagem, Dentro dos " temos a mensagem e %s й aonde irб o nome do player

pawn Код:
SendClientMessageToAll(COR, string);
Traduzindo: Enviar Mensagem a Todos, ja sabem o que й nй? Ok... COR й aonde vocк pode colocar uma ja definida ou nгo e string й aonde iria a mensagem mais nessa situaзгo nгo й nessessбrio modificar, podem deixar com estб mesmo

Agora vamos atй o final do GameMode

Lб iremos colocar:

pawn Код:
public guerrat()
    {
    GangZoneDestroy(guerra);    
    GangZoneHideForAll(guerra);
    return 1;
    }
Significados:

pawn Код:
public guerrat()
Public com a forward definida antes, aqui iremos por a funзгo do temporizador, ou seja, quando o tempo estipulado acabar, irб acontecer o que esta aqui

pawn Код:
GangZoneDestroy(guerra);
Vai destruir a GangZone, entгo serб nessessбrio que o comando seja digitado novamente para que ele volte a aparecer

pawn Код:
GangZoneHideForAll(guerra);
Vai esconder a gangzone de todos, e ninguem mais a verб atй o comando ser digitado denovo

FIM!!

Bom esse foi meu primeiro tutorial, espero que tenham gostado e que utilizem ele por algum tempo =) Atй
Reply
#2

Muito bom parabens!

quando eu tiver tempo vou tentar fazer
Reply
#3

Belo Tutorial.
Reply
#4

Amigo,Eu Acho que voce esqueceu de algo nгo?Tipo eu coloquei e funfa so pro lider 3 , correto, Mas eu posso criar [/guerra]quantas vezes eu quiser,Podia ser assim, Se eu fosse tentar criar outra aparecia,Voce ja crio 1 guerra,Espere a terminar.

Tem como voce colocar isso?
Reply
#5

Vocк pode modificar o lнder como eu falei e agora eu vou pesquisar isso atй porque nгo sou muito experiente em pawn =)
Reply
#6

Fmz , se tu consegui posta aqui.Vlw
Reply
#7

Tipo isso ta basico ne mas jб й alguma coisa, eu faзo isso em 1 minuto, mas obrigado por se dedicar e compartilhar com todos nуs, ando muito ocupado com meu servidor por isso ando meuo distando, afinal administrar 2 server nгo й brincadeira.
Reply
#8

UP!!
Para sу criar uma vez atй acabar adicione no gm:

pawn Код:
//No Topo
new GuerraB[MAX_PLAYERS];

//No Comando
//Apуs if(PlayerInfo...

if(GuerraB[playerid]=1)
{
SendClientMessage(playerid, COR, "Vocк jб criou uma guerra, espere ela acabar para criar outra");
}
Significado:

pawn Код:
new GuerraB[MAX_PLAYERS];
Isso irб mostrar se o player criou uma guerra jб

pawn Код:
if(GuerraB[playerid]=1)
{
SendClientMessage(playerid, COR, "Vocк jб criou uma guerra, espere ela acabar para criar outra");
}
if(GuerraB[playerid]=1 й para se o player ja tiver criado, 1 ja criou, 0 nгo criou
SendClientMessage й a mensagem que vai mostrar que ele nгo irб poder utilizar denovo atй acabar


Ainda nгo testei pode ter erros mais compila normal!
Reply
#9

GUILHERME PQ DA ESTE WARN

C:\Documents and Settings\Carlos\Desktop\brl.pwn(13349) : warning 211: possibly unintended assignment

pawn Код:
if(GuerraB[playerid]=1)
malz pelo double
Reply
#10

Quote:
Originally Posted by Zina_Chapo
GUILHERME PQ DA ESTE WARN

C:\Documents and Settings\Carlos\Desktop\brl.pwn(13349) : warning 211: possibly unintended assignment

pawn Код:
if(GuerraB[playerid]=1)
malz pelo double
Tente

pawn Код:
if(GuerraB[playerid]==1)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)