|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Quests::Custom Custom Quests here |
|
|
|
03-12-2019, 03:24 PM
|
|
Sarnak
|
|
Join Date: Oct 2007
Location: West Freeport
Posts: 46
|
|
LUA Bucket Shared Banker
Hey everyone,
Put this one together as part of some NPCs I've been working at here and there for a casino. This one is simply a banker that converts your platinum to a Data Bucket Value based on your Account ID, so it doubles up as a shared bank.
note: With LUA I think you may need to either add a clause to give players the bucket referenced here or add it somewhere else before players can use it.
Code:
function event_say(e)
if (e.message:findi("hail")) then
e.other:Message(315, "Hail and well met mighty adventurer! If you would like to [" .. eq.say_link("exchange",false,"exchange") .. "] platinum for credit, cash [" .. eq.say_link("out",false,"out") .. "], or know how much [" .. eq.say_link("credit",false,"credit") .. "] you have, I can help you with that.");
end
if (e.message:findi("exchange")) then
e.other:Message(315,"If you hand me platinum, I will convert it into credit. Your money will be safe with me, but you can always cash out if you'd like.");
end
if (e.message:findi("credit")) then
local k = eq.get_data(e.other:AccountID() .. "_Casino");
e.other:Message(315,"Currently your balance is " .. k ..".");
end
if (e.message:findi("out")) then
local cashout = eq.get_data(e.other:AccountID() .. "_Casino");
e.other:GiveCash(0, 0, 0, tonumber(cashout));
eq.set_data(e.other:AccountID() .. "_Casino", '0');
e.other:Message(315,"Your balance has been cleared. Enjoy the rest of your stay!");
end
end
function event_trade(e)
local item_lib = require("items");
if(e.trade.platinum ~= 0 and e.trade.platinum ~= nil) then
local c2 = e.trade.platinum;
local c3 = eq.get_data(e.other:AccountID() .. "_Casino");
local c4 = c2 + c3;
eq.set_data(e.other:AccountID() .. "_Casino", tostring(c4));
e.other:Message(315,"Your platinum has been credited to your account. Your current balance is: " .. eq.get_data(e.other:AccountID() .. "_Casino") .. ".");
end
item_lib.return_items(e.self, e.other, e.trade);
end
I tend to use global_player.pl for connection-based checks for my LUA docs/Buckets since it's a convenient way to add em for all chars, if you'd like that then add this to your global_player.pl:
Code:
sub EVENT_CONNECT
{
$key = $client->AccountID() . "_Casino";
if($client->AccountID() . "_Casino" == '')
{
quest::set_data($key, 0);
}
}
__________________
Discord: 1augher | Dev, Darkonites
|
|
|
|
|
|
|
03-26-2019, 07:40 PM
|
|
Sarnak
|
|
Join Date: Oct 2007
Location: West Freeport
Posts: 46
|
|
Did a little cleanup today same script just a little shorter:
Code:
function event_say(e)
if (e.message:findi("hail")) then
e.other:Message(315, "Hail and well met mighty adventurer! If you would like to [" .. eq.say_link("exchange",false,"exchange") .. "] platinum for credit, cash [" .. eq.say_link("out",false,"out") .. "], or know how much [" .. eq.say_link("credit",false,"credit") .. "] you have, I can help you with that.");
elseif (e.message:findi("exchange")) then
e.other:Message(315,"If you hand me platinum, I will convert it into credit. Your money will be safe with me, but you can always cash [" .. eq.say_link("out",false,"out") .. "] if you'd like.");
elseif (e.message:findi("credit")) then
local a = eq.get_data(e.other:AccountID() .. "_Casino");
e.other:Message(315,"Your current balance is " .. a ..".");
elseif (e.message:findi("out")) then
local b = eq.get_data(e.other:AccountID() .. "_Casino");
e.other:GiveCash(0, 0, 0, tonumber(b));
eq.set_data(e.other:AccountID() .. "_Casino", '0');
e.other:Message(315,"Your balance has been cleared. Enjoy the rest of your stay!");
end
end
function event_trade(e)
local item_lib = require("items");
if(e.trade.platinum ~= 0 and e.trade.platinum ~= nil) then
local c = e.trade.platinum;
local d = eq.get_data(e.other:AccountID() .. "_Casino");
local e = c + d;
eq.set_data(e.other:AccountID() .. "_Casino", tostring(e));
e.other:Message(315,"Your platinum has been credited to your character. Current Balance: " .. eq.get_data(e.other:AccountID() .. "_Casino") .. ".");
end
item_lib.return_items(e.self, e.other, e.trade);
end
__________________
Discord: 1augher | Dev, Darkonites
|
|
|
|
03-28-2019, 10:21 AM
|
|
Sarnak
|
|
Join Date: Oct 2007
Location: West Freeport
Posts: 46
|
|
Just noticed the revised script is having issues with naming the variables c, d, and e, replaced with OP function_trade
Code:
function event_trade(e)
local item_lib = require("items");
if(e.trade.platinum ~= 0 and e.trade.platinum ~= nil) then
local c2 = e.trade.platinum;
local c3 = eq.get_data(e.other:AccountID() .. "_Casino");
local c4 = c2 + c3;
eq.set_data(e.other:AccountID() .. "_Casino", tostring(c4));
e.other:Message(315,"Your platinum has been credited to your account. Your current balance is: " .. eq.get_data(e.other:AccountID() .. "_Casino") .. ".");
end
item_lib.return_items(e.self, e.other, e.trade);
end
__________________
Discord: 1augher | Dev, Darkonites
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 11:38 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|