User:Daemonika Nightfire/Scripts/Giver Tutorial
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>