|
You last visited: Today at 13:23
Advertisement
Questhintergrund dauerhaft ändern
Discussion on Questhintergrund dauerhaft ändern within the Metin2 Private Server forum part of the Metin2 category.
11/22/2015, 14:13
|
#1
|
elite*gold: 0
Join Date: Sep 2012
Posts: 173
Received Thanks: 33
|
Questhintergrund dauerhaft ändern
Halloooooooooooooooo
Habe mal eine Frage an die Leute die sich mit dem Clienten bzw. mit diesen Phyton auskennen. Ich würde gerne einen neuen Questhintergrund haben bzw. den Standartmäßigen überschreiben, sodass er halt meinen eigenen(eine tga datei) ausliest und anzeigt. Ich würde das Problem ungern über die setbgimage('background.tga') Funktion lösen, da ich es zu umständlich finde in jeder Quest dieses Ding einzufügen und es meiner Meinung nach im Clienten die schönere Variante ist.
Freue mich über jede Hilfe
LG Metinsoul
|
|
|
11/22/2015, 17:31
|
#2
|
elite*gold: 35
Join Date: Aug 2014
Posts: 336
Received Thanks: 267
|
Hey,
Der Questhintergrund ist das standard implementierte "thinboard".
Öffne pack/uiscript/questdialog.py, dort siehst du sowas:
Code:
{
"name" : "board",
"type" : "thinboard",
"style" : ("attach", "ignore_size",),
"x" : 0,
"y" : 0,
"horizontal_align" : "center",
"vertical_align" : "center",
"width" : 350,
"height" : 300,
},
Die ThinBoard Klasse sieht so aus:
Code:
class ThinBoard(Window):
CORNER_WIDTH = 16
CORNER_HEIGHT = 16
LINE_WIDTH = 16
LINE_HEIGHT = 16
BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.51)
LT = 0
LB = 1
RT = 2
RB = 3
L = 0
R = 1
T = 2
B = 3
def __init__(self, layer = "UI"):
Window.__init__(self, layer)
CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
self.Corners = []
for fileName in CornerFileNames:
Corner = ExpandedImageBox()
Corner.AddFlag("attach")
Corner.AddFlag("not_pick")
Corner.LoadImage(fileName)
Corner.SetParent(self)
Corner.SetPosition(0, 0)
Corner.Show()
self.Corners.append(Corner)
self.Lines = []
for fileName in LineFileNames:
Line = ExpandedImageBox()
Line.AddFlag("attach")
Line.AddFlag("not_pick")
Line.LoadImage(fileName)
Line.SetParent(self)
Line.SetPosition(0, 0)
Line.Show()
self.Lines.append(Line)
Base = Bar()
Base.SetParent(self)
Base.AddFlag("attach")
Base.AddFlag("not_pick")
Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
Base.SetColor(self.BOARD_COLOR)
Base.Show()
self.Base = Base
self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
def __del__(self):
Window.__del__(self)
def SetSize(self, width, height):
width = max(self.CORNER_WIDTH*2, width)
height = max(self.CORNER_HEIGHT*2, height)
Window.SetSize(self, width, height)
self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2)
def ShowInternal(self):
self.Base.Show()
for wnd in self.Lines:
wnd.Show()
for wnd in self.Corners:
wnd.Show()
def HideInternal(self):
self.Base.Hide()
for wnd in self.Lines:
wnd.Hide()
for wnd in self.Corners:
wnd.Hide()
Das für dich Relevante ist:
Code:
CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
Nun zum Guide:
Öffne die root und such die ui.py und öffne sie.
Änder in der ThinBoard Klasse:
Code:
def __init__(self, layer = "UI"):
zu:
Code:
def __init__(self, layer = "UI", path = "d:/ymir work/ui/pattern/ThinBoard_Corner_"):
und:
Code:
CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
zu:
Code:
CornerFileNames = [ path+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ path+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
dann fügst du am Ende der Klasse folgende Funktion hinzu:
Code:
def SetNewBaseColor(self, color):
self.Base.SetColor(color)
Nun suchst du :
Code:
elif Type == "thinboard":
parent.Children[Index] = ThinBoard()
parent.Children[Index].SetParent(parent)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
und schreibst darunter (ACHTUNG! DEN PFAD & COLOR ANPASSEN!):
Code:
elif Type = "questboard":
parent.Children[Index] = ThinBoard("UI","d:/dein/neuer/pfad/ThinBoard_Corner_")
parent.Children[Index].SetParent(parent)
parent.Children[Index].SetNewBaseColor(DEINE_COLOR)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
Nun wieder in die questdialog.py (uiscript):
Änder:
Code:
"type" : "thinboard",
zu:
Code:
"type" : "questboard",
Pack wieder die root & die uiscript.
Fertig.
Deine tga's müssen dabei natürlich die Vorgaben einhalten:
"LeftTop","LeftBottom","RightTop","RightBottom "
"Left","Right","Top","Bottom"
Kleines Beispiel:
Code:
elif Type = "questboard":
parent.Children[Index] = ThinBoard("UI","d:/ymir work/ui/questboard/questboard_")
parent.Children[Index].SetParent(parent)
color = grp.GenerateColor(0.0, 0.0, 1.0, 0.50)
parent.Children[Index].SetNewBaseColor(color)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
Die tga's müssten dann so heißen:
questboard_LeftTop, questboard_LeftBottom usw.
___________________________________________
Ist nicht getestet, sollte aber gehen.
MfG, .Various
EDIT:
Ich sehe grade, du willst ein komplettes Bild als Hintergrund machen... Naja, ich lasse es mal so stehen.
Bei meiner Änderung kannst du halt neue Lines/Corners & die Base (Mitte) des Hintergrund erstellen.
Ein ganzes Bild wäre bei deinem Vorhaben meines Erachtens auch unvorteilhaft weil du das Bild ja je nach Größe des Questfensters skalieren müsstest.. Das würde das Bild verzerren.
Wenn du fragen hast, schreib sie einfach hier
|
|
|
11/22/2015, 18:08
|
#3
|
elite*gold: 0
Join Date: Sep 2012
Posts: 173
Received Thanks: 33
|
Wow Danke!
Bin es nicht gewohnt das die Antworten so ausführlich sind^^
Wie könnte ich es jetzt einstellen das es eine komplette tga abruft? Will es zumindest mal begutachtet haben^^.
|
|
|
11/22/2015, 18:29
|
#4
|
elite*gold: 2785
Join Date: Dec 2014
Posts: 403
Received Thanks: 1,354
|
Quote:
Originally Posted by .Various
Hey,
Der Questhintergrund ist das standard implementierte "thinboard".
Öffne pack/uiscript/questdialog.py, dort siehst du sowas:
Code:
{
"name" : "board",
"type" : "thinboard",
"style" : ("attach", "ignore_size",),
"x" : 0,
"y" : 0,
"horizontal_align" : "center",
"vertical_align" : "center",
"width" : 350,
"height" : 300,
},
Die ThinBoard Klasse sieht so aus:
Code:
class ThinBoard(Window):
CORNER_WIDTH = 16
CORNER_HEIGHT = 16
LINE_WIDTH = 16
LINE_HEIGHT = 16
BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.51)
LT = 0
LB = 1
RT = 2
RB = 3
L = 0
R = 1
T = 2
B = 3
def __init__(self, layer = "UI"):
Window.__init__(self, layer)
CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
self.Corners = []
for fileName in CornerFileNames:
Corner = ExpandedImageBox()
Corner.AddFlag("attach")
Corner.AddFlag("not_pick")
Corner.LoadImage(fileName)
Corner.SetParent(self)
Corner.SetPosition(0, 0)
Corner.Show()
self.Corners.append(Corner)
self.Lines = []
for fileName in LineFileNames:
Line = ExpandedImageBox()
Line.AddFlag("attach")
Line.AddFlag("not_pick")
Line.LoadImage(fileName)
Line.SetParent(self)
Line.SetPosition(0, 0)
Line.Show()
self.Lines.append(Line)
Base = Bar()
Base.SetParent(self)
Base.AddFlag("attach")
Base.AddFlag("not_pick")
Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT)
Base.SetColor(self.BOARD_COLOR)
Base.Show()
self.Base = Base
self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT)
self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0)
def __del__(self):
Window.__del__(self)
def SetSize(self, width, height):
width = max(self.CORNER_WIDTH*2, width)
height = max(self.CORNER_HEIGHT*2, height)
Window.SetSize(self, width, height)
self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT)
self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0)
self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT)
self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT)
self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT)
verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT
horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH
self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage)
self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0)
self.Base.SetSize(width - self.CORNER_WIDTH*2, height - self.CORNER_HEIGHT*2)
def ShowInternal(self):
self.Base.Show()
for wnd in self.Lines:
wnd.Show()
for wnd in self.Corners:
wnd.Show()
def HideInternal(self):
self.Base.Hide()
for wnd in self.Lines:
wnd.Hide()
for wnd in self.Corners:
wnd.Hide()
Das für dich Relevante ist:
Code:
CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
Nun zum Guide:
Öffne die root und such die ui.py und öffne sie.
Änder in der ThinBoard Klasse:
Code:
def __init__(self, layer = "UI"):
zu:
Code:
def __init__(self, layer = "UI", path = "d:/ymir work/ui/pattern/ThinBoard_Corner_"):
und:
Code:
CornerFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ "d:/ymir work/ui/pattern/ThinBoard_Line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
zu:
Code:
CornerFileNames = [ path+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ]
LineFileNames = [ path+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ]
dann fügst du am Ende der Klasse folgende Funktion hinzu:
Code:
def SetNewBaseColor(self, color):
self.Base.SetColor(color)
Nun suchst du :
Code:
elif Type == "thinboard":
parent.Children[Index] = ThinBoard()
parent.Children[Index].SetParent(parent)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
und schreibst darunter (ACHTUNG! DEN PFAD & COLOR ANPASSEN!):
Code:
elif Type = "questboard":
parent.Children[Index] = ThinBoard("UI","d:/dein/neuer/pfad/ThinBoard_Corner_")
parent.Children[Index].SetParent(parent)
parent.Children[Index].SetNewBaseColor(DEINE_COLOR)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
Nun wieder in die questdialog.py (uiscript):
Änder:
Code:
"type" : "thinboard",
zu:
Code:
"type" : "questboard",
Pack wieder die root & die uiscript.
Fertig.
Deine tga's müssen dabei natürlich die Vorgaben einhalten:
"LeftTop","LeftBottom","RightTop","RightBottom "
"Left","Right","Top","Bottom"
Kleines Beispiel:
Code:
elif Type = "questboard":
parent.Children[Index] = ThinBoard("UI","d:/ymir work/ui/questboard/questboard_")
parent.Children[Index].SetParent(parent)
color = grp.GenerateColor(0.0, 0.0, 1.0, 0.50)
parent.Children[Index].SetNewBaseColor(color)
self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent)
Die tga's müssten dann so heißen:
questboard_LeftTop, questboard_LeftBottom usw.
___________________________________________
Ist nicht getestet, sollte aber gehen.
MfG, .Various
EDIT:
Ich sehe grade, du willst ein komplettes Bild als Hintergrund machen... Naja, ich lasse es mal so stehen.
Bei meiner Änderung kannst du halt neue Lines/Corners & die Base (Mitte) des Hintergrund erstellen.
Ein ganzes Bild wäre bei deinem Vorhaben meines Erachtens auch unvorteilhaft weil du das Bild ja je nach Größe des Questfensters skalieren müsstest.. Das würde das Bild verzerren.
Wenn du fragen hast, schreib sie einfach hier 
|
Ist zwar nett gemeint aber damit änderst du leider alles auch normale thinboards. Ich würde eine neue Klasse erstellen bzw einfach in der uiscript ein Image angeben statt thinboard. Ich werde morgen mittag das mal hier rein schreiben bin leider nicht Zuhause um das Jezt zu machen.
|
|
|
11/22/2015, 18:44
|
#5
|
elite*gold: 35
Join Date: Aug 2014
Posts: 336
Received Thanks: 267
|
Quote:
Originally Posted by .K0rí
Ist zwar nett gemeint aber damit änderst du leider alles auch normale thinboards. Ich würde eine neue Klasse erstellen bzw einfach in der uiscript ein Image angeben statt thinboard. Ich werde morgen mittag das mal hier rein schreiben bin leider nicht Zuhause um das Jezt zu machen.
|
Nicht das ich wüsste. Da ich den normalen Pfad als Standard setze, gibt das mit allen anderen Thinboards keine Komplikation:
Code:
def __init__(self, layer = "UI", path = "d:/ymir work/ui/pattern/ThinBoard_Corner_"):
Dieser wird nur geändert, wenn man es angibt wie in meinem Beispiel.
Wenn ich mich irre, korrigiere mich bitte
|
|
|
11/22/2015, 21:19
|
#6
|
elite*gold: 0
Join Date: Sep 2012
Posts: 173
Received Thanks: 33
|
Quote:
|
Ist zwar nett gemeint aber damit änderst du leider alles auch normale thinboards. Ich würde eine neue Klasse erstellen bzw einfach in der uiscript ein Image angeben statt thinboard. Ich werde morgen mittag das mal hier rein schreiben bin leider nicht Zuhause um das Jezt zu machen.
|
Wäre sehr nett, wenn du das machen könntest
|
|
|
 |
Similar Threads
|
HWID Dauerhaft ändern
11/11/2012 - Off Topic - 8 Replies
Hallo,
Ich habe bei einem Spiel einen HWID Bann bekommen.Jetzt möchte ich meine HWID dauerhaft ändern.Im Moment benutze ich PBdownforce,aber auf dauer finde ich es blöd immer an zu machen.Deswegen meine Frage: Gibt es einen weg sie dauerthaft zu ändern,ohne das ich etwas an der Hardware ändern muss oder Windows neu aufsetzen muss?
Ich habe schon die Sufu benutzt leider funktionierten die dinge nicht.
|
Rates dauerhaft ändern?
11/16/2010 - Metin2 Private Server - 10 Replies
Gude Com,
Brauche mal wieder eine Hilfe ...
Also Wie kann ich in der DB die rates für Yang,Drop und Exp dauerhaft einstellen?
Bitte kein omg das steht da oder da , denn ich habe es bisher in der sufu nicht gefunden, meine ebenfalls auch nicht die Event Rates die beim Stadtwächter einstellbar sind , meine DAUERHAFTE Änderung der Rates
Danke schonmal,
MFG , Jonny
|
[How To]Rates dauerhaft ändern
09/12/2010 - Metin2 Private Server - 9 Replies
Hallo Com.
Ich habe dies ein paar mal gesucht und nur in Bruchteilen gefunden.
Jetzt mache ich das einmalso gut wie möglich ausfürlich.
Also....
Ihr Startet eure Serverfiles.
Loggt euch ein.
(Starten müsst ihr nicht(kla oder?))
|
raten ändern (dauerhaft)
04/29/2010 - Metin2 Private Server - 3 Replies
hi,ein freundlicher typ hat mir mal die raten geändert undzwar dauerhaft per db
dafür gabs bestimmte mysql befehle die würde ich gerne wissen und wo man sie eintragen muss,habe mal ein tut von banjo1 gefunden aber da war es nur für den yang drop,also habe ich ihn angeschrieben er meinte ich solle in der files gucken
wo soll ich da suchen?
|
Wert dauerhaft ändern?
07/05/2007 - General Coding - 10 Replies
Hi Leute.....
Es geht um ein Online Spiel (9Dragons) was ich mittels RevolutionEngine 7 ein bisschen verändern wollte. Ich finde die Adressen auch für den Waffen Damage zu verändern, was ich auch tue.....allerdings denk ich mal verändere ich nur den text der da angezeigt wird, mehr Power hab ich dadurch nicht wirklich. Ist es irgendwie möglich das so zu deichseln das es auch geht? Kenne mich damit NULL aus....... :cry:
|
All times are GMT +1. The time now is 13:27.
|
|