This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lua:scripting:examples:qtimerluavals [2014/12/31 22:04] vodur |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | !!!Original | ||
- | |||
- | <code lua>-- Kain GRALL code for sack of rice | ||
- | say("Keep counting kid... We'll work some of that fight out of you.") emote("puts some bricks on Cloud's back, JUST to make sure he gets a work out.") | ||
- | -- Kain greet code to start quest | ||
- | local ricevnum=7326 | ||
- | local qvnum=14800 | ||
- | -- Don't give quest if timer is still running | ||
- | if ch:qtimer(qvnum)>0 then | ||
- | say("You should give someone else a turn. Come back in %d hours", ch:qtimer(qvnum)) | ||
- | return | ||
- | end | ||
- | -- Don't talk them if already gave something | ||
- | tracker=tracker or {} | ||
- | if tracker[ch.name] then return end | ||
- | |||
- | say("Hey %s! I need some more weights for cloud. Can you bring me a '%s'?", | ||
- | ch.name, | ||
- | getobjproto(ricevnum).shortdescr) | ||
- | -- End Kain greet code | ||
- | </code> | ||
- | |||
- | <code lua>-- Kain give code | ||
- | local ricevnum=7326 | ||
- | local qvnum=14800 | ||
- | |||
- | -- Does he want it? | ||
- | if not(obj1.vnum==ricevnum) then | ||
- | say("I don't want this.") mdo("give '%s' %s", obj1.name, ch.name) mdo("drop %s", obj1.name) return end -- check if their timer is still running if ch:qtimer(qvnum)>0 then say("You should give someone else a turn. Come back in %d hours", ch:qtimer(qvnum)) mdo("give '%s' %s", obj1.name, ch.name) mdo("drop %s", obj1.name) return end -- check if already gave that one tracker=tracker or {} if tracker[ch.name] and tracker[ch.name][obj1.vnum] then say("You already gave me that!") mdo("give '%s' %s", obj1.name, ch.name) mdo("drop %s", obj1.name) return end -- He really wants it! if tracker[ch.name]==nil then tracker[ch.name]={} end tracker[ch.name][obj1.vnum]=true say("Thanks %s!", ch.name) -- Now see if finished if tracker[ch.name][ricevnum] then -- Has the rice qset(ch, qvnum, 1, 23) say("Haha! Cloud will be strong in no time with this kind of weight!") mdo("mob junk '%s'", obj1.name) reward(ch, "qp", 15) tracker[ch.name]=nil else say("I still need a %s", getobjproto( (not(tracker[ch.name][ricevnum]))).shortdescr) end -- End Kain give code | ||
- | </code> | ||
- | |||
- | !!!With luavals | ||
- | |||
- | <code lua>-- Kain GRALL code for sack of rice | ||
- | say("Keep counting kid... We'll work some of that fight out of you.") emote("puts some bricks on Cloud's back, JUST to make sure he gets a work out.") | ||
- | -- Kain greet code to start quest | ||
- | local ricevnum=7326 | ||
- | local time_current=os.time() | ||
- | local time_quest=ch:getval("kain_timer") or 0 | ||
- | |||
- | -- Don't give quest if timer is still running | ||
- | if time_quest>time_current then | ||
- | say("You should give someone else a turn. Come back in %d hours", | ||
- | math.ceil((time_quest-time_current)/3600)) | ||
- | return | ||
- | end | ||
- | -- Don't talk them if already gave something | ||
- | tracker=tracker or {} | ||
- | if tracker[ch.name] then return end | ||
- | |||
- | say("Hey %s! I need some more weights for cloud. Can you bring me a '%s'?", | ||
- | ch.name, | ||
- | getobjproto(ricevnum).shortdescr) | ||
- | -- End Kain greet code | ||
- | </code> | ||
- | |||
- | <code lua>-- Kain give code | ||
- | local ricevnum=7326 | ||
- | |||
- | -- Does he want it? | ||
- | if not(obj1.vnum==ricevnum) then | ||
- | say("I don't want this.") mdo("give '%s' %s", obj1.name, ch.name) mdo("drop %s", obj1.name) return end -- check if their timer is still running local time_current=os.time() local time_quest=ch:getval("kain_timer") or 0 if time_quest>time_current then say("You should give someone else a turn. Come back in %d hours", ch:qtimer(qvnum)) mdo("give '%s' %s", obj1.name, ch.name) mdo("drop %s", obj1.name) return end -- check if already gave that one tracker=tracker or {} if tracker[ch.name] and tracker[ch.name][obj1.vnum] then say("You already gave me that!") mdo("give '%s' %s", obj1.name, ch.name) mdo("drop %s", obj1.name) return end -- He really wants it! if tracker[ch.name]==nil then tracker[ch.name]={} end tracker[ch.name][obj1.vnum]=true say("Thanks %s!", ch.name) -- Now see if finished if tracker[ch.name][ricevnum] then -- Has the rice ch:setval("kain_timer", time_current + 3600*24, true) -- Now + 24hrs say("Haha! Cloud will be strong in no time with this kind of weight!") mdo("mob junk '%s'", obj1.name) reward(ch, "qp", 15) tracker[ch.name]=nil else say("I still need a %s", getobjproto( (not(tracker[ch.name][ricevnum]))).shortdescr) end -- End Kain give code | ||
- | </code> | ||