[Tutorial] Como Criar PORTХES Automбticos!
#1

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 !
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:
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/
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:
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;
        }
    }
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:
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;
}
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.
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;
}
Pronto - KEY_CROUCH = Buzina do Carro - Outras Teclas que podem ser Trocadas pelo "KEY_JUMP":
~~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 !
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:
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 )
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:
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;
}
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:
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;
}
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!





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!
Reply
#2

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 !
Faltou um ponto e vнrgula ae.

pawn Код:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ) // Coloque as Info do Portгo FECHADO Aqui =D
Ai tambйm.

pawn Код:
{
    if ((newkeys==KEY_JUMP)) // Mude o KEY_JUMP pela o COD que Quiser, neste casso KEY_JUMP = Tecla ESPAЗO
    {
        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 ESPAЗO Aqui !
    }
return 0;
}
E se o cara usar ZCMD?

Isso pra mim й mais cуdigo util, mais como vc se esforзou e por ser seu primeiro release. Bom tutorial.
Reply
#3

Quote:
Originally Posted by Los
Посмотреть сообщение
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 !
Faltou um ponto e vнrgula ae.

pawn Код:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ) // Coloque as Info do Portгo FECHADO Aqui =D
Ai tambйm.

pawn Код:
{
    if ((newkeys==KEY_JUMP)) // Mude o KEY_JUMP pela o COD que Quiser, neste casso KEY_JUMP = Tecla ESPAЗO
    {
        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 ESPAЗO Aqui !
    }
return 0;
}
E se o cara usar ZCMD?

Isso pra mim й mais cуdigo util, mais como vc se esforзou e por ser seu primeiro release. Bom tutorial.
Mano vlwe, mas apenas a do CreateObject falta Ponto e Virgula o resto ta OK, e se й um TUT pra Iniciantes, eu nunca vi Iniciantes usando ZCMD mas tudo bem...

Obrigado por Ter Lido, atй mas.
Reply
#4

ATUALIZADO 13/12/2011 - 15:27
Reply
#5

Deixa pra falar atualizado no propio post, da sу um @edit po,
e esse tuto vai ajuda muita gente sim, ^^
Reply
#6

Quote:

if ((newkeys==KEY_JUMP)) // Mude o KEY_JUMP pela o COD que Quiser, neste casso KEY_JUMP = Tecla ESPAЗO

KEY_JUMP = Tecla para 'pular'
KEY_SPRINT = Tecla 'correr' ( padrгo do GTA 'espaзo' )

-

Ficou bom, irб ajudar bastante os novatos. A ъnica coisa й que jб existem vбrios tutoriais desse tipo.
Reply
#7

Quote:
Originally Posted by GustavoBonomo
Посмотреть сообщение
Mano vlwe, mas apenas a do CreateObject falta Ponto e Virgula o resto ta OK, e se й um TUT pra Iniciantes, eu nunca vi Iniciantes usando ZCMD mas tudo bem...

Obrigado por Ter Lido, atй mas.
Quem disse?

Forward tambйm necessita, pois vocк estб declarando ela.

pawn Код:
forward CloseGate(gateid);
ZCMD foi uma include feita para iniciantes, strcmp й muito mais dificil para iniciantes, pois como eles nгo decoram eles ficam fazendo CTRL + C e + V nos comandos, e assim que se ensina a copiar e colar.

pawn Код:
CMD:abrirportao(playerid)
Isso nгo precisa CTRL C para decorar.
Reply
#8

Quote:
Originally Posted by Los
Посмотреть сообщение
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 !
Faltou um ponto e vнrgula ae.

pawn Код:
Gate = CreateObject(MODEL,X,Y,Z,ROTX,ROTY,ROTZ) // Coloque as Info do Portгo FECHADO Aqui =D
Ai tambйm.

pawn Код:
{
    if ((newkeys==KEY_JUMP)) // Mude o KEY_JUMP pela o COD que Quiser, neste casso KEY_JUMP = Tecla ESPAЗO
    {
        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 ESPAЗO Aqui !
    }
return 0;
}
E se o cara usar ZCMD?

Isso pra mim й mais cуdigo util, mais como vc se esforзou e por ser seu primeiro release. Bom tutorial.
e agora zcmd nгo usa OnPlayerCommandText? Vai ser processado da mesma forma cara...
Usando assim й atй melhor pois vai ser como se o player tivesse digitado o comando.
Reply
#9

Quote:
Originally Posted by [S]trong
Посмотреть сообщение
e agora zcmd nгo usa OnPlayerCommandText? Vai ser processado da mesma forma cara...
Usando assim й atй melhor pois vai ser como se o player tivesse digitado o comando.
pawn Код:
cmd_seucomando(playerid,"");
Reply
#10

Quote:
Originally Posted by Los
Посмотреть сообщение
pawn Код:
cmd_seucomando(playerid,"");


Se o cara usa YCMD, ZCMD, SCMD ou whatever nгo faz a menor diferenзa.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)