04.04.2015, 04:56
Fui responder um tуpico e me deparei com esta dъvida:
Eu algumas vezes tenho problemas com a funзгo SetPlayerPos, ela simplesmente nгo seta a posiзгo. Tentei fazer uma soluзгo pro problema, criando o sistema abaixo (nгo vou explicar muito o cуdigo):
Estou chamando ForcePlayerCameraPos no comando teste, e tambйm quando um jogador entra no servidor.
O comando /teste nгo setou a posiзгo da cвmera nenhuma vez. (nem mesmo forзando)
Jб quando eu setei a cвmera quando o jogador se conectou, setou de primeira e os resultados obtidos foram estes:
Resultado absurdo da funзгo GetPlayerCameraPos.
E й claro que nгo deu certo a funзгo de forзar -.-
A minha conclusгo й que ambas as funзхes de setar/obter cвmera, estгo com problemas.
Qual a opiniгo de vocкs sobre isto? Ou sou eu que to fazendo bost@?
Quote:
Porque quando eu Uso:
PHP код:
PHP код:
A soluзгo foi usar um Timer de 300 ms para setar apуs a camera do player, porйm sу funciona em alguns players. Por que disso? seria o FPS? |
PHP код:
new IsForcingCamera[MAX_PLAYERS];
forward ChecarCamera(playerid,Float:_x,Float:_y,Float:_z);
public ChecarCamera(playerid,Float:_x,Float:_y,Float:_z)
{
new Float:x, Float:y, Float:z;
GetPlayerCameraPos(playerid,x,y,z);
// Vamos criar uma variбvel para ver uma taxa de variaзгo de cвmera.
// Eu nгo sei se a cвmera fica exatamente na posiзгo, vamos por um erro.
new Float:taxa;
// Calcula a taxa
taxa = floatabs(_x - x) + floatabs (_y - y) + floatabs (_z - z);
// Faz a comparaзгo
if(taxa > 5.0) // atй 5.0 seria uma variaзгo aceitбvel
SetPlayerCameraPos(playerid,_x,_y,_z);
// DEBUG ONLY
printf("Posiзгo setada: (%.02f,%.02f,%.02f)",_x,_y,_z);
printf("Posiзгo obtida: (%.02f,%.02f,%.02f)",x,y,z);
printf("Taxa: %0.2f. Considerada %s.",taxa,taxa > 5 ? ("nгo aceitбvel") : ("aceitбvel"));
return 1;
}
CMD:teste(playerid)
{
ForcePlayerCameraPos(playerid,100.0,100.0,100.0);
return 1;
}
stock ForcePlayerCameraPos(playerid,Float:_x,Float:_y,Float:_z)
{
KillTimer(IsForcingCamera[playerid]);
SetPlayerCameraPos(playerid,_x,_y,_z);
IsForcingCamera[playerid] = SetTimerEx("ChecarCamera",1001,false,"dfff",playerid,_x,_y,_z);
}
O comando /teste nгo setou a posiзгo da cвmera nenhuma vez. (nem mesmo forзando)
Jб quando eu setei a cвmera quando o jogador se conectou, setou de primeira e os resultados obtidos foram estes:
Resultado absurdo da funзгo GetPlayerCameraPos.
E й claro que nгo deu certo a funзгo de forзar -.-
A minha conclusгo й que ambas as funзхes de setar/obter cвmera, estгo com problemas.
Qual a opiniгo de vocкs sobre isto? Ou sou eu que to fazendo bost@?