SA-MP Forums Archive
ayuda AttachObjectToObjectEx!. - 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: ayuda AttachObjectToObjectEx!. (/showthread.php?tid=630585)



ayuda AttachObjectToObjectEx!. - OTACON - 16.03.2017

Necesito ayuda con esta funciуn que es obtener las posiciones de los objetos atados.

El problema es que no me revuelve la posiciуn en donde estб.

Posiciуn con los objetos adjuntos.


Nueva posiciуn del objeto.


Posiciуn obtenida con la funciуn AttachObjectToObjectEx


Код:
	new Float:newPOS[6];
	new Float:oldPOS[6];
	for(new d=0; d<sizeof asd; d++){
		GetObjectPos(asd[d], oldPOS[0],oldPOS[1],oldPOS[2]);
		GetObjectRot(asd[d], oldPOS[3],oldPOS[4],oldPOS[5]);
		AttachObjectToObjectEx(asd[d], base, oldPOS[0],oldPOS[1],oldPOS[2], oldPOS[3],oldPOS[4],oldPOS[5], newPOS[0],newPOS[1],newPOS[2], newPOS[3],newPOS[4],newPOS[5]);
		printf("CreateObject(%d,%f,%f,%f,%f,%f,%f);",GetObjectModel(asd[d]), newPOS[0],newPOS[1],newPOS[2], newPOS[3],newPOS[4],newPOS[5] );
	}
funcion
Код:
stock AttachObjectToObjectEx(objectid, attachoid, Float:off_x, Float:off_y, Float:off_z, Float:rot_x, Float:rot_y, Float:rot_z, &Float:X, &Float:Y, &Float:Z, &Float:RX, &Float:RY, &Float:RZ){ // By Stylock
	static
		Float:sin[3],
		Float:cos[3],
		Float:pos[3],
		Float:rot[3];
	GetObjectPos(attachoid, pos[0], pos[1], pos[2]);
	GetObjectRot(attachoid, rot[0], rot[1], rot[2]);
	cos[0] = floatcos(rot[0], degrees); cos[1] = floatcos(rot[1], degrees); cos[2] = floatcos(rot[2], degrees); sin[0] = floatsin(rot[0], degrees); sin[1] = floatsin(rot[1], degrees); sin[2] = floatsin(rot[2], degrees);
	pos[0] = pos[0] + off_x * cos[1] * cos[2] - off_x * sin[0] * sin[1] * sin[2] - off_y * cos[0] * sin[2] + off_z * sin[1] * cos[2] + off_z * sin[0] * cos[1] * sin[2];
	pos[1] = pos[1] + off_x * cos[1] * sin[2] + off_x * sin[0] * sin[1] * cos[2] + off_y * cos[0] * cos[2] + off_z * sin[1] * sin[2] - off_z * sin[0] * cos[1] * cos[2];
	pos[2] = pos[2] - off_x * cos[0] * sin[1] + off_y * sin[0] + off_z * cos[0] * cos[1];
	rot[0] = asin(cos[0] * cos[1]); rot[1] = atan2(sin[0], cos[0] * sin[1]) + rot_z; rot[2] = atan2(cos[1] * cos[2] * sin[0] - sin[1] * sin[2], cos[2] * sin[1] - cos[1] * sin[0] * -sin[2]);
	cos[0] = floatcos(rot[0], degrees); cos[1] = floatcos(rot[1], degrees); cos[2] = floatcos(rot[2], degrees); sin[0] = floatsin(rot[0], degrees); sin[1] = floatsin(rot[1], degrees); sin[2] = floatsin(rot[2], degrees);
	rot[0] = asin(cos[0] * sin[1]); rot[1] = atan2(cos[0] * cos[1], sin[0]); rot[2] = atan2(cos[2] * sin[0] * sin[1] - cos[1] * sin[2], cos[1] * cos[2] + sin[0] * sin[1] * sin[2]);
	cos[0] = floatcos(rot[0], degrees); cos[1] = floatcos(rot[1], degrees); cos[2] = floatcos(rot[2], degrees); sin[0] = floatsin(rot[0], degrees); sin[1] = floatsin(rot[1], degrees); sin[2] = floatsin(rot[2], degrees);
	rot[0] = atan2(sin[0], cos[0] * cos[1]) + rot_x; rot[1] = asin(cos[0] * sin[1]); rot[2] = atan2(cos[2] * sin[0] * sin[1] + cos[1] * sin[2], cos[1] * cos[2] - sin[0] * sin[1] * sin[2]);
	cos[0] = floatcos(rot[0], degrees); cos[1] = floatcos(rot[1], degrees); cos[2] = floatcos(rot[2], degrees); sin[0] = floatsin(rot[0], degrees); sin[1] = floatsin(rot[1], degrees); sin[2] = floatsin(rot[2], degrees);
	rot[0] = asin(cos[1] * sin[0]); rot[1] = atan2(sin[1], cos[0] * cos[1]) + rot_y; rot[2] = atan2(cos[0] * sin[2] - cos[2] * sin[0] * sin[1], cos[0] * cos[2] + sin[0] * sin[1] * sin[2]);
	SetObjectPos(objectid, pos[0], pos[1], pos[2]);
	SetObjectRot(objectid, rot[0], rot[1], rot[2]);
	X = pos[0];
	Y = pos[1];
	Z = pos[2];
	RX = rot[0];
	RY = rot[1];
 	RZ = rot[2];
}



Re: ayuda AttachObjectToObjectEx!. - Unrea1 - 16.03.2017

Eliminado.

Entendн mal el asunto, disculpas.


Re: ayuda AttachObjectToObjectEx!. - wintronic - 17.03.2017

http://pastebin.com/raw/XUtzBfpq

conversion( primero coordenadas del objeto atante, offsets del objeto atado, variables para almacenar las posiciones del objeto atado )


En tu caso estбs haciendo mal los offset.


Respuesta: Re: ayuda AttachObjectToObjectEx!. - OTACON - 18.03.2017

Quote:
Originally Posted by Fynn.
Посмотреть сообщение
Eliminado.

Entendн mal el asunto, disculpas.

no te equivocaste tanto, lo solucione con la funciуn GetObjectAttachedOffset del YSF.

Quote:
Originally Posted by wintronic
Посмотреть сообщение
http://pastebin.com/raw/XUtzBfpq

conversion( primero coordenadas del objeto atante, offsets del objeto atado, variables para almacenar las posiciones del objeto atado )


En tu caso estбs haciendo mal los offset.
no me funciono, sigue igual, eso lo habнa verificado intercambiando las variables .
el problema esta en el GetObjectPos que no daba las coordenadas correctas, lo solucione con el GetObjectAttachedOffset del YSF.,y me funciono perfecto.



PHP код:
new Float:newPOS[6];
new 
Float:offsetPOS[6];
for(new 
d=0d<sizeof asdd++){
    
GetObjectAttachedOffset(asd[d], offsetPOS[0],offsetPOS[1],offsetPOS[2], offsetPOS[3],offsetPOS[4],offsetPOS[5]);
    
GetAttachedObjectPos(baseoffsetPOS[0],offsetPOS[1],offsetPOS[2], newPOS[0],newPOS[1],newPOS[2]);
    
printf("CreateObject(%d,%f,%f,%f,%f,%f,%f);",GetObjectModel(asd[d]), newPOS[0],newPOS[1],newPOS[2], offsetPOS[3],offsetPOS[4],offsetPOS[5] );

____

muchas gracias a los dos, +10 rep. a ambos.
saludos.