User:Daemonika Nightfire/Scripts/Giver Tutorial

From Second Life Wiki
< User:Daemonika Nightfire
Revision as of 18:20, 18 May 2013 by Daemonika Nightfire (talk | contribs) (Created page with "==Simple Giver== Der Landmark Giver ist eines der am haeufigsten verwendeten Scripte in SL, beinahe jeder Shop und Club verfuegt ueber so einen. Da es besonders in Malls in hohe…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Simple Giver

Der Landmark Giver ist eines der am haeufigsten verwendeten Scripte in SL, beinahe jeder Shop und Club verfuegt ueber so einen. Da es besonders in Malls in hoher Anzahl vorkommt, sollte man darauf achten so wenig wie moeglich ins Script zu schreiben und nach moeglichkeit den Memory begrenzen, um nicht unnoetig Resourcen zu verschwenden. <lsl> /*

   *DS* Simple Landmark Giver by Daemonika Nightfire
   
   Da es sich hier um ein sehr sehr seeeehr kleines Script handelt, habe ich hier das Memory Limit vorgesehen.
   Der Grund liegt ganz einfach darin, den gesamten Region Memory auf diesem Weg so wenig wie moeglich zu belasten.
   
   Genauere Informationen ueber Script-Memory findest du hier:
   https://wiki.secondlife.com/wiki/User:Daemonika_Nightfire/Scripts/Memory_Walkthrough
  • /

default {

   state_entry()
   {
       // manuelles Script Limit (fuer einen simplen Giver voellig ausreichend)
       llSetMemoryLimit(10000);
   }
   
   touch_start(integer total_number)
   {
       // ueberprueft den Inhalt, ob eine Landmarke vorhanden ist und gibt diese aus
       if(llGetInventoryNumber(INVENTORY_LANDMARK) > 0)
       {
           llGiveInventory(llDetectedKey(0),llGetInventoryName(INVENTORY_LANDMARK, 0));
       }
   }
   
   changed(integer change)
   {
       if(change & CHANGED_INVENTORY)
       {
           // resettet das Script, sobald sich der Inhalt des Objects aendert
           llResetScript();
       }
   }
   
   on_rez(integer Dae)
   {
       // resettet das Script, sobald es gerezzt wird
       llResetScript();
   }

} </lsl>

Natuerlich kann man ein und das selbe Script auch fuer andere Dinge als Landmarken verwenden. Ersetz dazu einfach die Konstanden in den Befehlen llGetInventoryNumber und llGetInventoryName. Die Konstanten beider Befehle sollten natuelrich identisch sein.

<LSL> // Ziemlich nutzlos, dann kann man sich auch das Script sparen. INVENTORY_NONE

// Nicht zu empfehlen, wenn man nicht moechte, dass das Script mit ausgegeben wird. INVENTORY_ALL

// Ideal fuer jeden Shop und Club. INVENTORY_LANDMARK

// Wird oft im Roleplay verwendet um Regeln zu uebergeben. INVENTORY_NOTECARD

// INVENTORY_SOUND

// INVENTORY_OBJECT

// INVENTORY_GESTURE

// INVENTORY_TEXTURE

// INVENTORY_CLOTHING

// INVENTORY_BODYPART

// INVENTORY_SCRIPT

// INVENTORY_ANIMATION </lsl>