|
You last visited: Today at 02:17
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.
11/12/2015, 21:56
|
#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
|
|
|
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.
|
|
|
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
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
|
|
|
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.
|
|
|
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 ?
|
|
|
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°
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?
|
|
|
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
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
|
|
|
11/18/2015, 19:50
|
#8
|
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
|
|
|
11/18/2015, 20:26
|
#9
|
elite*gold: 0
Join Date: Jan 2013
Posts: 1,818
Received Thanks: 336
|
Quote:
Originally Posted by Kampfzwerg!
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.
|
|
|
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.
|
|
|
 |
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.
|
|