+Basarken Yükseltme Oranını Gösterme

FarquesFarques doğrulanmış üyedir.

~ Everything has an end

Konu Sahibi

Katılım
6 Haziran 2025
Mesajlar
66
Tepkime puanı
22
Puan
8
Web sitesi
darkmmo.tr
Discord
farques6
Resimleri ekte görebilmek için kayıtlı olmanız gerekmektedir


root/uirefine.py

Python:
import app
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

 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")

 ## 936 : 개량 확률 표시 안함
 ##if 936 == app.GetDefaultCodePage():
 self.successPercentage.Show()

 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")

 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[i]

 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 UpdateDialog(self):
 newWidth = self.toolTip.GetWidth() + 30
 newHeight = self.toolTip.GetHeight() + 98
 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):
 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):

 def __init__(self):
 ui.ScriptWindow.__init__(self)
 self.__Initialize()
 self.isLoaded = FALSE

 def __Initialize(self):
 self.dlgQuestion = None
 self.children = []
 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)
 except:
 import exception
 exception.Abort("RefineDialog.__LoadScript.BindObject")

 ## 936 : 개량 확률 표시 안함
 ##if 936 == app.GetDefaultCodePage():
 self.successPercentage.Show()

 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.__MakeSlot()
 slot.SetParent(toolTip)
 slot.SetWindowVerticalAlignCenter()
 self.slotList.append(slot)

 itemImage = self.__MakeItemImage()
 itemImage.SetParent(toolTip)
 itemImage.SetWindowVerticalAlignCenter()
 itemImage.SetPosition(-35, 0)
 self.itemImage = itemImage

 self.titleBar.SetCloseEvent(ui.__mem_func__(self.CancelRefine))
 self.isLoaded = TRUE

 def __del__(self):
 ui.ScriptWindow.__del__(self)

 def __MakeSlot(self):
 slot = ui.ImageBox()
 slot.LoadImage("d:/ymir work/ui/public/slot_base.sub")
 slot.Show()
 self.children.append(slot)
 return slot

 def __MakeItemImage(self):
 itemImage = ui.ImageBox()
 itemImage.Show()
 self.children.append(itemImage)
 return itemImage

 def __MakeThinBoard(self):
 thinBoard = ui.ThinBoard()
 thinBoard.SetParent(self)
 thinBoard.Show()
 self.children.append(thinBoard)
 return thinBoard

 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 = []

 def Open(self, targetItemPos, nextGradeItemVnum, cost, prob, type):

 if FALSE == self.isLoaded:
 self.__LoadScript()

 self.__Initialize()

 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[i].SetPosition(-35, i*32 - (ySlotCount-1)*16)
 self.slotList[i].Show()

 self.dialogHeight = self.toolTip.GetHeight() + 46
 self.UpdateDialog()

 self.SetTop()
 self.Show()

 def Close(self):
 self.dlgQuestion = None
 self.Hide()

 def AppendMaterial(self, vnum, count):
 slot = self.__MakeSlot()
 slot.SetParent(self)
 slot.SetPosition(15, self.dialogHeight)

 itemImage = self.__MakeItemImage()
 itemImage.SetParent(slot)
 item.SelectItem(vnum)
 itemImage.LoadImage(item.GetIconImageFileName())

 thinBoard = self.__MakeThinBoard()
 thinBoard.SetPosition(50, self.dialogHeight)
 thinBoard.SetSize(191, 20)

 textLine = ui.TextLine()
 textLine.SetParent(thinBoard)
 textLine.SetFontName(localeInfo.UI_DEF_FONT)
 textLine.SetPackedFontColor(0xffdddddd)
 textLine.SetText("%s x %02d" % (item.GetItemName(), count))
 textLine.SetOutline()
 textLine.SetFeather(FALSE)
 textLine.SetWindowVerticalAlignCenter()
 textLine.SetVerticalAlignCenter()

 if localeInfo.IsARABIC():
 (x,y) = textLine.GetTextSize()
 textLine.SetPosition(x, 0)
 else:
 textLine.SetPosition(15, 0)

 textLine.Show()
 self.children.append(textLine)

 self.dialogHeight += 34
 self.UpdateDialog()

 def UpdateDialog(self):
 newWidth = self.toolTip.GetWidth() + 60
 newHeight = self.dialogHeight + 69

 ## 936 : 개량 확률 표시 안함
 ##if 936 == app.GetDefaultCodePage():
 newHeight -= 8

 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.toolTip.SetPosition(15 + 35, 38)
 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
uiscript/refine.py
Python:
import uiScriptLocale

window = {
 "name" : "RefineDialog",
 "style" : ("movable", "float",),

 "x" : SCREEN_WIDTH - 400,
 "y" : 70 * 800 / SCREEN_HEIGHT,

 "width" : 0,
 "height" : 0 + 31,

 "children" :
 (
 {
 "name" : "Board",
 "type" : "board",
 "style" : ("attach",),

 "x" : 0,
 "y" : 0,

 "width" : 0,
 "height" : 0 + 31,

 "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" : "SuccessPercentage",
 "type" : "text",
 "text" : uiScriptLocale.REFINE_INFO,
 "horizontal_align" : "center",
 "vertical_align" : "bottom",
 "text_horizontal_align" : "center",
 "x" : 0,
 "y" : 60,
 },
 {
 "name" : "Cost",
 "type" : "text",
 "text" : uiScriptLocale.REFINE_COST,
 "horizontal_align" : "center",
 "vertical_align" : "bottom",
 "text_horizontal_align" : "center",
 "x" : 0,
 "y" : 47,
 },
 {
 "name" : "AcceptButton",
 "type" : "button",

 "x" : -35,
 "y" : 30,

 # "text" : uiScriptLocale.OK,
 "horizontal_align" : "center",
 "vertical_align" : "bottom",

 "default_image" : "d:/ymir work/ui/new/ok1.sub",
 "over_image" : "d:/ymir work/ui/new/ok2.sub",
 "down_image" : "d:/ymir work/ui/new/ok3.sub",
 },
 {
 "name" : "CancelButton",
 "type" : "button",

 "x" : 35,
 "y" : 30,

 # "text" : uiScriptLocale.CANCEL,
 "horizontal_align" : "center",
 "vertical_align" : "bottom",

 "default_image" : "d:/ymir work/ui/new/no1.sub",
 "over_image" : "d:/ymir work/ui/new/no2.sub",
 "down_image" : "d:/ymir work/ui/new/no3.sub",
 },
 ),
 },
 ),
}