enum obinfo
{
oid,
model,
Float:posx,
Float:posy,
Float:posz,
Float:rotx,
Float:roty,
Float:rotz,
};
new gobject[MAX_OBJ][obinfo];
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,Float:newX, Float:newY, Float:newZ, Float:newRotX, Float:newRotY, Float:newRotZ;
GetDynamicObjectPos(objectid, oldX, oldY, oldZ);
GetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // If this is a global object, sync the position for other players
{
if(response == EDIT_RESPONSE_FINAL)
{
GetDynamicObjectPos(objectid, newX, newY, newZ);
GetDynamicObjectRot(objectid, newRotX, newRotY, newRotZ);
gobject[ ?? ][posx]=newX;
gobject[ ?? ][posy]=newY;
gobject[ ?? ][posz]=newZ;
gobject[ ?? ][rotx]=newRotX;
gobject[ ?? ][roty]=newRotY;
gobject[ ?? ][rotz]=newRotZ;
}
if(response == EDIT_RESPONSE_CANCEL)
{
//The player cancelled, so put the object back to it's old position
if(!playerobject) //Object is not a playerobject
{
SetDynamicObjectPos(objectid, oldX, oldY, oldZ);
SetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
}
}
}
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;
GetDynamicObjectPos(objectid, oldX, oldY, oldZ);
GetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
if(!playerobject) // If this is a global object, sync the position for other players
{
if(response == EDIT_RESPONSE_FINAL)
{
for(new i=0;i<MAX_OBJ;i++)
{
if(objectid==gobject[i][oid])
{
GetDynamicObjectPos(objectid, fX, fY, fZ);
GetDynamicObjectRot(objectid, fRotX, fRotY, fRotZ);
gobject[i][posx]=fX;
gobject[i][posy]=fY;
gobject[i][posz]=fZ;
gobject[i][rotx]=fRotX;
gobject[i][roty]=fRotY;
gobject[i][rotz]=fRotZ;
printf("=====================\n");
printf("Object Edited ID: %d\n",i);
printf("Model: %d\n",gobject[i][model]);
printf("New POS X: %f\n",gobject[i][posx]);
printf("New POS Y: %f\n",gobject[i][posy]);
printf("New POS Z: %f\n",gobject[i][posz]);
printf("New ROT X: %f\n",gobject[i][rotx]);
printf("New ROT Y: %f\n",gobject[i][roty]);
printf("New ROT Z: %f\n",gobject[i][rotz]);
printf("=====================");
}
}
}
if(response == EDIT_RESPONSE_CANCEL)
{
//The player cancelled, so put the object back to it's old position
if(!playerobject) //Object is not a playerobject
{
for(new i=0;i<MAX_OBJ;i++)
{
if(objectid==gobject[i][oid])
{
GetDynamicObjectPos(objectid, fX, fY, fZ);
GetDynamicObjectRot(objectid, fRotX, fRotY, fRotZ);
gobject[i][posx]=fX;
gobject[i][posy]=fY;
gobject[i][posz]=fZ;
gobject[i][rotx]=fRotX;
gobject[i][roty]=fRotY;
gobject[i][rotz]=fRotZ;
printf("=====================\n");
printf("Object Edited ID: %d\n",i);
printf("Model: %d\n",gobject[i][model]);
printf("New POS X: %f\n",gobject[i][posx]);
printf("New POS Y: %f\n",gobject[i][posy]);
printf("New POS Z: %f\n",gobject[i][posz]);
printf("New ROT X: %f\n",gobject[i][rotx]);
printf("New ROT Y: %f\n",gobject[i][roty]);
printf("New ROT Z: %f\n",gobject[i][rotz]);
printf("=====================");
}
}
}
}
}
}
CMD:createobject(playerid,params[])
{
new modelid;
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED,"Sorry but you are not authorised to use this command");
if(sscanf(params, "i" ,modelid)) return SendClientMessage(playerid, COLOR_YELLOW,"Usage: /createobject <Model ID>");
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for(new i=0; i<MAX_OBJ;i++)
{
if(gobject[i][model]==0)
{
gobject[i][oid]=CreateDynamicObject(modelid,x+2,y,z,0,0,0);
new str[128];
format(str,sizeof(str),"You have created object(ID:%d) with Model ID:%d",i,modelid);
SendClientMessage(playerid, COLOR_BLUE,str);
GetDynamicObjectPos(gobject[i][oid],gobject[i][posx],gobject[i][posy],gobject[i][posz]);
GetDynamicObjectRot(gobject[i][oid],gobject[i][rotx],gobject[i][roty],gobject[i][rotz]);
gobject[i][model]=modelid;
new INI:file = INI_Open(SavePath(i));
INI_WriteInt(file,"model",gobject[i][model]);
INI_WriteFloat(file,"posx",gobject[i][posx]);
INI_WriteFloat(file,"posy",gobject[i][posy]);
INI_WriteFloat(file,"posz",gobject[i][posz]);
INI_WriteFloat(file,"rotx",gobject[i][rotx]);
INI_WriteFloat(file,"roty",gobject[i][roty]);
INI_WriteFloat(file,"rotz",gobject[i][rotz]);
INI_Close(file);
break;
}
}
return 1;
}
objectid
public OnPlayerEditDynamicObject(playerid, STREAMER_TAG_OBJECT objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
show code command to edit object
then are you f*ckng your script, select only one, What would you use CreateDynamicObject(OnPlayerEditDynamicObject) or CreateObject(OnPlayerEditObject) |
new freeid = -1;
for(new i; i < MAX_OBJ; i++)
{
if(!gobject[i][model]) // just check if the model hasn't been used yet
{
freeid = i;
break;
}
}
if(freeid == -1) return ... // you have used all the IDs