2022-06-06 22:04:52 +00:00

92 lines
2.7 KiB
Lua

CaveBot.Extensions.Bank = {}
local balance = 0
CaveBot.Extensions.Bank.setup = function()
CaveBot.registerAction("bank", "#db5a5a", function(value, retries)
local data = string.split(value, ",")
local waitVal = 300
local amount = 0
local actionType
local npcName
local transferName
local balanceLeft
if #data ~= 3 and #data ~= 2 and #data ~= 4 then
warn("CaveBot[Bank]: incorrect value!")
return false
else
actionType = data[1]:trim():lower()
npcName = data[2]:trim()
if #data == 3 then
amount = tonumber(data[3]:trim())
end
if #data == 4 then
transferName = data[3]:trim()
balanceLeft = tonumber(data[4]:trim())
end
end
if actionType ~= "withdraw" and actionType ~= "deposit" and actionType ~= "transfer" then
warn("CaveBot[Bank]: incorrect action type! should be withdraw/deposit/transfer, is: " .. actionType)
return false
elseif actionType == "withdraw" then
local value = tonumber(amount)
if not value then
warn("CaveBot[Bank]: incorrect amount value! should be number, is: " .. amount)
return false
end
end
if retries > 5 then
print("CaveBot[Bank]: too many tries, skipping")
return false
end
local npc = getCreatureByName(npcName)
if not npc then
print("CaveBot[Bank]: NPC not found, skipping")
return false
end
if not CaveBot.ReachNPC(npcName) then
return "retry"
end
if actionType == "deposit" then
CaveBot.Conversation("hi", "deposit all", "yes")
CaveBot.delay(storage.extras.talkDelay*3)
return true
elseif actionType == "withdraw" then
CaveBot.Conversation("hi", "withdraw", value, "yes")
CaveBot.delay(storage.extras.talkDelay*4)
return true
else
-- first check balance
CaveBot.Conversation("hi", "balance")
schedule(5000, function()
local amountToTransfer = balance - balanceLeft
if amountToTransfer <= 0 then
warn("CaveBot[Bank] Not enough gold to transfer! proceeding")
return false
end
CaveBot.Conversation("hi", "transfer", amountToTransfer, transferName, "yes")
warn("CaveBot[Bank] transferred "..amountToTransfer.." gold to: "..transferName)
end)
CaveBot.delay(storage.extras.talkDelay*11)
return true
end
end)
CaveBot.Editor.registerAction("bank", "bank", {
value="action, NPC name",
title="Banker",
description="action type(withdraw/deposit/transfer), NPC name, (if withdraw: amount|if transfer: name, balance left)",
})
end
onTalk(function(name, level, mode, text, channelId, pos)
if mode == 51 and text:find("Your account balance is") then
balance = getFirstNumberInText(text)
end
end)