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 02:17

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

Advertisement



[Release] quest_functions automatisch aktuell halten

Discussion on [Release] quest_functions automatisch aktuell halten 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] quest_functions automatisch aktuell halten

Ich hab ein kleines Script gebastelt, das ihr einfach ganz unten in eure questlib.lua legen könnt, damit eure quest_functions immer auf dem aktuellen Stand sind.
Die quest_functions werden dann bei jedem neuladen der questlib.lua (z.B. bei /reload q) aktualisiert.

Hier das Script:
Code:
function functionNamesToTable(start, currPath)
	local functionNames = {}
	local currPath = currPath or ""
	
	for k,v in pairs(start) do
		if v ~= _G then
			local vType = type(v)
			
			if vType == "table" then
				local nStartPath = (currPath == "" and "" or (currPath .. ".")) .. tostring(k)
				
				for _,functionName in ipairs(functionNamesToTable(v, nStartPath)) do
					table.insert(functionNames, functionName)
				end
			elseif vType == "function" then
				local functionName = (currPath == "" and "" or (currPath .. ".")) .. tostring(k)
				
				table.insert(functionNames, functionName)
			end
		end
	end
	
	return functionNames
end

function writeFunctionsToFile(filepath)
	local file = io.open(filepath, "w")
	
	for _,functionName in ipairs(functionNamesToTable(_G)) do
		file:write(functionName .. "\n")
	end
	
	local extraWhitelist = {
		"getAffectList",
		"getMobVnum"
	}
	
	for _,functionName in ipairs(extraWhitelist) do
		file:write(functionName .. "\n")
	end
	
	io.close(file)
end

writeFunctionsToFile(get_locale_base_path() .. "/quest/quest_functions")
getestet wurde es bisher nur unter Windows, allerdings sollte es aufm Server genauso laufen
rollback is offline  
Thanks
9 Users
Old 11/13/2015, 12:10   #2
 
elite*gold: 0
Join Date: Oct 2015
Posts: 57
Received Thanks: 116
Man könnte auch im qc checken, ob die Funktion geladen wurde und dann eintragen.
Dann muss man nicht in jede neue Datei das Zeug eintragen.
​Arrow​ is offline  
Old 11/13/2015, 12:49   #3

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by ​Arrow​ View Post
Man könnte auch im qc checken, ob die Funktion geladen wurde und dann eintragen.
Dann muss man nicht in jede neue Datei das Zeug eintragen.
Joa, weil ich mich aber mit C++ noch nicht so dolle zurechtkomme, habe ich es dann doch lieber kurz in Lua geschrieben. Und solange man den Aufruf:
Code:
writeFunctionsToFile(get_locale_base_path() .. "/quest/quest_functions")
nach allen dofile's in die Questlib schreibt, reicht es auch, wenn man es nur an der einen Stelle hat.

Vielleicht hat ja noch jemand Lust das über den qc zu lösen
rollback is offline  
Old 11/13/2015, 13:43   #4
 
elite*gold: 0
Join Date: Oct 2015
Posts: 57
Received Thanks: 116
Bräuchtest in C++ 'ne Container Klasse (z.B. std::vector oder std::list), ein paar input streams und einen output stream.
Dann einfach durch die quest_functions gehen und alle in den container einfügen.
Zum Schluss einfach die libs auslesen und bei allen functions checken ob die im container sind, wenn nicht einfach in die quest_functions schreiben.

Würde ich so machen.
Geht einfacher aber der einfachste Weg ist meistens nicht der schönste Weg.

Kannst du ja mal irgendwann machen, wenn du Bock drauf hast.
Wäre 'ne gute Übung.
​Arrow​ is offline  
Thanks
1 User
Old 11/14/2015, 13:04   #5
 
elite*gold: 0
Join Date: Jan 2013
Posts: 1,818
Received Thanks: 336
Sensi, seid dem ich die Funktion in die questlib.lua (ganz unten) eingetragen habe, muss ich jedes mal, nachdem ich meine Quest lade, alle Funktionen wieder rein schreiben. Ist das normal ?
°Ace° is offline  
Old 11/14/2015, 14:33   #6

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Quote:
Originally Posted by °Ace° View Post
Sensi, seid dem ich die Funktion in die questlib.lua (ganz unten) eingetragen habe, muss ich jedes mal, nachdem ich meine Quest lade, alle Funktionen wieder rein schreiben. Ist das normal ?
Eigentlich sollten alle vorhandenen Funktionen automatisch i der Datei sein. Musst du alle wieder eintragen oder nur ein paar? Wenn ja, welche?
rollback is offline  
Old 11/18/2015, 18:51   #7
 
elite*gold: 0
Join Date: Jan 2013
Posts: 1,818
Received Thanks: 336
Quote:
Originally Posted by Seחsi View Post
Eigentlich sollten alle vorhandenen Funktionen automatisch i der Datei sein. Musst du alle wieder eintragen oder nur ein paar? Wenn ja, welche?
Nur ein paar:

PHP Code:
require
getAffectList
getMobVnum
getName
getPetdata
getSpawneffectFilepath
isSpawnFromFar
Error occured on compile petQuest
.lua
ride
.Ride
mob
.level
close
lines
write
flush 
°Ace° is offline  
Old 11/18/2015, 19:50   #8
 
Kampfzwerg!'s Avatar
 
elite*gold: 0
Join Date: Feb 2015
Posts: 306
Received Thanks: 171
man fügt das ans ende der questlib.lua ein
& startet seinen Server dann wird die quest_funktion
auch automatisch alle wichtige funktionen geladen.
Erstell vorher ein backup von deiner alten.

schöne grüße

Kampfzwerg
Kampfzwerg! is offline  
Thanks
1 User
Old 11/18/2015, 20:26   #9
 
elite*gold: 0
Join Date: Jan 2013
Posts: 1,818
Received Thanks: 336
Quote:
Originally Posted by Kampfzwerg! View Post
man fügt das ans ende der questlib.lua ein
& startet seinen Server dann wird die quest_funktion
auch automatisch alle wichtige funktionen geladen.
Erstell vorher ein backup von deiner alten.

schöne grüße

Kampfzwerg
Ich weiß, die Funktion habe ich auch in die questlib.lua eingefügt. Bin nach dem TuT gegangen... Trotzdem muss ich immer die paar Funktion nachtragen, wenn ich make.sh durchführe.
°Ace° is offline  
Old 11/18/2015, 20:32   #10

 
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
Code:
function functionNamesToTable(start, currPath)
	local functionNames = {}
	local currPath = currPath or ""
	
	for k,v in pairs(start) do
		if v ~= _G then
			local vType = type(v)
			
			if vType == "table" then
				local nStartPath = (currPath == "" and "" or (currPath .. ".")) .. tostring(k)
				
				for _,functionName in ipairs(functionNamesToTable(v, nStartPath)) do
					table.insert(functionNames, functionName)
				end
			elseif vType == "function" then
				local functionName = (currPath == "" and "" or (currPath .. ".")) .. tostring(k)
				
				table.insert(functionNames, functionName)
			end
		end
	end
	
	return functionNames
end

function writeFunctionsToFile(filepath)
	local file = io.open(filepath, "w")
	
	for _,functionName in ipairs(functionNamesToTable(_G)) do
		file:write(functionName .. "\n")
	end
	
	local extraWhitelist = {
		"getAffectList",
		"getMobVnum"
	}
	
	for _,functionName in ipairs(extraWhitelist) do
		file:write(functionName .. "\n")
	end
	
	io.close(file)
end
In der extrawhitelist alles eintragen was noch einen Fehler gibt.
rollback is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Frage - quest_functions
05/05/2015 - Metin2 Private Server - 4 Replies
Moin, Ich habe hier eine Quest wo nicht genau weiß was ich bei quest_functions eintragen soll bitte um Hilfe. quest antiexp begin state start begin when login begin send_letter("Anti-EXP "..({"aktivieren", "deaktivieren"})) if pc.getqf("antiexp") == 1 then loop_timer("antiexp", 1) end end
WAN IP in realmd Datenbank aktuell halten
08/24/2014 - WoW Private Server - 0 Replies
Hi, binn grad wieder am Wow-Serverbasteln und habe ein kleines Skript gebaut das die Öffentliche IP Adresse in der realmd Datenbank, in der Tabelle realmlist aktuell hält, da zumindest bei mangos 2.4.3 da dort keine Domain akzeptiert wird. Dies wird nötig wenn ihr euren server via Portforwarding am router online stellt. Habe nichts dergleichen im internet gefunden also: http://kellerserver.jumpingcrab.com/download/exte rn/realmdipchange.zip Operation Systhem: Windows (getestet auf:...
[Release]FinalMT2 Questpaket (+Questlib & Quest_functions)
08/15/2012 - Metin2 PServer Guides & Strategies - 20 Replies
Hier habt ihr das FULL-Questpaket von FinalMT2 - bekommen hab ich Sie von .SonGoku™ - Ich sollte es releasen, braucht nicht zu haten. ---- Viel Spaß damit (; --- wenn ihr thanken wollt, dann bei ihm!
Double Exe Beide Fenster Aktuell halten?
01/21/2007 - Ragnarok Online - 23 Replies
hallo! ich habe eine frage bezüglich double ragexe und zwar wenn ich ragnarok 2mal starte und mich länger in einem der beiden fenster aufhalte wird das 2te fenster erst wieder "aktualisiert" sobald ich in das besagte fenster wechsele was bei längerem spielen auf einem der fenster zu disconnect oder sonstigen problem führt... (homuncolus greift in der zeit wo ich in dem anderen fenster bin nicht an etc.) gibt es eine möglichkeit, dass beide fenster immer "aktuell" gehalten werden?



All times are GMT +1. The time now is 02:20.


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.