- 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
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Oyunda Bulunan İtemlerin + Basmada İstenilen Malzeme Miktarını Çoğaltma
Forumda Bulamadığım İçin Açıyorum Konuyu Kendimi Aittir
Daha Önce Paylaşıldıysa Raporlayınız.
Anlatım :
Kanıt:
Forumda Bulamadığım İçin Açıyorum Konuyu Kendimi Aittir
Daha Önce Paylaşıldıysa Raporlayınız.
Anlatım :
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Kanıt:
En Çok Reaksiyon Alan Mesajlar
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.
Öğeyi görmek için üye olmalısınız.
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]
Eline sağlık.
- Katılım
- 29 Kas 2020
- Konular
- 218
- Mesajlar
- 2,212
- Çözüm
- 6
- Online süresi
- 5mo 2d
- Reaksiyon Skoru
- 2,493
- Altın Konu
- 35
- Başarım Puanı
- 226
- Yaş
- 29
- MmoLira
- 20,271
- DevLira
- 51
Çok güzel bir anlatım olmuş kral çok teşekkür ederim paylaşım için. 

- 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
iyi kullanımlar <3Çok güzel bir anlatım olmuş kral çok teşekkür ederim paylaşım için.![]()
- Katılım
- 26 Mar 2024
- Konular
- 1,281
- Mesajlar
- 4,879
- Çözüm
- 91
- Online süresi
- 3mo 26d
- Reaksiyon Skoru
- 4,070
- Altın Konu
- 566
- Başarım Puanı
- 274
- Yaş
- 29
- MmoLira
- 136,864
- DevLira
- 450
Eline sağlık.
- 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
- 27K













