[Tutorial] Criando Portoes Automaticos

Bom, Sei que existem muitos tutoriais desse mas, vi Algumas Pessoas Pedindo Ajuda Com Portões, então decidi fazer esse Tutorial:

 No Topo do GM/FS:

pawn Code:
new portaoex;//Criamos a Variavel para definir o nosso objeto new portaoaberto;//Crimos Outra Variavel para definir se o portao esta aberto ou fechado

 Criamos o Objeto/Portao

pawn Code:
//Coloque em: OnFilterScriptInit ou  OnGameModeInit     portaoex = CreateObject(980,786.50000000,-1152.40002441,25.39999962,0.00000000,0.00000000,94.00000000);//Portao Fechado     //Portao de Exemplo, use um editor de mapas(MTA, MapEditor) e crie o seu

 Agora Vamos Fazer o Comando Para Abrilo e Fechalo:

pawn Code:
public OnPlayerCommandText(playerid, cmdtext[]) {     if(strcmp("/abrirportao", cmdtext, true) == 0)     {         if(portaoaberto == 0)//Se o Portao Extiver Fechado Vai Executar:         {             MoveObject(portaoex, 786.50000000,-1152.40002441,32.39999962,3.0,0.00000000,0.00000000,94.00000000);//Cordenadas do Portão Aberto             SendClientMessage(playerid, 0xF60000AA, "Abrindo O Portao !");//Isso Manda a Mensagem Parra o Player             portaoaberto = 1;//Seta que o portao foi aberto             SetTimer("fportao", 10000, false);//Depois de 10 Seg Chama a public "fportao" para fechalo             SetTimer("longeportao" ,15000, false);//Depois de 15 Seg chama a public "longeportao" para definilo novamente como fechado         }     }     return 0; } forward fportao(playerid); public fportao(playerid)//Public que e Chamada Para Fechar o Portao, apos 10 Seg depois de Digitar o Comando {     MoveObject(portaoex, 786.50000000,-1152.40002441,25.39999962,3.0,0.00000000,0.00000000,94.00000000);//Cordenadas do Portão Fechado     SendClientMessage(playerid, 0xF60000AA, "Fechando O Portao !");//Manda A Mensagen ao Player     return 1; } forward longeportao(); public longeportao()//Apos a Public Ser Chamada Vai: {     portaoaberto = 0;//Definir que o Portao esta fechado }

 Agora Depois de Criarmos os Comandos Para Abrir e Fechalo Vamos Fazer Com Que Eles Se Movam Ao Apertar uma Tecla:

pawn Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)//Essa Public e Chamada Cada Vez que Apertamos uma Tecla no Teclado {     if(newkeys==KEY_CROUCH)//Se a tecla Apertada for: H     {         if(IsPlayerInRangeOfPoint(playerid, 10.0, 786.50000000,-1152.40002441,25.39999962))//E Estiver Nas Possicoes proximas ao Portao:         {             if (IsPlayerInAnyVehicle(playerid))//E Estiver dentro de um veiculo:             {                 OnPlayerCommandText(playerid,"/abrirportao");//Vai digitar o comando Automaticamente             }         }     }     if(newkeys==KEY_SECONDARY_ATTACK) //Ao Apertar F / Enter:     {         if(IsPlayerInRangeOfPoint(playerid, 10.0, 786.50000000,-1152.40002441,25.39999962))//E Estiver Nas Possicoes proximas ao Portao:         {             if (!IsPlayerInAnyVehicle(playerid))//E Esriver Fora de um veiculo:             {                 OnPlayerCommandText(playerid,"/abrirportao");//Vai digitar o comando             }         }     }     return 1; }

 Tambem há a Opçao de Fazelo abrir assim que chegar proximo ao portao, sem aperar tecla ou digitar comando:

pawn Code:
public OnPlayerUpdate(playerid)//Essa Public é Chamada a Cada atualizaçao do player/movimento(EU IMAGINO) {     if(IsPlayerInRangeOfPoint(playerid, 10.0, 786.50000000,-1152.40002441,25.39999962))//Se Estiver Nas Possicoes proximas ao Portao:     {         if(portaoaberto == 0)//Se e o Portao nao extiver aberto         {             OnPlayerCommandText(playerid,"/abrirportao");//Vai digitar o comando         }     }     return 1; }

Explicando alguma Funções:
-MoveObject: Essa Função Faiz Com Que Um Objeto se Movimente

Code:
*portaoex: ID do Objeto a Ser Movimentado(aquele que definimos no topo do GM/FS e na OnFilterScriptInit ou  OnGameModeInit)
*786.50000000,-1152.40002441,32.39999962: Essas Sao as Cordenadas X,Y,Z que o objeto sera movimentado
*3.0:Isso Define a Velocidade com que o objeto vai se movimentar
*0.00000000,0.00000000,94.00000000: Sao As Rotaçoes X,Y,Z
*OBS: Para Veja quem na hora de abrir e fechar o portao as cordenadas sao diferentes:
-MoveObject(portaoex, 786.50000000,-1152.40002441,32.39999962,3.0,0.00000000,0.00000000,94.00000000);//Cordenadas do Portão Aberto
-MoveObject(portaoex, 786.50000000,-1152.40002441,25.39999962,3.0,0.00000000,0.00000000,94.00000000);//Cordenadas do Portão Fechado
-SendClientMessage: Essa Funçao Manda uma Mensagem ao Player:
Code:
*playerid: id do player que esta digitando o comando
*0xF60000AA: Cor
*Oque esta Entre Aspas("Aki"), é a mensagem ao ser mandada ao player
-SetTimer: Essa Funçao Depois de Um Certo Tempo, chama outra public, repetidamente, ou nao
Code:
*"fportao":Primeiro Tem que Ser Definido a Public a ser chamada(neste caso: "fportao")
*10000: Definimos os tempo(1000 = 1 seg)
*False: Para nao ficar repetindo de 10 em 10 Seg(se fosse true, a public "fportao" seria chamada repetidamente)
-OnPlayerCommandText: Faz com que o player execute um comando


Cretidos:
*Panico-Tutorial
Ades-Enche o SACO pra coloca mais coisa -qq

0 comentários:

Postar um comentário