13.01.2010, 22:46
Isso й fбcil. Vamos lб:
Primeiramente vocк precisa criar uma variбvel no topo do seu gamemode para definir as "equipes", tome esse exemplo:
Agora vamos criar um timer para checar a posiзгo do jogador e saber se ele estб na бrea do portгo:
Agora que estamos chamando a funзгo CheckPos atravйs de um timer, vamos atй ela:
Resumindo: acabamos de criar uma funзгo cuja й executada a cada segundo que verifica se o jogador estб num raio de 3 (metros, nгo sei) da posiзгo X, Y, Z que vocк irб substituir por uma coordenada prуxima ao seu portгo.
Depois disso, vamos definir no final do script a funзгo PlayerToPoint que checa a distвncia do jogador dentro do raio desejado:
Bom, agora que jб estб quase tudo pronto, vocк precisa "se virar" aн e definir a "equipe" que o jogador pertencerб.
Abraзos
Primeiramente vocк precisa criar uma variбvel no topo do seu gamemode para definir as "equipes", tome esse exemplo:
Code:
new Team[MAX_PLAYERS];
Code:
//OnGameModeInit
SetTimer("CheckPos", 1000, true);
Code:
//Final do Script
public CheckPos()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Team[i] == 1) // Considerando que a equipe dos Cops й de ID 1 (modificar se necessбrio).
{
if(PlayerToPoint(3.0, i, X, Y, Z))
{
// MoveObject.... Aqui vocк vai fazer seu portгo abrindo.
}
else
{
// MoveObject... Aqui vocк irб fazer seu portгo fechando, na posiзгo padrгo.
}
}
}
}
return 1;
}
Depois disso, vamos definir no final do script a funзгo PlayerToPoint que checa a distвncia do jogador dentro do raio desejado:
Code:
[b]//Topo do Script:
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
//Final do script:
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
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;
}
Abraзos

