Zum Hauptinhalt springen

OnPlayerEditAttachedObject

Description

This callback is called when a player ends attached object edition mode.

NameDescription
playeridThe ID of the player that ended edition mode
EDIT_RESPONSE:response0 if they cancelled (ESC) or 1 if they clicked the save icon
indexThe index of the attached object (0-9)
modelidThe model of the attached object that was edited
boneidThe bone of the attached object that was edited
Float:fOffsetXThe X offset for the attached object that was edited
Float:fOffsetYThe Y offset for the attached object that was edited
Float:fOffsetZThe Z offset for the attached object that was edited
Float:fRotXThe X rotation for the attached object that was edited
Float:fRotYThe Y rotation for the attached object that was edited
Float:fRotZThe Z rotation for the attached object that was edited
Float:fScaleXThe X scale for the attached object that was edited
Float:fScaleYThe Y scale for the attached object that was edited
Float:fScaleZThe Z scale for the attached object that was edited

Returns

1 - Will prevent other scripts from receiving this callback.

0 - Indicates that this callback will be passed to the next script.

It is always called first in filterscripts.

Examples

enum attached_object_data
{
Float:ao_x,
Float:ao_y,
Float:ao_z,
Float:ao_rx,
Float:ao_ry,
Float:ao_rz,
Float:ao_sx,
Float:ao_sy,
Float:ao_sz
}

new ao[MAX_PLAYERS][MAX_PLAYER_ATTACHED_OBJECTS][attached_object_data];

// The data should be stored in the above array when attached objects are attached.

public OnPlayerEditAttachedObject(playerid, EDIT_RESPONSE:response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
{
if (response == EDIT_RESPONSE_FINAL)
{
SendClientMessage(playerid, COLOR_GREEN, "Attached object edition saved.");

ao[playerid][index][ao_x] = fOffsetX;
ao[playerid][index][ao_y] = fOffsetY;
ao[playerid][index][ao_z] = fOffsetZ;
ao[playerid][index][ao_rx] = fRotX;
ao[playerid][index][ao_ry] = fRotY;
ao[playerid][index][ao_rz] = fRotZ;
ao[playerid][index][ao_sx] = fScaleX;
ao[playerid][index][ao_sy] = fScaleY;
ao[playerid][index][ao_sz] = fScaleZ;
}
else if (response == EDIT_RESPONSE_CANCEL)
{
SendClientMessage(playerid, COLOR_RED, "Attached object edition not saved.");

new i = index;
SetPlayerAttachedObject(playerid, index, modelid, boneid, ao[playerid][i][ao_x], ao[playerid][i][ao_y], ao[playerid][i][ao_z], ao[playerid][i][ao_rx], ao[playerid][i][ao_ry], ao[playerid][i][ao_rz], ao[playerid][i][ao_sx], ao[playerid][i][ao_sy], ao[playerid][i][ao_sz]);
}
return 1;
}

Notes

warnung

Editions should be discarded if response was '0' (cancelled). This must be done by storing the offsets etc. in an array BEFORE using EditAttachedObject.

The following functions might be useful, as they're related to this callback in one way or another.