/*
*DS* Give Inventory ALL 2 Owner by Daemonika Nightfire
Dieses Script gibt bei klick nur dem Besitzer den kompletten Inhalt, mit ausnahme des Scripts aus.
Anders als bei den aelteren Scripten, wo der Inhalt bei jedem klicken neu ausgelesen wird,
speichert dieses Script die Namen des Inhalts bereits im State_entry in eine Liste.
*/
key owner;
list inventory = [];
string name;
integer num;
default
{
state_entry()
{
// Speichert den Besitzer-Key (UUID)
owner = llGetOwner();
num = llGetInventoryNumber(INVENTORY_ALL);
integer i;
// ab hier wird das komplette Inventar des Objects ausgelesen
for(i = 0; i < num; ++i)
{
// liesst die Inventar-Namen aus
name = llGetInventoryName(INVENTORY_ALL, i);
// Diese Funktion, sorgt dafuer, das das Script nicht zur Liste hinzu gefuegt wird
if(name != llGetScriptName())
{
// fuegt die ausgelesenen Inventar-Namen in die Liste ein.
inventory += name;
}
}
}
touch_start(integer total_number)
{
// reagiert nur, wenn der Besitzer klickt
if(llDetectedKey(0) == owner)
{
if(llGetListLength(inventory) < 1)
{
// bloed wenn die Box leer ist ;)
llWhisper(0,"No items to offer.");
}
else
{
// gibt den gelisteten Inhalt aus (es dauert 3 secunden, bis das Script hier nach wieder reagiert)
llGiveInventoryList(owner, llGetObjectName(), inventory);
}
}
}
changed(integer change)
{
// Hinweis:
// CHANGED_OWNER wird nicht ausgeloest bei Objecten die im Inventar uebergeben werden.
if(change & CHANGED_OWNER)
{
// resettet das Script, sobald sich der Inhalt des Objects aendert
llResetScript();
}
// Ein Reset bei CHANGED_INVENTORY ist in Verbindung mit (no copy) Items nicht zu empfehlen.
//if(change & CHANGED_INVENTORY)
//{
// resettet das Script, sobald sich der Inhalt des Objects aendert
//llResetScript();
//}
}
on_rez(integer Dae)
{
// resettet das Script, sobald es auf dem Boden gerezzt wird
llResetScript();
}
}