UnK_CooL_
19/12/2009, 11:55 AM
Nesse tutorial vou ensinar como fazer portões automáticos que se abram para um gang/team especifico(a).
Primeiro coloque esta função no final do gamemode (se ja tiver nao precisa de por):
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
Agora no topo do teu gamemode cria uma array para o portão:
new portaopolicia;
Depois disso ainda no topo do gamemode cria um forward com o nome que quiseres para fazer o portão abrir automaticamente:
forward PortaoPolicia();
Agora no OnGameModeInit vamos fazer com que a array represente o portão e colocar um settimer:
SetTimer("PortaoPolicial", 200, true);
portaopolicia = CreateObject(987,1549.788,-1617.988,12.547,0.0,0.0,-91.960); //createobject do objecto que você criou para o portão, quando for fazer faça ele primeiro FECHADO
Depois vai até o final do gamemode, fazer agora o sistema para o portão abrir automaticamente quando o player chegar perto:
public PortaoPolicia() { //nome do forward
for(new i=0; i < MAX_PLAYERS; i++){
if( gTeam[i] == TEAM_COPS) { //gteam é a array que usei para setar a gang e TEAM_COPS é o id da gang/team
if(PlayerToPoint(15, i,1549.788,-1617.988,12.547)) { //o 15 é o raio que o player tem que ficar para abrir o portão, depois do i são as coordenadas do portão fexado, a mesma do create object
MoveObject(portaopolicia, 1549.788,-1617.988,20.547, 2); // função para mover o objecto, nesse exemplo faremos o portão subir para cima, no eixo Z que é a ultima coordenada(20.547) e o 2 é a velocidade que ele se vai mover.
} else {
MoveObject(portaocop,1549.788,-1617.988,12.547, 2); //se o player se afastar do portão até não estar mais no raio definido, o portão vai mover se para baixo(eixo Z, coordenada 12.547)
}
}
}
}
Prontinho! O teu portão automático para uma gang especifica está pronto.
Primeiro coloque esta função no final do gamemode (se ja tiver nao precisa de por):
stock PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
return 0;
}
Agora no topo do teu gamemode cria uma array para o portão:
new portaopolicia;
Depois disso ainda no topo do gamemode cria um forward com o nome que quiseres para fazer o portão abrir automaticamente:
forward PortaoPolicia();
Agora no OnGameModeInit vamos fazer com que a array represente o portão e colocar um settimer:
SetTimer("PortaoPolicial", 200, true);
portaopolicia = CreateObject(987,1549.788,-1617.988,12.547,0.0,0.0,-91.960); //createobject do objecto que você criou para o portão, quando for fazer faça ele primeiro FECHADO
Depois vai até o final do gamemode, fazer agora o sistema para o portão abrir automaticamente quando o player chegar perto:
public PortaoPolicia() { //nome do forward
for(new i=0; i < MAX_PLAYERS; i++){
if( gTeam[i] == TEAM_COPS) { //gteam é a array que usei para setar a gang e TEAM_COPS é o id da gang/team
if(PlayerToPoint(15, i,1549.788,-1617.988,12.547)) { //o 15 é o raio que o player tem que ficar para abrir o portão, depois do i são as coordenadas do portão fexado, a mesma do create object
MoveObject(portaopolicia, 1549.788,-1617.988,20.547, 2); // função para mover o objecto, nesse exemplo faremos o portão subir para cima, no eixo Z que é a ultima coordenada(20.547) e o 2 é a velocidade que ele se vai mover.
} else {
MoveObject(portaocop,1549.788,-1617.988,12.547, 2); //se o player se afastar do portão até não estar mais no raio definido, o portão vai mover se para baixo(eixo Z, coordenada 12.547)
}
}
}
}
Prontinho! O teu portão automático para uma gang especifica está pronto.