Difference between revisions of "User:Kuraiko Yoshikawa/sandbox/LSL Goodies/KVNSB"
m |
m (requested spellcheck (preparing for translation)) |
||
Line 15: | Line 15: | ||
Inspired by [[User:Zai Lynch/Sandbox/LSL Goodies|Zai's LSL Goodies]] I will publish from time to time some (helpfull) Scripts. | Inspired by [[User:Zai Lynch/Sandbox/LSL Goodies|Zai's LSL Goodies]] I will publish from time to time some (helpfull) Scripts. | ||
<p> | <p> | ||
I'm not a LSL Guru but all scripts are tested and | I'm not a LSL Guru but all scripts are tested and I hope they're working fine. o.o | ||
<br> | <br> | ||
In case you got problems with one of my scripts nevertheless, send me an InWorld IM or post it at the [[{{TALKPAGENAME}}|talk page]]! | |||
</p> | </p> | ||
<p>Since these are contributions to the SL Wiki, all scripts are released under [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike 3.0 License]. | <p>Since these are contributions to the SL Wiki, all scripts are released under [http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-Share Alike 3.0 License]. | ||
Line 30: | Line 30: | ||
<div style="background-color: #cfc0e0; font-size: 1.2em; font-weight: bold; border-bottom: black 1px dashed;">Summary:</div> | <div style="background-color: #cfc0e0; font-size: 1.2em; font-weight: bold; border-bottom: black 1px dashed;">Summary:</div> | ||
<div style="padding: 10px 10px 10px 10px;"> | <div style="padding: 10px 10px 10px 10px;"> | ||
Das KVNSB kann <b>alles</b> | Das KVNSB kann <b>alles</b> verkaufen! Egal ob du Scripte (du solltest sie auf not running setzen um Komplikationen mit dem/den Vendor Script(s) vorzubeugen), Notecards, Landmarks, Bodypars, Texturen, Gestures oder Sounds O_O. Es verkauft <b>ALLES</b> nur keine Freebies XD (wird vieleicht in einer folgenden Version ein Workaround eingebaut). Der Preis muss also mindestens auf 1L$ stehen. | ||
<p> | <p> | ||
Was kann das KVNSB ausser alles Verkaufen?<br> | Was kann das KVNSB ausser alles Verkaufen?<br> | ||
*Alles Verkaufen ;P | *Alles Verkaufen ;P | ||
*Items müssen nicht | *Items müssen nicht geboxed werden. Sie werden als Inventar Folder übertragen, dessen Name frei im Script wählbar ist. | ||
*Benachrichtigung per Email über einen | *Benachrichtigung per Email über einen Verkauf (wenn gewünscht -> deaktivierbar). | ||
*@Touch eine definierbare Notecard senden | *@Touch eine definierbare Notecard senden. | ||
* | *Diese Notecard vom Verkauf ausschließen (also sie wird nicht mit den anderen Items übertragen). | ||
* | *Die Vendorscripte werden auch nicht mit dem Kauf übertragen! | ||
* | *Ein belibiger Hovertext mit beliebiger Farbe (RGB Wert) kann gesetzt werden. | ||
</p> | </p> | ||
Ich glaube das war das wichtigste!<br> | Ich glaube, das war das wichtigste!<br> | ||
Ahja beim Starten fragt | Ahja beim Starten fragt Dich das KVNSB nach der Erlaubnis Lindendollar von deinem Konto abzubuchen. Dies musst Du akzeptieren, ansonsten schaltet es in den Offline Modus! Es wird Dir nicht einfach Geld von Deinem Konto abgezogen. Dies ist nur nötig da manchmal bei hohen Lags das Eingabefeld bei dem PayDialog auftauchen kann und jemand Dir zu wenig oder zu viel bezahlen könnte. Sollte dies passieren, reagiert das Script darauf und gibt bei zu viel den Restbetrag zurück und bei zu wenig den ganzen Betrag der ja zu wenig war... | ||
<p> | <p> | ||
Solltest | Solltest Du das KVNSB neu starten wollen (weil du z.B. die Permission-Debit-Anfrage abgelehnt hast oder etwas am Inventar geändert hast (nach Inventaränderungen MUSST du das KVNSB Neustarten ansonsten is der neue Inventarinhalt dem Script nicht bekannt!)) drücke einfach auf den Prim und halte mindestens 5 Sekunden den Left-Click. | ||
</p> | </p> | ||
</div> | </div> | ||
Line 60: | Line 60: | ||
integer gPrice = 10; // set the price of the product in L$ | integer gPrice = 10; // set the price of the product in L$ | ||
string gFolder = "Advanced Vendor Box"; // set the folder | string gFolder = "Advanced Vendor Box"; // set the name of folder you'd like to see created in the customers inventory o.o | ||
integer gNotify = TRUE; // | integer gNotify = TRUE; // if you'd like to get a notification when an item is purchased then set this value to TRUE (the box will send you a mail) | ||
string gMail = "foobar@example.com"; // is notify TRUE then set your | string gMail = "foobar@example.com"; // is notify TRUE then set your mail addy here | ||
string gNoteCard = ""; // have you | string gNoteCard = ""; // have you got an info notecard? Set the name of it. You have no info notecard? Leave it blank (example: string gNoteCard = "";) | ||
integer gGiveNC = FALSE; // Give the | integer gGiveNC = FALSE; // Give the notecard with other inventory content to the customer? When YES set it to TRUE | ||
// otherwise notecard is only for information on touch | // otherwise notecard is only for information on touch | ||
string gHover = "I'm a KVNSB test box\nTouch me hard :P\nBuy me!!!\nPlease *_*"; // set a hover text... | string gHover = "I'm a KVNSB test box\nTouch me hard :P\nBuy me!!!\nPlease *_*"; // set a hover text... leave it blank for no hover! (i hate hover text o.O) (\n = new line) | ||
vector gHoverColor = <255,255,255>; // set the hovertext color in RGB values (example: <255,255,255> for white) | vector gHoverColor = <255,255,255>; // set the hovertext color in RGB values (example: <255,255,255> for white) | ||
Line 248: | Line 248: | ||
</lsl> | </lsl> | ||
<b>The Mail Script</b> (.MAIL ID (example: .MAIL 01 (this format is very important!!! > "(dot)MAIL whitespace number" begin by one)<br> | <b>The Mail Script</b> (.MAIL ID (example: .MAIL 01 (this format is very important!!! > "(dot)MAIL whitespace number" begin by one)<br> | ||
Is gNotify TRUE you must copy as many as 1 (one) of the follow script (standart is 5 (five)) | Is gNotify TRUE you must copy as many as 1 (one) of the follow script (standart is 5 (five)). In case you got less than five, change the integer gMailScripts @ Advance Variables. | ||
<lsl> | <lsl> | ||
integer gID; | integer gID; |
Revision as of 14:00, 2 July 2008
Unfinished! | |
This page is unfinished o.o Don't use this Stuff!!! |
Intro
Inspired by Zai's LSL Goodies I will publish from time to time some (helpfull) Scripts.
I'm not a LSL Guru but all scripts are tested and I hope they're working fine. o.o
Since these are contributions to the SL Wiki, all scripts are released under Creative Commons Attribution-Share Alike 3.0 License. KVNSB (Kuraiko's VendorBox is not a Simple Box :P)
Summary:
Das KVNSB kann alles verkaufen! Egal ob du Scripte (du solltest sie auf not running setzen um Komplikationen mit dem/den Vendor Script(s) vorzubeugen), Notecards, Landmarks, Bodypars, Texturen, Gestures oder Sounds O_O. Es verkauft ALLES nur keine Freebies XD (wird vieleicht in einer folgenden Version ein Workaround eingebaut). Der Preis muss also mindestens auf 1L$ stehen.
Was kann das KVNSB ausser alles Verkaufen?
Ich glaube, das war das wichtigste! Solltest Du das KVNSB neu starten wollen (weil du z.B. die Permission-Debit-Anfrage abgelehnt hast oder etwas am Inventar geändert hast (nach Inventaränderungen MUSST du das KVNSB Neustarten ansonsten is der neue Inventarinhalt dem Script nicht bekannt!)) drücke einfach auf den Prim und halte mindestens 5 Sekunden den Left-Click. The Main Script (.VEND) integer gPrice = 10; // set the price of the product in L$ string gFolder = "Advanced Vendor Box"; // set the name of folder you'd like to see created in the customers inventory o.o integer gNotify = TRUE; // if you'd like to get a notification when an item is purchased then set this value to TRUE (the box will send you a mail) string gMail = "foobar@example.com"; // is notify TRUE then set your mail addy here string gNoteCard = ""; // have you got an info notecard? Set the name of it. You have no info notecard? Leave it blank (example: string gNoteCard = "";) integer gGiveNC = FALSE; // Give the notecard with other inventory content to the customer? When YES set it to TRUE // otherwise notecard is only for information on touch string gHover = "I'm a KVNSB test box\nTouch me hard :P\nBuy me!!!\nPlease *_*"; // set a hover text... leave it blank for no hover! (i hate hover text o.O) (\n = new line) vector gHoverColor = <255,255,255>; // set the hovertext color in RGB values (example: <255,255,255> for white) //-------------------\\ // Advance Variables \\ //-------------------\\ integer gMailScripts = 5; // How many .MAIL <ID> scripts are in the PRIM inventory? //-------------------\\ // No Edit Variables \\ //-------------------\\ integer gPerms = FALSE; integer gTime; list gInventory; integer gListLength; integer gAktMail = 1; default { run_time_permissions(integer perm) { if (perm & 0x2) { gPerms = TRUE; state createInventory; } else { llSetText("Offline", <1,0,0>, 1.0); } } state_entry() { llSetText("Please Accept PERMISSION DEBIT", <0,1,0>, 1.0); if(!gNotify) gNotify = 0; if (llGetInventoryNumber(-1) > 1 + gMailScripts) llRequestPermissions(llGetOwner(), 0x2); else llSetText("Offline ~ Nothing @ Inventory o.O", <1,0,0>, 1.0); llResetTime(); } touch_start (integer t) { if (llDetectedKey(0) == llGetOwner()) { gTime = llGetUnixTime(); } } touch(integer t) { if (llDetectedKey(0) == llGetOwner()) { if (llGetUnixTime()-gTime > 5) { llResetScript(); } } } } state createInventory { state_entry() { llSetText("Read Inventory", <1,0.5,0>, 1.0); integer length = llGetInventoryNumber(-1); integer x; for (x = 0; x < length; x++) { if(llGetInventoryName(-1, x) == llGetScriptName()) { } else if (gNoteCard != "" && gGiveNC == TRUE && llGetInventoryName(-1, x) == gNoteCard) { gInventory += gNoteCard; } else { if (llGetInventoryName(-1, x) == gNoteCard || llGetSubString(llGetInventoryName(-1, x), 0, 5) == ".MAIL " ) { } else gInventory += llGetInventoryName(-1, x); } } state online; } } state online { state_entry() { llSetText(gHover, gHoverColor/255, 1.0); llSetPayPrice(gPrice, [gPrice, -1, -1]); } money(key giver, integer amount) { if (amount == gPrice) { llGiveInventoryList(giver, gFolder, gInventory); llWhisper(0, "Thanks " + llKey2Name(giver) + "!"); if (gAktMail == gMailScripts) gAktMail = 1; if(gNotify) { llMessageLinked(LINK_THIS, gAktMail, "[PURCHASER]: " + llKey2Name(giver) + "\n[PURCHASED ITEMS]: " + llList2CSV(gInventory), (key)gMail); ++gAktMail; }
} else if (amount > gPrice) { integer back = amount - gPrice; llGiveInventoryList(giver, gFolder, gInventory); llMessageLinked(LINK_THIS, 22, "You have payed too much. The excess amount will be refunded to you.", giver); llWhisper(0, "You have payed to much. The excess amount will be refunded to you."); llGiveMoney(giver, back); if (gAktMail == gMailScripts) gAktMail = 1; if(gNotify) { llMessageLinked(LINK_THIS, gAktMail, "[PURCHASER]: " + llKey2Name(giver) + "\n[PURCHASED ITEMS]: " + llList2CSV(gInventory), (key)gMail); ++gAktMail; } } else { llMessageLinked(LINK_THIS, 20, "Sorry, it's not enough.", giver); llWhisper(0, "Sorry, it's not enough."); llGiveMoney(giver, amount); } } touch_start(integer t) { if (llDetectedKey(0) == llGetOwner()) { gTime = llGetUnixTime(); } else { if(gNoteCard != "" && ~llGetInventoryType(gNoteCard) ) { llGiveInventory(llDetectedKey(0), gNoteCard); } else { llWhisper(0, "Sorry no information for this item found."); } } } touch(integer t) { if (llDetectedKey(0) == llGetOwner()) { if (llGetUnixTime()-gTime > 5) { llResetScript(); } } } } </lsl>
The Mail Script (.MAIL ID (example: .MAIL 01 (this format is very important!!! > "(dot)MAIL whitespace number" begin by one) default { state_entry() { gID = (integer)llGetSubString(llGetScriptName(), 5, -1); } link_message(integer send_num, integer num, string lmsg, key id) { if (num == gID) { llEmail(id, "[SOLD]: " + llGetObjectName(), lmsg); } } } </lsl> |
Sandbox SL Chatlog Wikifier | Kurai's LSL Goodies | Zai's LSL Goodies Lovely Stuff Zai's Page |