Problem With Objects
#1

Hey, I'm having problem with OnPlayerEditObject. Problem is What to put in new gobject[Here][obinfo]; Under ObPlayerEditObject so as to format the enums/variable of the objects that was being made..
In the Code Below I have denoted the Spaces Where to Put Id with ?? (two Question marks)
PHP код:
enum obinfo
    

       
oid,
       
model,
       
Float:posx,
       
Float:posy,
       
Float:posz,
       
Float:rotx,
       
Float:roty,
       
Float:rotz,
    };
new 
gobject[MAX_OBJ][obinfo]; 
PHP код:
public OnPlayerEditObject(playeridplayerobjectobjectidresponseFloat:fXFloat:fYFloat:fZFloat:fRotXFloat:fRotYFloat:fRotZ)
    {
        new 
Float:oldXFloat:oldYFloat:oldZFloat:oldRotXFloat:oldRotYFloat:oldRotZ,Float:newXFloat:newYFloat:newZFloat:newRotXFloat:newRotYFloat:newRotZ;
        
GetDynamicObjectPos(objectidoldXoldYoldZ);
        
GetDynamicObjectRot(objectidoldRotXoldRotYoldRotZ);
        if(!
playerobject// If this is a global object, sync the position for other players
        
{
            if(
response == EDIT_RESPONSE_FINAL)
            {
                
GetDynamicObjectPos(objectidnewXnewYnewZ);
                
GetDynamicObjectRot(objectidnewRotXnewRotYnewRotZ);
                
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(objectidoldXoldYoldZ);
                    
SetDynamicObjectRot(objectidoldRotXoldRotYoldRotZ);
                    
                }
            }    
        }
    } 
Reply
#2

PHP код:
public OnPlayerEditObject(playeridplayerobjectobjectidresponseFloat:fXFloat:fYFloat:fZFloat:fRotXFloat:fRotYFloat:fRotZ)
    {
        new 
Float:oldXFloat:oldYFloat:oldZFloat:oldRotXFloat:oldRotYFloat:oldRotZ;
        
GetDynamicObjectPos(objectidoldXoldYoldZ);
        
GetDynamicObjectRot(objectidoldRotXoldRotYoldRotZ);
        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(objectidfXfYfZ);
                        
GetDynamicObjectRot(objectidfRotXfRotYfRotZ);
                        
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(objectidfXfYfZ);
                            
GetDynamicObjectRot(objectidfRotXfRotYfRotZ);
                            
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("=====================");
                        }
                    }
                }
            }    
        }
    } 
It's also not working ^^^ Can anyone tell me why?

Here's code on player create object:
PHP код:
CMD:createobject(playerid,params[])
    {
        new 
modelid;
        if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridCOLOR_RED,"Sorry but you are not authorised to use this command");
        if(
sscanf(params"i" ,modelid)) return SendClientMessage(playeridCOLOR_YELLOW,"Usage: /createobject <Model ID>");
        new 
Float:x,Float:y,Float:z;
        
GetPlayerPos(playerid,x,y,z);
        for(new 
i=0i<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(playeridCOLOR_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;
    } 
Reply
#3

Try to put
Код:
objectid
Reply
#4

nah not working @nezo2001
Reply
#5

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)
Reply
#6

Use
pawn Код:
public OnPlayerEditDynamicObject(playerid, STREAMER_TAG_OBJECT objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz);
instead
Reply
#7

Quote:
Originally Posted by kloning1
Посмотреть сообщение
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)
"then are you f*cking your script..". Not sure what that means but okay.

OT: If you have new gobject[MAX_OBJ][obinfo];, then you will have to get an empty array index, i.e.:
pawn Код:
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
When you get an empty ID, you can now create an object and add it's ID to the array. After that, you can edit the object and do whatever you want with it.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)