Nesse tutorial vou ensinar como fazer portões automaticos que se abram para uma gang especifica. Excelente para gang war e profissão de policial.
Primeiro coloque essa função no final do gamemode:
[code]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;
}[/code]
Agora no topo do seu gamemode crie uma array para o portão:
[code]new portaopolicia;[/code]
Depois disso ainda no topo do gamemode crie um forward com o nome que quiser para fazer o portão abrir automatico:
[code]forward PortaoPolicia();[/code]
Agora no OnGameModeInit vamos fazer com que a array represente o portão:
[code]portaopolicia = CreateObject(987,1549.788,-1617.988,12.547,0.0,0.0,-91.960);//createobject do objeto que voce criou para o portao, quando for fazer faça ele primeiro FEXADO[/code]
Depois vá até o final do gamemode, faremos agora o sistema pro portão abrir automaticamente quando o player chegar perto:
[code]public PortaoPolicia() { //nome do forward
for(new i=0; i < MAX_PLAYERS; i++){
if( gTeam[i] == TEAM_COPS) { //esse gteam é a array que usei para setar a gang e TEAM_COPS é o id da gang
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 objeto, 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 vai se 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, o portão vai se mover para baixo(eixo Z, coordenada 12.547)
}
}
}
}[/code]
No OnGameModeInit vamos colocar um SetTimer:
SetTimer("PortaoPolicial", 200, true);
Prontinho! Seu portão automatico para uma gang especifica está pronto.
Primeiro coloque essa função no final do gamemode:
[code]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;
}[/code]
Agora no topo do seu gamemode crie uma array para o portão:
[code]new portaopolicia;[/code]
Depois disso ainda no topo do gamemode crie um forward com o nome que quiser para fazer o portão abrir automatico:
[code]forward PortaoPolicia();[/code]
Agora no OnGameModeInit vamos fazer com que a array represente o portão:
[code]portaopolicia = CreateObject(987,1549.788,-1617.988,12.547,0.0,0.0,-91.960);//createobject do objeto que voce criou para o portao, quando for fazer faça ele primeiro FEXADO[/code]
Depois vá até o final do gamemode, faremos agora o sistema pro portão abrir automaticamente quando o player chegar perto:
[code]public PortaoPolicia() { //nome do forward
for(new i=0; i < MAX_PLAYERS; i++){
if( gTeam[i] == TEAM_COPS) { //esse gteam é a array que usei para setar a gang e TEAM_COPS é o id da gang
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 objeto, 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 vai se 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, o portão vai se mover para baixo(eixo Z, coordenada 12.547)
}
}
}
}[/code]
No OnGameModeInit vamos colocar um SetTimer:
SetTimer("PortaoPolicial", 200, true);
Prontinho! Seu portão automatico para uma gang especifica está pronto.