summaryrefslogtreecommitdiff
path: root/example/serverdata/scripts/npcs/merchant.lua
diff options
context:
space:
mode:
authorYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-02-15 23:53:07 +0100
committerYohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer>2011-02-15 23:53:07 +0100
commite9992c6c5fe44dd440a0bbe2d86a1f2909338efe (patch)
treea2be7dc81c9d14fd45505c25480370f9ee9d1e94 /example/serverdata/scripts/npcs/merchant.lua
parentf8ad53ea03253d3c792a7c0df9384d63aee12e85 (diff)
downloadmanaserv-e9992c6c5fe44dd440a0bbe2d86a1f2909338efe.tar.gz
manaserv-e9992c6c5fe44dd440a0bbe2d86a1f2909338efe.tar.bz2
manaserv-e9992c6c5fe44dd440a0bbe2d86a1f2909338efe.tar.xz
manaserv-e9992c6c5fe44dd440a0bbe2d86a1f2909338efe.zip
Added a merchant and a blacksmith on the template map.
They're both using a fully working merchant lua function. Resolves: Mana-mantis #295.
Diffstat (limited to 'example/serverdata/scripts/npcs/merchant.lua')
-rw-r--r--example/serverdata/scripts/npcs/merchant.lua99
1 files changed, 99 insertions, 0 deletions
diff --git a/example/serverdata/scripts/npcs/merchant.lua b/example/serverdata/scripts/npcs/merchant.lua
new file mode 100644
index 00000000..46f85545
--- /dev/null
+++ b/example/serverdata/scripts/npcs/merchant.lua
@@ -0,0 +1,99 @@
+----------------------------------------------------------
+-- Merchant Function Sample --
+----------------------------------------------------------------------------------
+-- Copyright 2009-2010 The Mana World Development Team --
+-- --
+-- This file is part of The Mana World. --
+-- --
+-- The Mana World is free software; you can redistribute it and/or modify it --
+-- under the terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2 of the License, or any later version. --
+----------------------------------------------------------------------------------
+
+function Merchant(npc, ch, buy_sell_table)
+
+-- Important note: You can add two tables made of trinoms here when calling the
+-- merchant function. E.g.: Merchant(npc, ch, buy_table, sell_table)
+-- Even though, the function here will see only one table:
+-- buy_sell_table[1] will corresponds to the first table (used to list
+-- boughtable items, and buy_sell_table[2] listing sellable items.
+
+ local rights = mana.chr_get_rights(ch);
+
+ if (rights >= 128) then
+ do_message(npc, ch, "Oh mighty server administrator, how can I avoid your wrath?")
+ elseif (rights >= 8) then
+ do_message(npc, ch, "How can I be of assistance, sir gamemaster?")
+ elseif (rights >= 4) then
+ do_message(npc, ch, "What feature would you like to debug, developer?")
+ elseif (rights >= 2) then
+ do_message(npc, ch, "How can I assist you in your testing duties?")
+ elseif (rights >= 1) then
+ if mana.chr_get_gender(ch) == GENDER_FEMALE then
+ do_message(npc, ch, "What do you want, Madam?")
+ else
+ do_message(npc, ch, "Wat do you want, Sir?")
+ end
+ else
+ do_message(npc, ch, "...Aren't you supposed to be banned??")
+ end
+
+ -- Constructing the choice list
+ local choice_table = {}
+ table.insert (choice_table, "To Buy...")
+
+ if (buy_sell_table[2] == nil) then
+ table.insert (choice_table, "To sell stuff...")
+ else
+ table.insert (choice_table, "Can you make me a price for what I have?")
+ end
+ table.insert (choice_table, "Nevermind...")
+
+ local v = do_choice(npc, ch, choice_table)
+
+ --Debug and learning purpose
+ --for i,k in ipairs(choice_table) do print(i,k) end
+ -- The buy table first line content
+ --print (((buy_sell_table[1])[1])[1], ((buy_sell_table[1])[1])[2], ((buy_sell_table[1])[1])[3])
+ -- The sell table first line content
+ --print (((buy_sell_table[2])[1])[1], ((buy_sell_table[2])[1])[2], ((buy_sell_table[2])[1])[3])
+
+ if v == 1 then
+ -- "To buy."
+ local buycase = mana.npc_trade(npc, ch, false, buy_sell_table[1])
+ if buycase == 0 then
+ do_message(npc, ch, "What do you want to buy?")
+ elseif buycase == 1 then
+ do_message(npc, ch, "I've got no items to sell.")
+ else
+ do_message(npc, ch, "Hmm, something went wrong... Ask a scripter to fix the buying mode!")
+ end
+
+ elseif v == 2 then
+
+ if buy_sell_table[2] == nil then
+ -- "To sell stuff..."
+ local sellcase = mana.npc_trade(npc, ch, true)
+ if sellcase == 0 then
+ do_message(npc, ch, "Ok, what do you want to sell?")
+ elseif sellcase == 1 then
+ do_message(npc, ch, "I'm not interested by any of your items.")
+ else
+ do_message(npc, ch, "Hmm, something went wrong... Ask a scripter to fix this!")
+ end
+ else
+ -- "Can you make me a price for what I have?"
+ local sellcase = mana.npc_trade(npc, ch, true, buy_sell_table[2])
+ if sellcase == 0 then
+ do_message(npc, ch, "Here we go:")
+ elseif sellcase == 1 then
+ do_message(npc, ch, "I'm not that interested in any of your items.")
+ else
+ do_message(npc, ch, "Hmm, something went wrong... Ask a scripter to fix me!")
+ end
+ end
+
+ end
+ do_message(npc, ch, "See you later!")
+ do_npc_close(npc, ch)
+end