|
You last visited: Today at 06:45
Advertisement
[Release]Petgui + Quest [Levelbar]
Discussion on [Release]Petgui + Quest [Levelbar] within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
12/22/2012, 10:18
|
#1
|
elite*gold: 5
Join Date: Oct 2010
Posts: 1,692
Received Thanks: 1,772
|
[Release]Petgui + Quest [Levelbar]
Hallo Ich sehe ,dass viele oder eher einige mein Petgui nachmachen oder sogar klauen deshalb release ich einfach mal meins.
BILD:
Hab sogar noch ein altes Video von mir gefunden:
Nicht wundern in dem Video sieht man nur einen Test der Levelfunktion deswegen geht das so schnell.
INFOS:
Pets kann man leveln
Pet und Pferd gleichzeitig
Ingame eine Gui für das Pet
How TO (Serverside):
Führt pet_system.dif auf eure Game aus.
Weiss nichtmehr woher die dif war die war aber mal Public.
Schreibt in eure quest_functions:
Code:
pet.summon
pet.unsummon
pet.is_summon
Fügt die beiden Quests ein.
PS: Bei meiner Petquest setzt er das Pferd dannach immer zum Milligaul falls ihr es anderst wollt müsst ihr es ändern.
How TO (Client):
Öffnet game.py
sucht nach:
Code:
self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
Setzt darunter das:
Code:
##START_PETGUI BY DASKUCHEN
PetGuiBg = ui.AniImageBox()
PetGuiBg.AddFlag("not_pick")
PetGuiBg.AppendImage("d:/ymir work/ui/petgui.dds")
self.PetGuiBg = PetGuiBg
self.PetGuiBg.SetPosition(wndMgr.GetScreenWidth()-460,0)
self.PetName = ui.TextLine()
self.PetName.SetDefaultFontName()
self.PetName.SetPosition((wndMgr.GetScreenWidth()-460)+120, 35)
self.PetName.SetText("Haustierbesitzer: NONE")
self.PetName.SetOutline()
self.PetLevel = ui.TextLine()
self.PetLevel.SetDefaultFontName()
self.PetLevel.SetPosition((wndMgr.GetScreenWidth()-460)+120, 55)
self.PetLevel.SetText("Haustierlevel: NONE")
self.PetLevel.SetOutline()
self.PetBonus1 = ui.TextLine()
self.PetBonus1.SetDefaultFontName()
self.PetBonus1.SetPosition((wndMgr.GetScreenWidth()-460)+120, 75)
self.PetBonus1.SetText("1. Bonus: NONE")
self.PetBonus1.SetOutline()
self.PetBonus2 = ui.TextLine()
self.PetBonus2.SetDefaultFontName()
self.PetBonus2.SetPosition((wndMgr.GetScreenWidth()-460)+120, 95)
self.PetBonus2.SetText("2. Bonus: NONE")
self.PetBonus2.SetOutline()
self.PetBonus3 = ui.TextLine()
self.PetBonus3.SetDefaultFontName()
self.PetBonus3.SetPosition((wndMgr.GetScreenWidth()-460)+120, 115)
self.PetBonus3.SetText("3. Bonus: NONE")
self.PetBonus3.SetOutline()
PetExpBar = ui.AniImageBox()
PetExpBar.AddFlag("not_pick")
PetExpBar.AppendImage("d:/ymir work/ui/pattern/charbar_main_yellow.tga")
PetExpBar.SetPercentage(0,1)
self.PetExpBar = PetExpBar
self.PetExpBar.SetPosition((wndMgr.GetScreenWidth()-460)+65, 143)
self.PetExpLabel = ui.TextLine()
self.PetExpLabel.SetDefaultFontName()
self.PetExpLabel.SetPosition((wndMgr.GetScreenWidth()-460)+150, 140)
self.PetExpLabel.SetText("0%")
self.PetExpLabel.SetOutline()
##CLOSE_PETGUI BY DASKUCHEN
sucht nach:
Code:
def __ServerCommand_Build(self):
serverCommandList={
Setzt darunter:
Code:
##PETGUI BY DASKUCHEN
"ShowPetGui" : self.__showpetgui,
"HidePetGui" : self.__hidepetgui,
"HaustierName" : self.__PetName,
"HaustierLevel" : self.__PetLevel,
"HaustierBonus1" : self.__PetBoni1,
"HaustierBonus2" : self.__PetBoni2,
"HaustierBonus3" : self.__PetBoni3,
"PetProcentExp" : self.__PetExp,
##
Geht an das Ende der game.py und fügt das ein:
Code:
def __hidepetgui(self):
self.PetGuiBg.Hide()
self.PetName.Hide()
self.PetLevel.Hide()
self.PetBonus1.Hide()
self.PetBonus2.Hide()
self.PetBonus3.Hide()
self.PetExpBar.Hide()
self.PetExpLabel.Hide()
def __showpetgui(self):
self.PetGuiBg.Show()
self.PetName.Show()
self.PetLevel.Show()
self.PetBonus1.Show()
self.PetBonus2.Show()
self.PetBonus3.Show()
self.PetExpBar.Show()
self.PetExpLabel.Show()
def __PetName(self, HaustierName):
self.PetName.SetText("Besitzer: " + HaustierName)
def __PetLevel(self, HaustierLevel):
self.PetLevel.SetText("Haustierlevel: " + HaustierLevel)
def __PetBoni1(self, HaustierBonus1):
self.PetBonus1.SetText("1. Bonus: " + HaustierBonus1 + " Angriffswert")
def __PetBoni2(self, HaustierBonus2):
self.PetBonus2.SetText("2. Bonus: " + HaustierBonus2 + " Verteidigung")
def __PetBoni3(self, HaustierBonus3):
self.PetBonus3.SetText("3. Bonus: " + HaustierBonus3 + " Lebenspunkte")
def __PetExp(self, PetProcentExp):
self.PetExpLabel.SetText(PetProcentExp + "%")
self.PetExpBar.SetPercentage(PetProcentExp, 100)
Macht die eix/epk Datei in den Pack ordner und tragt sie in die Index ein.
Hier nochmal die Petquest:
PETQUEST (Nur Pferd oder Pet)
PHP Code:
quest pets begin
state start begin
function givebonus(x)
local y,boni = {53,54,1},pets.bonusliste()
table.foreach(boni[x],function(i,l) cmdchat("HaustierBonus"..i.." "..l.."") affect.add_collect(y[i],l,60*60*24*365*60) end )
cmdchat("HaustierLevel "..pc.getqf('petlevel').."")
cmdchat("HaustierName "..pc.get_name().."")
pc.setqf("petruf",1)
end
function bonusliste()
return {
[1] = {200,100,500},
[2] = {250,150,1000},
[3] = {300,200,1500},
[4] = {350,250,2000},
[5] = {400,300,3000},
}
end
function removebonus(x)
local y,boni = {53,54,1},pets.bonusliste()
table.foreach(boni[x],function(i,l) affect.remove_collect(y[i],l,60*60*24*365*60) end )
horse.unsummon()
pc.setqf("petruf",0)
horse.set_level("21")
cmdchat("HidePetGui")
cleartimer("bugcheck")
end
when 53001.use begin
if pc.is_mount() then
say_title("Entschuldigung")
say("Bitte steige von deinem Mount ab!")
return
end
if pc.getqf('petlevel') == 0 then
pc.setqf('petlevel',1)
end
if pc.getqf("petruf") == 0 then
local Horselevel = 29-pc.getqf('petlevel')
horse.set_level(Horselevel)
horse.unsummon() horse.summon()
chat("Dein Haustier wurde gerufen.")
pets.givebonus(pc.getqf('petlevel'))
local expprocent1 = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent1[pc.getqf("petlevel")]).."")
cmdchat("ShowPetGui")
loop_timer("bugcheck", 0.2)
elseif pc.getqf("petruf") == 1 then
pets.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier verabschiedet sich nun.")
end
end
when kill with pc.getqf("petruf") == 1 begin
if pc.getqf("petlevel") == 5 then
return
end
if not npc.is_pc() then
pc.setqf("exp",pc.getqf("exp")+1)
local exp2up = {2000, 8000, 16000, 35000, 40000}
local expprocent = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent[pc.getqf("petlevel")]).."")
if pc.getqf("exp") == exp2up[pc.getqf("petlevel")] then
if pc.getqf("petlevel") == 4 then
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say_reward("Dies war das letzte Level!")
end
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say("Rufe dein Pet bitte erneut!")
pc.setqf("petlevel",pc.getqf("petlevel")+1)
pc.setqf("exp",0)
pets.removebonus(pc.getqf('petlevel'))
end
end
end
-- Bugschutz
when bugcheck.timer begin
if pc.count_item(53001) == 0 then
say_title("Buguser")
say("Bugusing festgestellt!")
pets.removebonus(pc.getqf('petlevel'))
end
end
when login or logout or disconnect with pc.getqf("petruf") == 1 begin
pets.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier ist nicht mitgekommen...")
chat("Rufe es erneut!")
end
end
end
PETQUEST (Pferd + Pet gleichzeitig)
PHP Code:
quest pets begin
state start begin
function givebonus(x)
local y,boni = {53,54,1},pets.bonusliste()
table.foreach(boni[x],function(i,l) cmdchat("HaustierBonus"..i.." "..l.."") affect.add_collect(y[i],l,60*60*24*365*60) end )
cmdchat("HaustierLevel "..pc.getqf('petlevel').."")
cmdchat("HaustierName "..pc.get_name().."")
pc.setqf("petruf",1)
end
function bonusliste()
return {
[1] = {200,100,500},
[2] = {250,150,1000},
[3] = {300,200,1500},
[4] = {350,250,2000},
[5] = {400,300,3000},
}
end
function removebonus(x)
local y,boni = {53,54,1},pets.bonusliste()
table.foreach(boni[x],function(i,l) affect.remove_collect(y[i],l,60*60*24*365*60) end )
pet.unsummon()
pc.setqf("petruf",0)
horse.set_level("21")
cmdchat("HidePetGui")
cleartimer("bugcheck")
end
when 53001.use begin
horse.unride() horse.unsummon()
if pc.is_mount() then
say_title("Entschuldigung")
say("Bitte steige von deinem Mount ab!")
return
end
if pc.getqf('petlevel') == 0 then
pc.setqf('petlevel',1)
end
if pc.getqf("petruf") == 0 then
local Horselevel = 29-pc.getqf('petlevel')
horse.set_level(Horselevel)
pet.unsummon() pet.summon()
chat("Dein Haustier wurde gerufen.")
pets.givebonus(pc.getqf('petlevel'))
local expprocent1 = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent1[pc.getqf("petlevel")]).."")
cmdchat("ShowPetGui")
loop_timer("bugcheck", 0.2)
elseif pc.getqf("petruf") == 1 then
pets.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier verabschiedet sich nun.")
end
end
when kill with pc.getqf("petruf") == 1 begin
if pc.getqf("petlevel") == 5 then
return
end
if not npc.is_pc() then
pc.setqf("exp",pc.getqf("exp")+1)
local exp2up = {2000, 8000, 16000, 35000, 40000}
local expprocent = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent[pc.getqf("petlevel")]).."")
if pc.getqf("exp") == exp2up[pc.getqf("petlevel")] then
if pc.getqf("petlevel") == 4 then
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say_reward("Dies war das letzte Level!")
end
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say("Rufe dein Pet bitte erneut!")
pc.setqf("petlevel",pc.getqf("petlevel")+1)
pc.setqf("exp",0)
pets.removebonus(pc.getqf('petlevel'))
end
end
end
-- Bugschutz
when bugcheck.timer begin
if pc.count_item(53001) == 0 then
say_title("Buguser")
say("Bugusing festgestellt!")
pets.removebonus(pc.getqf('petlevel'))
end
end
when login or logout or disconnect with pc.getqf("petruf") == 1 begin
pets.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier ist nicht mitgekommen...")
chat("Rufe es erneut!")
end
end
end
Lob an Spongebob der mir dabei geholfen hat (bei der Quest)
Download im Anhang weiss gerade nicht ob ich was vergessen habe.
EDIT:
Habe was vergessen oben links noch das Icon vom Haustier
Ist das Pferd über level 21 so kommt oben links keine Pferdesymbol sondern ein Haustiersymbol.
uiaffectshower.py ist nun im neuem Download drinne
|
|
|
12/22/2012, 10:21
|
#2
|
elite*gold: 7
Join Date: Sep 2011
Posts: 651
Received Thanks: 270
|
Nice Danke (: Kann ich gut gebrauchen.
|
|
|
12/22/2012, 10:23
|
#3
|
elite*gold: 9
Join Date: Jul 2009
Posts: 210
Received Thanks: 115
|
Avenue hat den doch für seinen Ausgegeben und an andre verkauft ?
Also wenn das deiner ist , finde ich das von ihm RICHTIG Assi...
|
|
|
12/22/2012, 10:25
|
#4
|
elite*gold: 29
Join Date: Oct 2010
Posts: 1,185
Received Thanks: 1,471
|
Wie geil die ausschaut hab ich dir ja schon gesagt, danke fürs releasen
|
|
|
12/22/2012, 10:27
|
#5
|
elite*gold: 1880
Join Date: Dec 2011
Posts: 3,260
Received Thanks: 1,511
|
Sehr nice.
Sowas habe ich gesucht.
Danke
|
|
|
12/22/2012, 10:37
|
#6
|
elite*gold: 0
Join Date: Dec 2012
Posts: 97
Received Thanks: 7
|
plz can any one put a video about how to add this quest because I am a beggener and please help
|
|
|
12/22/2012, 10:43
|
#7
|
elite*gold: 0
Join Date: Dec 2010
Posts: 59
Received Thanks: 5
|
Quote:
Originally Posted by DasKuchen
Hallo Ich sehe ,dass viele oder eher einige mein Petgui nachmachen oder sogar klauen deshalb release ich einfach mal meins.
BILD:
INFOS:
Pets kann man leveln
Pet und Pferd gleichzeitig
Ingame eine Gui für das Pet
How TO (Serverside):
Führt pet_system.dif auf eure Game aus.
Schreibt in eure quest_functions:
Code:
pet.summon
pet.unsummon
pet.is_summon
Fügt die beiden Quests ein.
PS: Bei meiner Petquest setzt er das Pferd dannach immer zum Milligaul falls ihr es anderst wollt müsst ihr es ändern.
How TO (Client):
Öffnet game.py
sucht nach:
Code:
self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
Setzt darunter das:
Code:
##START_PETGUI BY DASKUCHEN
PetGuiBg = ui.AniImageBox()
PetGuiBg.AddFlag("not_pick")
PetGuiBg.AppendImage("d:/ymir work/ui/petgui.dds")
self.PetGuiBg = PetGuiBg
self.PetGuiBg.SetPosition(wndMgr.GetScreenWidth()-460,0)
self.PetName = ui.TextLine()
self.PetName.SetDefaultFontName()
self.PetName.SetPosition((wndMgr.GetScreenWidth()-460)+120, 35)
self.PetName.SetText("Haustierbesitzer: NONE")
self.PetName.SetOutline()
self.PetLevel = ui.TextLine()
self.PetLevel.SetDefaultFontName()
self.PetLevel.SetPosition((wndMgr.GetScreenWidth()-460)+120, 55)
self.PetLevel.SetText("Haustierlevel: NONE")
self.PetLevel.SetOutline()
self.PetBonus1 = ui.TextLine()
self.PetBonus1.SetDefaultFontName()
self.PetBonus1.SetPosition((wndMgr.GetScreenWidth()-460)+120, 75)
self.PetBonus1.SetText("1. Bonus: NONE")
self.PetBonus1.SetOutline()
self.PetBonus2 = ui.TextLine()
self.PetBonus2.SetDefaultFontName()
self.PetBonus2.SetPosition((wndMgr.GetScreenWidth()-460)+120, 95)
self.PetBonus2.SetText("2. Bonus: NONE")
self.PetBonus2.SetOutline()
self.PetBonus3 = ui.TextLine()
self.PetBonus3.SetDefaultFontName()
self.PetBonus3.SetPosition((wndMgr.GetScreenWidth()-460)+120, 115)
self.PetBonus3.SetText("3. Bonus: NONE")
self.PetBonus3.SetOutline()
PetExpBar = ui.AniImageBox()
PetExpBar.AddFlag("not_pick")
PetExpBar.AppendImage("d:/ymir work/ui/pattern/charbar_main_yellow.tga")
PetExpBar.SetPercentage(0,1)
self.PetExpBar = PetExpBar
self.PetExpBar.SetPosition((wndMgr.GetScreenWidth()-460)+65, 143)
self.PetExpLabel = ui.TextLine()
self.PetExpLabel.SetDefaultFontName()
self.PetExpLabel.SetPosition((wndMgr.GetScreenWidth()-460)+150, 140)
self.PetExpLabel.SetText("0%")
self.PetExpLabel.SetOutline()
##CLOSE_PETGUI BY DASKUCHEN
sucht nach:
Code:
def __ServerCommand_Build(self):
serverCommandList={
Setzt darunter:
Code:
##PETGUI BY DASKUCHEN
"ShowPetGui" : self.__showpetgui,
"HidePetGui" : self.__hidepetgui,
"HaustierName" : self.__PetName,
"HaustierLevel" : self.__PetLevel,
"HaustierBonus1" : self.__PetBoni1,
"HaustierBonus2" : self.__PetBoni2,
"HaustierBonus3" : self.__PetBoni3,
"PetProcentExp" : self.__PetExp,
##
Geht an das Ende der game.py und fügt das ein:
Code:
def __hidepetgui(self):
self.PetGuiBg.Hide()
self.PetName.Hide()
self.PetLevel.Hide()
self.PetBonus1.Hide()
self.PetBonus2.Hide()
self.PetBonus3.Hide()
self.PetExpBar.Hide()
self.PetExpLabel.Hide()
def __showpetgui(self):
self.PetGuiBg.Show()
self.PetName.Show()
self.PetLevel.Show()
self.PetBonus1.Show()
self.PetBonus2.Show()
self.PetBonus3.Show()
self.PetExpBar.Show()
self.PetExpLabel.Show()
def __PetName(self, HaustierName):
self.PetName.SetText("Besitzer: " + HaustierName)
def __PetLevel(self, HaustierLevel):
self.PetLevel.SetText("Haustierlevel: " + HaustierLevel)
def __PetBoni1(self, HaustierBonus1):
self.PetBonus1.SetText("1. Bonus: " + HaustierBonus1 + " Angriffswert")
def __PetBoni2(self, HaustierBonus2):
self.PetBonus2.SetText("2. Bonus: " + HaustierBonus2 + " Verteidigung")
def __PetBoni3(self, HaustierBonus3):
self.PetBonus3.SetText("3. Bonus: " + HaustierBonus3 + " Lebenspunkte")
def __PetExp(self, PetProcentExp):
self.PetExpLabel.SetText(PetProcentExp + "%")
self.PetExpBar.SetPercentage(PetProcentExp, 100)
Macht die eix/epk Datei in den Pack ordner und tragt sie in die Index ein.
Hier nochmal die Petquest:
PHP Code:
quest pets begin
state start begin
function givebonus(x)
local y,boni = {53,54,1},pets.bonusliste()
table.foreach(boni[x],function(i,l) cmdchat("HaustierBonus"..i.." "..l.."") affect.add_collect(y[i],l,60*60*24*365*60) end )
cmdchat("HaustierLevel "..pc.getqf('petlevel').."")
cmdchat("HaustierName "..pc.get_name().."")
pc.setqf("petruf",1)
end
function bonusliste()
return {
[1] = {200,100,500},
[2] = {250,150,1000},
[3] = {300,200,1500},
[4] = {350,250,2000},
[5] = {400,300,3000},
}
end
function removebonus(x)
local y,boni = {53,54,1},pets.bonusliste()
table.foreach(boni[x],function(i,l) affect.remove_collect(y[i],l,60*60*24*365*60) end )
horse.unsummon()
pc.setqf("petruf",0)
horse.set_level("21")
cmdchat("HidePetGui")
cleartimer("bugcheck")
end
when 53001.use begin
if pc.is_mount() then
say_title("Entschuldigung")
say("Bitte steige von deinem Mount ab!")
return
end
if pc.getqf('petlevel') == 0 then
pc.setqf('petlevel',1)
end
if pc.getqf("petruf") == 0 then
local Horselevel = 29-pc.getqf('petlevel')
horse.set_level(Horselevel)
horse.unsummon() horse.summon()
chat("Dein Haustier wurde gerufen.")
pets.givebonus(pc.getqf('petlevel'))
local expprocent1 = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent1[pc.getqf("petlevel")]).."")
cmdchat("ShowPetGui")
loop_timer("bugcheck", 0.2)
elseif pc.getqf("petruf") == 1 then
pets.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier verabschiedet sich nun.")
end
end
when kill with pc.getqf("petruf") == 1 begin
if pc.getqf("petlevel") == 5 then
return
end
if not npc.is_pc() then
pc.setqf("exp",pc.getqf("exp")+1)
local exp2up = {2000, 8000, 16000, 35000, 40000}
local expprocent = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent[pc.getqf("petlevel")]).."")
if pc.getqf("exp") == exp2up[pc.getqf("petlevel")] then
if pc.getqf("petlevel") == 4 then
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say_reward("Dies war das letzte Level!")
end
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say("Rufe dein Pet bitte erneut!")
pc.setqf("petlevel",pc.getqf("petlevel")+1)
pc.setqf("exp",0)
pets.removebonus(pc.getqf('petlevel'))
end
end
end
-- Bugschutz
when bugcheck.timer begin
if pc.is_mount() then
horse.unride()
end
if pc.count_item(53001) == 0 then
say_title("Buguser")
say("Bugusing festgestellt!")
pets.removebonus(pc.getqf('petlevel'))
end
end
when login or logout or disconnect with pc.getqf("petruf") == 1 begin
pets.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier ist nicht mitgekommen...")
chat("Rufe es erneut!")
end
end
end
Lob an Spongebob der mir dabei geholfen hat (bei der Quest)
Download im Anhang weiss gerade nicht ob ich was vergessen habe.
EDIT:
Habe was vergessen oben links noch das Icon vom Haustier
Ist das Pferd über level 21 so kommt oben links keine Pferdesymbol sondern ein Haustiersymbol.
Öffnet uiaffectshower.py ersetz es durch das:
Code:
import ui
import locale
import chr
import item
import app
import skill
import player
import uiToolTip
# WEDDING
class LovePointImage(ui.ExpandedImageBox):
FILE_PATH = "d:/ymir work/ui/pattern/LovePoint/"
FILE_DICT = {
0 : FILE_PATH + "01.dds",
1 : FILE_PATH + "02.dds",
2 : FILE_PATH + "02.dds",
3 : FILE_PATH + "03.dds",
4 : FILE_PATH + "04.dds",
5 : FILE_PATH + "05.dds",
}
def __init__(self):
ui.ExpandedImageBox.__init__(self)
self.loverName = ""
self.lovePoint = 0
self.toolTip = uiToolTip.ToolTip(100)
self.toolTip.HideToolTip()
def __del__(self):
ui.ExpandedImageBox.__del__(self)
def SetLoverInfo(self, name, lovePoint):
self.loverName = name
self.lovePoint = lovePoint
self.__Refresh()
def OnUpdateLovePoint(self, lovePoint):
self.lovePoint = lovePoint
self.__Refresh()
def __Refresh(self):
self.lovePoint = max(0, self.lovePoint)
self.lovePoint = min(100, self.lovePoint)
if 0 == self.lovePoint:
loveGrade = 0
else:
loveGrade = self.lovePoint / 25 + 1
fileName = self.FILE_DICT.get(loveGrade, self.FILE_PATH+"00.dds")
try:
self.LoadImage(fileName)
except:
import dbg
dbg.TraceError("LovePointImage.SetLoverInfo(lovePoint=%d) - LoadError %s" % (lovePoint, fileName))
self.SetScale(0.7, 0.7)
self.toolTip.ClearToolTip()
self.toolTip.SetTitle(self.loverName)
self.toolTip.AppendTextLine(locale.AFF_LOVE_POINT % (self.lovePoint))
self.toolTip.ResizeToolTip()
def OnMouseOverIn(self):
self.toolTip.ShowToolTip()
def OnMouseOverOut(self):
self.toolTip.HideToolTip()
# END_OF_WEDDING
class HorseImage(ui.ExpandedImageBox):
FILE_PATH = "d:/ymir work/ui/pattern/HorseState/"
FILE_DICT = {
00 : FILE_PATH+"00.dds",
01 : FILE_PATH+"00.dds",
02 : FILE_PATH+"00.dds",
03 : FILE_PATH+"00.dds",
10 : FILE_PATH+"10.dds",
11 : FILE_PATH+"11.dds",
12 : FILE_PATH+"12.dds",
13 : FILE_PATH+"13.dds",
20 : FILE_PATH+"20.dds",
21 : FILE_PATH+"21.dds",
22 : FILE_PATH+"22.dds",
23 : FILE_PATH+"23.dds",
30 : FILE_PATH+"30.dds",
31 : FILE_PATH+"31.dds",
32 : FILE_PATH+"32.dds",
33 : FILE_PATH+"33.dds",
44 : "pet.tga",
}
def __init__(self):
ui.ExpandedImageBox.__init__(self)
#self.textLineList = []
self.toolTip = uiToolTip.ToolTip(100)
self.toolTip.HideToolTip()
def __GetHorseGrade(self, level):
if 0 == level:
return 0
return (level-1)/10 + 1
def SetState(self, level, health, battery):
#self.textLineList=[]
self.toolTip.ClearToolTip()
if level>22:
self.LoadImage(self.FILE_DICT[44])
self.toolTip.AppendTextLine("Haustier")
return
if level>0:
try:
grade = self.__GetHorseGrade(level)
self.__AppendText(locale.LEVEL_LIST[grade])
except IndexError:
print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
return
try:
healthName=locale.HEALTH_LIST[health]
if len(healthName)>0:
self.__AppendText(healthName)
except IndexError:
print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
return
if health>0:
if battery==0:
self.__AppendText(locale.NEEFD_REST)
try:
fileName=self.FILE_DICT[health*10+battery]
except KeyError:
print "HorseImage.SetState(level=%d, health=%d, battery=%d) - KeyError" % (level, health, battery)
try:
self.LoadImage(fileName)
except:
print "HorseImage.SetState(level=%d, health=%d, battery=%d) - LoadError %s" % (level, health, battery, fileName)
self.SetScale(0.7, 0.7)
def __AppendText(self, text):
self.toolTip.AppendTextLine(text)
self.toolTip.ResizeToolTip()
#x=self.GetWidth()/2
#textLine = ui.TextLine()
#textLine.SetParent(self)
#textLine.SetSize(0, 0)
#textLine.SetOutline()
#textLine.Hide()
#textLine.SetPosition(x, 40+len(self.textLineList)*16)
#textLine.SetText(text)
#self.textLineList.append(textLine)
def OnMouseOverIn(self):
#for textLine in self.textLineList:
# textLine.Show()
self.toolTip.ShowToolTip()
def OnMouseOverOut(self):
#for textLine in self.textLineList:
# textLine.Hide()
self.toolTip.HideToolTip()
class AffectImage(ui.ExpandedImageBox):
def __init__(self):
ui.ExpandedImageBox.__init__(self)
self.toolTipText = None
self.isSkillAffect = TRUE
self.description = None
self.endTime = 0
self.affect = None
def SetAffect(self, affect):
self.affect = affect
def GetAffect(self):
return self.affect
def SetToolTipText(self, text, x = 0, y = -19):
if not self.toolTipText:
textLine = ui.TextLine()
textLine.SetParent(self)
textLine.SetSize(0, 0)
textLine.SetOutline()
textLine.Hide()
self.toolTipText = textLine
self.toolTipText.SetPosition(x + self.GetWidth()/2 - 20, y)
print "SetToolTipText %s %d %d" % (text,x,y)
self.toolTipText.SetText(text)
def SetDescription(self, description):
self.description = description
def SetDuration(self, duration):
self.endTime = 0
if duration > 0:
self.endTime = app.GetGlobalTimeStamp() + duration
def UpdateDescription(self):
if not self.description:
return
toolTip = self.description
if self.endTime > 0:
leftTime = locale.SecondToDHM(self.endTime - app.GetGlobalTimeStamp())
toolTip += " (%s : %s)" % (locale.LEFT_TIME, leftTime)
self.SetToolTipText(toolTip, 0, 40)
#µ¶ÀϹöÀü¿¡¼* ½Ã°£À» Á¦°ÅÇϱâ À§Çؼ* »ç¿ë
def UpdateDescription2(self):
if not self.description:
return
toolTip = self.description
self.SetToolTipText(toolTip, 0, 40)
def SetSkillAffectFlag(self, flag):
self.isSkillAffect = flag
def IsSkillAffect(self):
return self.isSkillAffect
def OnMouseOverIn(self):
if self.toolTipText:
self.toolTipText.Show()
def OnMouseOverOut(self):
if self.toolTipText:
self.toolTipText.Hide()
class AffectShower(ui.Window):
MALL_DESC_IDX_START = 1000
IMAGE_STEP = 25
AFFECT_MAX_NUM = 32
AFFECT_DATA_DICT = {
chr.AFFECT_POISON : (locale.SKILL_TOXICDIE, "d:/ymir work/ui/skill/common/affect/poison.sub"),
chr.AFFECT_SLOW : (locale.SKILL_SLOW, "d:/ymir work/ui/skill/common/affect/slow.sub"),
chr.AFFECT_STUN : (locale.SKILL_STUN, "d:/ymir work/ui/skill/common/affect/stun.sub"),
chr.AFFECT_ATT_SPEED_POTION : (locale.SKILL_INC_ATKSPD, "d:/ymir work/ui/skill/common/affect/Increase_Attack_Speed.sub"),
chr.AFFECT_MOV_SPEED_POTION : (locale.SKILL_INC_MOVSPD, "d:/ymir work/ui/skill/common/affect/Increase_Move_Speed.sub"),
chr.AFFECT_FISH_MIND : (locale.SKILL_FISHMIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub"),
chr.AFFECT_JEONGWI : (locale.SKILL_JEONGWI, "d:/ymir work/ui/skill/warrior/jeongwi_03.sub",),
chr.AFFECT_GEOMGYEONG : (locale.SKILL_GEOMGYEONG, "d:/ymir work/ui/skill/warrior/geomgyeong_03.sub",),
chr.AFFECT_CHEONGEUN : (locale.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",),
chr.AFFECT_GYEONGGONG : (locale.SKILL_GYEONGGONG, "d:/ymir work/ui/skill/assassin/gyeonggong_03.sub",),
chr.AFFECT_EUNHYEONG : (locale.SKILL_EUNHYEONG, "d:/ymir work/ui/skill/assassin/eunhyeong_03.sub",),
chr.AFFECT_GWIGEOM : (locale.SKILL_GWIGEOM, "d:/ymir work/ui/skill/sura/gwigeom_03.sub",),
chr.AFFECT_GONGPO : (locale.SKILL_GONGPO, "d:/ymir work/ui/skill/sura/gongpo_03.sub",),
chr.AFFECT_JUMAGAP : (locale.SKILL_JUMAGAP, "d:/ymir work/ui/skill/sura/jumagap_03.sub"),
chr.AFFECT_HOSIN : (locale.SKILL_HOSIN, "d:/ymir work/ui/skill/shaman/hosin_03.sub",),
chr.AFFECT_BOHO : (locale.SKILL_BOHO, "d:/ymir work/ui/skill/shaman/boho_03.sub",),
chr.AFFECT_KWAESOK : (locale.SKILL_KWAESOK, "d:/ymir work/ui/skill/shaman/kwaesok_03.sub",),
chr.AFFECT_HEUKSIN : (locale.SKILL_HEUKSIN, "d:/ymir work/ui/skill/sura/heuksin_03.sub",),
chr.AFFECT_MUYEONG : (locale.SKILL_MUYEONG, "d:/ymir work/ui/skill/sura/muyeong_03.sub",),
chr.AFFECT_GICHEON : (locale.SKILL_GICHEON, "d:/ymir work/ui/skill/shaman/gicheon_03.sub",),
chr.AFFECT_JEUNGRYEOK : (locale.SKILL_JEUNGRYEOK, "d:/ymir work/ui/skill/shaman/jeungryeok_03.sub",),
chr.AFFECT_PABEOP : (locale.SKILL_PABEOP, "d:/ymir work/ui/skill/sura/pabeop_03.sub",),
chr.AFFECT_FALLEN_CHEONGEUN : (locale.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",),
28 : (locale.SKILL_FIRE, "d:/ymir work/ui/skill/sura/hwayeom_03.sub",),
chr.AFFECT_CHINA_FIREWORK : (locale.SKILL_POWERFUL_STRIKE, "d:/ymir work/ui/skill/common/affect/powerfulstrike.sub",),
#64 - END
chr.NEW_AFFECT_EXP_BONUS : (locale.TOOLTIP_MALL_EXPBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",),
chr.NEW_AFFECT_ITEM_BONUS : (locale.TOOLTIP_MALL_ITEMBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",),
chr.NEW_AFFECT_SAFEBOX : (locale.TOOLTIP_MALL_SAFEBOX, "d:/ymir work/ui/skill/common/affect/safebox.sub",),
chr.NEW_AFFECT_AUTOLOOT : (locale.TOOLTIP_MALL_AUTOLOOT, "d:/ymir work/ui/skill/common/affect/autoloot.sub",),
chr.NEW_AFFECT_FISH_MIND : (locale.TOOLTIP_MALL_FISH_MIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub",),
chr.NEW_AFFECT_MARRIAGE_FAST : (locale.TOOLTIP_MALL_MARRIAGE_FAST, "d:/ymir work/ui/skill/common/affect/marriage_fast.sub",),
chr.NEW_AFFECT_GOLD_BONUS : (locale.TOOLTIP_MALL_GOLDBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",),
chr.NEW_AFFECT_NO_DEATH_PENALTY : (locale.TOOLTIP_APPLY_NO_DEATH_PENALTY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
chr.NEW_AFFECT_SKILL_BOOK_BONUS : (locale.TOOLTIP_APPLY_SKILL_BOOK_BONUS, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY : (locale.TOOLTIP_APPLY_SKILL_BOOK_NO_DELAY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (locale.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",),
MALL_DESC_IDX_START+player.POINT_MALL_DEFBONUS : (locale.TOOLTIP_MALL_DEFBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/def_bonus.sub",),
MALL_DESC_IDX_START+player.POINT_MALL_EXPBONUS : (locale.TOOLTIP_MALL_EXPBONUS, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",),
MALL_DESC_IDX_START+player.POINT_MALL_ITEMBONUS : (locale.TOOLTIP_MALL_ITEMBONUS, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",),
MALL_DESC_IDX_START+player.POINT_MALL_GOLDBONUS : (locale.TOOLTIP_MALL_GOLDBONUS, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",),
MALL_DESC_IDX_START+player.POINT_CRITICAL_PCT : (locale.TOOLTIP_APPLY_CRITICAL_PCT,"d:/ymir work/ui/skill/common/affect/critical.sub"),
MALL_DESC_IDX_START+player.POINT_PENETRATE_PCT : (locale.TOOLTIP_APPLY_PENETRATE_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
MALL_DESC_IDX_START+player.POINT_MAX_HP_PCT : (locale.TOOLTIP_MAX_HP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
MALL_DESC_IDX_START+player.POINT_MAX_SP_PCT : (locale.TOOLTIP_MAX_SP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
MALL_DESC_IDX_START+player.POINT_PC_BANG_EXP_BONUS : (locale.TOOLTIP_MALL_EXPBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/EXP_Bonus_p_on.sub",),
MALL_DESC_IDX_START+player.POINT_PC_BANG_DROP_BONUS: (locale.TOOLTIP_MALL_ITEMBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/Item_Bonus_p_on.sub",),
}
def __init__(self):
ui.Window.__init__(self)
self.lastUpdateTime=0
self.affectImageDict={}
self.horseImage=None
self.lovePointImage=None
self.SetPosition(10, 8)
self.Show()
def ClearAllAffects(self):
self.horseImage=None
self.lovePointImage=None
self.affectImageDict={}
self.__ArrangeImageList()
def ClearAffects(self): ## ½ºÅ³ ÀÌÆåÆ®¸¸ ¾ø¾Û´Ï´Ù.
self.living_affectImageDict={}
for key, image in self.affectImageDict.items():
if not image.IsSkillAffect():
self.living_affectImageDict[key] = image
self.affectImageDict = self.living_affectImageDict
self.__ArrangeImageList()
def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
#print "BINARY_NEW_AddAffect", type, pointIdx, value, duration
if type < 500:
return
if type == chr.NEW_AFFECT_MALL:
affect = self.MALL_DESC_IDX_START + pointIdx
else:
affect = type
if self.affectImageDict.has_key(affect):
return
if not self.AFFECT_DATA_DICT.has_key(affect):
return
## ¿ë½ÅÀÇ °¡È£, ¼±ÀÎÀÇ ±³ÈÆÀº Duration À» 0 À¸·Î ¼³Á¤ÇÑ´Ù.
if affect == chr.NEW_AFFECT_NO_DEATH_PENALTY or\
affect == chr.NEW_AFFECT_SKILL_BOOK_BONUS or\
affect == chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY:
duration = 0
affectData = self.AFFECT_DATA_DICT[affect]
description = affectData[0]
filename = affectData[1]
if pointIdx == player.POINT_MALL_ITEMBONUS or\
pointIdx == player.POINT_MALL_GOLDBONUS:
value = 1 + float(value) / 100.0
description = description(float(value))
try:
print "Add affect %s" % affect
image = AffectImage()
image.SetParent(self)
image.LoadImage(filename)
image.SetDescription(description)
image.SetDuration(duration)
image.SetAffect(affect)
if affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE or\
affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15:
image.UpdateDescription2()
else:
image.UpdateDescription()
image.SetScale(0.7, 0.7)
image.SetSkillAffectFlag(FALSE)
image.Show()
self.affectImageDict[affect] = image
self.__ArrangeImageList()
except:
print "except Aff affect "
pass
def BINARY_NEW_RemoveAffect(self, type, pointIdx):
if type == chr.NEW_AFFECT_MALL:
affect = self.MALL_DESC_IDX_START + pointIdx
else:
affect = type
print "Remove Affect %s %s" % ( type , pointIdx )
self.__RemoveAffect(affect)
self.__ArrangeImageList()
def SetAffect(self, affect):
self.__AppendAffect(affect)
self.__ArrangeImageList()
def ResetAffect(self, affect):
self.__RemoveAffect(affect)
self.__ArrangeImageList()
def SetLoverInfo(self, name, lovePoint):
image = LovePointImage()
image.SetParent(self)
image.SetLoverInfo(name, lovePoint)
self.lovePointImage = image
self.__ArrangeImageList()
def ShowLoverState(self):
if self.lovePointImage:
self.lovePointImage.Show()
self.__ArrangeImageList()
def HideLoverState(self):
if self.lovePointImage:
self.lovePointImage.Hide()
self.__ArrangeImageList()
def ClearLoverState(self):
self.lovePointImage = None
self.__ArrangeImageList()
def OnUpdateLovePoint(self, lovePoint):
if self.lovePointImage:
self.lovePointImage.OnUpdateLovePoint(lovePoint)
def SetHorseState(self, level, health, battery):
if level==0:
self.horseImage=None
else:
image = HorseImage()
image.SetParent(self)
image.SetState(level, health, battery)
image.Show()
self.horseImage=image
self.__ArrangeImageList()
def __AppendAffect(self, affect):
if self.affectImageDict.has_key(affect):
return
try:
affectData = self.AFFECT_DATA_DICT[affect]
except KeyError:
return
name = affectData[0]
filename = affectData[1]
skillIndex = player.AffectIndexToSkillIndex(affect)
if 0 != skillIndex:
name = skill.GetSkillName(skillIndex)
image = AffectImage()
image.SetParent(self)
image.SetSkillAffectFlag(TRUE)
try:
image.LoadImage(filename)
except:
pass
image.SetToolTipText(name, 0, 40)
image.SetScale(0.7, 0.7)
image.Show()
self.affectImageDict[affect] = image
def __RemoveAffect(self, affect):
if not self.affectImageDict.has_key(affect):
print "__RemoveAffect %s ( No Affect )" % affect
return
print "__RemoveAffect %s ( Affect )" % affect
del self.affectImageDict[affect]
def __ArrangeImageList(self):
width = len(self.affectImageDict) * self.IMAGE_STEP
if self.lovePointImage:
width+=self.IMAGE_STEP
if self.horseImage:
width+=self.IMAGE_STEP
self.SetSize(width, 26)
xPos = 0
if self.lovePointImage:
if self.lovePointImage.IsShow():
self.lovePointImage.SetPosition(xPos, 0)
xPos += self.IMAGE_STEP
if self.horseImage:
self.horseImage.SetPosition(xPos, 0)
xPos += self.IMAGE_STEP
for image in self.affectImageDict.values():
image.SetPosition(xPos, 0)
xPos += self.IMAGE_STEP
def OnUpdate(self):
if app.GetGlobalTimeStamp() - self.lastUpdateTime >= 60:
self.lastUpdateTime = app.GetGlobalTimeStamp()
for image in self.affectImageDict.values():
if not image.IsSkillAffect():
if image.GetAffect() == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE or\
image.GetAffect() == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15:
image.UpdateDescription2()
else:
image.UpdateDescription()
Gerade nicht so viel Lust zu schreiben.
|
Nice, thanks for up
|
|
|
12/22/2012, 10:45
|
#8
|
elite*gold: 0
Join Date: Dec 2012
Posts: 97
Received Thanks: 7
|
and who helps me I will give hem any thing he want but please help
|
|
|
12/22/2012, 10:46
|
#9
|
elite*gold: 0
Join Date: Dec 2012
Posts: 26
Received Thanks: 3
|
Sieht nice aus.
Danke
|
|
|
12/22/2012, 10:50
|
#10
|
elite*gold: 0
Join Date: Dec 2012
Posts: 231
Received Thanks: 129
|
Ich danke dir
|
|
|
12/22/2012, 10:57
|
#11
|
elite*gold: 0
Join Date: Dec 2012
Posts: 100
Received Thanks: 55
|
Hammer Release Kuchen Schaut Ingame Professioneller aus und schicker mit Pet-LvL und sogar ein Extra GUI dafür einfach nur Spitzenklasse Vielen Dank und ich freue mich auf mehr von dir
MfG
Shaiine™
|
|
|
12/22/2012, 11:16
|
#12
|
elite*gold: 50
Join Date: May 2012
Posts: 1,136
Received Thanks: 401
|
Kuchen?
Ich liebe dich <3
Dankeschön :>
|
|
|
12/22/2012, 11:22
|
#13
|
elite*gold: 0
Join Date: Dec 2012
Posts: 126
Received Thanks: 118
|
danke.
|
|
|
12/22/2012, 11:24
|
#14
|
elite*gold: 1
Join Date: Jun 2012
Posts: 1,185
Received Thanks: 198
|
richtig Nice!(:::
|
|
|
12/22/2012, 11:42
|
#15
|
elite*gold: 222
Join Date: Oct 2012
Posts: 2,367
Received Thanks: 3,388
|
DasKuchen was machst du da ?! ._.
Die Community ist es kein bisschen Wert, dass du dein erarbeitetes mit ihnen teilst
Aber deine Petgui ist echt nice, muss ich schon sagen!
@meins:
|
|
|
|
|
Similar Threads
|
[Release]Meine Erste Quest (begruesung.quest)
11/10/2012 - Metin2 PServer Guides & Strategies - 15 Replies
Hallo Leute,
ich bin gerade dabei Questen zu lernen, und wollte meine erste super duber ultra epic awesome Quest releasen.
Hier der Quellcode:
------------------
--@author: .Marcel'
--@date: 09.11.2012
|
[Release]Besserer OX-Manage quest mit OX-Verlassen quest usw.
05/08/2012 - Metin2 PServer Guides & Strategies - 27 Replies
Da mich es immer aufregt, dass mann beim OX immer erst die Blume rufen muss und dann drauf klicken, habe ich mal eine quest für eine oxerleicterung geschrieben.
(© by BestKilla && Der quest darf nur unter genehmigung geändert werden.)
(Sollte diese Quest fiels als eure ausgegeben werden, wird sofort der quest rausgenommen.)
OX STARTEN: Ihr müsst euch mit '/go ox' erst nach ox porten, dann mit quest ox starten.
Die Queste:
+Diese Quest ermölichen eine OX-Wettbewerb ohne die Umständlige...
|
[Release]Upp-Stuff Quest + Neue Bio Quest ->Testlauf
06/08/2010 - Metin2 PServer Guides & Strategies - 13 Replies
Hey und guten Morgen,
Ich hatte grade bissl langeweile und hab mir gedacht man könnte doch seine Waffen auch mit 100% Uppchance gg bessere Waffen tauschen oder? Das heißt:
Die Quest sieht so aus:
Ihr geht zu Baek-Go. Wenn ihr jetzt zum Beispiel einen Krähenstahlbogen+9 und 2x Gegenangriffstrategien habt könnt ihr Ihn gg einen Geisterbogen+0 eintauschen!
Die Quest funktioniert wunderbar und wurde auch schon getestet.
|
All times are GMT +1. The time now is 06:45.
|
|