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:45] vodur |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | <code> | ||
- | 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> | ||
- | |||
- | <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> | ||