User:Tribal Toland/slaves
Jump to navigation
Jump to search
Slave Scripts !!
In general these are used fairly often.
First, we get the amount of slaves that are in the object:
integer slaveCount = 0; get_slaves() { slaveCount = 0; integer i = 0; integer num = llGetInventoryNumber(INVENTORY_SCRIPT); do { string name = llGetInventoryName(INVENTORY_SCRIPT,i); if(llSubStringIndex(llToLower(name),"slave") == 0) { ++slaveCount; } ++i; } while(i < num); llOwnerSay("Number of slaves: "+(string)slaveCount); }
If you call this in the state_entry event, it will search the objects inventory for scripts where the name begins with "slave" (case in-sensitive).
Lets break this bit of code down:
get_slaves() //name of function { slaveCount = 0; //sets slaveCount to 0 so we don't double up integer i = 0; //create variable for loop integer num = llGetInventoryNumber(INVENTORY_SCRIPT); //this gets the number of scripts in the objects inventory do //start the do-while loop { string name = llGetInventoryName(INVENTORY_SCRIPT,i); //gets the name of the script at position i in the objects inventory if(llSubStringIndex(llToLower(name),"slave") == 0) //puts the name in lower case. If the name has slave at the beginning increase the number of slaves { ++slaveCount; //increment slaveCount by 1 } ++i; //increment the loop variable by 1. This stops the loop being infinite } while(i < num); //do the do-while loop whilst the variable i (loop variable) is less than the num variable (number of scripts in object) llOwnerSay("Number of slaves: "+(string)slaveCount); //Say out loud the number of slaves in inventory }
You can call this function in the state_entry event.
default { on_rez(integer val) { llResetScript(); } state_entry() { get_slaves(); } }
Next, we need to create our function that decides what slave to use.