Register for your free account! | Forgot your password?

You last visited: Today at 14:00

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Banksystem

Discussion on [Release] Banksystem within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1

 
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
[Release] Banksystem

Hatte mal Langeweile und hab's in ca 10 Minuten hingekritzelt.

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
MySQL-Tabellen dürft ihr selber machen.

MfG .Remix
Lord iRemix is offline  
Thanks
16 Users
Old 05/22/2013, 17:01   #2
 
elite*gold: 0
Join Date: May 2013
Posts: 92
Received Thanks: 4
Werde ich mal ausprobieren.
EX1ST' is offline  
Old 05/22/2013, 17:01   #3
 
QuickFlameZ's Avatar
 
elite*gold: 0
Join Date: Mar 2012
Posts: 646
Received Thanks: 696
Hab sie ja schon halb gesehen und sie ist dir sehr Yut gelungen
Mfg
QuickFlameZ is offline  
Old 05/22/2013, 17:01   #4
 
.CHHorny's Avatar
 
elite*gold: 168
The Black Market: 146/0/0
Join Date: Feb 2010
Posts: 4,333
Received Thanks: 2,640
Nun bekomme ich auch Zinsen für mein erarbeitetes Geld.

Sehr schön.
.CHHorny is offline  
Thanks
1 User
Old 05/22/2013, 17:01   #5

 
olieg's Avatar
 
elite*gold: 3
Join Date: Feb 2012
Posts: 926
Received Thanks: 341
Wow danke vielmalls, tönt schonmal echt geil.
olieg is offline  
Old 05/22/2013, 17:04   #6
 
elite*gold: 65
The Black Market: 111/0/3
Join Date: May 2011
Posts: 1,280
Received Thanks: 1,153
Nice Michi
Lord Elinoy is offline  
Old 05/22/2013, 17:10   #7
 
lfcmaus's Avatar
 
elite*gold: 205
Join Date: Jun 2010
Posts: 5,334
Received Thanks: 2,510
fehlt nurnoch das jeder spieler ne kontonummer bekommt und ne blz und schon kann man kontoführungsgebühren und überweisungen zu anderen spielern machen muah^^
lfcmaus is offline  
Thanks
2 Users
Old 05/22/2013, 18:25   #8
 
*~.ιηνιη¢ιвℓє.~*'s Avatar
 
elite*gold: 5
Join Date: Dec 2011
Posts: 1,823
Received Thanks: 951
schaut nice aus danke
*~.ιηνιη¢ιвℓє.~* is offline  
Old 05/22/2013, 18:43   #9
 
Red Firestar's Avatar
 
elite*gold: 0
The Black Market: 185/0/0
Join Date: Jul 2012
Posts: 5,520
Received Thanks: 1,350
Danke x3 für dein Banksystem x3 werde ich gebrauchen aber werde es umschreiben damit man jeden Monat ne bestimmte menge an Zinsen bezahlen muss und damit es auch in den - bereich geht. ^^
Red Firestar is offline  
Old 05/22/2013, 18:46   #10
 
Stαgє6's Avatar
 
elite*gold: 0
Join Date: Jul 2011
Posts: 2,019
Received Thanks: 1,471
Nette quest danke das du sie teilst.
Stαgє6 is offline  
Old 05/22/2013, 18:47   #11
 
elite*gold: 748
Join Date: Jul 2012
Posts: 1,597
Received Thanks: 1,981
Danke Sage ja du hast es drauf
.Harlem² is offline  
Old 05/22/2013, 19:18   #12
 
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
Hättest ja noch machen können ,dass man den Zinssatz festlegen kann auf manchen Servern finde ich 2,5% schon zu hoch.

EDIT:
Kann mich auch irren aber wo wird da festgelegt für wen das Yang ist.
(Würde auch keinen server_timer machen sondern einen normalen timer damit der Spieler nur Zinsen bekommt wenn er online ist.)
PHP Code:
        when zinsen.server_timer begin
            mysql_query
("update player.bank set yang = yang + (yang/100*2.5);")
        
end 
DasKuchen is offline  
Old 05/22/2013, 19:44   #13

 
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
Quote:
Originally Posted by DasKuchen View Post
Hättest ja noch machen können ,dass man den Zinssatz festlegen kann auf manchen Servern finde ich 2,5% schon zu hoch.

EDIT:
Kann mich auch irren aber wo wird da festgelegt für wen das Yang ist.
(Würde auch keinen server_timer machen sondern einen normalen timer damit der Spieler nur Zinsen bekommt wenn er online ist.)
PHP Code:
        when zinsen.server_timer begin
            mysql_query
("update player.bank set yang = yang + (yang/100*2.5);")
        
end 
Kann man dann ja noch machen, wenn man möchte.
€: An der Querry kann man ja erkennen, dass es für alle ist.
Lord iRemix is offline  
Thanks
1 User
Old 05/22/2013, 23:31   #14
 
elite*gold: 0
Join Date: Jul 2012
Posts: 55
Received Thanks: 25
Quote:
Originally Posted by PurpleBeatzz View Post
Danke x3 für dein Banksystem x3 werde ich gebrauchen aber werde es umschreiben damit man jeden Monat ne bestimmte menge an Zinsen bezahlen muss und damit es auch in den - bereich geht. ^^
Du meinst du hast das Wirtschaftskriesen-Script integriert
Aerociety is offline  
Thanks
1 User
Reply

Tags
bank, banksystem, quest


Similar Threads Similar Threads
[R]Banksystem
07/22/2013 - Metin2 PServer Guides & Strategies - 37 Replies
Abend, hier folgt eine erneutes Release, und zwar das Banksystem. Die Quest habe ich vor etwa 2 Monaten geschrieben, also kann es sein das diese noch etwas veraltet ist, sie sollte jedoch trotzdem ihren Zweck erfüllen und sauber laufen. Was beinhaltet das Banksystem : -Einzahlen von Yang
Banksystem mit Überweißung [Mysql] [UNTESTED]
04/15/2013 - Metin2 PServer Guides & Strategies - 22 Replies
Yo Leute hatte mal wieder Langeweile und hab mal kurzerhand eine Idee gehabt, eine Bankquest mit Überweißung usw. Die Quest habe ich aus Langeweile geschrieben. Sie enthält bestimmt noch den ein oder anderen Fehler, da ich sie innerhalb von 15 Minuten geschrieben habe. Außerdem habe ich sie nicht getestet sollte aber im Allgemeinen alles hinhauen. Zumindest die Leute, die ein bisschen Questen können, sollten diese Quest entbuggen können, falls man Fehler findet, da ich keine Lust habe nach...
Banksystem für Iconomy
02/24/2012 - Minecraft - 5 Replies
Hallo! Ich suche ein Banksystem (nicht Chestshop), indem man per Befehl Sachen verkaufen kann und dann sein Geld bekommt. Also indem man dann /sell Item Anzahl oder so eingeben kann. Kennt jemand eins? Vielen Dank im vorraus, Tommi23
[MT2 - PSERVER] Banksystem für das MT2GS CMS von hen!
03/20/2011 - Metin2 Trading - 8 Replies
Hallo Liebe Leute, ich habe ja in den letzten Tagen einige Erweiterungen für das MT2GS CMS geschrieben. Da ich eine Free Version von einem "Bank System" gemacht habe, möchte ich hier Version 2. und Version 3. Anbieten. Version 1. ist die Kostenlose Version. Was beinhaltet Version 2? In Version 2. habt ihr eine Log Tabelle, könnt sehen welcher User wann welche Aktion durchgeführt hat. Außerdem ist eine 24h Lock drin für die Aktionen Yang vom Char. entnehmen sowie Yang dem Char....



All times are GMT +1. The time now is 14:07.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.