|
You last visited: Today at 09:32
Advertisement
[Problemfrage]Warpring weiter Button
Discussion on [Problemfrage]Warpring weiter Button within the Metin2 Private Server forum part of the Metin2 category.
06/08/2013, 17:20
|
#16
|
elite*gold: 83
Join Date: Apr 2010
Posts: 1,665
Received Thanks: 685
|
Quote:
Originally Posted by zуℓση
xD hab mal spaßhalber eine warpring quest eingefügt ohne "weiter" irgendwo stehen, aber hauptsache es steht trotzdem an der seite da..
|
Dann müsste das ganze clientside liegen, müsstest halt das Python-Script ändern.
|
|
|
06/08/2013, 18:07
|
#17
|
elite*gold: 10
Join Date: May 2012
Posts: 4,490
Received Thanks: 623
|
Quote:
Originally Posted by ZyoX
Dann müsste das ganze clientside liegen, müsstest halt das Python-Script ändern.
|
So ist es, weder in der questlib.lua noch in der quest_function
wurde diese definiert, es kommt immer, wenn es zuviele Buttons in
einer Quest sind. Es liegt zu 100% am Client, doch wo? In root.epk/eix?
€: Hab die locale_de.epk/eix durchsucht und der zeigt mir an:
Also es liegt in der locale_game.txt - würde ich mal sagen.
|
|
|
06/08/2013, 19:02
|
#18
|
elite*gold: 0
Join Date: Mar 2012
Posts: 774
Received Thanks: 420
|
Quote:
Originally Posted by LEL0UCH'
So ist es, weder in der questlib.lua noch in der quest_function
wurde diese definiert, es kommt immer, wenn es zuviele Buttons in
einer Quest sind. Es liegt zu 100% am Client, doch wo? In root.epk/eix?
€: Hab die locale_de.epk/eix durchsucht und der zeigt mir an:
Also es liegt in der locale_game.txt - würde ich mal sagen.
|
 in der locale_game.txt is klar.. wenn du auch nur ein wenig ahnung hättest würdest du wissen das die locale_game.txt für die PY scripts in der root.epk/eix.. in der locale_de.epk/eix oder in der uiscript.epk/eix dienen.. hab mich mit dem weiter button nicht beschäftigt.. aber entweder liegt es in der root.epk irgendwo in den python dateien oder in der locale
|
|
|
06/08/2013, 21:49
|
#19
|
elite*gold: 0
Join Date: May 2011
Posts: 164
Received Thanks: 38
|
LEL0UCH', du hast doch die Files und den Client erstellt, du müsstest es doch wissen
|
|
|
06/09/2013, 00:09
|
#20
|
elite*gold: 270
Join Date: May 2013
Posts: 1,017
Received Thanks: 563
|
Entfern mal das weiter in der quest und ersetz das Abbrechen durch weiter..
|
|
|
06/09/2013, 00:51
|
#21
|
elite*gold: 10
Join Date: May 2012
Posts: 4,490
Received Thanks: 623
|
Quote:
Originally Posted by *.Creatic.*
 in der locale_game.txt is klar.. wenn du auch nur ein wenig ahnung hättest würdest du wissen das die locale_game.txt für die PY scripts in der root.epk/eix.. in der locale_de.epk/eix oder in der uiscript.epk/eix dienen.. hab mich mit dem weiter button nicht beschäftigt.. aber entweder liegt es in der root.epk irgendwo in den python dateien oder in der locale
|
Tut mir leid allerhöchster 
Hab im Client weniger Ahnung, habs mal nur gesucht und gefunden, dachte
wenigstens könnte das behilflich sein - man man man ..
Quote:
Originally Posted by TheDomiXD
LEL0UCH', du hast doch die Files und den Client erstellt, du müsstest es doch wissen 
|
Du meinst wohl Invoice, ich bin es nicht, hab nur den Sammelthread offen.
|
|
|
06/09/2013, 00:53
|
#22
|
elite*gold: 60
Join Date: Jul 2010
Posts: 771
Received Thanks: 439
|
Es liegt an der uiquest.py im Client.
Ich habe einfach die ältere uiquest.py aus mein alten Client genommen und weg wars auch schon.
Mich würde er interessieren, wie ich diese neuen weiter button richtig einsetzen kann, würde den warpring viel besser machen.
Hier ist meine uiquest.py
Code:
import ui
import dbg
import app
import grp
import grpImage
import event
import time
import wndMgr
import net
QUEST_BOARD_IMAGE_DIR = 'd:/ymir work/ui/game/questboard/'
# TOOLTIP_IMAGE_BOX
class ToolTipImageBox(ui.ImageBox):
def __init__(self):
ui.ImageBox.__init__(self)
self.DestroyToolTip()
def __del__(self):
ui.ImageBox.__del__(self)
def CreateToolTip(self, parent, title, desc, x, y):
import uiToolTip
self.toolTip = uiToolTip.ToolTip()
self.toolTip.SetWindowHorizontalAlignCenter()
self.toolTip.SetFollow(FALSE)
self.toolTip.SetTitle(title)
self.toolTip.SetPosition(x, y)
desc = desc.replace("|", "/")
for line in desc.split("/"):
self.toolTip.AutoAppendTextLine(line)
self.toolTip.ResizeToolTip()
self.toolTip.Hide()
def DestroyToolTip(self):
self.toolTip = None
def OnMouseOverIn(self):
if self.toolTip:
self.toolTip.SetTop()
self.toolTip.Show()
def OnMouseOverOut(self):
if self.toolTip:
self.toolTip.Hide()
# END_OF_TOOLTIP_IMAGE_BOX
class QuestCurtain(ui.Window):
CURTAIN_TIME = 0.25
CURTAIN_SPEED = 200
BarHeight = 60
OnDoneEvent = None
def __init__(self,layer="TOP_MOST"):
ui.Window.__init__(self,layer)
self.TopBar = ui.Bar("TOP_MOST")
self.BottomBar = ui.Bar("TOP_MOST")
self.TopBar.Show()
self.BottomBar.Show()
self.TopBar.SetColor(0xff000000)
self.BottomBar.SetColor(0xff000000)
self.TopBar.SetPosition(0,-self.BarHeight)
self.TopBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight())
self.BottomBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.CurtainMode = 0
self.lastclock = time.clock()
def Close(self):
self.CurtainMode = 0
self.TopBar.SetPosition(0, -self.BarHeight-1)
self.BottomBar.SetPosition(0, wndMgr.GetScreenHeight()+1)
if QuestCurtain.OnDoneEvent:
apply(QuestCurtain.OnDoneEvent,(self,))
QuestCurtain.OnDoneEvent = None
def OnUpdate(self):
dt = time.clock() - self.lastclock
if self.CurtainMode>0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]>0:
self.TopBar.SetPosition(0,0)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()-self.BarHeight)
self.CurtainMode = 0
elif self.CurtainMode<0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]<-self.BarHeight:
self.TopBar.SetPosition(0,-self.BarHeight-1)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()+1)
self.Close()
self.lastclock = time.clock()
class EventCurtain(ui.Bar):
COLOR_WHITE = 0.0
COLOR_BLACK = 1.0
DEFAULT_FADE_SPEED = 0.035
STATE_WAIT = 0
STATE_OUT = 1
STATE_IN = 2
def __init__(self, index):
print "NEW EVENT CURTAIN ----------------------------------------------------------------------------"
ui.Bar.__init__(self, "CURTAIN")
self.SetWindowName("EventCurtain")
self.AddFlag("float")
self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.Hide()
self.fadeColor = 1.0
self.curAlpha = 0.0
self.FadeInFlag = FALSE
self.state = self.STATE_WAIT
self.speed = 1.0
self.eventIndex = index
def __del__(self):
print "---------------------------------------------------------------------------- DELETE EVENT CURTAIN"
ui.Bar.__del__(self)
def SetAlpha(self, alpha):
color = grp.GenerateColor(self.fadeColor, self.fadeColor, self.fadeColor, alpha)
self.SetColor(color)
def FadeOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 0.0, speed)
def FadeIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 0.0, speed)
def WhiteOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 1.0, speed)
def WhiteIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 1.0, speed)
def __StartFade(self, state, color, speed):
self.state = state
self.fadeColor = color
self.Show()
self.speed = self.DEFAULT_FADE_SPEED
if 0 != speed:
self.speed = speed
def __EndFade(self):
event.EndEventProcess(self.eventIndex)
def OnUpdate(self):
if self.STATE_OUT == self.state:
self.curAlpha += self.speed
if self.curAlpha >= 1.0:
self.state = self.STATE_WAIT
self.curAlpha = 1.0
self.__EndFade()
elif self.STATE_IN == self.state:
self.curAlpha -= self.speed
if self.curAlpha <= 0.0:
self.state = self.STATE_WAIT
self.curAlpha = 0.0
self.__EndFade()
self.Hide()
self.SetAlpha(self.curAlpha)
class BarButton(ui.Button):
ColorUp = 0x40999999
ColorDown = 0x40aaaacc
ColorOver = 0x40ddddff
UP=0
DOWN=1
OVER=2
def __init__(self, layer = "UI",
aColorUp = ColorUp,
aColorDown = ColorDown,
aColorOver = ColorOver):
ui.Button.__init__(self,layer)
self.state = self.UP
self.colortable = aColorUp, aColorDown, aColorOver
def OnRender(self):
x,y = self.GetGlobalPosition()
grp.SetColor(self.colortable[self.state])
grp.RenderBar(x,y,self.GetWidth(),self.GetHeight())
def CallEvent(self):
self.state = self.UP
ui.Button.CallEvent(self)
def DownEvent(self):
self.state = self.DOWN
def ShowToolTip(self):
self.state = self.OVER
def HideToolTip(self):
self.state = self.UP
class DescriptionWindow(ui.Window):
def __init__(self,idx):
ui.Window.__init__(self, "TOP_MOST")
self.descIndex = idx
def __del__(self):
ui.Window.__del__(self)
def OnRender(self):
event.RenderEventSet(self.descIndex)
class QuestDialog(ui.ScriptWindow):
TITLE_STATE_NONE = 0
TITLE_STATE_APPEAR = 1
TITLE_STATE_SHOW = 2
TITLE_STATE_DISAPPEAR = 3
SKIN_NONE = 0
SKIN_CINEMA = 5
def __init__(self,skin,idx):
ui.ScriptWindow.__init__(self)
self.SetWindowName("quest dialog")
self.board = None
self.sx = 0
self.sy = 0
self.skin = skin
if skin == 3:
event.SetRestrictedCount(idx,36)
else:
event.SetRestrictedCount(idx,52)
QuestCurtain.BarHeight = (wndMgr.GetScreenHeight()-wndMgr.GetScreenWidth()*9/16)/2
if QuestCurtain.BarHeight<0:
QuestCurtain.BarHeight = 50
if not ('QuestCurtain' in QuestDialog.__dict__):
QuestDialog.QuestCurtain = QuestCurtain()
QuestDialog.QuestCurtain.Show()
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
if self.skin:
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
self.LoadDialog(self.skin)
else:
QuestDialog.QuestCurtain.CurtainMode = -1
self.nextCurtainMode = -1
self.descIndex = idx
self.descWindow = DescriptionWindow(idx)
self.descWindow.Show()
self.eventCurtain = EventCurtain(idx)
event.SetEventHandler(idx, self)
self.OnCloseEvent = None
self.btnAnswer = None
self.btnNext = None
self.imgLeft = None
self.imgTop = None
self.imgBackground = None
self.imgTitle = None
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = 0
self.images = []
# QUEST_INPUT
self.needInputString = FALSE
self.editSlot = None
self.editLine = None
# END_OF_QUEST_INPUT
def __del__(self):
ui.ScriptWindow.__del__(self)
def LoadDialog(self, skin):
try:
PythonScriptLoader = ui.PythonScriptLoader()
PythonScriptLoader.LoadScriptFile(self, "uiscript/questdialog.py")
except RuntimeError:
dbg.TraceError("QuestDialog.LoadDialog")
try:
self.board = self.GetChild('board')
except RuntimeError:
dbg.TraceError("QuestDialog.BindObject")
self.SetCenterPosition()
if self.SKIN_CINEMA == skin:
self.board.Hide()
# QUEST_CANCEL
def OnCancel(self):
self.nextCurtainMode = -1
self.CloseSelf()
# END_OF_QUEST_CANCEL
def CloseSelf(self):
QuestDialog.QuestCurtain.CurtainMode = self.nextCurtainMode
self.btnNext = None
self.descWindow = None
self.btnAnswer = None
self.Destroy()
if self.descIndex:
event.ClearEventSet(self.descIndex)
self.descIndex = None
def Destroy(self):
self.ClearDictionary()
if self.OnCloseEvent:
self.OnCloseEvent()
self.OnCloseEvent = None
# QUEST_INPUT
if self.needInputString:
if self.editLine:
text = self.editLine.GetText()
net.SendQuestInputStringPacket(text)
# END_OF_QUEST_INPUT
self.imgTitle = None
self.images = None
self.eventCurtain = None
self.board = None
def OnUpdate(self):
if self.skin == self.SKIN_CINEMA:
event.UpdateEventSet(self.descIndex, 50, -(wndMgr.GetScreenHeight() - 44))
# AUTO_RESIZE_BOARD
elif self.skin == 3:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20+self.sx, -self.board.GetGlobalPosition()[1]-20-self.sy)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
elif self.skin:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20, -self.board.GetGlobalPosition()[1]-20)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
# END_OF_AUTO_RESIZE_BOARD
else:
event.UpdateEventSet(self.descIndex, 0, 0)
if self.TITLE_STATE_NONE != self.titleState:
curTime = app.GetTime()
elapsedTime = app.GetTime() - self.titleShowTime
if self.TITLE_STATE_APPEAR == self.titleState:
self.imgTitle.SetAlpha(elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_SHOW
self.titleShowTime = curTime
elif self.TITLE_STATE_SHOW == self.titleState:
if elapsedTime > 1.0:
self.titleState = self.TITLE_STATE_DISAPPEAR
self.titleShowTime = curTime
elif self.TITLE_STATE_DISAPPEAR == self.titleState:
self.imgTitle.SetAlpha(1.0 - elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = curTime
## Set Variables
def AddOnCloseEvent(self,f):
if self.OnCloseEvent:
self.OnCloseEvent = lambda z=[self.OnCloseEvent, f]:map(apply,z)
else:
self.OnCloseEvent = f
def SetOnDoneEvent(self,f):
if not QuestCurtain.OnDoneEvent:
QuestCurtain.OnDoneEvent = f
def SetOnCloseEvent(self,f):
self.OnCloseEvent = f
def SetEventSetPosition(self, x, y):
self.sx = x
self.sy = y
def AdjustEventSetPosition(self, x, y):
self.sx += x
self.sy += y
## Event
# QUEST_CANCEL
def MakeNextButton(self, button_type):
if self.SKIN_NONE == self.skin:
return
yPos = event.GetEventSetLocalYPosition(self.descIndex)
b = BarButton()
b.SetParent(self.board)
b.SetSize(100,26)
b.SetPosition(self.sx+self.board.GetWidth()/2-50,self.sy+yPos)
import locale
if event.BUTTON_TYPE_CANCEL == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.OnCancel())
b.SetText(locale.UI_CANCEL)
elif event.BUTTON_TYPE_DONE == button_type:
b.SetEvent(lambda s=self:s.CloseSelf())
b.SetText(locale.UI_OK)
elif event.BUTTON_TYPE_NEXT == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.CloseSelf())
b.SetText(locale.UI_NEXT)
b.Show()
b.SetTextColor(0xffffffff)
self.btnNext = b
# END_OF_QUEST_CANCEL
def MakeQuestion(self, n):
if not self.board:
return
c = self.board
def MakeEachButton(i):
if self.skin == 3:
b = BarButton("TOP_MOST",0x50000000, 0x50404040, 0x50606060)
b.SetParent(c)
b.SetSize(106,26)
b.SetPosition(self.sx+c.GetWidth()/2+(i-1)*56-56, self.sy+(event.GetLineCount(self.descIndex))*16+20+5)
b.SetText("a")
b.SetTextColor(0xff000000)
else:
b = BarButton("TOP_MOST")
b.SetParent(c)
b.SetSize(200,26)
b.SetPosition(self.sx+c.GetWidth()/2-100,self.sy+(event.GetLineCount(self.descIndex)+i)*16+20+5)
b.SetText("a")
b.SetTextColor(0xffffffff)
return b
self.btnAnswer = [MakeEachButton(i*2) for i in xrange (n)]
def AppendQuestion(self, name, idx):
if not self.btnAnswer:
return
self.btnAnswer[idx].SetText(name)
def ClickAnswerEvent(s, ai):
event.SelectAnswer(s.descIndex, ai)
s.CloseSelf()
from _weakref import proxy
self.btnAnswer[idx].SetEvent(ClickAnswerEvent,proxy(self),idx)
self.btnAnswer[idx].Show()
def FadeOut(self, speed):
self.eventCurtain.FadeOut(speed)
def FadeIn(self, speed):
self.eventCurtain.FadeIn(speed)
def WhiteOut(self, speed):
self.eventCurtain.WhiteOut(speed)
def WhiteIn(self, speed):
self.eventCurtain.WhiteIn(speed)
def DoneEvent(self):
self.nextCurtainMode = -1
if self.SKIN_NONE == self.skin or self.SKIN_CINEMA == self.skin:
self.CloseSelf()
def __GetQuestImageFileName(self, filename):
if len(filename) > 1:
if filename[1]!=':':
filename = QUEST_BOARD_IMAGE_DIR+filename
return filename
# QUEST_INPUT
def OnKeyDown(self, key):
return TRUE
def OnIMEReturn(self):
if self.needInputString:
self.CloseSelf()
return TRUE
def OnIMEUpdate(self):
if not self.needInputString:
return
if not self.editLine:
return
self.editLine.OnIMEUpdate()
def OnInput(self):
self.needInputString = TRUE
event.AddEventSetLocalYPosition(self.descIndex, 5+10)
yPos = event.GetEventSetLocalYPosition(self.descIndex)
self.editSlot = ui.SlotBar()
self.editSlot.SetSize(200, 18)
self.editSlot.SetPosition(0, yPos)
self.editSlot.SetParent(self.board)
self.editSlot.SetWindowHorizontalAlignCenter()
self.editSlot.Show()
self.editLine = ui.EditLine()
self.editLine.SetParent(self.editSlot)
self.editLine.SetPosition(3, 3)
self.editLine.SetSize(200, 17)
self.editLine.SetMax(30)
self.editLine.SetFocus()
self.editLine.Show()
event.AddEventSetLocalYPosition(self.descIndex, 25+10)
self.MakeNextButton(event.BUTTON_TYPE_DONE)
self.editLine.UpdateRect()
self.editSlot.UpdateRect()
self.board.UpdateRect()
# END_OF_QUEST_INPUT
def OnImage(self, x, y, filename, desc=""):
filename = self.__GetQuestImageFileName(filename)
# IMAGE_EXCEPTION_BUG_FIX
try:
img = ui.MakeImageBox(self.board, filename, x, y)
self.images.append(img)
except RuntimeError:
pass
# END_OF_IMAGE_EXCEPTION_BUG_FIX
# QUEST_IMAGE
def OnInsertItemIcon(self, type, idx, title, desc):
if "item" != type:
return
import item
item.SelectItem(idx)
filename = item.GetIconImageFileName()
underTitle = title
if not title and not desc:
title = item.GetItemName()
desc = item.GetItemDescription()
tempDesc = desc
desc = ""
import grpText
lineCount = grpText.GetSplitingTextLineCount(tempDesc, 25)
for i in xrange(lineCount):
desc += grpText.GetSplitingTextLine(tempDesc, 25, i) + "/"
desc = desc[:-1]
self.OnInsertImage(filename, underTitle, title, desc)
def OnInsertImage(self, filename, underTitle, title, desc):
event.AddEventSetLocalYPosition(self.descIndex, 24)
y = event.GetEventSetLocalYPosition(self.descIndex)
xBoard, yBoard = self.board.GetGlobalPosition()
try:
img = ToolTipImageBox()
img.SetParent(self.board)
img.LoadImage(filename)
img.SetPosition(0, y)
img.SetWindowHorizontalAlignCenter()
img.DestroyToolTip()
if title and desc:
img.CreateToolTip(self.board, title, desc, 0, yBoard + y + img.GetHeight())
img.Show()
self.images.append(img)
except RuntimeError:
pass
event.AddEventSetLocalYPosition(self.descIndex, img.GetHeight() - 20)
if underTitle:
event.AddEventSetLocalYPosition(self.descIndex, 3)
event.InsertText(self.descIndex, underTitle)
else:
event.AddEventSetLocalYPosition(self.descIndex, 4)
# END_OF_QUEST_IMAGE
def OnSize(self, width, height):
self.board.SetSize(width, height)
def OnTitleImage(self, filename):
img = ui.ImageBox("TOP_MOST")
try:
img.SetWindowHorizontalAlignCenter()
img.LoadImage(filename)
img.SetPosition(0, wndMgr.GetScreenHeight() - (75/2) - (32/2))
img.SetAlpha(0.0)
img.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTitleImage(%s)" % filename)
img.Hide()
self.imgTitle = img
self.titleState = self.TITLE_STATE_APPEAR
self.titleShowTime = app.GetTime()
def OnLeftImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
if not self.imgLeft:
self.imgLeft = ui.ExpandedImageBox("TOP_MOST")
self.imgLeft.SetParent(self)
self.imgLeft.SetPosition(0,0)
bd = self.board
bx, by = bd.GetLocalPosition()
bd.SetPosition(160,by)
if self.imgTop:
tx, ty = self.imgTop.GetLocalPosition()
self.imgTop.SetPosition(160,ty)
try:
self.imgLeft.LoadImage(imgfile)
self.imgLeft.SetSize(400,450)
self.imgLeft.SetOrigin(self.imgLeft.GetWidth()/2,self.imgLeft.GetHeight()/2)
self.imgLeft.Show()
except RuntimeError:
import dbg
dbg.TraceError("QuestDialog.OnLeftImage(%s)" % imgfile)
self.imgLeft.Hide()
def OnTopImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
bd = self.board
bx, by = bd.GetLocalPosition()
if not self.imgTop:
self.imgTop = ui.ExpandedImageBox("TOP_MOST")
self.imgTop.SetParent(self)
bd.SetPosition(bx,190)
self.imgTop.SetPosition(bx,10)
try:
self.imgTop.LoadImage(imgfile)
h = self.imgTop.GetHeight()
if h>170:
# need adjust board size
bd.SetPosition(bx,20+h)
bd.SetSize(350,420-h)
self.imgTop.SetSize(350,h)
else:
self.imgTop.SetSize(350,170)
bd.SetPosition(bx,190)
bd.SetSize(350,250)
self.imgTop.SetOrigin(self.imgTop.GetWidth()/2,self.imgTop.GetHeight()/2)
self.imgTop.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTopImage(%s)" % imgfile)
self.imgTop.Hide()
def OnBackgroundImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
c = self.board
w = c.GetWidth()
h = c.GetHeight()
px, py = c.GetLocalPosition()
moved = 0
if not self.imgBackground:
self.imgBackground = ui.ExpandedImageBox("TOP_MOST")
self.imgBackground.SetParent(c)
self.imgBackground.SetPosition(0,0)
self.imgBackground.LoadImage(imgfile)
iw = self.imgBackground.GetWidth()
ih = self.imgBackground.GetHeight()
if self.skin==3:
iw = 256
ih = 333
self.imgBackground.SetSize(iw,ih)
if w < iw:
px -= (iw-w)/2
c.SetPosition(px,py)
w = iw
if h < ih:
py -= (ih-h)/2
c.SetPosition(px,py)
h = ih
if self.skin == 3:
w=256
h = 333
self.sx = 0
self.sy = 100
c.SetSize(w,h)
c.HideInternal()
c.SetWindowHorizontalAlignCenter()
c.SetWindowVerticalAlignCenter()
c.SetPosition(0,0)
if self.skin==3:
c.SetPosition(-190,0)
self.imgBackground.SetWindowHorizontalAlignCenter()
self.imgBackground.SetWindowVerticalAlignCenter()
self.imgBackground.SetPosition(0,0)
self.imgBackground.Show()
MfG
Kriegergeist^^
|
|
|
06/09/2013, 00:54
|
#23
|
elite*gold: 10
Join Date: May 2012
Posts: 4,490
Received Thanks: 623
|
Quote:
Originally Posted by Kriegergeist^^
Es liegt an der uiquest.py im Client.
Ich habe einfach die ältere uiquest.py aus mein alten Client genommen und weg wars auch schon.
Mich würde er interessieren, wie ich diese neuen weiter button richtig einsetzen kann, würde die warpring viel besser machen.
Hier ist meine uiquest.py
Code:
import ui
import dbg
import app
import grp
import grpImage
import event
import time
import wndMgr
import net
QUEST_BOARD_IMAGE_DIR = 'd:/ymir work/ui/game/questboard/'
# TOOLTIP_IMAGE_BOX
class ToolTipImageBox(ui.ImageBox):
def __init__(self):
ui.ImageBox.__init__(self)
self.DestroyToolTip()
def __del__(self):
ui.ImageBox.__del__(self)
def CreateToolTip(self, parent, title, desc, x, y):
import uiToolTip
self.toolTip = uiToolTip.ToolTip()
self.toolTip.SetWindowHorizontalAlignCenter()
self.toolTip.SetFollow(FALSE)
self.toolTip.SetTitle(title)
self.toolTip.SetPosition(x, y)
desc = desc.replace("|", "/")
for line in desc.split("/"):
self.toolTip.AutoAppendTextLine(line)
self.toolTip.ResizeToolTip()
self.toolTip.Hide()
def DestroyToolTip(self):
self.toolTip = None
def OnMouseOverIn(self):
if self.toolTip:
self.toolTip.SetTop()
self.toolTip.Show()
def OnMouseOverOut(self):
if self.toolTip:
self.toolTip.Hide()
# END_OF_TOOLTIP_IMAGE_BOX
class QuestCurtain(ui.Window):
CURTAIN_TIME = 0.25
CURTAIN_SPEED = 200
BarHeight = 60
OnDoneEvent = None
def __init__(self,layer="TOP_MOST"):
ui.Window.__init__(self,layer)
self.TopBar = ui.Bar("TOP_MOST")
self.BottomBar = ui.Bar("TOP_MOST")
self.TopBar.Show()
self.BottomBar.Show()
self.TopBar.SetColor(0xff000000)
self.BottomBar.SetColor(0xff000000)
self.TopBar.SetPosition(0,-self.BarHeight)
self.TopBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight())
self.BottomBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.CurtainMode = 0
self.lastclock = time.clock()
def Close(self):
self.CurtainMode = 0
self.TopBar.SetPosition(0, -self.BarHeight-1)
self.BottomBar.SetPosition(0, wndMgr.GetScreenHeight()+1)
if QuestCurtain.OnDoneEvent:
apply(QuestCurtain.OnDoneEvent,(self,))
QuestCurtain.OnDoneEvent = None
def OnUpdate(self):
dt = time.clock() - self.lastclock
if self.CurtainMode>0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]>0:
self.TopBar.SetPosition(0,0)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()-self.BarHeight)
self.CurtainMode = 0
elif self.CurtainMode<0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]<-self.BarHeight:
self.TopBar.SetPosition(0,-self.BarHeight-1)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()+1)
self.Close()
self.lastclock = time.clock()
class EventCurtain(ui.Bar):
COLOR_WHITE = 0.0
COLOR_BLACK = 1.0
DEFAULT_FADE_SPEED = 0.035
STATE_WAIT = 0
STATE_OUT = 1
STATE_IN = 2
def __init__(self, index):
print "NEW EVENT CURTAIN ----------------------------------------------------------------------------"
ui.Bar.__init__(self, "CURTAIN")
self.SetWindowName("EventCurtain")
self.AddFlag("float")
self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.Hide()
self.fadeColor = 1.0
self.curAlpha = 0.0
self.FadeInFlag = FALSE
self.state = self.STATE_WAIT
self.speed = 1.0
self.eventIndex = index
def __del__(self):
print "---------------------------------------------------------------------------- DELETE EVENT CURTAIN"
ui.Bar.__del__(self)
def SetAlpha(self, alpha):
color = grp.GenerateColor(self.fadeColor, self.fadeColor, self.fadeColor, alpha)
self.SetColor(color)
def FadeOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 0.0, speed)
def FadeIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 0.0, speed)
def WhiteOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 1.0, speed)
def WhiteIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 1.0, speed)
def __StartFade(self, state, color, speed):
self.state = state
self.fadeColor = color
self.Show()
self.speed = self.DEFAULT_FADE_SPEED
if 0 != speed:
self.speed = speed
def __EndFade(self):
event.EndEventProcess(self.eventIndex)
def OnUpdate(self):
if self.STATE_OUT == self.state:
self.curAlpha += self.speed
if self.curAlpha >= 1.0:
self.state = self.STATE_WAIT
self.curAlpha = 1.0
self.__EndFade()
elif self.STATE_IN == self.state:
self.curAlpha -= self.speed
if self.curAlpha <= 0.0:
self.state = self.STATE_WAIT
self.curAlpha = 0.0
self.__EndFade()
self.Hide()
self.SetAlpha(self.curAlpha)
class BarButton(ui.Button):
ColorUp = 0x40999999
ColorDown = 0x40aaaacc
ColorOver = 0x40ddddff
UP=0
DOWN=1
OVER=2
def __init__(self, layer = "UI",
aColorUp = ColorUp,
aColorDown = ColorDown,
aColorOver = ColorOver):
ui.Button.__init__(self,layer)
self.state = self.UP
self.colortable = aColorUp, aColorDown, aColorOver
def OnRender(self):
x,y = self.GetGlobalPosition()
grp.SetColor(self.colortable[self.state])
grp.RenderBar(x,y,self.GetWidth(),self.GetHeight())
def CallEvent(self):
self.state = self.UP
ui.Button.CallEvent(self)
def DownEvent(self):
self.state = self.DOWN
def ShowToolTip(self):
self.state = self.OVER
def HideToolTip(self):
self.state = self.UP
class DescriptionWindow(ui.Window):
def __init__(self,idx):
ui.Window.__init__(self, "TOP_MOST")
self.descIndex = idx
def __del__(self):
ui.Window.__del__(self)
def OnRender(self):
event.RenderEventSet(self.descIndex)
class QuestDialog(ui.ScriptWindow):
TITLE_STATE_NONE = 0
TITLE_STATE_APPEAR = 1
TITLE_STATE_SHOW = 2
TITLE_STATE_DISAPPEAR = 3
SKIN_NONE = 0
SKIN_CINEMA = 5
def __init__(self,skin,idx):
ui.ScriptWindow.__init__(self)
self.SetWindowName("quest dialog")
self.board = None
self.sx = 0
self.sy = 0
self.skin = skin
if skin == 3:
event.SetRestrictedCount(idx,36)
else:
event.SetRestrictedCount(idx,52)
QuestCurtain.BarHeight = (wndMgr.GetScreenHeight()-wndMgr.GetScreenWidth()*9/16)/2
if QuestCurtain.BarHeight<0:
QuestCurtain.BarHeight = 50
if not ('QuestCurtain' in QuestDialog.__dict__):
QuestDialog.QuestCurtain = QuestCurtain()
QuestDialog.QuestCurtain.Show()
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
if self.skin:
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
self.LoadDialog(self.skin)
else:
QuestDialog.QuestCurtain.CurtainMode = -1
self.nextCurtainMode = -1
self.descIndex = idx
self.descWindow = DescriptionWindow(idx)
self.descWindow.Show()
self.eventCurtain = EventCurtain(idx)
event.SetEventHandler(idx, self)
self.OnCloseEvent = None
self.btnAnswer = None
self.btnNext = None
self.imgLeft = None
self.imgTop = None
self.imgBackground = None
self.imgTitle = None
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = 0
self.images = []
# QUEST_INPUT
self.needInputString = FALSE
self.editSlot = None
self.editLine = None
# END_OF_QUEST_INPUT
def __del__(self):
ui.ScriptWindow.__del__(self)
def LoadDialog(self, skin):
try:
PythonScriptLoader = ui.PythonScriptLoader()
PythonScriptLoader.LoadScriptFile(self, "uiscript/questdialog.py")
except RuntimeError:
dbg.TraceError("QuestDialog.LoadDialog")
try:
self.board = self.GetChild('board')
except RuntimeError:
dbg.TraceError("QuestDialog.BindObject")
self.SetCenterPosition()
if self.SKIN_CINEMA == skin:
self.board.Hide()
# QUEST_CANCEL
def OnCancel(self):
self.nextCurtainMode = -1
self.CloseSelf()
# END_OF_QUEST_CANCEL
def CloseSelf(self):
QuestDialog.QuestCurtain.CurtainMode = self.nextCurtainMode
self.btnNext = None
self.descWindow = None
self.btnAnswer = None
self.Destroy()
if self.descIndex:
event.ClearEventSet(self.descIndex)
self.descIndex = None
def Destroy(self):
self.ClearDictionary()
if self.OnCloseEvent:
self.OnCloseEvent()
self.OnCloseEvent = None
# QUEST_INPUT
if self.needInputString:
if self.editLine:
text = self.editLine.GetText()
net.SendQuestInputStringPacket(text)
# END_OF_QUEST_INPUT
self.imgTitle = None
self.images = None
self.eventCurtain = None
self.board = None
def OnUpdate(self):
if self.skin == self.SKIN_CINEMA:
event.UpdateEventSet(self.descIndex, 50, -(wndMgr.GetScreenHeight() - 44))
# AUTO_RESIZE_BOARD
elif self.skin == 3:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20+self.sx, -self.board.GetGlobalPosition()[1]-20-self.sy)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
elif self.skin:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20, -self.board.GetGlobalPosition()[1]-20)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
# END_OF_AUTO_RESIZE_BOARD
else:
event.UpdateEventSet(self.descIndex, 0, 0)
if self.TITLE_STATE_NONE != self.titleState:
curTime = app.GetTime()
elapsedTime = app.GetTime() - self.titleShowTime
if self.TITLE_STATE_APPEAR == self.titleState:
self.imgTitle.SetAlpha(elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_SHOW
self.titleShowTime = curTime
elif self.TITLE_STATE_SHOW == self.titleState:
if elapsedTime > 1.0:
self.titleState = self.TITLE_STATE_DISAPPEAR
self.titleShowTime = curTime
elif self.TITLE_STATE_DISAPPEAR == self.titleState:
self.imgTitle.SetAlpha(1.0 - elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = curTime
## Set Variables
def AddOnCloseEvent(self,f):
if self.OnCloseEvent:
self.OnCloseEvent = lambda z=[self.OnCloseEvent, f]:map(apply,z)
else:
self.OnCloseEvent = f
def SetOnDoneEvent(self,f):
if not QuestCurtain.OnDoneEvent:
QuestCurtain.OnDoneEvent = f
def SetOnCloseEvent(self,f):
self.OnCloseEvent = f
def SetEventSetPosition(self, x, y):
self.sx = x
self.sy = y
def AdjustEventSetPosition(self, x, y):
self.sx += x
self.sy += y
## Event
# QUEST_CANCEL
def MakeNextButton(self, button_type):
if self.SKIN_NONE == self.skin:
return
yPos = event.GetEventSetLocalYPosition(self.descIndex)
b = BarButton()
b.SetParent(self.board)
b.SetSize(100,26)
b.SetPosition(self.sx+self.board.GetWidth()/2-50,self.sy+yPos)
import locale
if event.BUTTON_TYPE_CANCEL == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.OnCancel())
b.SetText(locale.UI_CANCEL)
elif event.BUTTON_TYPE_DONE == button_type:
b.SetEvent(lambda s=self:s.CloseSelf())
b.SetText(locale.UI_OK)
elif event.BUTTON_TYPE_NEXT == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.CloseSelf())
b.SetText(locale.UI_NEXT)
b.Show()
b.SetTextColor(0xffffffff)
self.btnNext = b
# END_OF_QUEST_CANCEL
def MakeQuestion(self, n):
if not self.board:
return
c = self.board
def MakeEachButton(i):
if self.skin == 3:
b = BarButton("TOP_MOST",0x50000000, 0x50404040, 0x50606060)
b.SetParent(c)
b.SetSize(106,26)
b.SetPosition(self.sx+c.GetWidth()/2+(i-1)*56-56, self.sy+(event.GetLineCount(self.descIndex))*16+20+5)
b.SetText("a")
b.SetTextColor(0xff000000)
else:
b = BarButton("TOP_MOST")
b.SetParent(c)
b.SetSize(200,26)
b.SetPosition(self.sx+c.GetWidth()/2-100,self.sy+(event.GetLineCount(self.descIndex)+i)*16+20+5)
b.SetText("a")
b.SetTextColor(0xffffffff)
return b
self.btnAnswer = [MakeEachButton(i*2) for i in xrange (n)]
def AppendQuestion(self, name, idx):
if not self.btnAnswer:
return
self.btnAnswer[idx].SetText(name)
def ClickAnswerEvent(s, ai):
event.SelectAnswer(s.descIndex, ai)
s.CloseSelf()
from _weakref import proxy
self.btnAnswer[idx].SetEvent(ClickAnswerEvent,proxy(self),idx)
self.btnAnswer[idx].Show()
def FadeOut(self, speed):
self.eventCurtain.FadeOut(speed)
def FadeIn(self, speed):
self.eventCurtain.FadeIn(speed)
def WhiteOut(self, speed):
self.eventCurtain.WhiteOut(speed)
def WhiteIn(self, speed):
self.eventCurtain.WhiteIn(speed)
def DoneEvent(self):
self.nextCurtainMode = -1
if self.SKIN_NONE == self.skin or self.SKIN_CINEMA == self.skin:
self.CloseSelf()
def __GetQuestImageFileName(self, filename):
if len(filename) > 1:
if filename[1]!=':':
filename = QUEST_BOARD_IMAGE_DIR+filename
return filename
# QUEST_INPUT
def OnKeyDown(self, key):
return TRUE
def OnIMEReturn(self):
if self.needInputString:
self.CloseSelf()
return TRUE
def OnIMEUpdate(self):
if not self.needInputString:
return
if not self.editLine:
return
self.editLine.OnIMEUpdate()
def OnInput(self):
self.needInputString = TRUE
event.AddEventSetLocalYPosition(self.descIndex, 5+10)
yPos = event.GetEventSetLocalYPosition(self.descIndex)
self.editSlot = ui.SlotBar()
self.editSlot.SetSize(200, 18)
self.editSlot.SetPosition(0, yPos)
self.editSlot.SetParent(self.board)
self.editSlot.SetWindowHorizontalAlignCenter()
self.editSlot.Show()
self.editLine = ui.EditLine()
self.editLine.SetParent(self.editSlot)
self.editLine.SetPosition(3, 3)
self.editLine.SetSize(200, 17)
self.editLine.SetMax(30)
self.editLine.SetFocus()
self.editLine.Show()
event.AddEventSetLocalYPosition(self.descIndex, 25+10)
self.MakeNextButton(event.BUTTON_TYPE_DONE)
self.editLine.UpdateRect()
self.editSlot.UpdateRect()
self.board.UpdateRect()
# END_OF_QUEST_INPUT
def OnImage(self, x, y, filename, desc=""):
filename = self.__GetQuestImageFileName(filename)
# IMAGE_EXCEPTION_BUG_FIX
try:
img = ui.MakeImageBox(self.board, filename, x, y)
self.images.append(img)
except RuntimeError:
pass
# END_OF_IMAGE_EXCEPTION_BUG_FIX
# QUEST_IMAGE
def OnInsertItemIcon(self, type, idx, title, desc):
if "item" != type:
return
import item
item.SelectItem(idx)
filename = item.GetIconImageFileName()
underTitle = title
if not title and not desc:
title = item.GetItemName()
desc = item.GetItemDescription()
tempDesc = desc
desc = ""
import grpText
lineCount = grpText.GetSplitingTextLineCount(tempDesc, 25)
for i in xrange(lineCount):
desc += grpText.GetSplitingTextLine(tempDesc, 25, i) + "/"
desc = desc[:-1]
self.OnInsertImage(filename, underTitle, title, desc)
def OnInsertImage(self, filename, underTitle, title, desc):
event.AddEventSetLocalYPosition(self.descIndex, 24)
y = event.GetEventSetLocalYPosition(self.descIndex)
xBoard, yBoard = self.board.GetGlobalPosition()
try:
img = ToolTipImageBox()
img.SetParent(self.board)
img.LoadImage(filename)
img.SetPosition(0, y)
img.SetWindowHorizontalAlignCenter()
img.DestroyToolTip()
if title and desc:
img.CreateToolTip(self.board, title, desc, 0, yBoard + y + img.GetHeight())
img.Show()
self.images.append(img)
except RuntimeError:
pass
event.AddEventSetLocalYPosition(self.descIndex, img.GetHeight() - 20)
if underTitle:
event.AddEventSetLocalYPosition(self.descIndex, 3)
event.InsertText(self.descIndex, underTitle)
else:
event.AddEventSetLocalYPosition(self.descIndex, 4)
# END_OF_QUEST_IMAGE
def OnSize(self, width, height):
self.board.SetSize(width, height)
def OnTitleImage(self, filename):
img = ui.ImageBox("TOP_MOST")
try:
img.SetWindowHorizontalAlignCenter()
img.LoadImage(filename)
img.SetPosition(0, wndMgr.GetScreenHeight() - (75/2) - (32/2))
img.SetAlpha(0.0)
img.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTitleImage(%s)" % filename)
img.Hide()
self.imgTitle = img
self.titleState = self.TITLE_STATE_APPEAR
self.titleShowTime = app.GetTime()
def OnLeftImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
if not self.imgLeft:
self.imgLeft = ui.ExpandedImageBox("TOP_MOST")
self.imgLeft.SetParent(self)
self.imgLeft.SetPosition(0,0)
bd = self.board
bx, by = bd.GetLocalPosition()
bd.SetPosition(160,by)
if self.imgTop:
tx, ty = self.imgTop.GetLocalPosition()
self.imgTop.SetPosition(160,ty)
try:
self.imgLeft.LoadImage(imgfile)
self.imgLeft.SetSize(400,450)
self.imgLeft.SetOrigin(self.imgLeft.GetWidth()/2,self.imgLeft.GetHeight()/2)
self.imgLeft.Show()
except RuntimeError:
import dbg
dbg.TraceError("QuestDialog.OnLeftImage(%s)" % imgfile)
self.imgLeft.Hide()
def OnTopImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
bd = self.board
bx, by = bd.GetLocalPosition()
if not self.imgTop:
self.imgTop = ui.ExpandedImageBox("TOP_MOST")
self.imgTop.SetParent(self)
bd.SetPosition(bx,190)
self.imgTop.SetPosition(bx,10)
try:
self.imgTop.LoadImage(imgfile)
h = self.imgTop.GetHeight()
if h>170:
# need adjust board size
bd.SetPosition(bx,20+h)
bd.SetSize(350,420-h)
self.imgTop.SetSize(350,h)
else:
self.imgTop.SetSize(350,170)
bd.SetPosition(bx,190)
bd.SetSize(350,250)
self.imgTop.SetOrigin(self.imgTop.GetWidth()/2,self.imgTop.GetHeight()/2)
self.imgTop.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTopImage(%s)" % imgfile)
self.imgTop.Hide()
def OnBackgroundImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
c = self.board
w = c.GetWidth()
h = c.GetHeight()
px, py = c.GetLocalPosition()
moved = 0
if not self.imgBackground:
self.imgBackground = ui.ExpandedImageBox("TOP_MOST")
self.imgBackground.SetParent(c)
self.imgBackground.SetPosition(0,0)
self.imgBackground.LoadImage(imgfile)
iw = self.imgBackground.GetWidth()
ih = self.imgBackground.GetHeight()
if self.skin==3:
iw = 256
ih = 333
self.imgBackground.SetSize(iw,ih)
if w < iw:
px -= (iw-w)/2
c.SetPosition(px,py)
w = iw
if h < ih:
py -= (ih-h)/2
c.SetPosition(px,py)
h = ih
if self.skin == 3:
w=256
h = 333
self.sx = 0
self.sy = 100
c.SetSize(w,h)
c.HideInternal()
c.SetWindowHorizontalAlignCenter()
c.SetWindowVerticalAlignCenter()
c.SetPosition(0,0)
if self.skin==3:
c.SetPosition(-190,0)
self.imgBackground.SetWindowHorizontalAlignCenter()
self.imgBackground.SetWindowVerticalAlignCenter()
self.imgBackground.SetPosition(0,0)
self.imgBackground.Show()
MfG
Kriegergeist^^
|
Vielen Dank! Ja, mich würde es auch interessiert, sieht viel besser aus.
|
|
|
06/09/2013, 01:00
|
#24
|
elite*gold: 270
Join Date: May 2013
Posts: 1,017
Received Thanks: 563
|
Quote:
Originally Posted by Kriegergeist^^
Es liegt an der uiquest.py im Client.
Ich habe einfach die ältere uiquest.py aus mein alten Client genommen und weg wars auch schon.
Mich würde er interessieren, wie ich diese neuen weiter button richtig einsetzen kann, würde den warpring viel besser machen.
Hier ist meine uiquest.py
Code:
import ui
import dbg
import app
import grp
import grpImage
import event
import time
import wndMgr
import net
QUEST_BOARD_IMAGE_DIR = 'd:/ymir work/ui/game/questboard/'
# TOOLTIP_IMAGE_BOX
class ToolTipImageBox(ui.ImageBox):
def __init__(self):
ui.ImageBox.__init__(self)
self.DestroyToolTip()
def __del__(self):
ui.ImageBox.__del__(self)
def CreateToolTip(self, parent, title, desc, x, y):
import uiToolTip
self.toolTip = uiToolTip.ToolTip()
self.toolTip.SetWindowHorizontalAlignCenter()
self.toolTip.SetFollow(FALSE)
self.toolTip.SetTitle(title)
self.toolTip.SetPosition(x, y)
desc = desc.replace("|", "/")
for line in desc.split("/"):
self.toolTip.AutoAppendTextLine(line)
self.toolTip.ResizeToolTip()
self.toolTip.Hide()
def DestroyToolTip(self):
self.toolTip = None
def OnMouseOverIn(self):
if self.toolTip:
self.toolTip.SetTop()
self.toolTip.Show()
def OnMouseOverOut(self):
if self.toolTip:
self.toolTip.Hide()
# END_OF_TOOLTIP_IMAGE_BOX
class QuestCurtain(ui.Window):
CURTAIN_TIME = 0.25
CURTAIN_SPEED = 200
BarHeight = 60
OnDoneEvent = None
def __init__(self,layer="TOP_MOST"):
ui.Window.__init__(self,layer)
self.TopBar = ui.Bar("TOP_MOST")
self.BottomBar = ui.Bar("TOP_MOST")
self.TopBar.Show()
self.BottomBar.Show()
self.TopBar.SetColor(0xff000000)
self.BottomBar.SetColor(0xff000000)
self.TopBar.SetPosition(0,-self.BarHeight)
self.TopBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight())
self.BottomBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.CurtainMode = 0
self.lastclock = time.clock()
def Close(self):
self.CurtainMode = 0
self.TopBar.SetPosition(0, -self.BarHeight-1)
self.BottomBar.SetPosition(0, wndMgr.GetScreenHeight()+1)
if QuestCurtain.OnDoneEvent:
apply(QuestCurtain.OnDoneEvent,(self,))
QuestCurtain.OnDoneEvent = None
def OnUpdate(self):
dt = time.clock() - self.lastclock
if self.CurtainMode>0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]>0:
self.TopBar.SetPosition(0,0)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()-self.BarHeight)
self.CurtainMode = 0
elif self.CurtainMode<0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]<-self.BarHeight:
self.TopBar.SetPosition(0,-self.BarHeight-1)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()+1)
self.Close()
self.lastclock = time.clock()
class EventCurtain(ui.Bar):
COLOR_WHITE = 0.0
COLOR_BLACK = 1.0
DEFAULT_FADE_SPEED = 0.035
STATE_WAIT = 0
STATE_OUT = 1
STATE_IN = 2
def __init__(self, index):
print "NEW EVENT CURTAIN ----------------------------------------------------------------------------"
ui.Bar.__init__(self, "CURTAIN")
self.SetWindowName("EventCurtain")
self.AddFlag("float")
self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.Hide()
self.fadeColor = 1.0
self.curAlpha = 0.0
self.FadeInFlag = FALSE
self.state = self.STATE_WAIT
self.speed = 1.0
self.eventIndex = index
def __del__(self):
print "---------------------------------------------------------------------------- DELETE EVENT CURTAIN"
ui.Bar.__del__(self)
def SetAlpha(self, alpha):
color = grp.GenerateColor(self.fadeColor, self.fadeColor, self.fadeColor, alpha)
self.SetColor(color)
def FadeOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 0.0, speed)
def FadeIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 0.0, speed)
def WhiteOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 1.0, speed)
def WhiteIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 1.0, speed)
def __StartFade(self, state, color, speed):
self.state = state
self.fadeColor = color
self.Show()
self.speed = self.DEFAULT_FADE_SPEED
if 0 != speed:
self.speed = speed
def __EndFade(self):
event.EndEventProcess(self.eventIndex)
def OnUpdate(self):
if self.STATE_OUT == self.state:
self.curAlpha += self.speed
if self.curAlpha >= 1.0:
self.state = self.STATE_WAIT
self.curAlpha = 1.0
self.__EndFade()
elif self.STATE_IN == self.state:
self.curAlpha -= self.speed
if self.curAlpha <= 0.0:
self.state = self.STATE_WAIT
self.curAlpha = 0.0
self.__EndFade()
self.Hide()
self.SetAlpha(self.curAlpha)
class BarButton(ui.Button):
ColorUp = 0x40999999
ColorDown = 0x40aaaacc
ColorOver = 0x40ddddff
UP=0
DOWN=1
OVER=2
def __init__(self, layer = "UI",
aColorUp = ColorUp,
aColorDown = ColorDown,
aColorOver = ColorOver):
ui.Button.__init__(self,layer)
self.state = self.UP
self.colortable = aColorUp, aColorDown, aColorOver
def OnRender(self):
x,y = self.GetGlobalPosition()
grp.SetColor(self.colortable[self.state])
grp.RenderBar(x,y,self.GetWidth(),self.GetHeight())
def CallEvent(self):
self.state = self.UP
ui.Button.CallEvent(self)
def DownEvent(self):
self.state = self.DOWN
def ShowToolTip(self):
self.state = self.OVER
def HideToolTip(self):
self.state = self.UP
class DescriptionWindow(ui.Window):
def __init__(self,idx):
ui.Window.__init__(self, "TOP_MOST")
self.descIndex = idx
def __del__(self):
ui.Window.__del__(self)
def OnRender(self):
event.RenderEventSet(self.descIndex)
class QuestDialog(ui.ScriptWindow):
TITLE_STATE_NONE = 0
TITLE_STATE_APPEAR = 1
TITLE_STATE_SHOW = 2
TITLE_STATE_DISAPPEAR = 3
SKIN_NONE = 0
SKIN_CINEMA = 5
def __init__(self,skin,idx):
ui.ScriptWindow.__init__(self)
self.SetWindowName("quest dialog")
self.board = None
self.sx = 0
self.sy = 0
self.skin = skin
if skin == 3:
event.SetRestrictedCount(idx,36)
else:
event.SetRestrictedCount(idx,52)
QuestCurtain.BarHeight = (wndMgr.GetScreenHeight()-wndMgr.GetScreenWidth()*9/16)/2
if QuestCurtain.BarHeight<0:
QuestCurtain.BarHeight = 50
if not ('QuestCurtain' in QuestDialog.__dict__):
QuestDialog.QuestCurtain = QuestCurtain()
QuestDialog.QuestCurtain.Show()
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
if self.skin:
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
self.LoadDialog(self.skin)
else:
QuestDialog.QuestCurtain.CurtainMode = -1
self.nextCurtainMode = -1
self.descIndex = idx
self.descWindow = DescriptionWindow(idx)
self.descWindow.Show()
self.eventCurtain = EventCurtain(idx)
event.SetEventHandler(idx, self)
self.OnCloseEvent = None
self.btnAnswer = None
self.btnNext = None
self.imgLeft = None
self.imgTop = None
self.imgBackground = None
self.imgTitle = None
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = 0
self.images = []
# QUEST_INPUT
self.needInputString = FALSE
self.editSlot = None
self.editLine = None
# END_OF_QUEST_INPUT
def __del__(self):
ui.ScriptWindow.__del__(self)
def LoadDialog(self, skin):
try:
PythonScriptLoader = ui.PythonScriptLoader()
PythonScriptLoader.LoadScriptFile(self, "uiscript/questdialog.py")
except RuntimeError:
dbg.TraceError("QuestDialog.LoadDialog")
try:
self.board = self.GetChild('board')
except RuntimeError:
dbg.TraceError("QuestDialog.BindObject")
self.SetCenterPosition()
if self.SKIN_CINEMA == skin:
self.board.Hide()
# QUEST_CANCEL
def OnCancel(self):
self.nextCurtainMode = -1
self.CloseSelf()
# END_OF_QUEST_CANCEL
def CloseSelf(self):
QuestDialog.QuestCurtain.CurtainMode = self.nextCurtainMode
self.btnNext = None
self.descWindow = None
self.btnAnswer = None
self.Destroy()
if self.descIndex:
event.ClearEventSet(self.descIndex)
self.descIndex = None
def Destroy(self):
self.ClearDictionary()
if self.OnCloseEvent:
self.OnCloseEvent()
self.OnCloseEvent = None
# QUEST_INPUT
if self.needInputString:
if self.editLine:
text = self.editLine.GetText()
net.SendQuestInputStringPacket(text)
# END_OF_QUEST_INPUT
self.imgTitle = None
self.images = None
self.eventCurtain = None
self.board = None
def OnUpdate(self):
if self.skin == self.SKIN_CINEMA:
event.UpdateEventSet(self.descIndex, 50, -(wndMgr.GetScreenHeight() - 44))
# AUTO_RESIZE_BOARD
elif self.skin == 3:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20+self.sx, -self.board.GetGlobalPosition()[1]-20-self.sy)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
elif self.skin:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20, -self.board.GetGlobalPosition()[1]-20)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
# END_OF_AUTO_RESIZE_BOARD
else:
event.UpdateEventSet(self.descIndex, 0, 0)
if self.TITLE_STATE_NONE != self.titleState:
curTime = app.GetTime()
elapsedTime = app.GetTime() - self.titleShowTime
if self.TITLE_STATE_APPEAR == self.titleState:
self.imgTitle.SetAlpha(elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_SHOW
self.titleShowTime = curTime
elif self.TITLE_STATE_SHOW == self.titleState:
if elapsedTime > 1.0:
self.titleState = self.TITLE_STATE_DISAPPEAR
self.titleShowTime = curTime
elif self.TITLE_STATE_DISAPPEAR == self.titleState:
self.imgTitle.SetAlpha(1.0 - elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = curTime
## Set Variables
def AddOnCloseEvent(self,f):
if self.OnCloseEvent:
self.OnCloseEvent = lambda z=[self.OnCloseEvent, f]:map(apply,z)
else:
self.OnCloseEvent = f
def SetOnDoneEvent(self,f):
if not QuestCurtain.OnDoneEvent:
QuestCurtain.OnDoneEvent = f
def SetOnCloseEvent(self,f):
self.OnCloseEvent = f
def SetEventSetPosition(self, x, y):
self.sx = x
self.sy = y
def AdjustEventSetPosition(self, x, y):
self.sx += x
self.sy += y
## Event
# QUEST_CANCEL
def MakeNextButton(self, button_type):
if self.SKIN_NONE == self.skin:
return
yPos = event.GetEventSetLocalYPosition(self.descIndex)
b = BarButton()
b.SetParent(self.board)
b.SetSize(100,26)
b.SetPosition(self.sx+self.board.GetWidth()/2-50,self.sy+yPos)
import locale
if event.BUTTON_TYPE_CANCEL == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.OnCancel())
b.SetText(locale.UI_CANCEL)
elif event.BUTTON_TYPE_DONE == button_type:
b.SetEvent(lambda s=self:s.CloseSelf())
b.SetText(locale.UI_OK)
elif event.BUTTON_TYPE_NEXT == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.CloseSelf())
b.SetText(locale.UI_NEXT)
b.Show()
b.SetTextColor(0xffffffff)
self.btnNext = b
# END_OF_QUEST_CANCEL
def MakeQuestion(self, n):
if not self.board:
return
c = self.board
def MakeEachButton(i):
if self.skin == 3:
b = BarButton("TOP_MOST",0x50000000, 0x50404040, 0x50606060)
b.SetParent(c)
b.SetSize(106,26)
b.SetPosition(self.sx+c.GetWidth()/2+(i-1)*56-56, self.sy+(event.GetLineCount(self.descIndex))*16+20+5)
b.SetText("a")
b.SetTextColor(0xff000000)
else:
b = BarButton("TOP_MOST")
b.SetParent(c)
b.SetSize(200,26)
b.SetPosition(self.sx+c.GetWidth()/2-100,self.sy+(event.GetLineCount(self.descIndex)+i)*16+20+5)
b.SetText("a")
b.SetTextColor(0xffffffff)
return b
self.btnAnswer = [MakeEachButton(i*2) for i in xrange (n)]
def AppendQuestion(self, name, idx):
if not self.btnAnswer:
return
self.btnAnswer[idx].SetText(name)
def ClickAnswerEvent(s, ai):
event.SelectAnswer(s.descIndex, ai)
s.CloseSelf()
from _weakref import proxy
self.btnAnswer[idx].SetEvent(ClickAnswerEvent,proxy(self),idx)
self.btnAnswer[idx].Show()
def FadeOut(self, speed):
self.eventCurtain.FadeOut(speed)
def FadeIn(self, speed):
self.eventCurtain.FadeIn(speed)
def WhiteOut(self, speed):
self.eventCurtain.WhiteOut(speed)
def WhiteIn(self, speed):
self.eventCurtain.WhiteIn(speed)
def DoneEvent(self):
self.nextCurtainMode = -1
if self.SKIN_NONE == self.skin or self.SKIN_CINEMA == self.skin:
self.CloseSelf()
def __GetQuestImageFileName(self, filename):
if len(filename) > 1:
if filename[1]!=':':
filename = QUEST_BOARD_IMAGE_DIR+filename
return filename
# QUEST_INPUT
def OnKeyDown(self, key):
return TRUE
def OnIMEReturn(self):
if self.needInputString:
self.CloseSelf()
return TRUE
def OnIMEUpdate(self):
if not self.needInputString:
return
if not self.editLine:
return
self.editLine.OnIMEUpdate()
def OnInput(self):
self.needInputString = TRUE
event.AddEventSetLocalYPosition(self.descIndex, 5+10)
yPos = event.GetEventSetLocalYPosition(self.descIndex)
self.editSlot = ui.SlotBar()
self.editSlot.SetSize(200, 18)
self.editSlot.SetPosition(0, yPos)
self.editSlot.SetParent(self.board)
self.editSlot.SetWindowHorizontalAlignCenter()
self.editSlot.Show()
self.editLine = ui.EditLine()
self.editLine.SetParent(self.editSlot)
self.editLine.SetPosition(3, 3)
self.editLine.SetSize(200, 17)
self.editLine.SetMax(30)
self.editLine.SetFocus()
self.editLine.Show()
event.AddEventSetLocalYPosition(self.descIndex, 25+10)
self.MakeNextButton(event.BUTTON_TYPE_DONE)
self.editLine.UpdateRect()
self.editSlot.UpdateRect()
self.board.UpdateRect()
# END_OF_QUEST_INPUT
def OnImage(self, x, y, filename, desc=""):
filename = self.__GetQuestImageFileName(filename)
# IMAGE_EXCEPTION_BUG_FIX
try:
img = ui.MakeImageBox(self.board, filename, x, y)
self.images.append(img)
except RuntimeError:
pass
# END_OF_IMAGE_EXCEPTION_BUG_FIX
# QUEST_IMAGE
def OnInsertItemIcon(self, type, idx, title, desc):
if "item" != type:
return
import item
item.SelectItem(idx)
filename = item.GetIconImageFileName()
underTitle = title
if not title and not desc:
title = item.GetItemName()
desc = item.GetItemDescription()
tempDesc = desc
desc = ""
import grpText
lineCount = grpText.GetSplitingTextLineCount(tempDesc, 25)
for i in xrange(lineCount):
desc += grpText.GetSplitingTextLine(tempDesc, 25, i) + "/"
desc = desc[:-1]
self.OnInsertImage(filename, underTitle, title, desc)
def OnInsertImage(self, filename, underTitle, title, desc):
event.AddEventSetLocalYPosition(self.descIndex, 24)
y = event.GetEventSetLocalYPosition(self.descIndex)
xBoard, yBoard = self.board.GetGlobalPosition()
try:
img = ToolTipImageBox()
img.SetParent(self.board)
img.LoadImage(filename)
img.SetPosition(0, y)
img.SetWindowHorizontalAlignCenter()
img.DestroyToolTip()
if title and desc:
img.CreateToolTip(self.board, title, desc, 0, yBoard + y + img.GetHeight())
img.Show()
self.images.append(img)
except RuntimeError:
pass
event.AddEventSetLocalYPosition(self.descIndex, img.GetHeight() - 20)
if underTitle:
event.AddEventSetLocalYPosition(self.descIndex, 3)
event.InsertText(self.descIndex, underTitle)
else:
event.AddEventSetLocalYPosition(self.descIndex, 4)
# END_OF_QUEST_IMAGE
def OnSize(self, width, height):
self.board.SetSize(width, height)
def OnTitleImage(self, filename):
img = ui.ImageBox("TOP_MOST")
try:
img.SetWindowHorizontalAlignCenter()
img.LoadImage(filename)
img.SetPosition(0, wndMgr.GetScreenHeight() - (75/2) - (32/2))
img.SetAlpha(0.0)
img.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTitleImage(%s)" % filename)
img.Hide()
self.imgTitle = img
self.titleState = self.TITLE_STATE_APPEAR
self.titleShowTime = app.GetTime()
def OnLeftImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
if not self.imgLeft:
self.imgLeft = ui.ExpandedImageBox("TOP_MOST")
self.imgLeft.SetParent(self)
self.imgLeft.SetPosition(0,0)
bd = self.board
bx, by = bd.GetLocalPosition()
bd.SetPosition(160,by)
if self.imgTop:
tx, ty = self.imgTop.GetLocalPosition()
self.imgTop.SetPosition(160,ty)
try:
self.imgLeft.LoadImage(imgfile)
self.imgLeft.SetSize(400,450)
self.imgLeft.SetOrigin(self.imgLeft.GetWidth()/2,self.imgLeft.GetHeight()/2)
self.imgLeft.Show()
except RuntimeError:
import dbg
dbg.TraceError("QuestDialog.OnLeftImage(%s)" % imgfile)
self.imgLeft.Hide()
def OnTopImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
bd = self.board
bx, by = bd.GetLocalPosition()
if not self.imgTop:
self.imgTop = ui.ExpandedImageBox("TOP_MOST")
self.imgTop.SetParent(self)
bd.SetPosition(bx,190)
self.imgTop.SetPosition(bx,10)
try:
self.imgTop.LoadImage(imgfile)
h = self.imgTop.GetHeight()
if h>170:
# need adjust board size
bd.SetPosition(bx,20+h)
bd.SetSize(350,420-h)
self.imgTop.SetSize(350,h)
else:
self.imgTop.SetSize(350,170)
bd.SetPosition(bx,190)
bd.SetSize(350,250)
self.imgTop.SetOrigin(self.imgTop.GetWidth()/2,self.imgTop.GetHeight()/2)
self.imgTop.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTopImage(%s)" % imgfile)
self.imgTop.Hide()
def OnBackgroundImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
c = self.board
w = c.GetWidth()
h = c.GetHeight()
px, py = c.GetLocalPosition()
moved = 0
if not self.imgBackground:
self.imgBackground = ui.ExpandedImageBox("TOP_MOST")
self.imgBackground.SetParent(c)
self.imgBackground.SetPosition(0,0)
self.imgBackground.LoadImage(imgfile)
iw = self.imgBackground.GetWidth()
ih = self.imgBackground.GetHeight()
if self.skin==3:
iw = 256
ih = 333
self.imgBackground.SetSize(iw,ih)
if w < iw:
px -= (iw-w)/2
c.SetPosition(px,py)
w = iw
if h < ih:
py -= (ih-h)/2
c.SetPosition(px,py)
h = ih
if self.skin == 3:
w=256
h = 333
self.sx = 0
self.sy = 100
c.SetSize(w,h)
c.HideInternal()
c.SetWindowHorizontalAlignCenter()
c.SetWindowVerticalAlignCenter()
c.SetPosition(0,0)
if self.skin==3:
c.SetPosition(-190,0)
self.imgBackground.SetWindowHorizontalAlignCenter()
self.imgBackground.SetWindowVerticalAlignCenter()
self.imgBackground.SetPosition(0,0)
self.imgBackground.Show()
MfG
Kriegergeist^^
|
edit: Die ist kaputt. ^.^
|
|
|
06/09/2013, 01:14
|
#25
|
elite*gold: 60
Join Date: Jul 2010
Posts: 771
Received Thanks: 439
|
Quote:
Originally Posted by zуℓση
edit: Die ist kaputt. ^.^
|
Ups
Habe die bassende uiscript vergessen, die questiondialog.py.
Code:
import uiScriptLocale
window = {
"name" : "QuestionDialog",
"style" : ("movable", "float",),
"x" : SCREEN_WIDTH/2 - 125,
"y" : SCREEN_HEIGHT/2 - 52,
"width" : 340,
"height" : 105,
"children" :
(
{
"name" : "board",
"type" : "board",
"x" : 0,
"y" : 0,
"width" : 340,
"height" : 105,
"children" :
(
{
"name" : "message",
"type" : "text",
"x" : 0,
"y" : 38,
"horizontal_align" : "center",
"text" : uiScriptLocale.MESSAGE,
"text_horizontal_align" : "center",
"text_vertical_align" : "center",
},
{
"name" : "accept",
"type" : "button",
"x" : -40,
"y" : 63,
"width" : 61,
"height" : 21,
"horizontal_align" : "center",
"text" : uiScriptLocale.YES,
"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
},
{
"name" : "cancel",
"type" : "button",
"x" : 40,
"y" : 63,
"width" : 61,
"height" : 21,
"horizontal_align" : "center",
"text" : uiScriptLocale.NO,
"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
},
),
},
),
}
Müsst jetzt aber passen.
edit: Glaube irgentwas fehlt, weiß bloß nicht mehr was, ist viel zu lange her -.-
MfG
Kriegergeist^^
|
|
|
06/09/2013, 13:55
|
#26
|
elite*gold: 0
Join Date: May 2011
Posts: 164
Received Thanks: 38
|
Quote:
|
Du meinst wohl Invoice, ich bin es nicht, hab nur den Sammelthread offen.
|
Oh, stimmt ja  Sorry, nehme alles wieder zurück ^.^ Du hast ja den Sammelthread offen. Tschuldige
Quote:
Originally Posted by Kriegergeist^^
Es liegt an der uiquest.py im Client.
Ich habe einfach die ältere uiquest.py aus mein alten Client genommen und weg wars auch schon.
Mich würde er interessieren, wie ich diese neuen weiter button richtig einsetzen kann, würde den warpring viel besser machen.
Hier ist meine uiquest.py
Code:
import ui
import dbg
import app
import grp
import grpImage
import event
import time
import wndMgr
import net
QUEST_BOARD_IMAGE_DIR = 'd:/ymir work/ui/game/questboard/'
# TOOLTIP_IMAGE_BOX
class ToolTipImageBox(ui.ImageBox):
def __init__(self):
ui.ImageBox.__init__(self)
self.DestroyToolTip()
def __del__(self):
ui.ImageBox.__del__(self)
def CreateToolTip(self, parent, title, desc, x, y):
import uiToolTip
self.toolTip = uiToolTip.ToolTip()
self.toolTip.SetWindowHorizontalAlignCenter()
self.toolTip.SetFollow(FALSE)
self.toolTip.SetTitle(title)
self.toolTip.SetPosition(x, y)
desc = desc.replace("|", "/")
for line in desc.split("/"):
self.toolTip.AutoAppendTextLine(line)
self.toolTip.ResizeToolTip()
self.toolTip.Hide()
def DestroyToolTip(self):
self.toolTip = None
def OnMouseOverIn(self):
if self.toolTip:
self.toolTip.SetTop()
self.toolTip.Show()
def OnMouseOverOut(self):
if self.toolTip:
self.toolTip.Hide()
# END_OF_TOOLTIP_IMAGE_BOX
class QuestCurtain(ui.Window):
CURTAIN_TIME = 0.25
CURTAIN_SPEED = 200
BarHeight = 60
OnDoneEvent = None
def __init__(self,layer="TOP_MOST"):
ui.Window.__init__(self,layer)
self.TopBar = ui.Bar("TOP_MOST")
self.BottomBar = ui.Bar("TOP_MOST")
self.TopBar.Show()
self.BottomBar.Show()
self.TopBar.SetColor(0xff000000)
self.BottomBar.SetColor(0xff000000)
self.TopBar.SetPosition(0,-self.BarHeight)
self.TopBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight())
self.BottomBar.SetSize(wndMgr.GetScreenWidth(),self.BarHeight)
self.CurtainMode = 0
self.lastclock = time.clock()
def Close(self):
self.CurtainMode = 0
self.TopBar.SetPosition(0, -self.BarHeight-1)
self.BottomBar.SetPosition(0, wndMgr.GetScreenHeight()+1)
if QuestCurtain.OnDoneEvent:
apply(QuestCurtain.OnDoneEvent,(self,))
QuestCurtain.OnDoneEvent = None
def OnUpdate(self):
dt = time.clock() - self.lastclock
if self.CurtainMode>0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]>0:
self.TopBar.SetPosition(0,0)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()-self.BarHeight)
self.CurtainMode = 0
elif self.CurtainMode<0:
self.TopBar.SetPosition(0, int(self.TopBar.GetGlobalPosition()[1]-dt*self.CURTAIN_SPEED))
self.BottomBar.SetPosition(0, int(self.BottomBar.GetGlobalPosition()[1]+dt*self.CURTAIN_SPEED))
if self.TopBar.GetGlobalPosition()[1]<-self.BarHeight:
self.TopBar.SetPosition(0,-self.BarHeight-1)
self.BottomBar.SetPosition(0,wndMgr.GetScreenHeight()+1)
self.Close()
self.lastclock = time.clock()
class EventCurtain(ui.Bar):
COLOR_WHITE = 0.0
COLOR_BLACK = 1.0
DEFAULT_FADE_SPEED = 0.035
STATE_WAIT = 0
STATE_OUT = 1
STATE_IN = 2
def __init__(self, index):
print "NEW EVENT CURTAIN ----------------------------------------------------------------------------"
ui.Bar.__init__(self, "CURTAIN")
self.SetWindowName("EventCurtain")
self.AddFlag("float")
self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
self.Hide()
self.fadeColor = 1.0
self.curAlpha = 0.0
self.FadeInFlag = FALSE
self.state = self.STATE_WAIT
self.speed = 1.0
self.eventIndex = index
def __del__(self):
print "---------------------------------------------------------------------------- DELETE EVENT CURTAIN"
ui.Bar.__del__(self)
def SetAlpha(self, alpha):
color = grp.GenerateColor(self.fadeColor, self.fadeColor, self.fadeColor, alpha)
self.SetColor(color)
def FadeOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 0.0, speed)
def FadeIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 0.0, speed)
def WhiteOut(self, speed):
self.curAlpha = 0.0
self.__StartFade(self.STATE_OUT, 1.0, speed)
def WhiteIn(self, speed):
self.curAlpha = 1.0
self.__StartFade(self.STATE_IN, 1.0, speed)
def __StartFade(self, state, color, speed):
self.state = state
self.fadeColor = color
self.Show()
self.speed = self.DEFAULT_FADE_SPEED
if 0 != speed:
self.speed = speed
def __EndFade(self):
event.EndEventProcess(self.eventIndex)
def OnUpdate(self):
if self.STATE_OUT == self.state:
self.curAlpha += self.speed
if self.curAlpha >= 1.0:
self.state = self.STATE_WAIT
self.curAlpha = 1.0
self.__EndFade()
elif self.STATE_IN == self.state:
self.curAlpha -= self.speed
if self.curAlpha <= 0.0:
self.state = self.STATE_WAIT
self.curAlpha = 0.0
self.__EndFade()
self.Hide()
self.SetAlpha(self.curAlpha)
class BarButton(ui.Button):
ColorUp = 0x40999999
ColorDown = 0x40aaaacc
ColorOver = 0x40ddddff
UP=0
DOWN=1
OVER=2
def __init__(self, layer = "UI",
aColorUp = ColorUp,
aColorDown = ColorDown,
aColorOver = ColorOver):
ui.Button.__init__(self,layer)
self.state = self.UP
self.colortable = aColorUp, aColorDown, aColorOver
def OnRender(self):
x,y = self.GetGlobalPosition()
grp.SetColor(self.colortable[self.state])
grp.RenderBar(x,y,self.GetWidth(),self.GetHeight())
def CallEvent(self):
self.state = self.UP
ui.Button.CallEvent(self)
def DownEvent(self):
self.state = self.DOWN
def ShowToolTip(self):
self.state = self.OVER
def HideToolTip(self):
self.state = self.UP
class DescriptionWindow(ui.Window):
def __init__(self,idx):
ui.Window.__init__(self, "TOP_MOST")
self.descIndex = idx
def __del__(self):
ui.Window.__del__(self)
def OnRender(self):
event.RenderEventSet(self.descIndex)
class QuestDialog(ui.ScriptWindow):
TITLE_STATE_NONE = 0
TITLE_STATE_APPEAR = 1
TITLE_STATE_SHOW = 2
TITLE_STATE_DISAPPEAR = 3
SKIN_NONE = 0
SKIN_CINEMA = 5
def __init__(self,skin,idx):
ui.ScriptWindow.__init__(self)
self.SetWindowName("quest dialog")
self.board = None
self.sx = 0
self.sy = 0
self.skin = skin
if skin == 3:
event.SetRestrictedCount(idx,36)
else:
event.SetRestrictedCount(idx,52)
QuestCurtain.BarHeight = (wndMgr.GetScreenHeight()-wndMgr.GetScreenWidth()*9/16)/2
if QuestCurtain.BarHeight<0:
QuestCurtain.BarHeight = 50
if not ('QuestCurtain' in QuestDialog.__dict__):
QuestDialog.QuestCurtain = QuestCurtain()
QuestDialog.QuestCurtain.Show()
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
if self.skin:
QuestDialog.QuestCurtain.CurtainMode = 1
self.nextCurtainMode = 0
self.LoadDialog(self.skin)
else:
QuestDialog.QuestCurtain.CurtainMode = -1
self.nextCurtainMode = -1
self.descIndex = idx
self.descWindow = DescriptionWindow(idx)
self.descWindow.Show()
self.eventCurtain = EventCurtain(idx)
event.SetEventHandler(idx, self)
self.OnCloseEvent = None
self.btnAnswer = None
self.btnNext = None
self.imgLeft = None
self.imgTop = None
self.imgBackground = None
self.imgTitle = None
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = 0
self.images = []
# QUEST_INPUT
self.needInputString = FALSE
self.editSlot = None
self.editLine = None
# END_OF_QUEST_INPUT
def __del__(self):
ui.ScriptWindow.__del__(self)
def LoadDialog(self, skin):
try:
PythonScriptLoader = ui.PythonScriptLoader()
PythonScriptLoader.LoadScriptFile(self, "uiscript/questdialog.py")
except RuntimeError:
dbg.TraceError("QuestDialog.LoadDialog")
try:
self.board = self.GetChild('board')
except RuntimeError:
dbg.TraceError("QuestDialog.BindObject")
self.SetCenterPosition()
if self.SKIN_CINEMA == skin:
self.board.Hide()
# QUEST_CANCEL
def OnCancel(self):
self.nextCurtainMode = -1
self.CloseSelf()
# END_OF_QUEST_CANCEL
def CloseSelf(self):
QuestDialog.QuestCurtain.CurtainMode = self.nextCurtainMode
self.btnNext = None
self.descWindow = None
self.btnAnswer = None
self.Destroy()
if self.descIndex:
event.ClearEventSet(self.descIndex)
self.descIndex = None
def Destroy(self):
self.ClearDictionary()
if self.OnCloseEvent:
self.OnCloseEvent()
self.OnCloseEvent = None
# QUEST_INPUT
if self.needInputString:
if self.editLine:
text = self.editLine.GetText()
net.SendQuestInputStringPacket(text)
# END_OF_QUEST_INPUT
self.imgTitle = None
self.images = None
self.eventCurtain = None
self.board = None
def OnUpdate(self):
if self.skin == self.SKIN_CINEMA:
event.UpdateEventSet(self.descIndex, 50, -(wndMgr.GetScreenHeight() - 44))
# AUTO_RESIZE_BOARD
elif self.skin == 3:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20+self.sx, -self.board.GetGlobalPosition()[1]-20-self.sy)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
elif self.skin:
if self.board:
event.UpdateEventSet(self.descIndex, self.board.GetGlobalPosition()[0]+20, -self.board.GetGlobalPosition()[1]-20)
event.SetEventSetWidth(self.descIndex, self.board.GetWidth()-40)
# END_OF_AUTO_RESIZE_BOARD
else:
event.UpdateEventSet(self.descIndex, 0, 0)
if self.TITLE_STATE_NONE != self.titleState:
curTime = app.GetTime()
elapsedTime = app.GetTime() - self.titleShowTime
if self.TITLE_STATE_APPEAR == self.titleState:
self.imgTitle.SetAlpha(elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_SHOW
self.titleShowTime = curTime
elif self.TITLE_STATE_SHOW == self.titleState:
if elapsedTime > 1.0:
self.titleState = self.TITLE_STATE_DISAPPEAR
self.titleShowTime = curTime
elif self.TITLE_STATE_DISAPPEAR == self.titleState:
self.imgTitle.SetAlpha(1.0 - elapsedTime*2)
if elapsedTime > 0.5:
self.titleState = self.TITLE_STATE_NONE
self.titleShowTime = curTime
## Set Variables
def AddOnCloseEvent(self,f):
if self.OnCloseEvent:
self.OnCloseEvent = lambda z=[self.OnCloseEvent, f]:map(apply,z)
else:
self.OnCloseEvent = f
def SetOnDoneEvent(self,f):
if not QuestCurtain.OnDoneEvent:
QuestCurtain.OnDoneEvent = f
def SetOnCloseEvent(self,f):
self.OnCloseEvent = f
def SetEventSetPosition(self, x, y):
self.sx = x
self.sy = y
def AdjustEventSetPosition(self, x, y):
self.sx += x
self.sy += y
## Event
# QUEST_CANCEL
def MakeNextButton(self, button_type):
if self.SKIN_NONE == self.skin:
return
yPos = event.GetEventSetLocalYPosition(self.descIndex)
b = BarButton()
b.SetParent(self.board)
b.SetSize(100,26)
b.SetPosition(self.sx+self.board.GetWidth()/2-50,self.sy+yPos)
import locale
if event.BUTTON_TYPE_CANCEL == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.OnCancel())
b.SetText(locale.UI_CANCEL)
elif event.BUTTON_TYPE_DONE == button_type:
b.SetEvent(lambda s=self:s.CloseSelf())
b.SetText(locale.UI_OK)
elif event.BUTTON_TYPE_NEXT == button_type:
b.SetEvent(lambda s=self:event.SelectAnswer(s.descIndex, 254) or s.CloseSelf())
b.SetText(locale.UI_NEXT)
b.Show()
b.SetTextColor(0xffffffff)
self.btnNext = b
# END_OF_QUEST_CANCEL
def MakeQuestion(self, n):
if not self.board:
return
c = self.board
def MakeEachButton(i):
if self.skin == 3:
b = BarButton("TOP_MOST",0x50000000, 0x50404040, 0x50606060)
b.SetParent(c)
b.SetSize(106,26)
b.SetPosition(self.sx+c.GetWidth()/2+(i-1)*56-56, self.sy+(event.GetLineCount(self.descIndex))*16+20+5)
b.SetText("a")
b.SetTextColor(0xff000000)
else:
b = BarButton("TOP_MOST")
b.SetParent(c)
b.SetSize(200,26)
b.SetPosition(self.sx+c.GetWidth()/2-100,self.sy+(event.GetLineCount(self.descIndex)+i)*16+20+5)
b.SetText("a")
b.SetTextColor(0xffffffff)
return b
self.btnAnswer = [MakeEachButton(i*2) for i in xrange (n)]
def AppendQuestion(self, name, idx):
if not self.btnAnswer:
return
self.btnAnswer[idx].SetText(name)
def ClickAnswerEvent(s, ai):
event.SelectAnswer(s.descIndex, ai)
s.CloseSelf()
from _weakref import proxy
self.btnAnswer[idx].SetEvent(ClickAnswerEvent,proxy(self),idx)
self.btnAnswer[idx].Show()
def FadeOut(self, speed):
self.eventCurtain.FadeOut(speed)
def FadeIn(self, speed):
self.eventCurtain.FadeIn(speed)
def WhiteOut(self, speed):
self.eventCurtain.WhiteOut(speed)
def WhiteIn(self, speed):
self.eventCurtain.WhiteIn(speed)
def DoneEvent(self):
self.nextCurtainMode = -1
if self.SKIN_NONE == self.skin or self.SKIN_CINEMA == self.skin:
self.CloseSelf()
def __GetQuestImageFileName(self, filename):
if len(filename) > 1:
if filename[1]!=':':
filename = QUEST_BOARD_IMAGE_DIR+filename
return filename
# QUEST_INPUT
def OnKeyDown(self, key):
return TRUE
def OnIMEReturn(self):
if self.needInputString:
self.CloseSelf()
return TRUE
def OnIMEUpdate(self):
if not self.needInputString:
return
if not self.editLine:
return
self.editLine.OnIMEUpdate()
def OnInput(self):
self.needInputString = TRUE
event.AddEventSetLocalYPosition(self.descIndex, 5+10)
yPos = event.GetEventSetLocalYPosition(self.descIndex)
self.editSlot = ui.SlotBar()
self.editSlot.SetSize(200, 18)
self.editSlot.SetPosition(0, yPos)
self.editSlot.SetParent(self.board)
self.editSlot.SetWindowHorizontalAlignCenter()
self.editSlot.Show()
self.editLine = ui.EditLine()
self.editLine.SetParent(self.editSlot)
self.editLine.SetPosition(3, 3)
self.editLine.SetSize(200, 17)
self.editLine.SetMax(30)
self.editLine.SetFocus()
self.editLine.Show()
event.AddEventSetLocalYPosition(self.descIndex, 25+10)
self.MakeNextButton(event.BUTTON_TYPE_DONE)
self.editLine.UpdateRect()
self.editSlot.UpdateRect()
self.board.UpdateRect()
# END_OF_QUEST_INPUT
def OnImage(self, x, y, filename, desc=""):
filename = self.__GetQuestImageFileName(filename)
# IMAGE_EXCEPTION_BUG_FIX
try:
img = ui.MakeImageBox(self.board, filename, x, y)
self.images.append(img)
except RuntimeError:
pass
# END_OF_IMAGE_EXCEPTION_BUG_FIX
# QUEST_IMAGE
def OnInsertItemIcon(self, type, idx, title, desc):
if "item" != type:
return
import item
item.SelectItem(idx)
filename = item.GetIconImageFileName()
underTitle = title
if not title and not desc:
title = item.GetItemName()
desc = item.GetItemDescription()
tempDesc = desc
desc = ""
import grpText
lineCount = grpText.GetSplitingTextLineCount(tempDesc, 25)
for i in xrange(lineCount):
desc += grpText.GetSplitingTextLine(tempDesc, 25, i) + "/"
desc = desc[:-1]
self.OnInsertImage(filename, underTitle, title, desc)
def OnInsertImage(self, filename, underTitle, title, desc):
event.AddEventSetLocalYPosition(self.descIndex, 24)
y = event.GetEventSetLocalYPosition(self.descIndex)
xBoard, yBoard = self.board.GetGlobalPosition()
try:
img = ToolTipImageBox()
img.SetParent(self.board)
img.LoadImage(filename)
img.SetPosition(0, y)
img.SetWindowHorizontalAlignCenter()
img.DestroyToolTip()
if title and desc:
img.CreateToolTip(self.board, title, desc, 0, yBoard + y + img.GetHeight())
img.Show()
self.images.append(img)
except RuntimeError:
pass
event.AddEventSetLocalYPosition(self.descIndex, img.GetHeight() - 20)
if underTitle:
event.AddEventSetLocalYPosition(self.descIndex, 3)
event.InsertText(self.descIndex, underTitle)
else:
event.AddEventSetLocalYPosition(self.descIndex, 4)
# END_OF_QUEST_IMAGE
def OnSize(self, width, height):
self.board.SetSize(width, height)
def OnTitleImage(self, filename):
img = ui.ImageBox("TOP_MOST")
try:
img.SetWindowHorizontalAlignCenter()
img.LoadImage(filename)
img.SetPosition(0, wndMgr.GetScreenHeight() - (75/2) - (32/2))
img.SetAlpha(0.0)
img.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTitleImage(%s)" % filename)
img.Hide()
self.imgTitle = img
self.titleState = self.TITLE_STATE_APPEAR
self.titleShowTime = app.GetTime()
def OnLeftImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
if not self.imgLeft:
self.imgLeft = ui.ExpandedImageBox("TOP_MOST")
self.imgLeft.SetParent(self)
self.imgLeft.SetPosition(0,0)
bd = self.board
bx, by = bd.GetLocalPosition()
bd.SetPosition(160,by)
if self.imgTop:
tx, ty = self.imgTop.GetLocalPosition()
self.imgTop.SetPosition(160,ty)
try:
self.imgLeft.LoadImage(imgfile)
self.imgLeft.SetSize(400,450)
self.imgLeft.SetOrigin(self.imgLeft.GetWidth()/2,self.imgLeft.GetHeight()/2)
self.imgLeft.Show()
except RuntimeError:
import dbg
dbg.TraceError("QuestDialog.OnLeftImage(%s)" % imgfile)
self.imgLeft.Hide()
def OnTopImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
bd = self.board
bx, by = bd.GetLocalPosition()
if not self.imgTop:
self.imgTop = ui.ExpandedImageBox("TOP_MOST")
self.imgTop.SetParent(self)
bd.SetPosition(bx,190)
self.imgTop.SetPosition(bx,10)
try:
self.imgTop.LoadImage(imgfile)
h = self.imgTop.GetHeight()
if h>170:
# need adjust board size
bd.SetPosition(bx,20+h)
bd.SetSize(350,420-h)
self.imgTop.SetSize(350,h)
else:
self.imgTop.SetSize(350,170)
bd.SetPosition(bx,190)
bd.SetSize(350,250)
self.imgTop.SetOrigin(self.imgTop.GetWidth()/2,self.imgTop.GetHeight()/2)
self.imgTop.Show()
except RuntimeError:
dbg.TraceError("QuestDialog.OnTopImage(%s)" % imgfile)
self.imgTop.Hide()
def OnBackgroundImage(self, imgfile):
imgfile = self.__GetQuestImageFileName(imgfile)
c = self.board
w = c.GetWidth()
h = c.GetHeight()
px, py = c.GetLocalPosition()
moved = 0
if not self.imgBackground:
self.imgBackground = ui.ExpandedImageBox("TOP_MOST")
self.imgBackground.SetParent(c)
self.imgBackground.SetPosition(0,0)
self.imgBackground.LoadImage(imgfile)
iw = self.imgBackground.GetWidth()
ih = self.imgBackground.GetHeight()
if self.skin==3:
iw = 256
ih = 333
self.imgBackground.SetSize(iw,ih)
if w < iw:
px -= (iw-w)/2
c.SetPosition(px,py)
w = iw
if h < ih:
py -= (ih-h)/2
c.SetPosition(px,py)
h = ih
if self.skin == 3:
w=256
h = 333
self.sx = 0
self.sy = 100
c.SetSize(w,h)
c.HideInternal()
c.SetWindowHorizontalAlignCenter()
c.SetWindowVerticalAlignCenter()
c.SetPosition(0,0)
if self.skin==3:
c.SetPosition(-190,0)
self.imgBackground.SetWindowHorizontalAlignCenter()
self.imgBackground.SetWindowVerticalAlignCenter()
self.imgBackground.SetPosition(0,0)
self.imgBackground.Show()
MfG
Kriegergeist^^
|
Quote:
Originally Posted by Kriegergeist^^
Ups
Habe die bassende uiscript vergessen, die questiondialog.py.
Code:
import uiScriptLocale
window = {
"name" : "QuestionDialog",
"style" : ("movable", "float",),
"x" : SCREEN_WIDTH/2 - 125,
"y" : SCREEN_HEIGHT/2 - 52,
"width" : 340,
"height" : 105,
"children" :
(
{
"name" : "board",
"type" : "board",
"x" : 0,
"y" : 0,
"width" : 340,
"height" : 105,
"children" :
(
{
"name" : "message",
"type" : "text",
"x" : 0,
"y" : 38,
"horizontal_align" : "center",
"text" : uiScriptLocale.MESSAGE,
"text_horizontal_align" : "center",
"text_vertical_align" : "center",
},
{
"name" : "accept",
"type" : "button",
"x" : -40,
"y" : 63,
"width" : 61,
"height" : 21,
"horizontal_align" : "center",
"text" : uiScriptLocale.YES,
"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
},
{
"name" : "cancel",
"type" : "button",
"x" : 40,
"y" : 63,
"width" : 61,
"height" : 21,
"horizontal_align" : "center",
"text" : uiScriptLocale.NO,
"default_image" : "d:/ymir work/ui/public/middle_button_01.sub",
"over_image" : "d:/ymir work/ui/public/middle_button_02.sub",
"down_image" : "d:/ymir work/ui/public/middle_button_03.sub",
},
),
},
),
}
Müsst jetzt aber passen.
edit: Glaube irgentwas fehlt, weiß bloß nicht mehr was, ist viel zu lange her -.-
MfG
Kriegergeist^^
|
Also, bei mir schließt sich, nach dem öffnen der exe der Client.
Syserr:
Code:
0609 13:52:02945 :: Failed to load script file : UIScript/PopupDialog.py
0609 13:52:02950 ::
ui.py(line:2716) LoadScriptFile
system.py(line:192) execfile
system.py(line:161) Run
system.py(line:176) __LoadTextFile__
system.py(line:64) __init__
LoadScriptFile - exceptions.AttributeError:'NoneType' object has no attribute 'split'
0609 13:52:02950 :: ============================================================================================================
0609 13:52:02950 :: Abort!!!!
0609 13:52:02989 :: ============================================================================================================
0609 13:52:02989 :: Abort!!!!
|
|
|
06/10/2013, 17:18
|
#27
|
elite*gold: 0
Join Date: May 2011
Posts: 164
Received Thanks: 38
|
#push
|
|
|
06/11/2013, 17:46
|
#28
|
elite*gold: 0
Join Date: May 2011
Posts: 164
Received Thanks: 38
|
#push!
|
|
|
06/30/2013, 09:58
|
#29
|
elite*gold: 0
Join Date: Nov 2012
Posts: 131
Received Thanks: 43
|
I removed these next/back buttons
|
|
|
06/30/2013, 10:44
|
#30
|
elite*gold: 748
Join Date: Jul 2012
Posts: 1,597
Received Thanks: 1,981
|
Wieso willst du die entfernen? Ist doch eine tolle Funktion die uns SG da mit auf den Weg geben hat, es liegt abersoviel wie ich weis serverside... Denn nach aufspielen der Neuen files vor 4 wochen, habe ich einen alten client benutzt, und dort waren die Funktionen auch bereits vorhanden.
|
|
|
 |
|
Similar Threads
|
Shaders und Forge (Problemfrage)
04/10/2013 - Minecraft - 3 Replies
Hey, ich spiele auf der 1.5.1 und brauche folgende Hilfe.
Ich möchte mit Shaders spielen, seit neuestem habe ich aber durch einen Mod Forge,
ist es möglich trotz Forge mit Shadern zu spielen? Benutze den MagicLauncher.
Reihenfolge:
Forge #608
Optifine HD U A8
chocos Shaders
|
Warpring (Weiter-Zurück-Fehler)
12/15/2012 - Metin2 Private Server - 8 Replies
Heello ;)
hab gestern mal ne Warpring-Quest eingefügt und dann kam folgender Fehler:
http://i.epvpimg.com/ptMYc.jpg
das "Weiter" auf der rechten Seite sollte eigentlich nicht da sein ^^
|
Weiter-Button in Schop / 2. Seite
09/05/2011 - Metin2 Private Server - 10 Replies
Huhu zusammen, ich brauchte mal ne kleine hilfe wie es in meiner quest aussehen müsste dami ich einen "Weiter" button im Shop habe um auf eine 2. Shopseite zu kommen, also so wie beim Teleporter.
Viele geben den Link http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/426308-zweite-npc-shopseite.html
Der ist aber für das Thema nicht hilfreich.
Würde mich sehr über ne Hilfestellung freuen.
Lg
|
Patcher (by iMer) Frage + Problemfrage
02/21/2011 - Metin2 Private Server - 0 Replies
"Dank der Sufu habe ich nur Müll gefunden,deshalb nochmal selber geschrieben"
Hey E*pvp,
ich habe mir vor kurzem den Patcher von iMer geholt...
Er klappt auch einwandfrei^^
Ich möchte jetzt aber gerne Sachen wie z.B (anstatt : download ... / Downloaden von :) hinschreiben.. wie oder was muss ich entpacken damit ich die entsprechenden Daten kriege?
Er hat was von "Source" gezeigt..
Dies möchte ich entpacken^^
Übrigens wenn ich patche,und dannach die .exe starte kommt : FATAL ERROR! Phyton...
|
All times are GMT +1. The time now is 09:32.
|
|