Features:
- Accountsystem
- Geld abheben/einzahlen
- Zinsen (aktivierbar/deaktivierbar)
- Individueller Yangspeicher (Geldbetrag wählbar)
Special Thanks to Horny.
Code:
quest bank begin
state start begin
function safe_has_money()
local s = mysql_query("select exists from player.speicher where id = '"..item.get_id().."';")
if s == "1" then return true
else return false
end
end
function safe_get_money()
local m = mysql_query("select yang from player.speicher where id = '"..item.get_id().."';")
return tonumber(m)
end
function has_account(id)
if mysql_query("select exists from player.bank where id = '"..id.."';") == "1" then return true
else return false
end
end
function get_money()
return tonumber(mysql_query("select yang from player.bank where id = '"..pc.get_vid().."';")
end
function get_pw()
return tostring(mysql_query("select pw from player.bank where id = '"..pc.get_vid().."';"))
end
when 9001.chat."Informationen" begin
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Unterschied zwischen:")
say()
say_reward("Yangspeicher:")
say("- Nur einmal Yang einzahlen")
say("- Keine Zinsen")
say("- Verschwindet bei aufgebrauchtem Guthaben")
say()
say_reward("Bank:")
say("- Mehrmals Yang einzahlen")
say("- Zinsen")
say("- Verschwindet nicht")
end
when 9001.chat."Bank - Zinsen" with pc.is_gm() begin
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
if select("Zinsen "..({"aktivieren","deaktivieren"})[game.get_event_flag("zinsen")+1],"Abbrechen") == 2 then return end
if game.get_event_flag("zinsen") == 0 then game.set_event_flag("zinsen",1)
else game.set_event_flag("zinsen",0)
end
local msg = {}
msg[0] = {"~~~~~~~~~~ Bank ~~~~~~~~~~","Die Zinsen wurden soeben deaktiviert","Viel Spaß weiterhin!","~~~~~~~~~~ Bank ~~~~~~~~~~"}
msg[1] = {"~~~~~~~~~~ Bank ~~~~~~~~~~","Die Zinsen wurden zu einem Satz von 2,5% aktiviert","Viel Spaß!","~~~~~~~~~~ Bank ~~~~~~~~~~"}
local i = 1
while i < table.getn(msg[game.get_event_flag("zinsen")]) do
notice_all(msg[game.get_event_flag("zinsen")][i])
i = i +1
end
server_loop_timer("zinsen", 60*60*24*7)
mysql_query("insert into common.gm_event_log values("..pc.get_name()..","..tostring("Zinsen")..","..os.date()..");")
end
when zinsen.server_timer begin
mysql_query("update player.bank set yang = yang + (yang/100*2.5);")
end
when 9001.chat."Yangspeicher" begin
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Möchtest du einen individuellen Yangspeicher?")
say("Du kannst einen Betrag auswählen,")
say("den du speichern möchtest.")
if select("Ja, ich will einen","Nein") == 2 then return end
pc.give_item2(99997, 1)
end
when 99997.use begin
if bank.safe_has_money() == false then
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say("Möchtest du dem Yangspeicher")
say("einen Wert geben?")
if select("Ja","Nein") == 2 then return end
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say("Gib einen Wert ein:")
local safe_yang_in = tonumber(input())
if safe_yang_in == 0 or safe_yang_in == nil or type(safe_yang_in) ~= "number" then return end
if safe_yang_in > pc.get_money() then
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say("Du hast nicht genügend Yang")
return
end
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say_reward(string.format("%d Yang zuweisen?", safe_yang_in))
if select("Ja","Nein") == 2 then return end
mysql_query("insert into player.speicher values ("..item.get_id()..","..safe_yang_in..");")
pc.change_money(-safe_yang_in)
return
end
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say_reward(string.format("Guthaben: %d", bank.safe_get_money()))
say()
if select("Yang abheben","Abbrechen") == 2 then return end
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say("Gib einen Betrag an:")
local yang_ab = tonumber(input())
if yang_ab == 0 or yang_ab == nil or type(yang_ab) ~= "number" then return end
if yang_ab > bank.safe_get_money() then
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say("Du hast nicht genügend Guthaben.")
return
end
if yang_ab + pc.get_money() > 1999999999 then
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say("Du hast zu viel Yang.")
return
end
say_title(string.format("%s:", item_name(string.format("%d", item.get_vnum()))))
say_reward(string.format("%d Yang abheben?", yang_ab))
if select("Ja","Nein") == 2 then return end
if yang_ab == bank.safe_get_money() then
mysql_query("delete from player.speicher where id = '"..item.get_id().."';")
item.remove()
else
mysql_query("update player.speicher set yang = yang - "..yang_ab..";")
end
pc.change_money(yang_ab)
end
when 9001.chat."Bank" begin
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
if bank.has_account(pc.get_vid()) == false then
say("Was möchtest du tun?")
if select("Account anlegen","Abbrechen") == 2 then return end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Bitte gib ein Passwort ein:")
say_reward("Achtung: Das Passwort muss mind. 8 Zeichen lang sein!")
local pw_in = tostring(input())
if pw_in == nil or string.len(pw_in) < 8 or pw_in == "" then return end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say_reward(pw_in)
say("Als Passwort speichern?")
if select("Ja","Nein") == 2 then return end
mysql_query("insert into player.bank values ("..pc.get_vid()..",0);")
return
end
say("Bitte gib dein Passwort ein:")
local pw_abfr = tostring(input())
if pw_abfr == nil or pw_abfr == "" then return end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
if pw_abfr ~= bank.get_pw() then
say("Das eingegebene Passwort war leider falsch.")
return
end
say("Was möchtest du tun?")
local what_do = select("Konto verwalten","Geld einzahlen","Geld abheben","Geld versenden","Abbrechen")
if what_do == 5 then return
elseif what_do == 1 then -- Konto verwalten
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Was möchtest du tun?")
local manage_konto = select("Informationen","Passwort ändern","Abbrechen")
if manage_konto == 3 then return
elseif manage_konto == 1 then -- Informationen
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Bitte das Passwort eingeben:")
local pw_abfr2 = tostring(input())
if pw_abfr2 == nil or pw_abfr2 == "" then return end
if pw_abfr2 ~= bank.get_pw() then
return chat("Das eingegebene Passwort war falsch.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say_reward(string.format("Guthaben: %d", bank.get_money()))
say_reward(string.format("Passwort: %s", bank.get_pw()))
say()
elseif manage_konto == 2 then -- Passwort ändern
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Bitte das aktuelle Passwort eingeben:")
local current_pw = tostring(input())
if current_pw == nil or current_pw == "" then return end
if current_pw ~= bank.get_pw() then
return chat("Das angegebene Passwort ist falsch.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Bitte ein neues Passwort eingeben:")
say_reward("Achtung: Das Passwort muss mind. 8 Zeichen lang sein.")
local new_pw = tostring(input())
if new_pw == nil or new_pw == "" or new_pw == bank.get_pw() then return end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Passwort bestätigen:")
if tostring(input()) ~= new_pw then
return chat("Die Passwörter stimmen nicht überein.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say_reward(new_pw)
say("Als neues Passwort speichern?")
if select("Ja","Nein") == 2 then return end
mysql_query("update player.bank set pw = '"..new_pw.."';")
chat(string.format("<Bank>: Passwort wurde geändert."))
end
elseif what_do == 2 then -- Geld einzahlen
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Bitte Passwort eingeben:")
if tostring(input()) ~= bank.get_pw() then
return chat("Das eingegebene Passwort ist falsch.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say_reward(string.format("Aktuelles Guthaben: %d", bank.get_money()))
say()
say("Wieviel Yang möchtest du einzahlen?")
local yang_in = tonumber(input())
if yang_in == nil or yang_in == 0 or type(yang_in) ~= "number" then return end
if yang_in > pc.get_money() then
return chat("Du hast nicht genügend Yang.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say(yang_in.." Yang einzahlen?")
if select("Ja","Nein") == 2 then return end
mysql_query("update player.bank set yang = yang + "..yang_in..";")
pc.change_money(-yang_in)
chat(string.format("<Bank>: %d Yang wurden eingezahlt.", yang_in))
elseif what_do == 3 then -- Geld abheben
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Bitte Passwort eingeben:")
if tostring(input()) ~= bank.get_pw() then
return chat("Das eingegebene Passwort ist falsch.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say_reward(string.format("Aktuelles Guthaben: %d", bank.get_money()))
say_reward(string.format("Vorhandenes Yang: %d", pc.get_money()))
say()
say("Wieviel Yang möchtest du abheben?")
local yang_ab = tonumber(input())
if yang_ab == nil or yang_ab == 0 or type(yang_ab) ~= "number" then return end
if yang_ab > bank.get_money() then
return chat("Auf deinem Konto ist nicht genügend Yang.")
end
if yang_ab + pc.get_money() > 1999999999 then
return chat("Du hast zu viel Yang.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say(yang_ab.." Yang abheben?")
if select("Ja","Nein") == 2 then return end
mysql_query("update player.bank set yang = yang - "..yang_ab..";")
pc.change_money(yang_ab)
chat(string.format("<Bank>: %d Yang wurden abgehoben.", yang_ab))
elseif what_do == 4 then -- Geld versenden
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Gib den Spielernamen des Empfängers ein:")
local send_to_target = tostring(input())
if mysql_query("select exists from player.player where name = '"..send_to_target.."';") ~= "1" then
return chat("Der angegebene Spieler existiert nicht.")
end
local id = mysql_query("select id from player.player where name = '"..send_to_target.."';")
if bank.has_account(id) == false then
return chat("Der angegebene Spieler besitzt kein Konto.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say("Gib einen Betrag an:")
local send_yang = tonumber(input())
if send_yang == nil or send_yang == 0 or type(send_yang) ~= "number" then return end
if send_yang > pc.get_money() then
return chat("Du hast nicht genügend Yang.")
end
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
say(string.format("Dem Spieler %s %d Yang senden?", send_to_target, send_yang))
if select("Ja","Nein") == 2 then return end
mysql_query("update player.bank set yang = yang - "..send_yang.." where id = '"..pc.get_vid().."';")
mysql_query("update player.bank set yang = yang + "..send_yang.." where id = '"..id.."';")
chat("<Bank>: Das Geld wurde überwiesen.")
end
end
end
end
MfG .Remix







