[Tutorial] Portгo eletrуnico (apertando tecla)
#1

Embora jб existam alguns tutoriais sobre este assunto, nгo incomoda nada reforзar um pouco estas idйias para os novatos (sendo que muitos sгo por comandos e muita gente procura por teclas).

Para comeзar, iremos criar uma variбvel com o nъmero de portхes que desejamos e uma forward para mais tarde fazermos a calback para chamar o portгo para as coordenadas de origem.
ex:
pawn Код:
new
    sPortao[1];

forward sPortaoVoltar();
Com a variбvel sPortao iremos criar 1 portгo. Mas se quiser mais basta trocar o nъmero 1 pelo nъmero de portхes que desejar colocar com a mesma variбvel (lembrando que irгo ser portхes diferentes) e irб comeзar sempre pelo 0 (irгo ver jб aqui em baixo)

Depois da variбvel criada, vamos ao OnGameModeInit/OnFilterScriptInit (dependendo se estб a usar gamemode ou filterscript) e colocaremos o seguinte em baixo:
pawn Код:
sPortao[0] = CreateObject(980, 2237.4724,2452.9809,11.9243,0.0000,0.0000,-90.2999);
(este objeto й do meu gamemode, foi sу para dar um exemplo).

980 - id do portгo;
2237.4724 - coordenada X onde o portгo se encontra;
2452.9809 - coordenada Y onde o portгo se encontra;
11.9243 - coordenada Z onde o portгo se encontra;
0.0000 - rotaзгo X;
0.0000 - rotaзгo Y;
-90.2999 - rotaзгo Z.

Agora, vamos para a calback que vai efetuar o procedimento do portгo mexer atravйs das teclas, que й a:
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Dentro desta calback, vamos colocar o seguinte:
pawn Код:
if(newkeys == KEY_RIGHT && !IsPlayerInAnyVehicle(playerid) || newkeys == KEY_HANDBRAKE && IsPlayerInAnyVehicle(playerid))
{
    if(IsPlayerInRangeOfPoint(playerid, 15.0, 2237.4724,2452.9809,11.9243))
    {
        if(IsPlayerAdmin(playerid))
        {
            MoveObject(PortaoPoliciaMilitar[0], 2237.4724,2452.9809,1.9243,3,0.0000,0.0000,-90.2999);
            SetTimer("CallPortaoPoliciaMilitarE1", 5000, 0);
        }
    }
}
E vamos seguir para a explicaзгo do que acabei de colocar
pawn Код:
if(newkeys == KEY_RIGHT && !IsPlayerInAnyVehicle(playerid) || newkeys == KEY_HANDBRAKE && IsPlayerInAnyVehicle(playerid))
pawn Код:
KEY_RIGHT &&!IsPlayerInAnyVehicle
Se o jogador clicar na tecla do mouse (direita) e estiver fora de um veнculo, irб funcionar.

ou a outra opзгo й a seguinte:
pawn Код:
KEY_HANDBRAKE && IsPlayerInAnyVehicle
que й se o jogador clicar na tecla ESPAЗO e estiver dentro de um veнculo.


Em relaзгo ao
pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 15.0, 2237.4724,2452.9809,11.9243))
й uma funзгo para verificar a que distвncia estб da coordenada...
pawn Код:
15.0 - raio
2237.4724,2452.9809,11.9243 - coordenadas
Isto quer dizer que se estiver atй um raio de 15.0 dessas coordenadas, irб conseguir abrir os portхes.


pawn Код:
if(IsPlayerAdmin(playerid))
Sу ira deixar vocк usar a funзгo se estiver logado na RCON (pode retirar isto, foi sу um exemplo).


pawn Код:
MoveObject(sPortao[0], 2237.4724,2452.9809,1.9243,3,0.0000,0.0000,-90.2999);
SetTimer("sPortaoVoltar", 5000, 0);
explicaзгo:
pawn Код:
MoveObject(sPortao[0], 2237.4724,2452.9809,1.9243,3,0.0000,0.0000,-90.2999);
Irб mover o objeto criado para outro sнtio.

pawn Код:
SetTimer("sPortaoVoltar", 5000, 0);
Passado o tempo definido (5000) irб chamar a calback sPortaoVoltar e trazer o portгo denovo ao sнtio de origem.


Agora para criar, vamos criar a calback para quando o objeto й movido, passado o tempo definido voltar ao local de origem.
pawn Код:
public sPortaoVoltar()
    return MoveObject(sPortao[0], 2237.4724, 2452.9809, 11.9243,3,0.0000, 0.0000, -90.2999);
Com esta calback, o objeto sPortao[0] que й o nosso portгo irб voltar para o local de origem (2237.4724, 2452.9809, 11.9243).
Reply
#2

pawn Код:
new
    sPortao[1];
Para que vocк vai usar assim ? .-.

Use:

pawn Код:
new sPortao;
Reply
#3

Se vir a explicaзгo, falei que era para se quisesse criar mais do que um portгo sem criar uma nova variбvel.
Reply
#4

Eu vi...

mas do jeito que vocк ensinou, й um SE...

Se vocк fosse ensinar a criar um portao, aн vocк poderia usar.

No entanto, pra que usar sem precisar ?

De qualquer maneira, vai ajudar os novatos.
Reply
#5

nosssa cara puis la deu 5 eerro, voce vai embolando , nao da pra entender nada, mais vlw a tentativa ^^
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)