1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
----------------------------------------------------------
-- 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
mana.announce(mana.being_get_name(ch) .. " the big administrator was at my shop!", mana.being_get_name(npc))
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.being_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, "Tell me about the objects on this map")
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
elseif v == 3 then
local objects = mana.map_get_objects()
do_message(npc, ch, "There are " .. #objects .. " objects on this map, their names are:")
for i=1,#objects do
do_message(npc, ch, tostring(i) .. ": " .. objects[i]:name())
end
end
do_message(npc, ch, "See you later!")
end
|