Bom vou ensinar pra vcs como criar um sistema de portao automatico...é o mais simples que existe mas ja vai ajudar muito quem precisa. tem alguns tipos para criar, mas vou ensinar do jeito maiss faciil.
Vamos lá...
Crie o Objeto pelo seu editor MTA...Coloque o portao na posiçao fechado. De 2 cliques em cima do portao para pegar as coordenadas (tem variar maneiras)
Voce precisa do Streamer, Se nao tiver tire todos os "Dynamics" do texto.
No Topo
______________________________________________
#include <streamer>
______________________________________________
No todo do teu GM crie um array
____________________________________________________
new Portao; //Portao é o nome que eu escolhi, vcs podem trocar.
OBS. Se voce Iniciou o nome Portao com letra Maiúscula "P" vc sempre devera usar a letra maiúscula .
____________________________________________________
Se voce quiserem adicionar um Texto3D perto do portao é so ver sobre textos 3D em nossos turotiais.
Procure por
_________________________________
public OnGameModeInit()
_________________________________
e Crie seu objeto
_______________________
Portao = CreateDynamicObject(ID,POS X,POS Y,POS Z,0,0,ANGLE Z);
_______________________
Explicando
ID: é o ID do objeto
POS X,Y,Z: Coordenadas do seu portao "FEXADO"
0: esses angulos geralmente nao se usa
ANGLE Z: é o angulo mais usado, é o angulo que gira o teu portao (bolinha do mouse)
Vai ficar mais ou menos assim
_________________________
Portao = CreateDynamicObject(980,997.40002441406,2133.1999511719,12.60000038147,
0.0000000,0.0000000,270);
_________________________
OBS. Se vc criou o portao aqui vc exclui ele do MTA para quando for converter nao converter ele junto.
OBS2. Isso é para Por no GameMode, se fosse no FilterScript ao inves de OnGameModeInit ( ) seria OnFilterScriptInit ( )
Proximo passo, Criando o Comando para Abrir.
Procure por:
________________________________
public OnPlayerCommandText(playerid,cmdtext[])
________________________________
E insira este codigo
_____________________________________________________________
{
if(strcmp(cmdtext, "/ABRIR", true) == 0) {
MoveDynamicObject(Portao,997.40002441406,2133.1999511719,20.299999237061,4);
SendClientMessage(playerid,0x09D19BFF,"Portao aberto!");
return 1;}
if(strcmp(cmdtext, "/FECHAR", true) == 0) {
MoveDynamicObject(Portao,997.40002441406,2133.1999511719,12.60000038147,4);
SendClientMessage(playerid,0x09D19BFF,"Portao fexado!");
return 1;
}
_____________________________________________________________
Explicando:
_____________________________
if(strcmp(cmdtext, "/ABRIR", true) == 0) { //Comando Para abrir
MoveDynamicObject(NOME DO PORTAO,X,Y,Z,Velocidade); //As coordenadas do Portao que vc vai criar aberto... aki é onde vai fazer ele mover, E onde ta escrito "NOME DO PORTAO" é akele que vc coloco no inicio "new Portao;" Apenas o Portao
_____________________________
Vai ficar assim
_________________________________
MoveDynamicObject(Portao,997.40002441406, 2133.1999511719,20.299999237061,4);
_________________________________
O numero 4 no final, é a velocidade que ele vai mover Max=5.
Nao esqueçam o "Portao"
Vc criou ele fechado e pegou as coordenadas, agora vc move pra onde quiser e veja qual das posiçoes X,Y,Z nao esta igual quando estava fechado. A que vc perceber que mudou. Se for a X, vc vai trocar so a
X ... Ex: X=1, Y=2, Z=3 suponha que essa a coordenada dele fexado, ai eu movi o objeto e a X nao esta mais com a posiçao 1, mas quando vc abriu o portao ela mudou para 5... suponha que estaria assim agora X=5,Y=2,Z=3 entao vc vai pegar so a posiçao X e substituir pela posiçao X do fexado
Mais um exemplo se nao entender.
Esse é o comando dele fechado!
_________________________________________
MoveDynamicObject(Portao,X=1, Y=2,Z=3,4); //esqueçam o 4 marcado e o Portao
_________________________________________
Agora voce moveu o Objeto e percebe que a posiçao X nao esta mais com o numero 1, suponha que mudou para 5, entao vc vai por assim
________________________________________
MoveDynamicObject(Portao,X=5, Y=2,Z=3,4);//So mexam no X pk foi ele q mudou
SendClientMessage(playerid,0x09D19BFF,"Portao fexado!"); // Mensagem que ira mandar para o Player
0x09D19BFF Seria a cor do texto.
_______________________________________
if(strcmp(cmdtext, "/FECHAR", true) == 0) {
MoveDynamicObject(Portao,997.40002441406,2133.1999511719,12.60000038147,4);
SendClientMessage(playerid,0x09D19BFF,"Portao fexado!");
return 1;
}
______________________________________
Aqui no fexar seria a mesma coisa, so que ao inves de trocar a posiçao, voce vai deixar a mesma posiçao de quando voce criou o objeto lembra? essa ai..
______________________________________
"CreateDynamicObject(980,997.40002441406,2133.1999511719,12.60000038147,
0.0000000,0.0000000,270);"
_____________________________________
mas lembre- se para mover o objeto vc nao vai pegar o ID do portao.
Galera qualqer coisa comentem, deixe suas duvidas e quem ja sabe nao critique no chat, venha falar em PM comigo, isso aki é um tuto para quem nao sabe, entao se tuh sabe fique queto!
Qualqer duvida, venham falar comigo...eu atendo todo mundo
Creditos ShittDow
2 comentários:
Parabens pela explicaçao etc obg
Parabens pela explicaçao etc obg
Postar um comentário