- Mesaj
- 51
- Çözümler
- 2
- Beğeni
- 11
- Puan
- 424
- Ticaret Puanı
- 0
Arkadaşlar özellik veren battle pass sistemini razuning v5'e ekledim, client game src ve python tarafını sorunsuzca eklemem gereken her şeyi ekledim ama loading ekranı dolduktan sonra crash veriyor ve aşağıdaki gibi bir syserr var, yardımcı olabilirseniz çok sevinirim
Sorun nerede acaba?
Bu pack/root/uinewbattlepass.py dosyamın içeriği
Bu da pack/uiscript/newbattlepass.py dosya içeriğim
Syserr:
1121 18:59:10567 ::
uinewbattlepass.py(line:48) LoadWindow
ui.py(line:2719) GetChild
BattlePassWindow.LoadWindow.BindObject - <type 'exceptions.KeyError'>:'Log_Container'
1121 18:59:10567 :: ============================================================================================================
1121 18:59:10567 :: Abort!!!!
Sorun nerede acaba?
Bu pack/root/uinewbattlepass.py dosyamın içeriği
pack/root/uinewbattlepass.py:
import ui, net, uiToolTip, nonplayer
class BattlePassWindow(ui.ScriptWindow):
def __init__(self):
super(BattlePassWindow, self).__init__()
self.Initialize()
self.LoadWindow()
def __del__(self):
super(BattlePassWindow, self).__del__()
def Destroy(self):
self.ClearDictionary()
def Open(self):
self.SetTop()
self.SetCenterPosition()
self.Show()
if not self.isLoad:
self.EnableRefreshSymbol()
net.SendBattlePassOpenPacket()
self.isLoad = True
else:
self.LoadMissions()
def Close(self):
self.Hide()
map(MissionButtons.Close, self.MissionContainer.GetItems())
def OnPressEscapeKey(self):
self.Close()
return True
def Initialize(self):
self.missionsList = []
self.selectedIndex = 0
self.MissionContainer = None
self.isLoad = False
def LoadWindow(self):
try:
ui.PythonScriptLoader().LoadScriptFile(self, "uiscript/newbattlepass.py")
except:
import exception
exception.Abort("BattlePassWindow.LoadWindow.LoadObject")
try:
self.GetChild("TitleBar").SetCloseEvent(self.Close)
self.MissionContainer = self.GetChild("Log_Container")
self.RefreshSymbol = self.GetChild("RefreshSymbol")
self.status_text = self.GetChild("mission_text_0")
self.scrollbar = self.GetChild("LogScrollBar")
self.affect_text_list = [self.GetChild("mission_text_%d" % i) for i in range(4, 7)]
self.desc_text_list = [self.GetChild("mission_text_%d" % i) for i in range(1, 4)]
except:
import exception
exception.Abort("BattlePassWindow.LoadWindow.BindObject")
self.MissionContainer.SetItemStep(45)
self.MissionContainer.SetItemSize(290, 250)
self.MissionContainer.SetScrollBar(self.scrollbar)
def UpdateMissions(self, missionValue, targetVnum, desc):
desc = desc.replace('#', ' ').title()
upData = { 'mission_value': long(missionValue), 'target_value': int(targetVnum), 'desc': desc, 'player_val' : 0, 'reward_arr' : [], 'aff_arr' : [] }
self.missionsList.append(upData)
def UpdateMissionItemReward(self, idx, vnum, count):
try:
itemList = (vnum, count)
self.missionsList[idx]['reward_arr'].append(itemList)
except: pass
def UpdateMissionAffReward(self, idx, affType, affVal):
try:
affList = (affType, affVal)
self.missionsList[idx]['aff_arr'].append(affList)
except: pass
def UpdatePlayerValue(self, idx, value):
try:
self.missionsList[idx]['player_val'] = long(value)
item = self.MissionContainer.GetItemWithIndex(int(idx))
if item is not None:
item.UpdatePlayerValue(value)
if int(idx) == self.selectedIndex:
self.LoadMissionInfos()
except: pass
def LoadMissions(self):
self.MissionContainer.RemoveAllItems()
for idx, elm in enumerate(self.missionsList):
info = MissionButtons(self, idx, elm['mission_value'], elm['target_value'], elm['desc'], elm['player_val'], elm['reward_arr'], elm['aff_arr'])
self.MissionContainer.AppendItem(info)
self.DisableRefreshSymbol()
self.SelectFirstItem()
def SelectFirstItem(self):
firstItem = self.MissionContainer.GetFirstItem()
firstItem.ButtonAction()
def EnableRefreshSymbol(self):
self.RefreshSymbol.Show()
def DisableRefreshSymbol(self):
self.RefreshSymbol.Hide()
def SetUpButtons(self):
for btn in self.MissionContainer.GetItems():
btn.UpButton()
def LoadMissionInfos(self):
info = self.missionsList[self.selectedIndex]
statText = "Devam ediyor"
if info['player_val'] >= info['mission_value']:
statText = "Tamamland\xfd"
self.status_text.SetText(statText)
for idx, aff in enumerate(info['aff_arr']):
cls = uiToolTip.ItemToolTip()
affText = cls.GetAffectString(aff[0], aff[1])
self.affect_text_list[idx].SetText(affText)
self.desc_text_list[0].SetText("Hedef : {}".format(nonplayer.GetMonsterName(info['target_value'])))
self.desc_text_list[1].SetText("Aciklama: %s" % info['desc'])
self.desc_text_list[2].SetText("Ilerleme : {} / {}".format(info['player_val'], info['mission_value']))
def OnRunMouseWheel(self, a):
if not self.IsInPosition():
return False
if not self.scrollbar.IsShow():
return False
if a > 0:
self.scrollbar.OnUp()
else:
self.scrollbar.OnDown()
return True
import wndMgr
class MissionButtons(ui.Window):
ROOT = "battlepass/"
WIDTH = 290
def __init__(self, parent, idx, mission_value, target_value, desc, player_val, item_list, aff_list):
super(MissionButtons, self).__init__()
self.SetParent(parent)
self.parent = parent
self.idx = int(idx)
self.mission_value = long(mission_value)
self.target_value = long(target_value)
self.desc = str(desc)
self.player_val = long(player_val)
self.item_list = item_list
self.aff_list = aff_list
self.ToolTipItem = uiToolTip.ItemToolTip()
# self.SetColor(ui.NewListBoxItem.DEFAULT_COLOR)
self.SetSize(self.WIDTH, 44)
self.InitItem()
self.LoadItemRewards()
def __del__(self):
super(MissionButtons, self).__del__()
del self.parent
del self.idx
del self.mission_value
del self.target_value
del self.desc
del self.button
del self.missionImg
del self.imgGaugeBack
del self.imgGauge
del self.ToolTipItem
del self.item_list
del self.aff_list
del self.player_val
def InitItem(self):
self.button = ui.RadioButton()
self.button.SetParent(self)
self.button.SetUpVisual(self.ROOT + "mission_bg_normal.tga")
self.button.SetOverVisual(self.ROOT + "mission_bg_over.tga")
self.button.SetDownVisual(self.ROOT + "mission_bg_selected.tga")
self.button.SetEvent(lambda: self.ButtonAction())
self.button.SetPosition(0, 0)
self.button.Show()
# self.RegisterComponent(self.button)
self.missionText = ui.TextLine()
self.missionText.SetParent(self.button)
self.missionText.SetPosition(45, 5)
self.missionText.SetText(self.desc)
self.missionText.Show()
# self.RegisterComponent(self.missionText)
self.imgGaugeBack = ui.ImageBox()
self.imgGaugeBack.SetParent(self.button)
self.imgGaugeBack.LoadImage(self.ROOT + "mission_progress_empty.tga")
self.imgGaugeBack.SetPosition(45, 25)
self.imgGaugeBack.Show()
# self.RegisterComponent(self.imgGaugeBack)
self.imgGauge = ui.AniImageBox()
self.imgGauge.SetParent(self.imgGaugeBack)
self.imgGauge.AppendImage(self.ROOT + "mission_progress_middle.tga")
self.imgGauge.SetPosition(7, 2)
self.UpdatePlayerValue()
# self.imgGauge.SetPercentage(0,100)
self.imgGauge.Show()
# self.RegisterComponent(self.imgGauge)
self.missionImg = ui.ImageBox()
self.missionImg.SetParent(self)
self.missionImg.LoadImage(self.ROOT + "mission_1_small.tga")
self.missionImg.SetPosition(3, 1)
self.missionImg.Show()
# self.RegisterComponent(self.missionImg)
self.rewardSlot = ui.GridSlotWindow()
self.rewardSlot.SetParent(self)
self.rewardSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
self.rewardSlot.ArrangeSlot(0, 3, 1, 32, 32, 0, 0)
self.rewardSlot.SetOverInItemEvent(ui.__mem_func__(self.OnOverInItem))
self.rewardSlot.SetOverOutItemEvent(ui.__mem_func__(self.OnOverOutItem))
self.rewardSlot.SetPosition(self.WIDTH - 102, 6)
self.rewardSlot.Show()
# self.RegisterComponent(self.rewardSlot)
def LoadItemRewards(self):
for idx,elm in enumerate(self.item_list):
if idx > 2: break
self.rewardSlot.SetItemSlot(idx, int(elm[0]), int(elm[1]))
self.rewardSlot.RefreshSlot()
def UpdatePlayerValue(self, val = 0):
if val > 0:
self.player_val = long(val)
try:
perc = (float(self.player_val) / float(self.mission_value)) * 100
perc = min(100, perc)
except ZeroDivisionError:
perc = 0
self.imgGauge.SetPercentage(perc, 100)
def OnOverInItem(self, slotIndex):
if self.ToolTipItem:
vnum = int(self.item_list[slotIndex][0])
self.ToolTipItem.SetItemToolTip(vnum)
def OnOverOutItem(self):
if self.ToolTipItem:
self.ToolTipItem.HideToolTip()
self.ToolTipItem.ClearToolTip()
def ButtonAction(self):
self.parent.SetUpButtons()
self.button.Down()
self.parent.selectedIndex = self.idx
self.parent.LoadMissionInfos()
def UpButton(self):
self.button.SetUp()
def Close(self):
self.OnOverOutItem()
self.Hide()
Bu da pack/uiscript/newbattlepass.py dosya içeriğim
pack/uiscript/newbattlepass.py:
import localeInfo
import uiScriptLocale
import app
BOARD_WIDTH = 537
BOARD_HEIGHT = 277
PATH = "battlepass/"
window = {
"name": "BattlePassWindow",
"x": 0,
"y": 0,
"style": ("movable", "float",),
"width": BOARD_WIDTH,
"height": BOARD_HEIGHT,
"children":
(
{
"name": "board",
"type": "board",
"style": ("attach",),
"x": 0,
"y": 0,
"width": BOARD_WIDTH,
"height": 320, #ana gui
"children":
(
## Title
{
"name": "TitleBar",
"type": "titlebar",
"style": ("attach",),
"x": 6,
"y": 6,
"width": BOARD_WIDTH - 13,
"color": "yellow",
"children":
(
{"name": "TitleName", "type": "text", "x": BOARD_WIDTH / 2, "y": 3,
"text": "Battle Pass", "text_horizontal_align": "center"},
),
},
## Scroll Border
{
"name": "BorderScroll",
"type": "thinboard_circle",
"x": 295, "y": 75,
"width": 20, "height": BOARD_HEIGHT - 42,
},
## Missions Border
{
"name": "BorderMissions", "type": "thinboard_circle",
"x": 8, "y": 75,
"width": BOARD_HEIGHT + 21, "height": BOARD_HEIGHT - 42,
"children":
(
# Log Container
{
"name": "Log_Container",
"type": "listboxex",
"x": 5,
"y": 5,
"width": 290,
"height": 44 * 5,
"viewcount": 5,
},
),
},
# Main Board Scroll
{
"name": "LogScrollBar",
"type": "scrollbar",
"x": 295+ 13,
"y": 75,
"size": BOARD_HEIGHT - 42,
},
{
"name" : "itembar",
"type" : "image",
"x" : 8,
"y" : 31,
"image" : "d:/ymir work/ui/game/bpknk/basket_button2.png",
},
{
"name": "mission_text_10", "type": "text",
"x":0, "y": 42,
"text": localeInfo.BATTLEPASS_UYARI,
"fontsize": "LARGE",
"color": 0xFFFEE3AE,
"text_horizontal_align" : "center",
"horizontal_align" : "center",
},
## General Info Border
{
"name": "BorderInfoGeneral", "type": "thinboard_circle",
"x": 320, "y": BOARD_HEIGHT - 200, #affect tarafı
"width": 207, "height": BOARD_HEIGHT - 48,
"children":
(
{
"name": "bgImageMission", "type": "image",
"x": 3, "y": 3,
"image": PATH + "mission_big_clean.png",
"children":
(
{
"name": "missionImageTitle", "type": "image",
"x": 0, "y": 0,
"image": PATH + "title_bar_special.tga",
"children":
(
{
"name": "missionTitleText", "type": "text",
"x": 100, "y": 4,
"text": "Bilgiler",
"text_horizontal_align": "center",
"text_color": 0xffffeea6,
},
),
},
{
"name": "mission_image_10", "type": "image",
"x": 0, "y": 22,
"image": PATH + "info_bar_title.tga",
"children":
(
{
"name": "mission_text_10", "type": "text",
"x": 5, "y": 0,
"text": "Durum",
"fontsize": "LARGE",
"color": 0xFFFEE3AE,
# "text_horizontal_align" : "center",
# "horizontal_align" : "center",
},
),
},
{
"name": "mission_text_0", "type": "text",
"x": 5, "y": 42,
"text": "",
},
{
"name": "mission_image_20", "type": "image",
"x": 0, "y": 65,
"image": PATH + "info_bar_title.tga",
"children":
(
{
"name": "mission_text_20", "type": "text",
"x": 5, "y": 0,
"text": "Gorev Bilgileri",
"fontsize": "LARGE",
"color": 0xFFFEE3AE,
# "text_horizontal_align" : "center",
# "horizontal_align" : "center",
},
),
},
{
"name": "mission_text_1", "type": "text",
"x": 5, "y": 85,
"text": "",
},
{
"name": "mission_image_2", "type": "image",
"x": 0, "y": 101,
"image": PATH + "info_bar_even.tga",
"children":
(
{
"name": "mission_text_2", "type": "text",
"x": 5, "y": 2,
"text": "",
},
),
},
{
"name": "mission_text_3", "type": "text",
"x": 5, "y": 124,
"text": "",
},
{
"name": "mission_image_30", "type": "image",
"x": 0, "y": 149,
"image": PATH + "info_bar_title.tga",
"children":
(
{
"name": "mission_text_30", "type": "text",
"x": 5, "y": 0,
"text": "Affect Bilgileri",
"fontsize": "LARGE",
"color": 0xFFFEE3AE,
# "text_horizontal_align" : "center",
# "horizontal_align" : "center",
},
),
},
{
"name": "mission_text_4", "type": "text",
"x": 5, "y": 169,
"text": "",
},
{
"name": "mission_image_5", "type": "image",
"x": 0, "y": 185,
"image": PATH + "info_bar_even.tga",
"children":
(
{
"name": "mission_text_5", "type": "text",
"x": 5, "y": 2,
"text": "",
},
),
},
{
"name": "mission_text_6", "type": "text",
"x": 5, "y": 205,
"text": "",
},
),
},
),
},
# loading image
{
"name": "RefreshSymbol",
"type": "ani_image",
"x": 0, "y": 0,
"horizontal_align": "center",
"vertical_align": "center",
"images": (
PATH + "loading/loading_image0.dds",
PATH + "loading/loading_image1.dds",
PATH + "loading/loading_image2.dds",
PATH + "loading/loading_image3.dds",
PATH + "loading/loading_image4.dds",
PATH + "loading/loading_image5.dds",
PATH + "loading/loading_image6.dds",
PATH + "loading/loading_image7.dds",
),
},
),
},
),
}