public OnPlayerEditObject(playerid, playerobject, objectid, 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);
new Float:OX, Float:OY, Float:OZ, Float:ORX, Float:ORY, Float:ORZ, OVW, OINT;
if(!playerobject)
{
if(!IsValidObject(objectid)) return;
MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
new string[254];
OVW = GetPlayerVirtualWorld(playerid);
OINT = GetPlayerInterior(playerid);
GetObjectPos(objectid, OX, OY, OZ);
GetObjectRot(objectid, ORX, ORY, ORZ);
AddObjectToFile(OBJECT_FILE_NAME, OX, OY, OZ, ORX, ORY, ORZ, OVW, OINT);
SendClientMessage(playerid, 0xD8D8D8FF, "Object Placed");
CreateDynamicObject(oModel, Float:OX, Float:OY, Float:OZ, Float:ORX, Float:ORY, Float:ORZ, OVW, OINT, -1, 200.0);
DestroyObject(Object1337);
}
if(response == EDIT_RESPONSE_CANCEL)
{
if(!playerobject)
{
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
new Float:OX, Float:OY, Float:OZ, Float:ORX, Float:ORY, Float:ORZ;
GetPlayerPos(playerid, OX, OY, OZ);
oModel = 19172;
ORX = 0.0;
ORY = 0.0;
ORZ = 0.0;
Object1337 = CreateObject(oModel, OX+2, OY, OZ, ORX, ORY, ORZ);
EditObject(playerid, Object1337);
You defined EDIT_RESPONSE_FINAL and CANCEL on your own? if so show me that line.
|
Thing is I DO know about it but I don't use those defines. Simple if(response) or if(!response) does the job. And no, those posts aren't spam. Second thing is if your code isn't called maybe, for example, your statements don't allow it to execute. Check all filters again. Debug if necessary.
|
public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
print("[DEBUG] Callback Started");
new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetObjectPos(objectid, oldX, oldY, oldZ);
GetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
new Float:OX, Float:OY, Float:OZ, Float:ORX, Float:ORY, Float:ORZ, OVW, OINT;
if(!playerobject)
{
print("[DEBUG] if(!playerobject) called");
if(!IsValidObject(objectid)) return;
MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
}
if(response == EDIT_RESPONSE_FINAL)
{
print("[DEBUG] response FINAL called");
new string[254];
OVW = GetPlayerVirtualWorld(playerid);
OINT = GetPlayerInterior(playerid);
GetObjectPos(objectid, OX, OY, OZ);
GetObjectRot(objectid, ORX, ORY, ORZ);
AddObjectToFile(OBJECT_FILE_NAME, OX, OY, OZ, ORX, ORY, ORZ, OVW, OINT);
SendClientMessage(playerid, 0xD8D8D8FF, "Object Placed");
CreateDynamicObject(oModel, Float:OX, Float:OY, Float:OZ, Float:ORX, Float:ORY, Float:ORZ, OVW, OINT, -1, 200.0);
DestroyObject(Object1337);
}
if(response == EDIT_RESPONSE_CANCEL)
{
print("[DEBUG] response CANCEL called");
if(!playerobject)
{
print("[DEBUG] if(!playerobject) inside response CANCEL called");
SetObjectPos(objectid, oldX, oldY, oldZ);
SetObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
else
{
print("[DEBUG] else of !playerobject under CANCEL called");
SetPlayerObjectPos(playerid, objectid, oldX, oldY, oldZ);
SetPlayerObjectRot(playerid, objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
I:\FTP\gamemodes\General.pwn(62343) : warning 209: function "Streamer_OnPlayerEditObject" should return a value
I:\FTP\gamemodes\General.pwn(62383) : warning 209: function "Streamer_OnPlayerEditObject" should return a value
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Header size: 14632 bytes
Code size: 3448632 bytes
Data size: 10413168 bytes
Stack/heap size: 16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements:13892816 bytes
2 Warnings.