[TUT]Sistema de Guerra -
Guilherme_Canani - 21.01.2010
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:
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:
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
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й
Re: [TUT]Sistema de Guerra -
bRn - 21.01.2010
Muito bom parabens!
quando eu tiver tempo vou tentar fazer
Re: [TUT]Sistema de Guerra -
John_Race - 21.01.2010
Belo Tutorial.
Re: [TUT]Sistema de Guerra -
chapolin1994 - 21.01.2010
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?
Re: [TUT]Sistema de Guerra -
Guilherme_Canani - 21.01.2010
Vocк pode modificar o lнder como eu falei e agora eu vou pesquisar isso atй porque nгo sou muito experiente em pawn =)
Re: [TUT]Sistema de Guerra -
chapolin1994 - 21.01.2010
Fmz , se tu consegui posta aqui.Vlw
Re: [TUT]Sistema de Guerra -
rannyere - 21.01.2010
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.
Re: [TUT]Sistema de Guerra -
Guilherme_Canani - 22.01.2010
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!
Re: [TUT]Sistema de Guerra -
chapolin1994 - 22.01.2010
GUILHERME PQ DA ESTE WARN
C:\Documents and Settings\Carlos\Desktop\brl.pwn(13349) : warning 211: possibly unintended assignment
malz pelo double
Re: [TUT]Sistema de Guerra -
OxygenBR - 23.01.2010
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
malz pelo double
|
Tente