• 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 Npc thats sell's donation items for custom items.

Joined
Sep 24, 2012
Messages
605
Reaction score
33
Location
Netherlands
Hello all,

Im sharing this npc because i saw allot of requests in the support section.
Here is the npc that sells donation items for another item.

(ive made this NPC just selling one item, because i have different npc's over my world map (knight guide, Paladin guide etc etc) so the player has to explore more.
But feel free to edit the script.

Make a new Npc file (call it what ever you like) and paste it in data > npc

Npc.xml

XML:
<npc name="Donation Seller" script="donorseller.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="133" head="20" body="39" legs="45" feet="7" addons="2"/>
	<parameters>
			<parameter key="message_greet" value="Hello |PLAYERNAME|, I'm trading your donor coins for donor items, Do you want to {trade}?"/>
	</parameters>
</npc>

Now make a new lua file and call it donorseller, Put the file in data > npc > scripts

donorseller.lua

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
 
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, 'trade') or msgcontains(msg, 'How many items they should give')) then
		selfSay('Do you want to give me 5 donor coins for a .......?', cid)
		talkState[talkUser] = 1
	elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
		if(getPlayerItemCount(cid, 6527) >= 5) then
			if(doPlayerRemoveItem(cid, 6527, 5)) then
				doPlayerAddItem(cid, your donor item id here, 1)
				selfSay('Here you are.', cid)
			else
				selfSay('Sorry, you don\'t have enough donor coins.', cid)
			end
		else
			selfSay('Sorry, you don\'t have donor coins.', cid)
		end
		talkState[talkUser] = 0
	elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser])) then
		talkState[talkUser] = 0
		selfSay('Ok then.', cid)
	end
 
	return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

This npc is accepting christmas tokes as trading item, but you can edit this ofcourse.
Have fun with it, and post any errors here.

(tested on 8.60 servers)
 
Works good! :)

Can you make is possible to add more donation items? With different prices? :)

That would be awsome! :)
 
where do i but the id of what i want the npc to sell? =/

also i got error

Code:
[29/03/2013 16:29:26] [Error - LuaScriptInterface::loadFile] data/npc/scripts/donorseller.lua:14: ')' expected near 'donor'
[29/03/2013 16:29:26] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/donorseller.lua
[29/03/2013 16:29:26] data/npc/scripts/donorseller.lua:14: ')' expected near 'donor'
 
where do i but the id of what i want the npc to sell? =/

also i got error

Code:
[29/03/2013 16:29:26] [Error - LuaScriptInterface::loadFile] data/npc/scripts/donorseller.lua:14: ')' expected near 'donor'
[29/03/2013 16:29:26] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/donorseller.lua
[29/03/2013 16:29:26] data/npc/scripts/donorseller.lua:14: ')' expected near 'donor'

doPlayerAddItem(cid, your donor item id here, 1)
the red text is where you should put the id :)
 
how can i make it multiple items with different different amount of currency
 
Back
Top