Blockland Forums > Modification Help
Scriptobjects
(1/3) > >>
HellsHero:
Alright, I understand how scriptobjects work and all, but there's one problem I encountered that I can't solve.

I'll try to explain it best I can:
In the Scriptobject, I have the variables Type[0], Type[1], ... Type[x] and I want to be able to remove Type[2] and have all the other types 'move down'. So Type[3] becomes Type[2], Type[4] becomes Type[3] and so on.
How would I make it so they will 'move down'?
Iban:
You want to use a ScriptGroup/ScriptObject coupling.
ScriptGroups are essentially SimGroups with the ability to be extended upon, like ScriptObjects.

For instance:


--- Code: ---function MommaBear::addBaby(%so)
{
%baby = new ScriptObject()
{
class = "Bear";
maternal = %so.getID();
name = getRandomString(5) SPC getRandomString(10);
};

if(isObject(%baby))
%so.add(%baby);
else
error("::addBaby() - ScriptObject not created!");
}

if(!isObject(MommaBear))
{
new ScriptGroup(MommaBear)
{
class = "Bear";
name = "Momma";
};

for(%a = 0; %a < getRandom(3, 8); %a++)
MommaBear.addBear();

MommaBear.listObjects();
}
--- End code ---
Truce:

--- Quote from: Iban on March 14, 2011, 01:35:13 PM ---You want to use a ScriptGroup/ScriptObject coupling.
ScriptGroups are essentially SimGroups with the ability to be extended upon, like ScriptObjects.

--- End quote ---

These can be very risky if you need to preserve order. Removing objects will sometimes shuffle the list.
As for moving things down, you can do a loop through each and set it to what will be moving into it.


--- Code: ---for(%i = %slot; %i < %count; %i++)
    %object[%i] = %object[%i + 1];

--- End code ---
Iban:

--- Quote from: Truce on March 14, 2011, 01:38:57 PM ---These can be very risky if you need to preserve order. Removing objects will sometimes shuffle the list.

--- End quote ---
I have never seen a ScriptGroup/SimSet/SimGroup ever shuffle the list of objects. Provide an example on how to produce this.

Edit: You're right, but it doesn't shuffle, it just sticks the last object in the list in the place that the recently deleted object was in.
HellsHero:
Thanks for the quick replies, I really had no idea of what I should have been doing.
Navigation
Message Index
Next page

Go to full version