Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server > Metin2 PServer Guides & Strategies
You last visited: Today at 00:01

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

Advertisement



[Release] erweiterte Questflags per MySQL

Discussion on [Release] erweiterte Questflags per MySQL within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
[Release] erweiterte Questflags per MySQL

Damit könnt ihr in einer Questflag einen String und eine Nummer speichern, diese Einzeln oder gleichzeitig abfragen und wenns mal sein muss direkt in der Datenbank bearbeiten, ohne den Server zu rebooten.

Nichts großes aber bestimmt hilfreich für manche

SQL:
Code:
CREATE TABLE questflag (
	pid int(11) NOT NULL,
	qid int(5) NOT NULL,
	flagname varchar(50) NOT NULL,
	flag_num int(100) NOT NULL DEFAULT 0,
	flag_str varchar(100) NOT NULL DEFAULT '',
	set_time datetime NOT NULL,
	PRIMARY KEY(pid, qid, flagname)
);
LUA:
Code:
local getqf_query = "SELECT flag_num, flag_str FROM player.questflag WHERE pid = %s AND qid = %s AND flagname = '%s' LIMIT 1;"
local setqf_query = "INSERT INTO player.questflag (pid, qid, flagname, flag_num, flag_str, set_time) VALUES (%s, %s, '%s', %s, %s, CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE flag_num = %s, flag_str = %s, set_time = CURRENT_TIMESTAMP;"

function pc.getf(questindex, flagname)
	local qf = mysql_query(string.format(getqf_query, pc.get_player_id(), questindex, flagname))
	if not qf or table.getn(qf) < 1 then
		return {0, ""}
	end
	return {tonumber(qf.flag_num[1]), qf.flag_str[1]}
end

function pc.getf_num(questindex, flagname)
	return pc.getf(questindex, flagname)[1]
end

function pc.getf_str(questindex, flagname)
	return pc.getf(questindex, flagname)[2]
end

function pc.setf(questindex, flagname, flag_num, flag_str)
	mysql_query(string.format(setqf_query, pc.get_player_id(), questindex, flagname, flag_num, "'"..flag_str.."'", flag_num, "'"..flag_str.."'"))
end

function pc.setf_num(questindex, flagname, flag_num)
	mysql_query(string.format(setqf_query, pc.get_player_id(), questindex, flagname, flag_num, "flag_str", flag_num, "flag_str"))
end

function pc.setf_str(questindex, flagname, flag_str)
	mysql_query(string.format(setqf_query, pc.get_player_id(), questindex, flagname, "flag_num", "'"..flag_str.."'", "flag_num", "'"..flag_str.."'"))
end

function pc.getqf(flagname)
	return pc.getf(q.getcurrentquestindex(), flagname)
end

function pc.getqf_num(flagname)
	return pc.getf_num(q.getcurrentquestindex(), flagname)
end

function pc.getqf_str(flagname)
	return pc.getf_str(q.getcurrentquestindex(), flagname)
end

function pc.setqf(flagname, flag_num, flag_str)
	pc.setf(q.getcurrentquestindex(), flagname, flag_num, flag_str)
end

function pc.setqf_num(flagname, flag_num)
	pc.setf_num(q.getcurrentquestindex(), flagname, flag_num)
end

function pc.setqf_str(flagname, flag_str)
	pc.setf_str(q.getcurrentquestindex(), flagname, flag_str)
end
Viel Spaß damit!

EDIT:

Quote:
Originally Posted by It's me, 1093 View Post
Habe ich überlegt zu machen allerdings finde ich es für mich so wie es ist angenehmer.

Hier die andere Möglichkeit:
Code:
function pc.setqf(flagname, flag)
	({pc.setqf_num, pc.setqf_str})[type(flag) == "number" and 1 or 2](flagname, flag)
end
rollback is offline  
Thanks
10 Users
Old 06/06/2015, 12:20   #2
 
Fearn's Avatar
 
elite*gold: 108
Join Date: May 2013
Posts: 456
Received Thanks: 854
Wie immer : Super Geil!
Fearn is offline  
Thanks
2 Users
Old 06/06/2015, 12:21   #3
 
elite*gold: 0
Join Date: Apr 2015
Posts: 428
Received Thanks: 361
Direkt mal nutzen Erspart Zeit :9
#Metho is offline  
Thanks
1 User
Old 06/06/2015, 12:35   #4
 
elite*gold: 0
Join Date: Sep 2013
Posts: 491
Received Thanks: 675
ich finde du hast dort zu viele funktionen.
am besten wäre es wenn pc.setqf einfach checkt ob es sich um einen int oder einen string handelt und von selbst dann aussucht wie er es einträgt
.Kibito is offline  
Thanks
3 Users
Old 06/06/2015, 13:10   #5
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,938
Quote:
Originally Posted by .Kibito View Post
ich finde du hast dort zu viele funktionen.
am besten wäre es wenn pc.setqf einfach checkt ob es sich um einen int oder einen string handelt und von selbst dann aussucht wie er es einträgt
Sollte über die type-Funktion ja eigentlich kein Problem sein
DasSchwarzeT is offline  
Thanks
1 User
Old 06/06/2015, 13:13   #6
 
elite*gold: 5
Join Date: Mar 2015
Posts: 499
Received Thanks: 376
Quote:
Originally Posted by srsly not DasSchwarzeT View Post
Sollte über die type-Funktion ja eigentlich kein Problem sein
Code:
 if type(pc.getqf("flag")) == 'number' then
meinst es so?

btt: nett.
KΛIƬӨ is offline  
Thanks
1 User
Old 06/06/2015, 13:19   #7

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by .Kibito View Post
ich finde du hast dort zu viele funktionen.
am besten wäre es wenn pc.setqf einfach checkt ob es sich um einen int oder einen string handelt und von selbst dann aussucht wie er es einträgt
Habe ich überlegt zu machen allerdings finde ich es für mich so wie es ist angenehmer.

Hier die andere Möglichkeit:
Code:
function pc.setqf(flagname, flag)
	({pc.setqf_num, pc.setqf_str})[type(flag) == "number" and 1 or 2](flagname, flag)
end
rollback is offline  
Thanks
1 User
Old 06/06/2015, 17:29   #8
 
elite*gold: 0
Join Date: Jun 2015
Posts: 113
Received Thanks: 26
Wie du sagtest, nichts großes aber wirklich nett und zu gebrauchen

Danke dir.
AnTii™ is offline  
Thanks
1 User
Old 06/06/2015, 17:51   #9
 
Dev'Malum's Avatar
 
elite*gold: 0
Join Date: Dec 2014
Posts: 229
Received Thanks: 149
Zehr zupah, tanke tir!
Dev'Malum is offline  
Thanks
1 User
Old 06/06/2015, 21:28   #10
 
Fydes's Avatar
 
elite*gold: 534
Join Date: Mar 2014
Posts: 1,614
Received Thanks: 983
Sauber, wie immer.
Fydes is offline  
Thanks
1 User
Old 06/07/2015, 00:28   #11
 
mcmst54321's Avatar
 
elite*gold: 0
Join Date: Jun 2012
Posts: 232
Received Thanks: 104
Gute Arbeit
mcmst54321 is offline  
Reply


Similar Threads Similar Threads
[Release] (Test Your Quests) - Mini-Quest zum ändern der Questflags
03/01/2015 - Metin2 PServer Guides & Strategies - 3 Replies
Ist für mich immer wieder nützlich wenn ich gerade an Quests arbeite bei denen ich Questflags mit z.B. Restkills etc. habe, deswegen möchte ich sie mit Euch teilen. Ist nichts besonderes aber mMn extrem hilfreich. In die Input-Felder kann gibt man einfach Questname, Flagname und Wert ein und schon setzt ihr den Questflag neu. quest setflags begin state start begin when 20355.chat."Set the states" with pc.name == "" begin say("quest?") local whichquest = input()...
[Release]Neue Questflags
01/29/2015 - Metin2 PServer Guides & Strategies - 7 Replies
Liebe Community, ihr kennt ja die bisher vorhandenen Questflags, mit denen ihr Zahlen speichern könnt. Mit der Variante, die mein Kumpel entwickelt hat, könnt ihr auch Tabellen und Strings speichern.(Also eigentlich alles) Ich betone:"Diese art von Questflags stammt nicht von mir, ich wurde lediglich gebeten sie zu Releasen" Anhang oder Spoiler: function get_locale_quest_path() local file = io.open("usr/tmp","r") if file then
Erweiterte Questfunction
12/15/2013 - Metin2 Private Server - 4 Replies
Moin Gibt es eine function, mit der man den job(also die Rasse) ändern kann z.B. von Krieger auf Ninja???
[FRAGE]Questflags
07/23/2012 - Metin2 Private Server - 2 Replies
Hallo liebe Community, ich hätte da mal eine Frage zu Questflags: Können die Questflags höher als 1 sein? (Bsp. 83) MFG
[Release] Erweiterte Execute-UDF
01/22/2011 - AutoIt - 7 Replies
Ich denke einige von euch kennen die in AutoIt implementierte "Execute"-Funktion. Ich fand es schon immer schade, dass diese Funktion so sehr beschnitten ist. Es ist zum Beispiel nicht möglich mehrere Zeilen ausführen zu lassen, bspw. soetwas: Das schränkt die Funktion natürlich sehr ein und auch, dass die Funktion kein If/While/For kennt ist Schade. Außerdem kann man Variablen innerhalb der Execute Funktion keine Werte zuweisen: Diese ganzen Eigenschaften machen die Execute-Funktion...



All times are GMT +2. The time now is 00:01.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.