Olá Galerinha do SA-MP
Hoje irei Postar meu primeiro TUT ! Aprenda Como fazer um PORTÃO Automático! Sei que já Existem, mas irei Lhes ensinar de forma diferente!
[size=32]MÉTODO 1[/size]
Portão com Comando ( /seucomando ) e Automatizado com Teclas do Teclado !
Bem, começamos Definindo algumas coisas, criando new's ETC, adicionem isto no TOPO de seu GM/FS:
Code:
new Gate; // Lembrando que o nome que Colocar aqui será Usado em TODO PROCESSO !
forward CloseGate(gateid); // Deixe QUETO ( Isso que fará com que o Portão Feche )
#define COLOR_YELLOW 0xFFFF00AA
// Definindo COR - Amarelo !
Agora Já Podemos seguir em Frente
OK, após feito Isso, vamos Adicionar nosso Portão, que esta definido como "Gate". Procure pelo public "OnGameModeInit" e Adicione seu PORTÃO com as Coordenadas dele Fechado, VEJA:
Code:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ); // Coloque as Info do Portão FECHADO Aqui =D (MODEL,X,Y,Z,ROTX,ROTY,ROTZ) Site para Conversão: http://www.convertffs.com/
Por que o "Gate"? Pois foi esse nome que foi Definido no "new" do topo do GM/FS =D
Isso, agora o Portão já Esta criado, agora temos que Move-ló. Irei mostrar uma forma Bem diferente e legal =D Primeiro crie o Comando, procure pela public "OnPlayerCommandText" e Coloque isso:
Code:
if (strcmp("/seucomando", cmdtext, true, 10) == 0) // Coloque o Comando que irá Abrir o Portão ( Será usado depois Também )
{
if(IsPlayerInRangeOfPoint(playerid,7.0, X,Y,Z)) // Troque X,Y,Z Pelas Coordenadas do Portão Fechado ! Troque 7.0 Pela Distancia que o Comando poderá ser Usado a Partir das Cood que você Colocou !
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão Aberto ! 3.0 = Velocidade para ele se Mecher !
SetTimerEx("CloseGate", 10000, false, "i", Gate); // Troque 10000 pelo que Tempo que vai Levar para o Portão Fechar ( Lembrando que o TEMPO é em MS, ou seja, 10000 = 10 Segundos )!
SendClientMessage(playerid, COLOR_YELLOW, "ACESSE: http://forum.sa-mp.com"); // Coloque aqui a Mensagem que quer que Mande para o Player, EX: O Gate vai Facgar em 10 Segundos !
return 1;
}
}
Vocês devem Estar se Perguntando: "Por que comando se é Automático?" Calma, irei Explicar:
Eu resolvi desta forma pois Fica mais facil para Adaptação de mais de um Portões e quando o Player estiver fora do Veículo ou seja lá Como, ele também teria a Opção de digitar o Comando Jájá irei Mostrar com Automatizar o Portão com Teclas do Teclado !
Feito Isso, temos que fazer com que o Portão Feche né? Adicione o COD a seguir no Final do seu GM/FS:
Code:
public CloseGate(gateid)
{
if(gateid == Gate)
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão FECHADO !
}
return 1;
}
Esta public fará com que o Portão Feche Como ela já foi Criada/Definida no inicio do GM/FS, não terá Problemas
Agora o Mais esperado " Abrir o Portão com Teclas do Teclado ", procure pela public "OnPlayerKeyStateChange", caso não Tenha, crie-a.
Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys==KEY_JUMP)) // Mude o KEY_JUMP pelo COD que Quiser, neste caso KEY_JUMP = Tecla SHIFT ( A pé ) / Espaço ( Em Veiculo ) - ( Pular/Freiar )
{
OnPlayerCommandText(playerid,"/seucomando"); // O Comando que Estiver aqui deve Ser o Memso que você Colocou Anteriormente !
// Adicione Outros Comandos para serem Executados com a Tecla SHIFT ( A pé ) / Espaço ( Em Veiculo ) - ( Pular/Freiar ) Aqui !
}
return 0;
}
Pronto - KEY_CROUCH = Buzina do Carro - Outras Teclas que podem ser Trocadas pelo "KEY_JUMP":
~~Key~~
Clique Aqui para ver as KEYs !
[size=32]MÉTODO 2[/size]
Portão Abre Automaticamente ao Chegar Perto !
Bem, começamos Definindo algumas coisas, criando new's ETC, adicionem isto no TOPO de seu GM/FS:
Code:
new Gate; // Lembrando que o nome que Colocar aqui será Usado em TODO PROCESSO !
forward CloseGate(gateid); // Deixe QUETO ( Isso que fará com que o Portão Feche )
forward IsPlayerAtToll(); // Deixe QUETO
#define COLOR_YELLOW 0xFFFF00AA
// Definindo COR - Amarelo !
Agora Já Podemos seguir em Frente
OK, após feito Isso, vamos Adicionar nosso Portão, que esta definido como "Gate". Procure pelo public "OnGameModeInit" e Adicione seu PORTÃO com as Coordenadas dele Fechado, VEJA:
Code:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ); // Coloque as Info do Portão FECHADO Aqui =D (MODEL,X,Y,Z,ROTX,ROTY,ROTZ) Site para Conversão: http://www.convertffs.com/
SetTimer("IsPlayerAtToll", 1000, true); // 1000 = Tempo em MS que Verifica a Ação ( 1000 = 1 Segundo )
Por que o "Gate = CreateObject"? Pois foi esse nome que foi Definido no "new" do topo do GM/FS =D
O "SetTimer" Serve para Verificar ( de 1 em 1 Segundo ) SE a Alguém proximo ao Portão !
Feito Isso devemos Mover o OBJETO Certo? Então vamos lá! Criei a public "IsPlayerAtToll()" e coloque o Seguinte COD nela:
Code:
{
for(new playerid=0; playerid
if(IsPlayerInRangeOfPoint(playerid,7.0,Y,Y,Z)) // Troque X,Y,Z Pelas Coordenadas do Portão Fechado ! Troque 7.0 Pela Distancia que o Comando poderá ser Usado a Partir das Cood que você Colocou !
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão Aberto ! 3.0 = Velocidade para ele se Mecher !
SendClientMessage(playerid, COLOR_YELLOW, "ACESSE: http://forum.sa-mp.com"); // Coloque aqui a Mensagem que quer que Mande para o Player, EX: O Gate vai Facgar em 10 Segundos !
SetTimerEx("CloseGate", 10000, false, "i", Gate); // Troque o 10000 pelo que Tempo que vai Levar para o Portão Fechar ( Lembrando que o TEMPO é em MS, ou seja, 10000 = 10 Segundos )!
}
}
return 1;
}
Sim, o Portão será Aberto Automaticamente quando algum Player chegar perto Das Coords que você Colocou a Cima ( if(IsPlayerInRangeOfPoint ) !
Esta public fará com que o Portão Abra Como ela já foi Criada/Definida no inicio do GM/FS, não terá Problemas
Ok, Agora temos que fazer com que o Portão Feche né? Adicione o COD a seguir no Final do seu GM/FS:
Code:
public CloseGate(gateid)
{
if(gateid == Gate)
{
MoveObject(Gate,X,Y,Z,3.0); // Troque X,Y,Z Pelas Coordenadas do Portão FECHADO !
}
return 1;
}
Esta public fará com que o Portão Feche Como ela já foi Criada/Definida no inicio do GM/FS, não terá Problemas Pronto!