• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

NPC (New) Santa Claus

JDB

OtLand Veteran
Joined
Jun 1, 2009
Messages
4,145
Solutions
2
Reaction score
115
Tested and Working.

Credits:
*Gesior for original code.
*Colandus for the time function.
*JDB for updating and adding special timed feature.

First off I would like to say Merry Christmas to everyone!
I hope that you enjoy this release, and use it this season. ;)

data/lib/050-function.lua
Lua:
function timeString(timeDiff)
    local dateFormat = {
        {"day", timeDiff / 60 / 60 / 24},
        {"hour", timeDiff / 60 / 60 % 24},
        {"minute", timeDiff / 60 % 60},
        {"second", timeDiff % 60}
    }

    local out = {}
    for k, t in ipairs(dateFormat) do
        local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
    
    return table.concat(out)
end

Santa NPC: (Real Tibia Looktype)

Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Santa Claus" script="santa.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="160" head="0" body="112" legs="93" feet="95"/>
</npc>

Lua:
local PRESENT_STORAGE = 29885 -- Storage ID
local gifts = {
        {10, 6531, 1}, -- 1% to get Santa Hat [10]
        {30, 6512, 1}, -- 3% to get Santa Doll [30]
        {40, 2112, 1}, --  4% to get Teddy Bear [40]
        {100, 2160, 10}, -- 10% to get 10 Crystal Coins [100]
        {150, 2688, 10}, -- 15% to get 10 Candy Canes [150]
        {150, 2152, 100}, -- 15% to get 100 Platinum Coins [150]
        {200, 2111, 5}, -- 20% to get 10 Snowballs [200]
        {250, 2675, 10}, -- 25% to get 10 Orange [250]
        {350, 2674, 15}, -- 35% to get 10 Red Apples [350]
        {500, 2687, 10} -- 50% to get 10 Cookies [500]
    }

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

function onCreatureAppear(cid)                  npcHandler:onCreatureAppear(cid)				end
function onCreatureDisappear(cid)               npcHandler:onCreatureDisappear(cid)				end
function onCreatureSay(cid, type, msg)          npcHandler:onCreatureSay(cid, type, msg)		end
function onThink()                              npcHandler:onThink()							end

function SantaNPC(cid, message, keywords, parameters, node) 
    if(not npcHandler:isFocused(cid)) then 
        return false 
    end 
    if (parameters.present == true) then 
        if (getPlayerStorageValue(cid, PRESENT_STORAGE) == 1) then
		selfSay("Do not try to trick me! You have already recieved your present...", cid)
		return true
	end

        local item = {} 
        local reward = 0
        local count = ""
        for i = 1, #gifts do
            item = gifts[i]
            if (math.random(0,999) < item[1]) then 
                reward = item[2] 
                subType = item[3] 
                if subType > 1 then 
                    count = subType .. " " 
                end 
                break 
            end 
        end 
        doPlayerAddItem(cid, reward, subType) 
        setPlayerStorageValue(cid, PRESENT_STORAGE, 1)
        npcHandler:say('HO-HO-HO! I have ' .. count .. getItemNameById(reward) .. ' for you.', cid)
    else 
        npcHandler:say('Come back when you start behaving.', cid) 
    end 
    npcHandler:resetNpc() 
    return true 
end 
  
npcHandler:setMessage(MESSAGE_GREET, "HO-HO-HO, Merry Christmas |PLAYERNAME|. I have presents for the good children.") 

local noNode = KeywordNode:new({'no'}, SantaNPC, {present = false}) 
local yesNode = KeywordNode:new({'yes'}, SantaNPC, {present = true}) 

local node = keywordHandler:addKeyword({'present'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Have you been well behaved and good this year?...'}) 
    node:addChildKeywordNode(yesNode)
    node:addChildKeywordNode(noNode)

npcHandler:addModule(FocusModule:new())

Player: Hi
Santa Claus: HO-HO-HO, Merry Christmas. I have presents for the good children.
Player: present
Santa Claus: Have you been well behaved and good this year?...
Player: yes
 
Last edited:
good!

but I thought this was already released
 
Yes Elf, you rox :thumbup:

Thanks for comments.
 
Well I couldn't figure out the time thing, but it works now.
 
Thank you for the start of a new era. You actually take time to present your scripts and not just post the scripts.

Keep up the presentation/layouts.
 
1 year later :p script still roxs
 
please help the npc does not work a picture of the console
447c.png
 
this doesnt work for 8.60....

[24/11/2014 17:07:57] [Warning - Npc::loadFromXml] Cannot load npc file (data/npc/santa claus.xml).
[24/11/2014 17:07:57] Info: failed to load external entity "data/npc/santa claus.xml"
 
Back
Top