summaryrefslogtreecommitdiffstats
path: root/example/serverdata/scripts/npcs/merchant.lua
blob: 46f85545e43e3a8b9612ecdbde45a991cf3e48d8 (plain)
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
----------------------------------------------------------
-- 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