This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lua:scripting:examples:vodurbirthdayletters [2014/07/07 18:44] vodur |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | <code>Name: [birthday quest letter] Area: [ 57] Aes Sedai Clan Area Vnum: [31450] Type: [treasure] Level: [ 1] Wear flags: [take] Extra flags: [nolocate] Material: [unknown] Condition: [ 100] Weight: [ 0] Cost: [ 0] OPs: [ 0/ 5] Short desc: birthday quest letter Long desc: Birthday quest letter Notes: Used for birthday quest, progs will set the actual name, desc, etc. OBJPrograms for [31450]: Number Vnum Trigger Phrase ------ ---- ------- ------ [ 0] 31450 put 100 | ||
- | </code> | ||
- | |||
- | </font> | ||
- | |||
- | <code lua>local lettervnum=31450 | ||
- | local bname="Vodur" | ||
- | local bcolor="{m" | ||
- | |||
- | local qpreward=29 | ||
- | -- try to make word out of obj and all letters in cont | ||
- | -- return true if doesn't make word or return false | ||
- | -- and reward qp and destroy the letters | ||
- | function put_trigger( ch, cont ) | ||
- | local letters={} | ||
- | for i=1,#bname do | ||
- | letters[i]=bname:sub(i,i) | ||
- | end | ||
- | |||
- | local items={ obj } | ||
- | for k,v in pairs(cont.contents) do | ||
- | if v.vnum==lettervnum then | ||
- | table.insert(items, v) | ||
- | end | ||
- | end | ||
- | |||
- | local used={} | ||
- | for k,v in pairs(items) do | ||
- | local iletter=string.match(v.name, "letter (%a)") | ||
- | for i=#letters,1,-1 do | ||
- | if iletter==letters[i] then | ||
- | table.insert(used, v) | ||
- | table.remove(letters,i) | ||
- | break | ||
- | end | ||
- | end | ||
- | end | ||
- | |||
- | if #letters<;;1 then | ||
- | sendtochar( ch, "The letters merge together to form the word "..bcolor..bname.."{x!".. | ||
- | "\n\rAfter an instant it vanishes completely.\n\r") | ||
- | ch:reward(ch, "qp", qpreward) | ||
- | |||
- | for k,v in pairs(used) do | ||
- | v:destroy() | ||
- | end | ||
- | return false | ||
- | end | ||
- | |||
- | return true | ||
- | end | ||
- | |||
- | function make_letter(l) | ||
- | if not(l.vnum == lettervnum) then | ||
- | error("wtf") | ||
- | end | ||
- | |||
- | local letters={} | ||
- | for i=1,#bname do | ||
- | letters[i]=bname:sub(i,i) | ||
- | end | ||
- | |||
- | local letter=letters[randnum(1, #letters)] | ||
- | |||
- | l.name="letter "..letter | ||
- | l.shortdescr="the letter "..bcolor..letter.."{x" | ||
- | l.description="It's a letter. Put it in a container with other letters and see what happens!" end | ||
- | </code> | ||