SA-MP Forums Archive
[Funcion PRO] getPosCentro solo pros - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Funcion PRO] getPosCentro solo pros (/showthread.php?tid=603193)



Algoritmo para obtener un vector a una distancia dada - Su37Erich - 19.03.2016

Aclaraciуn: Una disculpa por el tнtulo, estaba precisamente buscando algo como la respuesta de Jastak
Bueno el tema que tenнa planteado era el siguiente:

їAlguien sabe si existe una funciуn con la cual pueda obtener las coordenadas X, Y y Z a una distancia de 10 metros la cual pasa por el vector Pos Jugador y el vector Pos Jugador 2?

їUso de la funciуn?
Algo como:
Код:
public OnPlayerUpdate(playerid)
{
	static Float:jPosX, Float:jPosY, Float:jPosZ;
	static Float:jCentroX, Float:jCentroY, Float:jCentroZ;
	if(idDF[playerid] != -1)
	{
		GetPlayerPos(idDF[playerid], jCentroX, jCentroY, jCentroZ);
		getXYZWithDistance(playerid, jPosX, jPosY, jPosZ, jCentroX, jCentroY, jCentroZ);
		SetPlayerCameraPos(playerid, jPosX, jPosY, jPosZ);//La camara a 10 metros lejos del jugador
		SetPlayerCameraLookAt(playerid, jCentroX, jCentroY, jCentroZ);
	}
	return 1;
}
La cual solucionй hoy y la dejo por si a alguien le sirve.
Gracias a Jastak por la funciуn, la estarй revisando y comparбndola con la mнa que de por sн me costo mucho trabajo, aunque tengo dudas en cuanto a la posiciуn Z (de la funciуn de Mauzen ya que aparentemente solo le suma la Z?):
Код:
stock getXYZWithDistance(playerid, &Float:rX, &Float:rY, &Float:rZ, Float:centroX, Float:centroY, Float:centroZ)
{
	static Float:posX, Float:posY, Float:posZ;
	static Float:vDirX, Float:vDirY, Float:vDirZ;
	static Float:t;
	
	GetPlayerPos(playerid, posX, posY, posZ);
	/*Vector director*/
	vDirX = posX-centroX;
	vDirY = posY-centroY;
	vDirZ = posZ-centroZ;
	/*---------------*/
	t = floatsqroot(((posX-centroX)*(posX-centroX))+((posY-centroY)*(posY-centroY))+((posZ-centroZ)*(posZ-centroZ)));
	t = 30/t;
	vDirX *= t;
	vDirY *= t;
	vDirZ *= t;
	
	rX = posX+vDirX;
	rY = posY+vDirY;
	rZ = posZ+vDirZ;
}



Re: [Funcion PRO] getPosCentro solo pros - SickAttack - 20.03.2016

Esta mal eso. Dices que "x, y, z" es el centro, pero luego lo seteas al posicion del jugador. Luego "x1, x2, x3" es la posicion del jugador tambien.

Y que se supone que puedes hacer con esa funcion?


Re: [Funcion PRO] getPosCentro solo pros - Jastak - 20.03.2016

Код:
//BY MAUZEN
stock GetPlayerRelativePos(playerid, &Float:x, &Float:y, &Float:z, Float:xoff=0.0, Float:yoff=0.0, Float:zoff=0.0)
{
    new Float:rot;
    rot = 360 - rot;
    GetPlayerPos(playerid, x, y, z);
    x = floatsin(rot,degrees) * yoff + floatcos(rot,degrees) * xoff + x;
    y = floatcos(rot,degrees) * yoff - floatsin(rot,degrees) * xoff + y;
    z = zoff + z;
}
y no sй que de que vas con eso de "APUESTO que nadie lo hace mejor", si lo que acabas de hacer es bбsico.


Respuesta: [Funcion PRO] getPosCentro solo pros - NelsonM - 20.03.2016

No le veo el sentido a esa funciуn, ademбs de hacerte pasar por "pro" demostrando una funciуn bбsica (sin sentido ademбs).


Respuesta: [Funcion PRO] getPosCentro solo pros - MaikelRincon - 20.03.2016

Que estupidez decirlo asн "pros - funciуn pro"..


Re: [Funcion PRO] getPosCentro solo pros - Su37Erich - 20.03.2016

Lo siento, se que estuvo mal, era solo como tema de ayuda pero de forma diferente ya que en verdad necesitaba el algoritmo.
En lugar de preguntar algo como:
їme podrнan ayudar encontrando el algoritmo de estб funciуn?
Pensй en poner de otra forma la pregunta, ya que vi que en la secciуn funciones siempre alguien sale con una funciуn mas optimizada


Re: [Funcion PRO] getPosCentro solo pros - Jastak - 20.03.2016

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Lo siento, se que estuvo mal, era solo como tema de ayuda pero de forma diferente ya que en verdad necesitaba el algoritmo.
En lugar de preguntar algo como:
їme podrнan ayudar encontrando el algoritmo de estб funciуn?
Pensй en poner de otra forma la pregunta, ya que vi que en la secciуn funciones siempre alguien sale con una funciуn mas optimizada
intenta con este:

Код:
//BY MAUZEN
stock GetPlayerRelativePos(playerid, &Float:x, &Float:y, &Float:z, Float:xoff=0.0, Float:yoff=0.0, Float:zoff=0.0)
{
    new Float:rot;
    rot = 360 - rot;
    GetPlayerPos(playerid, x, y, z);
    x = floatsin(rot,degrees) * yoff + floatcos(rot,degrees) * xoff + x;
    y = floatcos(rot,degrees) * yoff - floatsin(rot,degrees) * xoff + y;
    z = zoff + z;
}