Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2013
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.52 KB | None | 0 0
  1. local keywordHandler = KeywordHandler:new()
  2. local npcHandler = NpcHandler:new(keywordHandler)
  3. NpcSystem.parseParameters(npcHandler)
  4. local talkState = {}
  5. local transaction = {}
  6. local transfer = {}
  7. local transfer_name = {}
  8.  
  9. function onCreatureAppear(cid)
  10. npcHandler:onCreatureAppear(cid)
  11. end
  12. function onCreatureDisappear(cid)
  13. npcHandler:onCreatureDisappear(cid)
  14. end
  15. function onCreatureSay(cid, type, msg)
  16. npcHandler:onCreatureSay(cid, type, msg)
  17. end
  18. function onThink()
  19. npcHandler:onThink()
  20. end
  21.  
  22. function creatureSayCallback(cid, type, msg)
  23. if(not npcHandler:isFocused(cid)) then
  24. return false
  25. end
  26. local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
  27.  
  28. local function getMoneyCount(s)
  29. local b, e = s:find("%d+")
  30. return b and e and tonumber(s:sub(b, e)) or -1
  31. end
  32.  
  33. local function doPlayerAddSafeMoney(cid, money)
  34. moneyAdd = money
  35. freeCap = getPlayerFreeCap(cid)
  36. crystalCoins = money >= 10000 and money / 10000 or 0
  37. money = money - crystalCoins * 10000
  38. platinumCoins = money >= 100 and money / 100 or 0
  39. money = money - platinumCoins * 100
  40. goldCoins = money
  41. if(freeCap >= (crystalCoins * 0.1 + platinumCoins * 0.1 + goldCoins * 0.1) and doPlayerAddMoney(cid, moneyAdd)) then
  42. return true
  43. else
  44. return false
  45. end
  46. end
  47.  
  48. -- Check Balance
  49. if(msgcontains(msg, "balance")) then
  50. balance = getPlayerBalance(cid)
  51. if(balance > 100000 and balance < 1000000) then
  52. msg = "You certainly have made a pretty penny. "
  53. elseif(balance > 1000000 and balance < 10000000) then
  54. msg = "Wow, you have reached the magic number of a million gp!!! "
  55. elseif(balance > 10000000) then
  56. msg = "I think you must be one of the richest inhabitants of Tibia! "
  57. elseif (balance < 100000) then
  58. msg = ""
  59. end
  60. npcHandler:say(msg .. "Your account balance is " .. balance .. " gold.", cid)
  61.  
  62. -- Deposit All
  63. elseif(msg == "deposit all") then
  64. if(getPlayerMoney(cid) > 0) then
  65. npcHandler:say("Do you really want to deposit " .. getPlayerMoney(cid) .. " to your bank account?", cid)
  66. transaction[talkUser] = getPlayerMoney(cid)
  67. talkState[talkUser] = 1
  68. else
  69. npcHandler:say("You don't have any money with you.", cid)
  70. transaction[talkUser] = 0
  71. talkState[talkUser] = 0
  72. end
  73.  
  74. -- Withdraw Money
  75. elseif(msgcontains(msg, "withdraw")) then
  76. npcHandler:say("How much money would you like to withdraw from your bank account?", cid)
  77. talkState[talkUser] = 2
  78. elseif(talkState[talkUser] == 2) then
  79. if(tonumber(msg) > 0 and getMoneyCount(msg) <= getPlayerBalance(cid)) then
  80. npcHandler:say("Would you like to withdraw " .. getMoneyCount(msg) .. " gold from your bank account?", cid)
  81. transaction[talkUser] = getMoneyCount(msg)
  82. talkState[talkUser] = 3
  83. elseif (tonumber(msg) < 1) then
  84. npcHandler:say("Sure, you want nothing you get nothing!", cid)
  85. talkState[talkUser] = 0
  86. elseif(getMoneyCount(msg) < 1) then
  87. npcHandler:say("How much money would you like to withdraw from your bank account?", cid)
  88. elseif(getMoneyCount(msg) > getPlayerBalance(cid)) then
  89. npcHandler:say("You don't have enought money on your bank account.", cid)
  90. talkState[talkUser] = 0
  91. end
  92.  
  93. -- Deposit Money
  94. elseif(msgcontains(msg, "deposit")) then
  95. npcHandler:say("How much money would you like to deposit to your bank account?", cid)
  96. talkState[talkUser] = 4
  97. elseif(talkState[talkUser] == 4) then
  98. if(tonumber(msg) > 0 and getMoneyCount(msg) <= getPlayerMoney(cid)) then
  99. npcHandler:say("Would you like to deposit " .. getMoneyCount(msg) .. " gold to your bank account?", cid)
  100. transaction[talkUser] = getMoneyCount(msg)
  101. talkState[talkUser] = 5
  102. elseif(tonumber(msg) < 1) then
  103. npcHandler:say("You are joking, aren't you??", cid)
  104. talkState[talkUser] = 0
  105. elseif(getMoneyCount(msg) < 1) then
  106. npcHandler:say("How much money would you like to deposit to your bank account?", cid)
  107. elseif(getMoneyCount(msg) > getPlayerMoney(cid)) then
  108. npcHandler:say("You don't have enought money with you.", cid)
  109. talkState[talkUser] = 0
  110. end
  111.  
  112. -- Transfer Money
  113. elseif(msgcontains(msg, "transfer")) then
  114. npcHandler:say("Who do you want transfer money to?", cid)
  115. talkState[talkUser] = 6
  116. elseif(talkState[talkUser] == 6) then
  117. if(getPlayerGUIDByName(string.lower(msg)) > 0 and string.lower(msg) ~= string.lower(getCreatureName(cid))) then
  118. transfer[talkUser] = getPlayerGUIDByName(string.lower(msg))
  119. transfer_name[talkUser] = string.lower(msg)
  120. npcHandler:say("How much money would you like to transfer?", cid)
  121. talkState[talkUser] = 7
  122. else
  123. npcHandler:say("There is no such player.", cid)
  124. talkState[talkUser] = 0
  125. end
  126. elseif(talkState[talkUser] == 7) then
  127. if(tonumber(msg) > 0 and getMoneyCount(msg) <= getPlayerBalance(cid)) then
  128. npcHandler:say("Would you like to transfer " .. getMoneyCount(msg) .. " to " .. transfer_name[talkUser] .. "?", cid)
  129. transaction[talkUser] = getMoneyCount(msg)
  130. talkState[talkUser] = 8
  131. elseif(tonumber(msg) < 1) then
  132. npcHandler:say("Please think about it. Okay?", cid)
  133. talkState[talkUser] = 0
  134. elseif(getMoneyCount(msg) < 0) then
  135. npcHandler:say("How much money would you like to transfer?", cid)
  136. elseif(getMoneyCount(msg) > getPlayerMoney(cid)) then
  137. npcHandler:say("You don't have enought money on your bank account.", cid)
  138. talkState[talkUser] = 0
  139. end
  140.  
  141. -- Yes
  142. elseif(msgcontains(msg, "yes")) then
  143. if(talkState[talkUser] == 1) then
  144. if(getPlayerMoney(cid) == transaction[talkUser]) then
  145. doPlayerRemoveMoney(cid, transaction[talkUser])
  146. doPlayerSetBalance(cid, getPlayerBalance(cid)+ transaction[talkUser])
  147. npcHandler:say("You deposited " .. transaction[talkUser] .. " gold coins to your bank account.", cid)
  148. transaction[talkUser] = 0
  149. talkState[talkUser] = 0
  150. else
  151. npcHandler:say("You don't have enought money.", cid)
  152. transaction[talkUser] = 0
  153. talkState[talkUser] = 1
  154. end
  155. elseif(talkState[talkUser] == 3) then
  156. if(doPlayerAddSafeMoney(cid, transaction[talkUser])) then
  157. doPlayerSetBalance(cid, getPlayerBalance(cid)- transaction[talkUser])
  158. npcHandler:say("You withdrawed " .. transaction[talkUser] .. " gold coins from your bank account.", cid)
  159. else
  160. npcHandler:say("You don't have anought capacity or slots in backpack to withdraw " .. transaction[talkUser] .. " gold.", cid)
  161. end
  162. transaction[talkUser] = 0
  163. talkState[talkUser] = 0
  164. elseif(talkState[talkUser] == 5) then
  165. if(transaction[talkUser] <= getPlayerMoney(cid)) then
  166. doPlayerRemoveMoney(cid, transaction[talkUser])
  167. doPlayerSetBalance(cid, getPlayerBalance(cid)+ transaction[talkUser])
  168. npcHandler:say("You deposited " .. transaction[talkUser] .. " gold coins to your bank account.", cid)
  169. transaction[talkUser] = 0
  170. talkState[talkUser] = 0
  171. else
  172. npcHandler:say("You don't have enought money.", cid)
  173. transaction[talkUser] = 0
  174. talkState[talkUser] = 1
  175. end
  176. elseif(talkState[talkUser] == 8) then
  177. if(transaction[talkUser] <= getPlayerMoney(cid)) then
  178. doPlayerRemoveMoney(cid, transaction[talkUser])
  179. doPlayerSetBalance(cid, getPlayerBalance(cid)- transaction[talkUser])
  180. npcHandler:say("You transfered " .. transaction[talkUser] .. " gold coins to " .. transfer_name[talkUser] .. "'s bank account.", cid)
  181. if(getPlayerByName(""..transfer_name[talkUser].."")) then
  182. doPlayerSetBalance(getPlayerByName(""..transfer_name[talkUser]..""), getPlayerBalance(getPlayerByName(""..transfer_name[talkUser].."")) + transaction[talkUser])
  183. else
  184. transferGold(""..transfer_name[talkUser].."", transaction[talkUser])
  185. end
  186. transaction[talkUser] = 0
  187. transfer[talkUser] = 0
  188. transfer_name[talkUser] = ""
  189. talkState[talkUser] = 0
  190. else
  191. npcHandler:say("You don't have enought money.", cid)
  192. transaction[talkUser] = 0
  193. talkState[talkUser] = 1
  194. end
  195. end
  196. elseif(msgcontains(msg, "no")) then
  197. npcHandler:say("The customer is king! Come back anytime you want to if you wish to withdraw your money.", cid)
  198. talkState[talkUser] = 0
  199. end
  200. return true
  201. end
  202.  
  203. npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
  204. npcHandler:addModule(FocusModule:new())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement