Saltar al contenido principal

OnPlayerEditObject

Descripción

Este callback se llama cuando un jugador termina de editar un objeto (EditObject/EditPlayerObject).

NombreDescripción
playeridEl ID del jugador que editó un objeto.
playerobject0 si fue un objeto global o 1 si fue un objeto de jugador.
objectidEl ID del objeto que fue editado.
EDIT_RESPONSE:responseEl tipo de respuesta
Float:fXLa coordenada X para el objeto que fue editado.
Float:fYLa coordenada Y para el objeto que fue editado.
Float:fZLa coordenada Z para el objeto que fue editado.
Float:fRotXLa rotación X para el objeto que fue editado.
Float:fRotYLa rotación Y para el objeto que fue editado.
Float:fRotZLa rotación Z para el objeto que fue editado.

Devoluciones

1 - Prevendrá a otros filterscripts de recibir este callback.

0 - Indica que este callback será pasado al siguiente filterscript.

Siempre se llama primero en filterscripts.

Ejemplos

public OnPlayerEditObject(playerid, playerobject, objectid, EDIT_RESPONSE:response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
new
Float: oldX,
Float: oldY,
Float: oldZ,
Float: oldRotX,
Float: oldRotY,
Float: oldRotZ;

GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if (!playerobject) //Si es un objeto global, sincroniza la posición para los demás jugadores
{
if (!IsValidObject(objectid))
{
return 1;
}
SetObjectPos(objectid, fX, fY, fZ);
SetObjectRot(objectid, fRotX, fRotY, fRotZ);
}

switch (response)
{
case EDIT_RESPONSE_FINAL:
{
// El jugador clickeó en el ícono de guardar
// Hacer algo acá para guardar la posición y rotación del objeto actualizado
}

case EDIT_RESPONSE_CANCEL:
{
//El jugador canceló, entonces ponemos el objeto de vuelta a su posición antigua
if (!playerobject) //El objeto no es un objeto de jugador
{
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
return 1;
}

Notas

aviso

Cuando se usa 'EDIT_RESPONSE_UPDATE' sé consciente de que este callback no será llamado cuándo se lanze una edición en progreso, resultando en que la última actualización de 'EDIT_RESPONSE_UPDATE' quede fuera de sincronización con la posición actual de los objetos.

Funciones Relacionadas