Portal SAMP
[Ajuda] Comando em teclas - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Comando em teclas (/showthread.php?tid=3169)



Comando em teclas - Niko_BellicSA - 12/01/2023

Olá, bom dia!! eu sou iniciante, estou procurando aprender, gostaria que alguém me orientasse como fazer um comando em teclas, por exemplo.. eu quero entrar no interior usando a tecla "F" sem precisar utilizar /ENTRAR e quando fosse sair ter que usar /SAIR, a mesma tecla para ambas funções.


RE: Comando em teclas - ziiQz - 12/01/2023

Vamos lá, provavelmente tu ta bem perdido.. então vou te dar um exemplo.

A lógica é simples, if e else kkkkkkk, faça de uma forma que fique simples ao seu entendimento.

Vamos criar uma pickup para sinalizar onde vai entrar, em seguida, a função de teclas.




Citar:
CREATEPICKUP - EXPLICAÇÃO

CreatePickup(modelo, tipo, Float:X, Float:Y, Float:Z, virtualworld)
MODELO
ID do modelo da pickup, você pode ver a lista clicando aqui.

TIPO
Tipo da pickup, você pode ver a lista clicando aqui.

FLOAT:X
Coordenada X

FLOAT:Y
Coordenada Y

FLOAT:Z
Coordenada Z

VIRTUALWORLD

ID do virtualworld que a pickup vai aparecer, use -1 para aparecer em todos os mundos.


CRIANDO UMA PICKUP
Código:
new EntrarSair[2]; // Lembrando que é necessário criar uma variável para armazenar o ID da pickup, evitando conflitos futuros.
EntrarSair[0] = CreatePickupEx(1318,1,1642.1760,-2335.4980,13.5469,-1); // Pickup de entrada
EntrarSair[1] = CreatePickupEx(1318,1,1643.6178,-2319.0422,1020.3306,-1); // Pickup de saida




Agora que criamos a pickup, vamos a função de entrar ao apertar o 'F' ou outra tecla ao seu gosto. Iremos utilizar a função OnPlayerKeyStateChange





Citar:
FUNÇÕES UTILIZADAS



OnPlayerKeyStateChange - Verifica as teclas pressionadas, onde, pode verificar a tecla que está sendo pressionada, a que já foi pressionada, ou combinações de teclas também, vai de sua criatividade!

IsPlayerInRangeOfPoint - Verifica se o player está na posição, sempre mantenha nas mesmas coordenadas em que a pickup foi criada.



CRIANDO A FUNÇÃO PARA APERTAR O F E SER TELEPORTADO

Código:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == 16) // key 16 é a letra F, se não me engano!
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, 1642.1760,-2335.4980,13.5469)) // Entrar
        {
                //Função.
        }
        else if(IsPlayerInRangeOfPoint(playerid, 1.0, 1643.6178,-2319.0422,1020.3306)) // Saida
        {
                //Função.
        }
    }
}









Bom, escrevi na correria e acredito que é isso, espero ter ajudado, quaisquer dúvidas estou a disposição Smile


RE: Comando em teclas - Niko_BellicSA - 13/01/2023

(12/01/2023 13:09)ziiQz Escreveu: Vamos lá, provavelmente tu ta bem perdido.. então vou te dar um exemplo.

A lógica é simples, if e else kkkkkkk, faça de uma forma que fique simples ao seu entendimento.

Vamos criar uma pickup para sinalizar onde vai entrar, em seguida, a função de teclas.




Citar:
CREATEPICKUP - EXPLICAÇÃO

CreatePickup(modelo, tipo, Float:X, Float:Y, Float:Z, virtualworld)
MODELO
ID do modelo da pickup, você pode ver a lista clicando aqui.

TIPO
Tipo da pickup, você pode ver a lista clicando aqui.

FLOAT:X
Coordenada X

FLOAT:Y
Coordenada Y

FLOAT:Z
Coordenada Z

VIRTUALWORLD

ID do virtualworld que a pickup vai aparecer, use -1 para aparecer em todos os mundos.


CRIANDO UMA PICKUP
Código:
new EntrarSair[2]; // Lembrando que é necessário criar uma variável para armazenar o ID da pickup, evitando conflitos futuros.
EntrarSair[0] = CreatePickupEx(1318,1,1642.1760,-2335.4980,13.5469,-1); // Pickup de entrada
EntrarSair[1] = CreatePickupEx(1318,1,1643.6178,-2319.0422,1020.3306,-1); // Pickup de saida




Agora que criamos a pickup, vamos a função de entrar ao apertar o 'F' ou outra tecla ao seu gosto. Iremos utilizar a função OnPlayerKeyStateChange





Citar:
FUNÇÕES UTILIZADAS



OnPlayerKeyStateChange - Verifica as teclas pressionadas, onde, pode verificar a tecla que está sendo pressionada, a que já foi pressionada, ou combinações de teclas também, vai de sua criatividade!

IsPlayerInRangeOfPoint - Verifica se o player está na posição, sempre mantenha nas mesmas coordenadas em que a pickup foi criada.



CRIANDO A FUNÇÃO PARA APERTAR O F E SER TELEPORTADO

Código:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys == 16) // key 16 é a letra F, se não me engano!
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, 1642.1760,-2335.4980,13.5469)) // Entrar
        {
                //Função.
        }
        else if(IsPlayerInRangeOfPoint(playerid, 1.0, 1643.6178,-2319.0422,1020.3306)) // Saida
        {
                //Função.
        }
    }
}









Bom, escrevi na correria e acredito que é isso, espero ter ajudado, quaisquer dúvidas estou a disposição Smile

KKKKKKKK eu tava bem perdido mesmo irmão, muito obrigado pela sua resposta, me ajudou demais! <3