- Katılım
- 10 Ocak 2009
- Konular
- 3,748
- Mesajlar
- 15,940
- Çözüm
- 334
- Online süresi
- 6mo 28d
- Reaksiyon Skoru
- 8,034
- Altın Konu
- 947
- Başarım Puanı
- 474
- Yaş
- 34
- MmoLira
- 86,732
- DevLira
- -12
HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Yapmak zaman alır, isteyip yapmak yetenek işidir. Eline sağlık.
- Katılım
- 23 Ocak 2019
- Konular
- 69
- Mesajlar
- 592
- Çözüm
- 9
- Online süresi
- 2mo 4d
- Reaksiyon Skoru
- 330
- Altın Konu
- 0
- Başarım Puanı
- 161
- MmoLira
- 2,103
- DevLira
- 45
Elinize sağlık. Ancak böylesi çok da uygun görünmüyor. Küçük ekranlarda pencere önizlemede sıkıntı yaşanabilir.[CODE lang="python" title="uirefine.py"]import app
O yüzden böylesi daha uygun olacaktır.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Orijinalinde 4 adet malzemeye göre ayarlıydı ben de 5 ve sonrası için scrollbar'a bağladım.
Sökmek isteyen olursa diye py dosyalarımı iletiyorum.
import net
import player
import item
import ui
import uiToolTip
import mouseModule
import localeInfo
import uiCommon
import constInfo
class RefineDialog(ui.ScriptWindow):
makeSocketSuccessPercentage = ( 100, 33, 20, 15, 10, 5, 0 )
upgradeStoneSuccessPercentage = ( 30, 29, 28, 27, 26, 25, 24, 23, 22 )
upgradeArmorSuccessPercentage = ( 99, 66, 33, 33, 33, 33, 33, 33, 33 )
upgradeAccessorySuccessPercentage = ( 99, 88, 77, 66, 33, 33, 33, 33, 33 )
upgradeSuccessPercentage = ( 99, 66, 33, 33, 33, 33, 33, 33, 33 )
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__LoadScript()
self.scrollItemPos = 0
self.targetItemPos = 0
self.dialogHeight = 0
def __LoadScript(self):
self.__LoadQuestionDialog()
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/refinedialog.py")
except:
import exception
exception.Abort("RefineDialog.__LoadScript.LoadObject")
try:
self.board = self.GetChild("Board")
self.titleBar = self.GetChild("TitleBar")
self.successPercentage = self.GetChild("SuccessPercentage")
self.GetChild("AcceptButton").SetEvent(self.OpenQuestionDialog)
self.GetChild("CancelButton").SetEvent(self.Close)
except:
import exception
exception.Abort("RefineDialog.__LoadScript.BindObject")
if constInfo.ENABLE_REFINE_PCT:
self.successPercentage.Show()
else:
self.successPercentage.Hide()
toolTip = uiToolTip.ItemToolTip()
toolTip.SetParent(self)
toolTip.SetPosition(15, 38)
toolTip.SetFollow(False)
toolTip.Show()
self.toolTip = toolTip
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
def __del__(self):
ui.ScriptWindow.__del__(self)
def __LoadQuestionDialog(self):
self.dlgQuestion = ui.ScriptWindow()
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self.dlgQuestion, "uiscript/questiondialog2.py")
except:
import exception
exception.Abort("RefineDialog.__LoadQuestionDialog.LoadScript")
try:
GetObject=self.dlgQuestion.GetChild
GetObject("message1").SetText(localeInfo.REFINE_DESTROY_WARNING)
GetObject("message2").SetText(localeInfo.REFINE_WARNING2)
GetObject("accept").SetEvent(ui.__mem_func__(self.Accept))
GetObject("cancel").SetEvent(ui.__mem_func__(self.dlgQuestion.Hide))
except:
import exception
exception.Abort("SelectCharacterWindow.__LoadQuestionDialog.BindObject")
@ui.WindowDestroy
def Destroy(self):
self.ClearDictionary()
self.board = 0
self.successPercentage = 0
self.titleBar = 0
self.toolTip = 0
self.dlgQuestion = 0
def GetRefineSuccessPercentage(self, scrollSlotIndex, itemSlotIndex):
if -1 != scrollSlotIndex:
if player.IsRefineGradeScroll(scrollSlotIndex):
curGrade = player.GetItemGrade(itemSlotIndex)
itemIndex = player.GetItemIndex(itemSlotIndex)
item.SelectItem(itemIndex)
itemType = item.GetItemType()
itemSubType = item.GetItemSubType()
if item.ITEM_TYPE_METIN == itemType:
if curGrade >= len(self.upgradeStoneSuccessPercentage):
return 0
return self.upgradeStoneSuccessPercentage[curGrade]
elif item.ITEM_TYPE_ARMOR == itemType:
if item.ARMOR_BODY == itemSubType:
if curGrade >= len(self.upgradeArmorSuccessPercentage):
return 0
return self.upgradeArmorSuccessPercentage[curGrade]
else:
if curGrade >= len(self.upgradeAccessorySuccessPercentage):
return 0
return self.upgradeAccessorySuccessPercentage[curGrade]
else:
if curGrade >= len(self.upgradeSuccessPercentage):
return 0
return self.upgradeSuccessPercentage[curGrade]
for i in xrange(player.METIN_SOCKET_MAX_NUM+1):
if 0 == player.GetItemMetinSocket(itemSlotIndex, i):
break
return self.makeSocketSuccessPercentage
def Open(self, scrollItemPos, targetItemPos):
self.scrollItemPos = scrollItemPos
self.targetItemPos = targetItemPos
percentage = self.GetRefineSuccessPercentage(scrollItemPos, targetItemPos)
if 0 == percentage:
return
self.successPercentage.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (percentage))
itemIndex = player.GetItemIndex(targetItemPos)
self.toolTip.ClearToolTip()
metinSlot = []
for i in xrange(player.METIN_SOCKET_MAX_NUM):
metinSlot.append(player.GetItemMetinSocket(targetItemPos, i))
self.toolTip.AddItemData(itemIndex, metinSlot)
self.UpdateDialog()
self.SetTop()
self.Show()
def OpenQuestionDialog(self):
percentage = self.GetRefineSuccessPercentage(-1, self.targetItemPos)
if 100 == percentage:
self.Accept()
return
self.dlgQuestion.SetTop()
self.dlgQuestion.Show()
def Accept(self):
net.SendItemUseToItemPacket(self.scrollItemPos, self.targetItemPos)
self.Close()
def Close(self):
self.dlgQuestion.Hide()
self.Hide()
def OnPressEscapeKey(self):
self.Close()
return True
class RefineDialogNew(ui.ScriptWindow):
MATERIAL_SLOT_HEIGHT = 34
MATERIAL_WINDOW_HEIGHT = 136
SCROLLBAR_WIDTH = 17
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__Initialize()
self.isLoaded = False
def __Initialize(self):
self.dlgQuestion = None
self.children = []
self.material_widgets = []
self.materialList = []
self.materialWindow = None
self.materialScrollBar = None
self.scrollable_widgets = []
self.vnum = 0
self.targetItemPos = 0
self.dialogHeight = 0
self.cost = 0
self.percentage = 0
self.type = 0
def __LoadScript(self):
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "uiscript/refinedialog.py")
except:
import exception
exception.Abort("RefineDialog.__LoadScript.LoadObject")
try:
self.board = self.GetChild("Board")
self.titleBar = self.GetChild("TitleBar")
self.probText = self.GetChild("SuccessPercentage")
self.costText = self.GetChild("Cost")
self.successPercentage = self.GetChild("SuccessPercentage")
self.GetChild("AcceptButton").SetEvent(self.OpenQuestionDialog)
self.GetChild("CancelButton").SetEvent(self.CancelRefine)
self.materialWindow = self.GetChild("MaterialWindow")
self.materialScrollBar = self.GetChild("MaterialScrollBar")
self.materialScrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
except:
import exception
exception.Abort("RefineDialog.__LoadScript.BindObject")
if constInfo.ENABLE_REFINE_PCT:
self.successPercentage.Show()
else:
self.successPercentage.Hide()
toolTip = uiToolTip.ItemToolTip()
toolTip.SetParent(self)
toolTip.SetFollow(False)
toolTip.SetPosition(15, 38)
toolTip.Show()
self.toolTip = toolTip
self.slotList = []
for i in xrange(3):
slot = self.__MakeRefineSlot()
slot.SetParent(toolTip)
slot.SetWindowVerticalAlignCenter()
self.slotList.append(slot)
itemImage = self.__MakeRefineItemImage()
itemImage.SetParent(toolTip)
itemImage.SetWindowVerticalAlignCenter()
itemImage.SetPosition(-35, 0)
self.itemImage = itemImage
self.titleBar.SetCloseEvent(ui.__mem_func__(self.CancelRefine))
self.isLoaded = True
def __MakeRefineSlot(self):
slot = ui.ImageBox()
slot.LoadImage("d:/ymir work/ui/public/slot_base.sub")
slot.Show()
return slot
def __MakeRefineItemImage(self):
itemImage = ui.ImageBox()
itemImage.Show()
return itemImage
def __MakeSlot(self):
slot = ui.ImageBox()
slot.LoadImage("d:/ymir work/ui/public/slot_base.sub")
slot.SetWindowName("MaterialSlot")
slot.Show()
return slot
def __MakeItemImage(self):
itemImage = ui.ImageBox()
itemImage.SetWindowName("MaterialItemImage")
itemImage.Show()
return itemImage
def __MakeThinBoard(self):
thinBoard = ui.ThinBoard()
thinBoard.SetWindowName("MaterialThinBoard")
thinBoard.Show()
return thinBoard
def __del__(self):
ui.ScriptWindow.__del__(self)
@ui.WindowDestroy
def Destroy(self):
self.ClearDictionary()
self.dlgQuestion = None
self.board = 0
self.probText = 0
self.costText = 0
self.titleBar = 0
self.toolTip = 0
self.successPercentage = None
self.slotList = []
self.children = []
self.materialList = []
self.scrollable_widgets = []
if hasattr(self, 'material_widgets'):
self.material_widgets = []
self.materialWindow = None
self.materialScrollBar = None
def ClearMaterial(self):
for widget in self.material_widgets:
try:
widget.Hide()
widget.SetParent(None)
except AttributeError:
pass
except TypeError:
pass
self.material_widgets = []
self.materialList = []
self.scrollable_widgets = []
if self.materialScrollBar:
self.materialScrollBar.SetPos(0.0)
self.materialScrollBar.Hide()
def Open(self, targetItemPos, nextGradeItemVnum, cost, prob, type):
if False == self.isLoaded:
self.__LoadScript()
self.ClearMaterial()
self.targetItemPos = targetItemPos
self.vnum = nextGradeItemVnum
self.cost = cost
self.percentage = prob
self.type = type
self.probText.SetText(localeInfo.REFINE_SUCCESS_PROBALITY % (self.percentage))
self.costText.SetText(localeInfo.REFINE_COST % (self.cost))
self.toolTip.ClearToolTip()
metinSlot = []
for i in xrange(player.METIN_SOCKET_MAX_NUM):
metinSlot.append(player.GetItemMetinSocket(targetItemPos, i))
attrSlot = []
for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
attrSlot.append(player.GetItemAttribute(targetItemPos, i))
self.toolTip.AddRefineItemData(nextGradeItemVnum, metinSlot, attrSlot)
item.SelectItem(nextGradeItemVnum)
self.itemImage.LoadImage(item.GetIconImageFileName())
xSlotCount, ySlotCount = item.GetItemSize()
for slot in self.slotList:
slot.Hide()
for i in xrange(min(3, ySlotCount)):
self.slotList.SetPosition(-35, i*32 - (ySlotCount-1)*16)
self.slotList.Show()
self.dialogHeight = self.toolTip.GetHeight() + 46
self.UpdateDialog()
self.SetTop()
self.Show()
def Close(self):
self.ClearMaterial()
if self.dlgQuestion:
self.dlgQuestion.Close()
self.Hide()
def AppendMaterial(self, vnum, count):
self.materialList.append((vnum, count))
self.UpdateMaterialDisplay()
def UpdateMaterialDisplay(self):
for widget in self.material_widgets:
try:
widget.Hide()
widget.SetParent(None)
except AttributeError:
pass
except TypeError:
pass
self.material_widgets = []
self.scrollable_widgets = []
for i, (vnum, count) in enumerate(self.materialList):
material_draw_y = i * self.MATERIAL_SLOT_HEIGHT
slot = self.__MakeSlot()
slot.SetParent(self.materialWindow)
slot.SetPosition(30, material_draw_y)
self.material_widgets.append(slot)
self.scrollable_widgets.append(slot)
itemImage = self.__MakeItemImage()
itemImage.SetParent(slot)
itemImage.SetPosition(1, 1)
item.SelectItem(vnum)
itemImage.LoadImage(item.GetIconImageFileName())
self.material_widgets.append(itemImage)
thinBoard = self.__MakeThinBoard()
thinBoard.SetParent(self.materialWindow)
thinBoard.SetPosition(30 + 39, material_draw_y)
thinBoard.SetSize(191, 32)
self.material_widgets.append(thinBoard)
self.scrollable_widgets.append(thinBoard)
textLine = ui.TextLine()
textLine.SetParent(thinBoard)
textLine.SetFontName(localeInfo.UI_DEF_FONT)
textLine.SetPackedFontColor(0xffdddddd)
item.SelectItem(vnum)
textLine.SetText("%s x %d" % (item.GetItemName(), count))
textLine.SetOutline()
textLine.SetFeather(False)
textLine.SetWindowVerticalAlignCenter()
textLine.SetVerticalAlignCenter()
if localeInfo.IsARABIC():
(x,y) = textLine.GetTextSize()
textLine.SetPosition(thinBoard.GetWidth() - x - 5, 0)
else:
textLine.SetPosition(15, 0)
textLine.Show()
self.material_widgets.append(textLine)
total_material_count = len(self.materialList)
total_material_height = total_material_count * self.MATERIAL_SLOT_HEIGHT
if total_material_count > 4:
self.materialScrollBar.Show()
self.materialScrollBar.SetMiddleBarSize(
float(self.MATERIAL_WINDOW_HEIGHT) / float(total_material_height)
)
else:
self.materialScrollBar.Hide()
self.materialScrollBar.SetPos(0.0)
self.OnScroll()
def OnScroll(self):
scrollPos = self.materialScrollBar.GetPos()
total_material_height = len(self.materialList) * self.MATERIAL_SLOT_HEIGHT
max_scroll_offset = max(0, total_material_height - self.MATERIAL_WINDOW_HEIGHT)
y_offset = int(scrollPos * max_scroll_offset)
if y_offset > max_scroll_offset:
y_offset = max_scroll_offset
VIEW_TOP = 0
VIEW_BOTTOM = self.MATERIAL_WINDOW_HEIGHT
for i in xrange(len(self.materialList)):
slot = self.scrollable_widgets[i*2]
thinBoard = self.scrollable_widgets[i*2 + 1]
slot_y = i * self.MATERIAL_SLOT_HEIGHT
new_y_top = slot_y - y_offset
new_y_bottom = new_y_top + self.MATERIAL_SLOT_HEIGHT
is_visible = (new_y_bottom > VIEW_TOP) and (new_y_top < VIEW_BOTTOM)
if is_visible:
slot.SetPosition(slot.GetLocalPosition()[0], new_y_top)
thinBoard.SetPosition(thinBoard.GetLocalPosition()[0], new_y_top)
slot.Show()
thinBoard.Show()
else:
slot.Hide()
thinBoard.Hide()
def UpdateDialog(self):
newWidth = self.toolTip.GetWidth() + 80
TOOLTIP_START_Y = 38
PADDING = 15
material_start_y = TOOLTIP_START_Y + self.toolTip.GetHeight() + PADDING
OFFSET_X = 50
OFFSET_X_2 = 0
self.toolTip.SetPosition(OFFSET_X, TOOLTIP_START_Y)
self.materialWindow.SetPosition(OFFSET_X_2 - 17, material_start_y)
self.materialScrollBar.SetPosition(OFFSET_X_2 + 245, material_start_y + 15)
self.materialScrollBar.SetSize(self.SCROLLBAR_WIDTH, self.MATERIAL_WINDOW_HEIGHT)
BOTTOM_CONTROL_SPACE = 80
newHeight = material_start_y + self.MATERIAL_WINDOW_HEIGHT + BOTTOM_CONTROL_SPACE
if localeInfo.IsARABIC():
self.board.SetPosition( newWidth, 0 )
(x, y) = self.titleBar.GetLocalPosition()
self.titleBar.SetPosition( newWidth - 15, y )
self.board.SetSize(newWidth, newHeight)
self.titleBar.SetWidth(newWidth-15)
self.SetSize(newWidth, newHeight)
(x, y) = self.GetLocalPosition()
self.SetPosition(x, y)
def OpenQuestionDialog(self):
if 100 == self.percentage:
self.Accept()
return
if 5 == self.type:
self.Accept()
return
dlgQuestion = uiCommon.QuestionDialog2()
dlgQuestion.SetText2(localeInfo.REFINE_WARNING2)
dlgQuestion.SetAcceptEvent(ui.__mem_func__(self.Accept))
dlgQuestion.SetCancelEvent(ui.__mem_func__(dlgQuestion.Close))
if 3 == self.type:
dlgQuestion.SetText1(localeInfo.REFINE_DESTROY_WARNING_WITH_BONUS_PERCENT_1)
dlgQuestion.SetText2(localeInfo.REFINE_DESTROY_WARNING_WITH_BONUS_PERCENT_2)
elif 2 == self.type:
dlgQuestion.SetText1(localeInfo.REFINE_DOWN_GRADE_WARNING)
else:
dlgQuestion.SetText1(localeInfo.REFINE_DESTROY_WARNING)
dlgQuestion.Open()
self.dlgQuestion = dlgQuestion
def Accept(self):
net.SendRefinePacket(self.targetItemPos, self.type)
self.Close()
def CancelRefine(self):
net.SendRefinePacket(255, 255)
self.Close()
def OnPressEscapeKey(self):
self.CancelRefine()
return True[/CODE]
[CODE lang="python" title="refinedialog.py"]import uiScriptLocale
window = {
"name" : "RefineDialog",
"style" : ("movable", "float",),
"x" : SCREEN_WIDTH - 400,
"y" : 70 * 800 / SCREEN_HEIGHT,
"width" : 0,
"height" : 0,
"children" :
(
{
"name" : "Board",
"type" : "board",
"style" : ("attach",),
"x" : 0,
"y" : 0,
"width" : 0,
"height" : 0,
"children" :
(
{
"name" : "TitleBar",
"type" : "titlebar",
"style" : ("attach",),
"x" : 8,
"y" : 8,
"width" : 0,
"color" : "red",
"children" :
(
{
"name" : "TitleName",
"type" : "text",
"text" : uiScriptLocale.REFINE_TTILE,
"horizontal_align" : "center",
"text_horizontal_align" : "center",
"x" : 0,
"y" : 3,
},
),
},
{
"name" : "MaterialWindow",
"type" : "window",
"x" : 15,
"y" : 240,
"width" : 230,
"height" : 105,
},
{
"name" : "MaterialScrollBar",
"type" : "scrollbar",
"x" : 248,
"y" : 240,
"size" : 105,
},
{
"name" : "SuccessPercentage",
"type" : "text",
"text" : uiScriptLocale.REFINE_INFO,
"horizontal_align" : "center",
"vertical_align" : "bottom",
"text_horizontal_align" : "center",
"x" : 0,
"y" : 70,
},
{
"name" : "Cost",
"type" : "text",
"text" : uiScriptLocale.REFINE_COST,
"horizontal_align" : "center",
"vertical_align" : "bottom",
"text_horizontal_align" : "center",
"x" : 0,
"y" : 54,
},
{
"name" : "AcceptButton",
"type" : "button",
"x" : -35,
"y" : 35,
"text" : uiScriptLocale.OK,
"horizontal_align" : "center",
"vertical_align" : "bottom",
"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" : "CancelButton",
"type" : "button",
"x" : 35,
"y" : 35,
"text" : uiScriptLocale.CANCEL,
"horizontal_align" : "center",
"vertical_align" : "bottom",
"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",
},
),
},
),
}[/CODE]
paylaşım için teşekkür ederim.
teşekkür ederim iyi kullanımlar <3Yapmak zaman alır, isteyip yapmak yetenek işidir. Eline sağlık.
- Katılım
- 23 Ocak 2019
- Konular
- 69
- Mesajlar
- 592
- Çözüm
- 9
- Online süresi
- 2mo 4d
- Reaksiyon Skoru
- 330
- Altın Konu
- 0
- Başarım Puanı
- 161
- MmoLira
- 2,103
- DevLira
- 45
Paylaşımınız İçin Teşekkürler.
Paylaşım için teşekkürler canım kardeşim.
Eline sağlık
Tesekkurler eline saglik kullanacagim eksik olma hocam
teşekkür ederim iyi kullanımlar <3Eline sağlık
- Katılım
- 2 Ara 2024
- Konular
- 186
- Mesajlar
- 1,981
- Çözüm
- 8
- Online süresi
- 5mo 13d
- Reaksiyon Skoru
- 1,495
- Altın Konu
- 1
- Başarım Puanı
- 206
- MmoLira
- 12,420
- DevLira
- 36
Eline saglik
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 9
- Görüntüleme
- 168
- Cevaplar
- 2
- Görüntüleme
- 121
- Cevaplar
- 189
- Görüntüleme
- 27K
- Cevaplar
- 7
- Görüntüleme
- 28K





