• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

[NPC] Request

Tibia Rox

Member
Joined
Feb 4, 2009
Messages
1,181
Reaction score
9
Location
U.S.A
Can anyone make me a script for an npc that will exchange 20 demon dusts (5906) for a demon helmet (2494), 50 demon dusts for demon armor (2494), and 50 dusts for demon legs (2495)??

If so, thanks a lot!
 
Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="eventer" script="event.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="139" head="20" body="39" legs="45" feet="7" addons="0"/>
	 <parameters>
                <parameter key="message_greet" value="Hello |PLAYERNAME|.i hope you are here to help me to get my demon dusts from thos devils.Ask me for {reward} if so."/>
                <parameter key="message_farewell" value="Good bye."/>
                <parameter key="message_walkaway" value="Farewell then.." />
    </parameters>

</npc>
LUA:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
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

local items = { ["demon armor"] = { cost = 5906, count = 50},  -- [itemid] 
                ["demon legs"] = {cost = 5906, count = 50},
				["demon helmet"] = {cost = 5906, count = 20}
			 }

 function creatureSayCallback(cid, type, msg)
    if(not npcHandler:isFocused(cid)) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if msgcontains(msg, 'reward') then
	   selfSay("Then, I assume you have some demon dusts for me right?",cid)
	   talkState[talkUser] =1
    elseif msgcontains(msg, 'yes') and  talkState[talkUser] == 1 then
	      selfSay("I exchange : {Demon Armor} for 50 dmeon dusts, {Demon Legs} for 50 dmeon dusts, {Demon Helemt} for 20 demon dusts.",cid)
	         talkState[talkUser] = 3
    elseif msgcontains(msg, 'no') and  talkState[talkUser] == 1 then
	      selfSay("Then, Why are you bothering me?!.",cid)
	         talkState[talkUser] = 0
    end
    for k, v in pairs(items) do
        if msgcontains(msg, k) and  talkState[talkUser] == 3 then
	      if not doPlayerRemoveItem(cid, v.cost,v.count) then
		       selfSay("Seems you dont have ".. v.count .." x demon dusts.Go away noob!.",cid)
			    talkState[talkUser] = 0
	     else
		      doPlayerAddItem(cid,getItemIdByName(k),1)
		      selfSay("Here you are.",cid)
			    talkState[talkUser] = 0
	     end
	end 
    end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 
Last edited:
Back
Top