SA-MP Forums Archive
Help in object creating - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Help in object creating (/showthread.php?tid=656231)



Help in object creating - Ahmadd - 10.07.2018

I want to create an object in different places using variables.

Код:
#define MAX_LOCKER			2
enum __lockerDat
{
	Float:lockerPos[12],
	lockerID
}

new lockerData[MAX_LOCKER][__lockerDat] =
{
    {{-36.9, -91.6, 1003, 0, 0, 180, -1, -1, -1, 200.0, 0.0}}, // object (man_safenew) (1)
    {{-18.2, -49.6, 1003, 0, 0, 316, -1, -1, -1, 200.0, 0.0}}
};

forward loadlockerData();
public loadlockerData()
{
	for(new i = 0; i < MAX_LOCKER; i++)
	{
		lockerData[i][lockerPlace][0] = CreateDynamicObject(1829, lockerData[i][lockerPos][0], lockerData[i][lockerPos][1], lockerData[i][lockerPos][2], lockerData[i][lockerPos][3], lockerData[i][lockerPos][4], lockerData[i][lockerPos][5], lockerData[i][lockerPos][6], lockerData[i][lockerPos][7], lockerData[i][lockerPos][8], lockerData[i][lockerPos][9], lockerData[i][lockerPos][10], lockerData[i][lockerPos][11]);
		lockerData[i][lockerID] = i;
	}
	return 1;
}
I tried this but it's not working, what to do?


Re: Help in object creating - Ahmadd - 11.07.2018

Bump... Someone help please?


Re: Help in object creating - Florin48 - 11.07.2018

check the coordinates if they are good, and logs from the server may have errors


Re: Help in object creating - Ahmadd - 11.07.2018

Still.. Someone help


Re: Help in object creating - Sew_Sumi - 11.07.2018

Put a printf line above the CreateDynamicObject, and output the data that CreateDynamicObject is going to be receiving... Then you'll see exactly what it's actually getting.


Re: Help in object creating - Florin48 - 11.07.2018

check if streamer is ok

and try

{-36.9, -91.6, 1003, 0, 0, 180}
...

the other data of the objects leave them as they are set in the streamer.
you only need the coordinates where you want to put the object.


Re: Help in object creating - Sew_Sumi - 11.07.2018

Quote:
Originally Posted by Florin48
Посмотреть сообщение
and try

{-36.9, -91.6, 1003, 0, 0, 180}
That's plain out terrible advice... Please learn enums and such before suggesting this again.


There's 12 fields defined, so when it hits this code, it WILL error out saying there's not enough params, or such.

And it's not the streamer that would error, the compiler should fail and give the error at compile time.


Re: Help in object creating - NaS - 11.07.2018

Quote:
Originally Posted by Sew_Sumi
Посмотреть сообщение
That's plain out terrible advice... Please learn enums and such before suggesting this again.


There's 12 fields defined, so when it hits this code, it WILL error out saying there's not enough params, or such.

And it's not the streamer that would error, the compiler should fail and give the error at compile time.
You can define arrays with data and leave out as many entries as you wish (eg only 2 values for an array with the size of 5). The rest will be initialized with zeros.


The problem here is that all entries of lockerPos are Float values, but later they are used for all arguments of CreateDynamicObject (eg. playerid, virtualworld or interior) and are passed as int representation of the Float values.

That means -1.0 will not be passed as -1 and the object will have wrong properties, it will probably not show in any of the virtual worlds, interiors etc.

@OP The best solution would be to not use an embedded array here. It's not neccessary.

Define the lockers like this:

Код:
enum ___lockerDat
{
Float:lockerX,
Float:lockerY,
Float:lockerZ,
Float:lockerRX,
Float:lockerRY,
Float:lockerRZ
lockerVirtualWorld,
lockerPlayerID,
lockerInterior,
Float:lockerStreamDistance,
lockerID
};

new Lockers[MAX_LOCKER][___lockerDat] =
{
{-36.9, -91.6, 1003, 0, 0, 180, -1, -1, -1, 200.0, 0},
// etc..
};
Or just embed the actual coords in one array, but do not mix integer and Float values in one Array without enum.


Re: Help in object creating - Sew_Sumi - 11.07.2018

Quote:
Originally Posted by NaS
Посмотреть сообщение
You can define arrays with data and leave out as many entries as you wish (eg only 2 values for an array with the size of 5). The rest will be initialized with zeros.
Is there any way of making a 'default' (Like 200) rather than having it 0?


But really, the reason for my post was the idea of the constant 'try this' spam that's being thrown around on the forums. No explanations, no reasons for any changes, no showing where any changes are, often with a 'hope this helped' signoff.