13.12.2011, 16:00
(
Последний раз редактировалось GustavoBonomo; 14.12.2011 в 15:14.
)
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!
MЙTODO 1
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:
pawn Код:
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 !
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:
pawn Код:
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/
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:
pawn Код:
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;
}
}
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:
pawn Код:
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;
}
Agora o Mais esperado " Abrir o Portгo com Teclas do Teclado ", procure pela public "OnPlayerKeyStateChange", caso nгo Tenha, crie-a.
pawn Код:
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;
}
~~Key~~
Clique Aqui para ver as KEYs !
MЙTODO 2
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:
pawn Код:
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 !
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:
pawn Код:
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 )
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:
pawn Код:
{
for(new playerid=0; playerid<MAX_PLAYERS; 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;
}
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:
pawn Код:
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;
}
CRЙDITOS: 100% by Gustavo_Bonomo
LEMBRANDO QUE ESSE Й MEU PRIMEIRO TUTORIAL! ERROS ME CONTATE NOS COMENTБRIOS, LOGO LOGO IREI POSTAR COMO ADICIONAR MAIS DE 1 PORTГO DESTA FORMA!