• 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!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

NPC Banker for TFS 0.3.0 Alpha 4 +

ta4e

New Member
Joined
Jul 3, 2007
Messages
25
Reaction score
0
Location
Brasil, São Paulo
A npc banker, without bugs for new Jiddo Npc system

Only work in TFS 0.3.0 because need functions getPlayerBalance, etc... For mystic spirit, try npc created by Gesior

In npcs add :
Banker.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="BankMan" script="data/npc/scripts/bank.lua" walkinterval="25" floorchange="0" access="5" >
	<health now="150" max="150"/>
	<look type="132" head="115" body="0" legs="114" feet="0" addons="3" corpse="2212"/>
	
	<parameters>
		<parameter key="message_greet" value="Hello |PLAYERNAME|. Welcome to my bank, you wanna {deposit}, {withdraw} or {transfer}."/>
		<parameter key="message_alreadyfocused" value="You are drunked ? I talk with you."/>
		<parameter key="message_farewell" value="Goodbye. I wanna see your money... oh you again."/>
	</parameters>
</npc>

In npcs/scripts add :
bank.lua
Code:
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

--------------------MESSAGES------------------------------------------------------------------------------
	if msgcontains(msg, 'deposit') then
		selfSay('Please tell me how much gold it is you would like to deposit.', cid)
		talkState[talkUser] = 1
	
	elseif msgcontains(msg, 'withdraw') then
		selfSay('Please tell me how much gold you would like to withdraw.', cid)
		talkState[talkUser] = 3
		
	elseif msgcontains(msg, 'transfer') then
		selfSay('Please tell me the amount of gold coins you would like to transfer.', cid)
		talkState[talkUser] = 5

	elseif msgcontains(msg, 'balance') then
		n = getPlayerBalance(cid)
		selfSay('Your balance are '..n..' golds.', cid)
		talkState[talkUser] = 0
	

----------------------DEPOSIT-------------------------------------------------------
	elseif talkState[talkUser] == 1 then
		if msgcontains(msg, 'all') then
			n = getPlayerMoney(cid)
			selfSay('Do you want deposit '..n..' golds ?', cid)
			talkState[talkUser] = 2			
		else
			n = getNumber(msg)
			selfSay('Do you want deposit '..n..' golds ?', cid)
			talkState[talkUser] = 2
		end

	elseif talkState[talkUser] == 2 then
		if msgcontains(msg, 'yes') then
			if getPlayerMoney(cid) >= n then
				doPlayerDepositMoney(cid,n)			
				selfSay('a', cid)
				talkState[talkUser] = 0
			else
				selfSay('You don\'t have money.', cid)
			end
		else
				selfSay('Ok then', cid)
		end
	
----------------------WITHDRAW------------------------------------------------------------------------------------------------------------------------------------	
	
	elseif talkState[talkUser] == 3 then
		if msgcontains(msg, 'all') then
			n = getPlayerBalance(cid)
			selfSay('Do you want withdraw '..n..' golds ?', cid)
			talkState[talkUser] = 4			
		else
			n = getNumber(msg)
			selfSay('Do you want withdraw '..n..' golds ?', cid)
			talkState[talkUser] = 4
		end
		
	elseif talkState[talkUser] == 4 then
		if msgcontains(msg, 'yes') then
			if getPlayerBalance(cid) >= n then
				doPlayerWithdrawMoney(cid, n)		
				selfSay('Here you are, '..n..' gold. Now your balance account is ' ..getPlayerBalance(cid)..' golds.', cid)
				talkState[talkUser] = 0
			else
				selfSay('There is not enough gold on your account', cid)
			end
		else
				selfSay('Ok then', cid)
		end
		
----------------------TRANSFER----------------------------------------------------------------------------------------		
	
	elseif talkState[talkUser] == 5 then
		if msgcontains(msg, 'all') then
			n = getPlayerBalance(cid)
			selfSay('Who would you like transfer '..n..' gold to?', cid)
			talkState[talkUser] = 6			
		else
			n = getNumber(msg)
			selfSay('Who would you like transfer '..n..' gold to?', cid)
			talkState[talkUser] = 6
		end
		
	elseif talkState[talkUser] == 6 then
		p = msg
		selfSay('So you would like to transfer '..n..' gold to '..p..'?', cid)
		talkState[talkUser] = 7
		
	elseif talkState[talkUser] == 7 then
		if msgcontains(msg, 'yes') then
			if getPlayerBalance(cid) >= n then
				if doPlayerTransferMoneyTo(cid, p, n) == TRUE then
					selfSay('You have transferred '..n..' gold to '..p..' and your account balance is '..getPlayerBalance(cid)..' golds.', cid)
					talkState[talkUser] = 0
				else
				selfSay('This player does not exist. Please tell me a valid name!', cid)
				end
			else
				selfSay('There is not enough gold on your account', cid)
			end
		else
			selfSay('Ok then', cid)
		end
		
	
	end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())



-- function maded by Gesior--
function getNumber(txt) --return number if its number and is > 0, else return 0
x = string.gsub(txt,"%a","")
x = tonumber(x)
if x ~= nill and x > 0 then
return x
else
return 0
end
end

My english is bad, and npc have some errors in says...
 
Last edited:
Error =/!

osu6om.jpg



2nth9wp.jpg
 
@up

What version you use ?

The functions deposit are added in tfs alpha 0.3.0 4 + -

FOr older versions have a gesior Npc

I think you use a tfs 0.2.0 :p
 
A npc banker, without bugs for new Jiddo Npc system



In npcs add :
Banker.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="BankMan" script="data/npc/scripts/bank.lua" walkinterval="25" floorchange="0" access="5" >
	<health now="150" max="150"/>
	<look type="132" head="115" body="0" legs="114" feet="0" addons="3" corpse="2212"/>
	
	<parameters>
		<parameter key="message_greet" value="Hello |PLAYERNAME|. Welcome to my bank, you wanna {deposit}, {withdraw} or {transfer}."/>
		<parameter key="message_alreadyfocused" value="You are drunked ? I talk with you."/>
		<parameter key="message_farewell" value="Goodbye. I wanna see your money... oh you again."/>
	</parameters>
</npc>

In npcs/scripts add :
bank.lua
Code:
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

--------------------MESSAGES------------------------------------------------------------------------------
	if msgcontains(msg, 'deposit') then
		selfSay('Please tell me how much gold it is you would like to deposit.', cid)
		talkState[talkUser] = 1
	
	elseif msgcontains(msg, 'withdraw') then
		selfSay('Please tell me how much gold you would like to withdraw.', cid)
		talkState[talkUser] = 3
		
	elseif msgcontains(msg, 'transfer') then
		selfSay('Please tell me the amount of gold coins you would like to transfer.', cid)
		talkState[talkUser] = 5

	elseif msgcontains(msg, 'balance') then
		n = getPlayerBalance(cid)
		selfSay('Your balance are '..n..' golds.', cid)
		talkState[talkUser] = 0
	

----------------------DEPOSIT-------------------------------------------------------
	elseif talkState[talkUser] == 1 then
		if msgcontains(msg, 'all') then
			n = getPlayerMoney(cid)
			selfSay('Do you want deposit '..n..' golds ?', cid)
			talkState[talkUser] = 2			
		else
			n = getNumber(msg)
			selfSay('Do you want deposit '..n..' golds ?', cid)
			talkState[talkUser] = 2
		end

	elseif talkState[talkUser] == 2 then
		if msgcontains(msg, 'yes') then
			if getPlayerMoney(cid) >= n then
				doPlayerDepositMoney(cid,n)			
				selfSay('a', cid)
				talkState[talkUser] = 0
			else
				selfSay('You don\'t have money.', cid)
			end
		else
				selfSay('Ok then', cid)
		end
	
----------------------WITHDRAW------------------------------------------------------------------------------------------------------------------------------------	
	
	elseif talkState[talkUser] == 3 then
		if msgcontains(msg, 'all') then
			n = getPlayerBalance(cid)
			selfSay('Do you want withdraw '..n..' golds ?', cid)
			talkState[talkUser] = 4			
		else
			n = getNumber(msg)
			selfSay('Do you want withdraw '..n..' golds ?', cid)
			talkState[talkUser] = 4
		end
		
	elseif talkState[talkUser] == 4 then
		if msgcontains(msg, 'yes') then
			if getPlayerBalance(cid) >= n then
				doPlayerWithdrawMoney(cid, n)		
				selfSay('Here you are, '..n..' gold. Now your balance account is ' ..getPlayerBalance(cid)..' golds.', cid)
				talkState[talkUser] = 0
			else
				selfSay('There is not enough gold on your account', cid)
			end
		else
				selfSay('Ok then', cid)
		end
		
----------------------TRANSFER----------------------------------------------------------------------------------------		
	
	elseif talkState[talkUser] == 5 then
		if msgcontains(msg, 'all') then
			n = getPlayerBalance(cid)
			selfSay('Who would you like transfer '..n..' gold to?', cid)
			talkState[talkUser] = 6			
		else
			n = getNumber(msg)
			selfSay('Who would you like transfer '..n..' gold to?', cid)
			talkState[talkUser] = 6
		end
		
	elseif talkState[talkUser] == 6 then
		p = msg
		selfSay('So you would like to transfer '..n..' gold to '..p..'?', cid)
		talkState[talkUser] = 7
		
	elseif talkState[talkUser] == 7 then
		if msgcontains(msg, 'yes') then
			if getPlayerBalance(cid) >= n then
				if doPlayerTransferMoneyTo(cid, p, n) == TRUE then
					selfSay('You have transferred '..n..' gold to '..p..' and your account balance is '..getPlayerBalance(cid)..' golds.', cid)
					talkState[talkUser] = 0
				else
				selfSay('This player does not exist. Please tell me a valid name!', cid)
				end
			else
				selfSay('There is not enough gold on your account', cid)
			end
		else
			selfSay('Ok then', cid)
		end
		
	
	end
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())



-- function maded by Gesior--
function getNumber(txt) --return number if its number and is > 0, else return 0
x = string.gsub(txt,"%a","")
x = tonumber(x)
if x ~= nill and x > 0 then
return x
else
return 0
end
end

My english is bad, and npc have some errors in says...


Could you please add feature change gold, platinum, crystal?
 
You can add script bankman.xml in bank.xml
like this

Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="BankMan" script="data/npc/scripts/bank.lua" walkinterval="25" floorchange="0" access="5" >
	<health now="150" max="150"/>
	<look type="132" head="115" body="0" legs="114" feet="0" addons="3" corpse="2212"/>
	 <include file="bankman.xml" /> 
	<parameters>
		<parameter key="message_greet" value="Hello |PLAYERNAME|. Welcome to my bank, you wanna {deposit}, {withdraw} or {transfer}."/>
		<parameter key="message_alreadyfocused" value="You are drunked ? I talk with you."/>
		<parameter key="message_farewell" value="Goodbye. I wanna see your money... oh you again."/>
	</parameters>
</npc>
(see bankman original of tfs)
 
ta4e can you add function to change gold, platinum and crystal? Also fix message all to deposit all please.
 
Wich bug? How to do :S it is on change, withdraw, deposit or transfer?
 
Last edited:
EHh i dont know because noob on my server don't tell me :) i change this scripts for gesior banker and now is good :)
 
Back
Top