Efsun Botu Kasma Sorunu Fixi

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 38

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
  1. <li data-xf-list-type="ol">
    Aslında çözüm çok basit ilerleyeceğiniz yolları sırasıyla anlatacağım;
    1. <li data-xf-list-type="ol">Yeşil efsun nesnesinin srcde dizini bulunur. ( char_item.cpp'de attr_change de bunu bılmeyen yoktur ) <li data-xf-list-type="ol">Yeşil efsun sınırlaması kaldırılır. ( Forumda örnek konu var ) <li data-xf-list-type="ol">Yeşil efsun iconu değiştirilir. ( Locale.epk'den ) <li data-xf-list-type="ol">F5 veya başka şekilde açılan pyc uzantılı dosya roottan silinir. <li data-xf-list-type="ol">Silinen dosya yerine yeni bir py dosyası oluşturulur. ( adı start verdirecek gibi olsun ) <li data-xf-list-type="ol">Aşağıda vereceğim kodlar oraya yapıştılır. <li data-xf-list-type="ol">Vereceğim kodların içinden 71084 aratılır ve oyununuzdaki yeşil efsun koduyla değiştirilir.
    Evet artık efsun atarken kasma sorununuz gibi bir derdiniz kalmadı üstelik verdiğim açık efsun bot python dosyası ilede hem oyununuzda hızlı efsun atıp hemde efsun kaçırma sorunu olmayacak.
    Bu sorunun asıl kaynağı client sourcedir bunu belirtiyim fakat genelde higlight sisteminden yapıyor fakat başka sistemlerden de yapabiliyor o yuzden sadece higlight çözümünü versem kesin sonuç olmayabilir tamamen kendi yapımımdır modlardan bir haber beklıyorum eğer modlarda yardımcı olursa 1-99 denenmiş sorunsuz emek serverde en geç yarın forumda.
    Herşey gönlünüzce olması dileğiyle.
    İyi forumlar.
    Kod:
    import ui import player import item import chat import net import shop import uiRefine import dbg import game import app TabNumber = 0 class NewM2Bot(ui.ScriptWindow): Gui = [*] BoniGui = [*] BoniGui2 = [*] BoniGui3 = [*] BoniGui4 = [*] BoniGui5 = [*] Delay = 0 BonusIDListe = [['Seçilmedi', 0], ['Max HP.', 1], ['Max SP.', 2], ['Canlılık', 3], ['Zeka', 4], ['Güç', 5], ['Çeviklik', 6], ['Saldırı Hızı', 7], ['Hareket Hızı', 8], ['Büyü Hızı', 9], ['Hp Üretimi', 10], ['SP Üretimi', 11], ['Zehirleme Değişimi', 12], ['Sersemletme Şansı', 13], ['Yavaşlatma Şansı', 14], ['Kritik Vuruş', 15], ['Delici Vuruş', 16], ['Yarı İnsanlara Karşı Güçlü', 17], ['Hayvanlara Karşı Güçlü', 18], ['Orklara Karşı Güçlü', 19], ['Mistiklere Karşı Güçlü', 20], ['\xd6lümsüzlere Karşı Güçlü', 21], ['Şeytanlara Karşı Güçlü', 22], ['HP Absorbe', 23], ['SP Absorbe', 24], ['SP Çalma Şansı', 25], ['SP Geri Kazanma', 26], ['Beden K. Atakların Blok.', 27], ['Oklardan Korunma Şansı', 28], ['Kılıç Savunması', 29], ['Çift El Savunması', 30], ['Bıçak Savunması', 31], ['Çan Savunması', 32], ['Yelpaze Savunması', 33], ['Ok K. Dayanıklılık', 34], ['Ateşe Karşı Dayanıklılık', 35], ['Şimşeğe Karşı Dayanıklılık', 36], ['Büyüye K. Dayanıklılık', 37], ['Rüzgara K. Dayanıklılık', 38], ['Vücut D. Yansıtması', 39], ['Lanet Yansıtması', 40], ['Zehre Karşı Koyma', 41], ['Sp Yükleme Değişimi', 42], ['Exp-Bonus', 43], ['İki Kat Yang', 44], ['İki Kat İtem', 45], ['İksir Etkisi Yükseltme', 46], ['HP Yükleme Değişimi', 47], ['Sersemlik K. Bağışıklılık', 48], ['Yavaşlama K. Bağışıklılık', 49], ['Yere Düşmeye K. Bağış.', 50], ['APPLY_SKILL', 51], ['Yay Menzili', 52], ['Saldırı Değeri', 53], ['Savunma', 54], ['Büyülü Saldırı Değeri', 55], ['Büyü Savunması', 56], ['Max. Dayanıklılık', 58], ['Savaşçıya K. Güçlü', 59], ['Ninjaya K. Güçlü', 60], ['Suraya K. Güçlü', 61], ['Şamana K. Güçlü', 62], ['Canavarlara K. Güçlü', 63], ['\xd6zel Saldırı Değeri', 64], ['\xd6zel Savunma', 65], ['\xd6zel Exp-Bonus', 66], ['\xd6zel Item-Bonus', 67], ['\xd6zel Yang-Bonus', 68], ['Max HP %', 69], ['Max SP %', 70], ['Beceri Hasarı', 71], ['Ortalama Hasar', 72], ['Beceriye K. Dayan.', 73], ['Ortalamaya K. Dayan.', 74], ['iCafe EXP-Bonus', 76], ['iCafe Item-Bonus', 77], ['Savaşçı Savunması', 78], ['Ninja Savunması', 79], ['Sura Savunması', 80], ['Şaman Savunması', 81]] State = 'Stop' State2 = 'Stop' State3 = 'Stop' State4 = 'Stop' State5 = 'Stop' SearchBoni = [*] SearchBoniValues = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] SearchBoni2 = [*] SearchBoniValues2 = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] SearchBoni3 = [*] SearchBoniValues3 = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] SearchBoni4 = [*] SearchBoniValues4 = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] SearchBoni5 = [*] SearchBoniValues5 = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] Values = [*] Boni = [*] Count = 0 Slot = 0 Startmode = 0 Values2 = [*] Boni2 = [*] Count2 = 0 Slot2 = 0 Startmode2 = 0 Values3 = [*] Boni3 = [*] Count3 = 0 Slot3 = 0 Startmode3 = 0 Values4 = [*] Boni4 = [*] Count4 = 0 Slot4 = 0 Startmode4 = 0 Values5 = [*] Boni5 = [*] Count5 = 0 Slot5 = 0 Startmode5 = 0 LastProcessTimeStamp = 0 SlotStack = [0, 0] SwitchValue = 71084 LastProcessTimeStamp2 = 0 SlotStack2 = [0, 0] LastProcessTimeStamp3 = 0 SlotStack3 = [0, 0] LastProcessTimeStamp4 = 0 SlotStack4 = [0, 0] LastProcessTimeStamp5 = 0 SlotStack5 = [0, 0] def __init__(self): self.Gui = [*] ui.ScriptWindow.__init__(self) self.AddGui() def __del__(self): self.Gui[0].Hide() ui.ScriptWindow.__del__(self) def AddGui(self): global TabNumber Gui = [[[ui.ThinBoard, ''], [500, 330], [0, 0], [['SetCenterPosition', ['']]], ['movable', 'float']], [[ui.Button, 0], [0, 0], [475, 15], [['SetUpVisual', ['d:/ymir work/ui/public/close_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/close_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/close_button_03.sub']], ['SetToolTipText', ['Kapat', 0, -23]], ['SetEvent', [lambda : self.__del__()]]], [*]], [[ui.SlotBar, 0], [465, 230], [15, 80], [*], [*]], [[ui.TextLine, 0], [0, 0], [20, 20], [['SetText', ['Yeni Nesil Efsun Botu By Tilki Project\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00']], ['SetFontColor', [0.4, 0.8, 0.1]]], [*]], [[ui.Line, 0], [435, 0], [30, 260], [['SetColor', [4286019447L]]], [*]], [[ui.Button, 0], [0, 0], [240, 160], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Sıfırla']], ['SetEvent', [lambda : self.DeleteAll(TabNumber)]]], [*]], [[ui.Button, 0], [0, 0], [159, 280], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Başlat']], ['SetEvent', [lambda : self.ChangeState('Start')]]], [*]], [[ui.Button, 0], [0, 0], [252, 280], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Durdur']], ['SetEvent', [lambda : self.ChangeState('Stop')]]], [*]]] GuiParser(Gui, self.Gui) self.Gui[6].Hide() self.Gui[7].Hide() self.Gui[5].Hide() tmp = [*] x = 20 for i in xrange(5): button = [[ui.Button, 0], [0, 0], [x, 50], [['SetUpVisual', ['d:/ymir work/ui/public/Middle_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Middle_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Middle_button_03.sub']], ['SetText', ['Sekme ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectTab(Index)]]], [*]] tmp.append(button) x += 65 y = 100 texty = 200 for i in xrange(3): button = [[ui.Button, 0], [0, 0], [40, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [140, y], [*], [*]] editline = [[ui.EditLine, 14 + i * 4], [35, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [45, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3, 5): button = [[ui.Button, 0], [0, 0], [240, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [340, y], [*], [*]] editline = [[ui.EditLine, 26 + (i - 3) * 4], [235, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [245, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3): button = [[ui.Button, 0], [0, 0], [40, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus2(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [140, y], [*], [*]] editline = [[ui.EditLine, 34 + i * 4], [35, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [45, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3, 5): button = [[ui.Button, 0], [0, 0], [240, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus2(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [340, y], [*], [*]] editline = [[ui.EditLine, 46 + (i - 3) * 4], [235, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [245, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3): button = [[ui.Button, 0], [0, 0], [40, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus3(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [140, y], [*], [*]] editline = [[ui.EditLine, 54 + i * 4], [35, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [45, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3, 5): button = [[ui.Button, 0], [0, 0], [240, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus3(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [340, y], [*], [*]] editline = [[ui.EditLine, 66 + (i - 3) * 4], [235, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [245, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3): button = [[ui.Button, 0], [0, 0], [40, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus4(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [140, y], [*], [*]] editline = [[ui.EditLine, 74 + i * 4], [35, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [45, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3, 5): button = [[ui.Button, 0], [0, 0], [240, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus4(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [340, y], [*], [*]] editline = [[ui.EditLine, 86 + (i - 3) * 4], [235, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [245, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3): button = [[ui.Button, 0], [0, 0], [40, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus5(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [140, y], [*], [*]] editline = [[ui.EditLine, 94 + i * 4], [35, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [45, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 y = 100 texty = 200 for i in xrange(3, 5): button = [[ui.Button, 0], [0, 0], [240, y], [['SetUpVisual', ['d:/ymir work/ui/public/Large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Large_button_03.sub']], ['SetText', ['Efsun ' + str(i + 1)]], ['SetEvent', [lambda Index = i: self.SelectBonus5(Index)]]], [*]] slotbar = [[ui.SlotBar, 0], [35, 18], [340, y], [*], [*]] editline = [[ui.EditLine, 106 + (i - 3) * 4], [235, 17], [6, 2], [['SetMax', [4]], ['SetNumberMode', ['']], ['SetText', ['0']]], [*]] textline = [[ui.TextLine, 0], [0, 0], [245, texty], [['SetText', ['Seçilmedi']]], [*]] tmp.append(button) tmp.append(slotbar) tmp.append(textline) tmp.append(editline) y += 30 texty += 20 GuiParser(tmp, self.Gui) for i in xrange(33, 113): self.Gui[int(i)].Hide() self.StartOrStop(0) def StartOrStop(self, Index): tmpstarter = [[[ui.Button, 0], [0, 0], [159, 280], [['SetUpVisual', ['d:/ymir work/ui/public/Middle_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Middle_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Middle_button_03.sub']], ['SetText', ['Başlat']], ['SetEvent', [lambda : self.WhichOneWillStart(Index)]]], [*]], [[ui.Button, 0], [0, 0], [252, 280], [['SetUpVisual', ['d:/ymir work/ui/public/Middle_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/Middle_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/Middle_button_03.sub']], ['SetText', ['Durdur']], ['SetEvent', [lambda : self.WhichOneWillStop(Index)]]], [*]]] GuiParser(tmpstarter, self.Gui) def SelectTab(self, Index): global TabNumber TabNumber = Index self.StartOrStop(Index) if Index == 0: for iy in xrange(33, 113): self.Gui[int(iy)].Hide() for iy in xrange(12, 33): self.Gui[int(iy)].Show() elif Index == 1: for iy in xrange(13, 113): self.Gui[int(iy)].Hide() for iy in xrange(33, 53): self.Gui[int(iy)].Show() elif Index == 2: for iy in xrange(13, 113): self.Gui[int(iy)].Hide() for iy in xrange(53, 73): self.Gui[int(iy)].Show() elif Index == 3: for iy in xrange(13, 113): self.Gui[int(iy)].Hide() for iy in xrange(73, 93): self.Gui[int(iy)].Show() elif Index == 4: for iy in xrange(13, 113): self.Gui[int(iy)].Hide() for iy in xrange(93, 113): self.Gui[int(iy)].Show() def WhichOneWillStart(self, Index): if Index == 0: self.ChangeState('Start') chat.AppendChat(1, str(int(Index + 1)) + '. bot başlayacak.') elif Index == 1: self.ChangeState2('Start') chat.AppendChat(1, str(int(Index + 1)) + '. bot başlayacak.') elif Index == 2: self.ChangeState3('Start') chat.AppendChat(1, str(int(Index + 1)) + '. bot başlayacak.') elif Index == 3: self.ChangeState4('Start') chat.AppendChat(1, str(int(Index + 1)) + '. bot başlayacak.') elif Index == 4: self.ChangeState5('Start') chat.AppendChat(1, str(int(Index + 1)) + '. bot başlayacak.') def WhichOneWillStop(self, Index): if Index == 0: self.ChangeState('Stop') elif Index == 1: self.ChangeState2('Stop') elif Index == 2: self.ChangeState3('Stop') elif Index == 3: self.ChangeState4('Stop') elif Index == 4: self.ChangeState5('Stop') def DeleteAll(self, tabnumber): if tabnumber == 0: del self.SearchBoni[0] def SelectBonus(self, Index): self.BoniGui = [*] Gui = [[[ui.ThinBoard, ''], [223, 323], [0, 0], [['SetCenterPosition', ['']]], ['movable', 'float']], [[ui.Button, 0], [0, 0], [183, 18], [['SetUpVisual', ['d:/ymir work/ui/public/close_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/close_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/close_button_03.sub']], ['SetToolTipText', ['Kapat', 0, -23]], ['SetEvent', [lambda : self.HideBonusList()]]], [*]], [[ui.SlotBar, 0], [190, 227], [15, 35], [*], [*]], [[ui.ListBoxEx, 0], [0, 0], [20, 60], [*], [*]], [[ui.ScrollBar, 0], [0, 0], [185, 50], [['SetScrollBarSize', [200]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 39], [['SetDefaultFontName', ['']], ['SetText', ['ID:\t\t\tBonus:']], ['SetFontColor', [0.2, 0.6, 1.0]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 15], [['SetText', ['Eklenecek Efsun ' + str(Index + 1)]], ['SetFontColor', [0.8, 0.5, 0.1]]], [*]], [[ui.Button, 0], [0, 0], [20, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kabul Et']], ['SetEvent', [lambda index = Index: self.AddBonus(Index)]]], [*]], [[ui.Button, 0], [0, 0], [113, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kapat']], ['SetEvent', [lambda : self.HideBonusList()]]], [*]]] GuiParser(Gui, self.BoniGui) self.BoniGui[3].SetScrollBar(self.BoniGui[4]) self.SetBonusList() def SelectBonus2(self, Index): self.BoniGui2 = [*] Gui = [[[ui.ThinBoard, ''], [223, 323], [0, 0], [['SetCenterPosition', ['']]], ['movable', 'float']], [[ui.Button, 0], [0, 0], [183, 18], [['SetUpVisual', ['d:/ymir work/ui/public/close_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/close_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/close_button_03.sub']], ['SetToolTipText', ['Kapat', 0, -23]], ['SetEvent', [lambda : self.HideBonusList2()]]], [*]], [[ui.SlotBar, 0], [190, 227], [15, 35], [*], [*]], [[ui.ListBoxEx, 0], [0, 0], [20, 60], [*], [*]], [[ui.ScrollBar, 0], [0, 0], [185, 50], [['SetScrollBarSize', [200]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 39], [['SetDefaultFontName', ['']], ['SetText', ['ID:\t\t\tBonus:']], ['SetFontColor', [0.2, 0.6, 1.0]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 15], [['SetText', ['Eklenecek Efsun ' + str(Index + 1)]], ['SetFontColor', [0.8, 0.5, 0.1]]], [*]], [[ui.Button, 0], [0, 0], [20, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kabul Et']], ['SetEvent', [lambda index = Index: self.AddBonus2(Index)]]], [*]], [[ui.Button, 0], [0, 0], [113, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kapat']], ['SetEvent', [lambda : self.HideBonusList2()]]], [*]]] GuiParser(Gui, self.BoniGui2) self.BoniGui2[3].SetScrollBar(self.BoniGui2[4]) self.SetBonusList2() def SelectBonus3(self, Index): self.BoniGui3 = [*] Gui = [[[ui.ThinBoard, ''], [223, 323], [0, 0], [['SetCenterPosition', ['']]], ['movable', 'float']], [[ui.Button, 0], [0, 0], [183, 18], [['SetUpVisual', ['d:/ymir work/ui/public/close_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/close_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/close_button_03.sub']], ['SetToolTipText', ['Kapat', 0, -23]], ['SetEvent', [lambda : self.HideBonusList3()]]], [*]], [[ui.SlotBar, 0], [190, 227], [15, 35], [*], [*]], [[ui.ListBoxEx, 0], [0, 0], [20, 60], [*], [*]], [[ui.ScrollBar, 0], [0, 0], [185, 50], [['SetScrollBarSize', [200]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 39], [['SetDefaultFontName', ['']], ['SetText', ['ID:\t\t\tBonus:']], ['SetFontColor', [0.2, 0.6, 1.0]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 15], [['SetText', ['Eklenecek Efsun ' + str(Index + 1)]], ['SetFontColor', [0.8, 0.5, 0.1]]], [*]], [[ui.Button, 0], [0, 0], [20, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kabul Et']], ['SetEvent', [lambda index = Index: self.AddBonus3(Index)]]], [*]], [[ui.Button, 0], [0, 0], [113, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kapat']], ['SetEvent', [lambda : self.HideBonusList3()]]], [*]]] GuiParser(Gui, self.BoniGui3) self.BoniGui3[3].SetScrollBar(self.BoniGui3[4]) self.SetBonusList3() def SelectBonus4(self, Index): self.BoniGui4 = [*] Gui = [[[ui.ThinBoard, ''], [223, 323], [0, 0], [['SetCenterPosition', ['']]], ['movable', 'float']], [[ui.Button, 0], [0, 0], [183, 18], [['SetUpVisual', ['d:/ymir work/ui/public/close_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/close_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/close_button_03.sub']], ['SetToolTipText', ['Kapat', 0, -23]], ['SetEvent', [lambda : self.HideBonusList4()]]], [*]], [[ui.SlotBar, 0], [190, 227], [15, 35], [*], [*]], [[ui.ListBoxEx, 0], [0, 0], [20, 60], [*], [*]], [[ui.ScrollBar, 0], [0, 0], [185, 50], [['SetScrollBarSize', [200]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 39], [['SetDefaultFontName', ['']], ['SetText', ['ID:\t\t\tBonus:']], ['SetFontColor', [0.2, 0.6, 1.0]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 15], [['SetText', ['Eklenecek Efsun ' + str(Index + 1)]], ['SetFontColor', [0.8, 0.5, 0.1]]], [*]], [[ui.Button, 0], [0, 0], [20, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kabul Et']], ['SetEvent', [lambda index = Index: self.AddBonus4(Index)]]], [*]], [[ui.Button, 0], [0, 0], [113, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kapat']], ['SetEvent', [lambda : self.HideBonusList4()]]], [*]]] GuiParser(Gui, self.BoniGui4) self.BoniGui4[3].SetScrollBar(self.BoniGui4[4]) self.SetBonusList4() def SelectBonus5(self, Index): self.BoniGui5 = [*] Gui = [[[ui.ThinBoard, ''], [223, 323], [0, 0], [['SetCenterPosition', ['']]], ['movable', 'float']], [[ui.Button, 0], [0, 0], [183, 18], [['SetUpVisual', ['d:/ymir work/ui/public/close_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/close_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/close_button_03.sub']], ['SetToolTipText', ['Kapat', 0, -23]], ['SetEvent', [lambda : self.HideBonusList5()]]], [*]], [[ui.SlotBar, 0], [190, 227], [15, 35], [*], [*]], [[ui.ListBoxEx, 0], [0, 0], [20, 60], [*], [*]], [[ui.ScrollBar, 0], [0, 0], [185, 50], [['SetScrollBarSize', [200]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 39], [['SetDefaultFontName', ['']], ['SetText', ['ID:\t\t\tBonus:']], ['SetFontColor', [0.2, 0.6, 1.0]]], [*]], [[ui.TextLine, 0], [0, 0], [20, 15], [['SetText', ['Eklenecek Efsun ' + str(Index + 1)]], ['SetFontColor', [0.8, 0.5, 0.1]]], [*]], [[ui.Button, 0], [0, 0], [20, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kabul Et']], ['SetEvent', [lambda index = Index: self.AddBonus5(Index)]]], [*]], [[ui.Button, 0], [0, 0], [113, 275], [['SetUpVisual', ['d:/ymir work/ui/public/large_button_01.sub']], ['SetOverVisual', ['d:/ymir work/ui/public/large_button_02.sub']], ['SetDownVisual', ['d:/ymir work/ui/public/large_button_03.sub']], ['SetText', ['Kapat']], ['SetEvent', [lambda : self.HideBonusList5()]]], [*]]] GuiParser(Gui, self.BoniGui5) self.BoniGui5[3].SetScrollBar(self.BoniGui5[4]) self.SetBonusList5() def SetBonusList(self): self.BoniGui[3].RemoveAllItems() for Bonus in self.BonusIDListe: self.BoniGui[3].AppendItem(Item(str(Bonus[1]) + '\t\t\t' + Bonus[0])) def SetBonusList2(self): self.BoniGui2[3].RemoveAllItems() for Bonus in self.BonusIDListe: self.BoniGui2[3].AppendItem(Item(str(Bonus[1]) + '\t\t\t' + Bonus[0])) def SetBonusList3(self): self.BoniGui3[3].RemoveAllItems() for Bonus in self.BonusIDListe: self.BoniGui3[3].AppendItem(Item(str(Bonus[1]) + '\t\t\t' + Bonus[0])) def SetBonusList4(self): self.BoniGui4[3].RemoveAllItems() for Bonus in self.BonusIDListe: self.BoniGui4[3].AppendItem(Item(str(Bonus[1]) + '\t\t\t' + Bonus[0])) def SetBonusList5(self): self.BoniGui5[3].RemoveAllItems() for Bonus in self.BonusIDListe: self.BoniGui5[3].AppendItem(Item(str(Bonus[1]) + '\t\t\t' + Bonus[0])) def HideBonusList(self): self.BoniGui[0].Hide() def HideBonusList2(self): self.BoniGui2[0].Hide() def HideBonusList3(self): self.BoniGui3[0].Hide() def HideBonusList4(self): self.BoniGui4[0].Hide() def HideBonusList5(self): self.BoniGui5[0].Hide() def AddBonus(self, Index): ItemIndex = self.BoniGui[3].GetSelectedItem() if ItemIndex: pass else: chat.AppendChat(chat.CHAT_TYPE_INFO, 'Hiçbir şey seçilmemiş!') return BonusValue = ItemIndex.GetText().split('\t\t\t') if int(BonusValue[0]) == 0: try: BackUp = self.SearchBoni[Index] if BackUp[1] == 0: self.SearchBoni.remove(self.SearchBoni[Index]) else: self.SearchBoni[Index] = [0, BackUp[1]] except: pass else: try: try: BackUp = self.SearchBoni[Index] self.SearchBoni.remove(self.SearchBoni[Index]) except: Backup = [0, 0] self.SearchBoni.insert(Index, [int(BonusValue[0]), BackUp[1]]) except: self.SearchBoni.append([int(BonusValue[0]), 0]) self.UpdateBonusList() self.HideBonusList() def AddBonus2(self, Index): ItemIndex = self.BoniGui2[3].GetSelectedItem() if ItemIndex: pass else: chat.AppendChat(chat.CHAT_TYPE_INFO, 'Hiçbir şey seçilmemiş!') return BonusValue = ItemIndex.GetText().split('\t\t\t') if int(BonusValue[0]) == 0: try: BackUp2 = self.SearchBoni2[Index] if BackUp2[1] == 0: self.SearchBoni2.remove(self.SearchBoni2[Index]) else: self.SearchBoni2[Index] = [0, BackUp2[1]] except: pass else: try: try: BackUp2 = self.SearchBoni2[Index] self.SearchBoni2.remove(self.SearchBoni2[Index]) except: Backup2 = [0, 0] self.SearchBoni2.insert(Index, [int(BonusValue[0]), BackUp2[1]]) except: self.SearchBoni2.append([int(BonusValue[0]), 0]) self.UpdateBonusList2() self.HideBonusList2() def AddBonus3(self, Index): ItemIndex = self.BoniGui3[3].GetSelectedItem() if ItemIndex: pass else: chat.AppendChat(chat.CHAT_TYPE_INFO, 'Hiçbir şey seçilmemiş!') return BonusValue = ItemIndex.GetText().split('\t\t\t') if int(BonusValue[0]) == 0: try: BackUp3 = self.SearchBoni3[Index] if BackUp3[1] == 0: self.SearchBoni3.remove(self.SearchBoni3[Index]) else: self.SearchBoni3[Index] = [0, BackUp3[1]] except: pass else: try: try: BackUp3 = self.SearchBoni3[Index] self.SearchBoni3.remove(self.SearchBoni3[Index]) except: Backup3 = [0, 0] self.SearchBoni3.insert(Index, [int(BonusValue[0]), BackUp3[1]]) except: self.SearchBoni3.append([int(BonusValue[0]), 0]) self.UpdateBonusList3() self.HideBonusList3() def AddBonus4(self, Index): ItemIndex = self.BoniGui4[3].GetSelectedItem() if ItemIndex: pass else: chat.AppendChat(chat.CHAT_TYPE_INFO, 'Hiçbir şey seçilmemiş!') return BonusValue = ItemIndex.GetText().split('\t\t\t') if int(BonusValue[0]) == 0: try: BackUp4 = self.SearchBoni4[Index] if BackUp4[1] == 0: self.SearchBoni4.remove(self.SearchBoni4[Index]) else: self.SearchBoni4[Index] = [0, BackUp4[1]] except: pass else: try: try: BackUp4 = self.SearchBoni4[Index] self.SearchBoni4.remove(self.SearchBoni4[Index]) except: Backup4 = [0, 0] self.SearchBoni4.insert(Index, [int(BonusValue[0]), BackUp4[1]]) except: self.SearchBoni4.append([int(BonusValue[0]), 0]) self.UpdateBonusList4() self.HideBonusList4() def AddBonus5(self, Index): ItemIndex = self.BoniGui5[3].GetSelectedItem() if ItemIndex: pass else: chat.AppendChat(chat.CHAT_TYPE_INFO, 'Hiçbir şey seçilmemiş!') return BonusValue = ItemIndex.GetText().split('\t\t\t') if int(BonusValue[0]) == 0: try: BackUp5 = self.SearchBoni5[Index] if BackUp5[1] == 0: self.SearchBoni5.remove(self.SearchBoni5[Index]) else: self.SearchBoni5[Index] = [0, BackUp5[1]] except: pass else: try: try: BackUp5 = self.SearchBoni5[Index] self.SearchBoni5.remove(self.SearchBoni5[Index]) except: Backup5 = [0, 0] self.SearchBoni5.insert(Index, [int(BonusValue[0]), BackUp5[1]]) except: self.SearchBoni5.append([int(BonusValue[0]), 0]) self.UpdateBonusList5() self.HideBonusList5() def UpdateBonusList(self): tmp = {} for Bonus in self.BonusIDListe: tmp[Bonus[1]] = Bonus[0] for Index in xrange(5): self.Gui[15 + Index * 4].SetText('Seçilmedi') for Bonus in self.SearchBoni: Index = self.SearchBoni.index(Bonus) self.Gui[15 + Index * 4].SetText(tmp[Bonus[0]]) def UpdateBonusList2(self): tmp = {} for Bonus in self.BonusIDListe: tmp[Bonus[1]] = Bonus[0] for Index in xrange(5): self.Gui[35 + Index * 4].SetText('Seçilmedi') for Bonus in self.SearchBoni2: Index = self.SearchBoni2.index(Bonus) self.Gui[35 + Index * 4].SetText(tmp[Bonus[0]]) def UpdateBonusList3(self): tmp = {} for Bonus in self.BonusIDListe: tmp[Bonus[1]] = Bonus[0] for Index in xrange(5): self.Gui[55 + Index * 4].SetText('Seçilmedi') for Bonus in self.SearchBoni3: Index = self.SearchBoni3.index(Bonus) self.Gui[55 + Index * 4].SetText(tmp[Bonus[0]]) def UpdateBonusList4(self): tmp = {} for Bonus in self.BonusIDListe: tmp[Bonus[1]] = Bonus[0] for Index in xrange(5): self.Gui[75 + Index * 4].SetText('Seçilmedi') for Bonus in self.SearchBoni4: Index = self.SearchBoni4.index(Bonus) self.Gui[75 + Index * 4].SetText(tmp[Bonus[0]]) def UpdateBonusList5(self): tmp = {} for Bonus in self.BonusIDListe: tmp[Bonus[1]] = Bonus[0] for Index in xrange(5): self.Gui[95 + Index * 4].SetText('Seçilmedi') for Bonus in self.SearchBoni5: Index = self.SearchBoni5.index(Bonus) self.Gui[95 + Index * 4].SetText(tmp[Bonus[0]]) def OnUpdate(self): self.UpdateBonusValues() self.UpdateBoni() self.UpdateBonusValues2() self.UpdateBoni2() self.UpdateBonusValues3() self.UpdateBoni3() self.UpdateBonusValues4() self.UpdateBoni4() self.UpdateBonusValues5() self.UpdateBoni5() def UpdateBonusValues(self): TmpValues = [*] for Index in xrange(5): try: SearchValue = int(self.Gui[16 + Index * 4].GetText()) except: SearchValue = 0 TmpValues.append([SearchValue, 0]) if TmpValues != self.SearchBoniValues: self.SearchBoniValues = TmpValues def UpdateBonusValues2(self): TmpValues2 = [*] for Index in xrange(5): try: SearchValue = int(self.Gui[36 + Index * 4].GetText()) except: SearchValue = 0 TmpValues2.append([SearchValue, 0]) if TmpValues2 != self.SearchBoniValues2: self.SearchBoniValues2 = TmpValues2 def UpdateBonusValues3(self): TmpValues3 = [*] for Index in xrange(5): try: SearchValue = int(self.Gui[56 + Index * 4].GetText()) except: SearchValue = 0 TmpValues3.append([SearchValue, 0]) if TmpValues3 != self.SearchBoniValues3: self.SearchBoniValues3 = TmpValues3 def UpdateBonusValues4(self): TmpValues4 = [*] for Index in xrange(5): try: SearchValue = int(self.Gui[76 + Index * 4].GetText()) except: SearchValue = 0 TmpValues4.append([SearchValue, 0]) if TmpValues4 != self.SearchBoniValues4: self.SearchBoniValues4 = TmpValues4 def UpdateBonusValues5(self): TmpValues5 = [*] for Index in xrange(5): try: SearchValue = int(self.Gui[96 + Index * 4].GetText()) except: SearchValue = 0 TmpValues5.append([SearchValue, 0]) if TmpValues5 != self.SearchBoniValues5: self.SearchBoniValues5 = TmpValues5 def UpdateBoni(self): if self.State == 'Stop': return Values = [*] Boni = [*] Count = 0 for AttributeIndex in xrange(self.Count): Bonus, Value = player.GetItemAttribute(self.Slot, AttributeIndex) if Bonus == 0: return Count += 1 Values.append(Value) Boni.append(Bonus) if player.GetItemCount(self.SlotStack[0]) &lt;= 0 and (self.Boni != Boni or self.Values != Values) or self.Boni != Boni or self.Values != Values or app.GetTime() &gt;= self.LastProcessTimeStamp + 0.8: self.LastProcessTimeStamp = app.GetTime() self.Boni = Boni self.Values = Values self.ControllBoni(Boni, Values) def UpdateBoni2(self): if self.State2 == 'Stop': return Values2 = [*] Boni2 = [*] Count2 = 0 for AttributeIndex in xrange(self.Count2): Bonus2, Value2 = player.GetItemAttribute(self.Slot2, AttributeIndex) if Bonus2 == 0: return Count2 += 1 Values2.append(Value2) Boni2.append(Bonus2) if player.GetItemCount(self.SlotStack2[0]) &lt;= 0 and (self.Boni2 != Boni2 or self.Values2 != Values2) or self.Boni2 != Boni2 or self.Values2 != Values2 or app.GetTime() &gt;= self.LastProcessTimeStamp2 + 0.8: self.LastProcessTimeStamp2 = app.GetTime() self.Boni2 = Boni2 self.Values2 = Values2 self.ControllBoni2(Boni2, Values2) def UpdateBoni3(self): if self.State3 == 'Stop': return Values3 = [*] Boni3 = [*] Count3 = 0 for AttributeIndex in xrange(self.Count3): Bonus3, Value3 = player.GetItemAttribute(self.Slot3, AttributeIndex) if Bonus3 == 0: return Count3 += 1 Values3.append(Value3) Boni3.append(Bonus3) if player.GetItemCount(self.SlotStack3[0]) &lt;= 0 and (self.Boni3 != Boni3 or self.Values3 != Values3) or self.Boni3 != Boni3 or self.Values3 != Values3 or app.GetTime() &gt;= self.LastProcessTimeStamp3 + 0.8: self.LastProcessTimeStamp3 = app.GetTime() self.Boni3 = Boni3 self.Values3 = Values3 self.ControllBoni3(Boni3, Values3) def UpdateBoni4(self): if self.State4 == 'Stop': return Values4 = [*] Boni4 = [*] Count4 = 0 for AttributeIndex in xrange(self.Count4): Bonus4, Value4 = player.GetItemAttribute(self.Slot4, AttributeIndex) if Bonus4 == 0: return Count4 += 1 Values4.append(Value4) Boni4.append(Bonus4) if player.GetItemCount(self.SlotStack4[0]) &lt;= 0 and (self.Boni4 != Boni4 or self.Values4 != Values4) or self.Boni4 != Boni4 or self.Values4 != Values4 or app.GetTime() &gt;= self.LastProcessTimeStamp4 + 0.8: self.LastProcessTimeStamp4 = app.GetTime() self.Boni4 = Boni4 self.Values4 = Values4 self.ControllBoni4(Boni4, Values4) def UpdateBoni5(self): if self.State5 == 'Stop': return Values5 = [*] Boni5 = [*] Count5 = 0 for AttributeIndex in xrange(self.Count5): Bonus5, Value5 = player.GetItemAttribute(self.Slot5, AttributeIndex) if Bonus5 == 0: return Count5 += 1 Values5.append(Value5) Boni5.append(Bonus5) if player.GetItemCount(self.SlotStack5[0]) &lt;= 0 and (self.Boni5 != Boni5 or self.Values5 != Values5) or self.Boni5 != Boni5 or self.Values5 != Values5 or app.GetTime() &gt;= self.LastProcessTimeStamp5 + 0.8: self.LastProcessTimeStamp5 = app.GetTime() self.Boni5 = Boni5 self.Values5 = Values5 self.ControllBoni5(Boni5, Values5) def ControllBoni(self, Boni, Values): try: for i in xrange(len(self.SearchBoni)): try: Index = Boni.index(self.SearchBoni[i][0]) if Values[Index] &lt; self.SearchBoniValues[i][0]: Boni.index('-1') except: Index = Boni.index(self.SearchBoni[i][1]) if Values[Index] &lt; self.SearchBoniValues[i][1]: Boni.index('-1') self.State = 'Stop' chat.AppendChat(1, 'Efsun Sayısı: ' + str(self.Count)) chat.AppendChat(1, 'Efsunlar: ' + str(Boni)) chat.AppendChat(1, 'Efsun Değerleri: ' + str(Values)) except: if player.GetItemCountByVnum(self.SwitchValue) &lt;= 0: if shop.IsOpen(): for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT): ShopItemValue = shop.GetItemID(EachShopSlot) if ShopItemValue == int(self.SwitchValue): net.SendShopBuyPacket(EachShopSlot) else: chat.AppendChat(1, 'Efsun Değiştirme nesnesi kalmadı.') self.State = 'Stop' return for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): ItemValue = player.GetItemIndex(Slot) if ItemValue == self.SwitchValue: if self.State == 'Stop': return self.SlotStack = [Slot, player.GetItemCount(Slot)] net.SendItemUseToItemPacket(Slot, self.Slot) break def ControllBoni2(self, Boni, Values): try: for i in xrange(len(self.SearchBoni2)): try: Index = Boni.index(self.SearchBoni2[i][0]) if Values[Index] &lt; self.SearchBoniValues2[i][0]: Boni.index('-1') except: Index = Boni.index(self.SearchBoni2[i][1]) if Values[Index] &lt; self.SearchBoniValues2[i][1]: Boni.index('-1') self.State2 = 'Stop' chat.AppendChat(1, 'Efsun Sayısı: ' + str(self.Count2)) chat.AppendChat(1, 'Efsunlar: ' + str(Boni)) chat.AppendChat(1, 'Efsun Değerleri: ' + str(Values)) except: if player.GetItemCountByVnum(self.SwitchValue) &lt;= 0: if shop.IsOpen(): for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT): ShopItemValue = shop.GetItemID(EachShopSlot) if ShopItemValue == int(self.SwitchValue): net.SendShopBuyPacket(EachShopSlot) else: chat.AppendChat(1, 'Efsun Değiştirme nesnesi kalmadı.') self.State2 = 'Stop' return for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): ItemValue = player.GetItemIndex(Slot) if ItemValue == self.SwitchValue: if self.State2 == 'Stop': return self.SlotStack2 = [Slot, player.GetItemCount(Slot)] net.SendItemUseToItemPacket(Slot, self.Slot2) break def ControllBoni3(self, Boni, Values): try: for i in xrange(len(self.SearchBoni3)): try: Index = Boni.index(self.SearchBoni3[i][0]) if Values[Index] &lt; self.SearchBoniValues3[i][0]: Boni.index('-1') except: Index = Boni.index(self.SearchBoni3[i][1]) if Values[Index] &lt; self.SearchBoniValues3[i][1]: Boni.index('-1') self.State3 = 'Stop' chat.AppendChat(1, 'Efsun Sayısı: ' + str(self.Count3)) chat.AppendChat(1, 'Efsunlar: ' + str(Boni)) chat.AppendChat(1, 'Efsun Değerleri: ' + str(Values)) except: if player.GetItemCountByVnum(self.SwitchValue) &lt;= 0: if shop.IsOpen(): for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT): ShopItemValue = shop.GetItemID(EachShopSlot) if ShopItemValue == int(self.SwitchValue): net.SendShopBuyPacket(EachShopSlot) else: chat.AppendChat(1, 'Efsun Değiştirme nesnesi kalmadı.') self.State3 = 'Stop' return for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): ItemValue = player.GetItemIndex(Slot) if ItemValue == self.SwitchValue: if self.State3 == 'Stop': return self.SlotStack3 = [Slot, player.GetItemCount(Slot)] net.SendItemUseToItemPacket(Slot, self.Slot3) break def ControllBoni4(self, Boni, Values): try: for i in xrange(len(self.SearchBoni4)): try: Index = Boni.index(self.SearchBoni4[i][0]) if Values[Index] &lt; self.SearchBoniValues4[i][0]: Boni.index('-1') except: Index = Boni.index(self.SearchBoni4[i][1]) if Values[Index] &lt; self.SearchBoniValues4[i][1]: Boni.index('-1') self.State4 = 'Stop' chat.AppendChat(1, 'Efsun Sayısı: ' + str(self.Count4)) chat.AppendChat(1, 'Efsunlar: ' + str(Boni)) chat.AppendChat(1, 'Efsun Değerleri: ' + str(Values)) except: if player.GetItemCountByVnum(self.SwitchValue) &lt;= 0: if shop.IsOpen(): for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT): ShopItemValue = shop.GetItemID(EachShopSlot) if ShopItemValue == int(self.SwitchValue): net.SendShopBuyPacket(EachShopSlot) else: chat.AppendChat(1, 'Efsun Değiştirme nesnesi kalmadı.') self.State4 = 'Stop' return for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): ItemValue = player.GetItemIndex(Slot) if ItemValue == self.SwitchValue: if self.State4 == 'Stop': return self.SlotStack4 = [Slot, player.GetItemCount(Slot)] net.SendItemUseToItemPacket(Slot, self.Slot4) break def ControllBoni5(self, Boni, Values): try: for i in xrange(len(self.SearchBoni5)): try: Index = Boni.index(self.SearchBoni5[i][0]) if Values[Index] &lt; self.SearchBoniValues5[i][0]: Boni.index('-1') except: Index = Boni.index(self.SearchBoni5[i][1]) if Values[Index] &lt; self.SearchBoniValues5[i][1]: Boni.index('-1') self.State5 = 'Stop' chat.AppendChat(1, 'Efsun Sayısı: ' + str(self.Count5)) chat.AppendChat(1, 'Efsunlar: ' + str(Boni)) chat.AppendChat(1, 'Efsun Değerleri: ' + str(Values)) except: if player.GetItemCountByVnum(self.SwitchValue) &lt;= 0: if shop.IsOpen(): for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT): ShopItemValue = shop.GetItemID(EachShopSlot) if ShopItemValue == int(self.SwitchValue): net.SendShopBuyPacket(EachShopSlot) else: chat.AppendChat(1, 'Efsun Değiştirme nesnesi kalmadı.') self.State5 = 'Stop' return for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): ItemValue = player.GetItemIndex(Slot) if ItemValue == self.SwitchValue: if self.State5 == 'Stop': return self.SlotStack5 = [Slot, player.GetItemCount(Slot)] net.SendItemUseToItemPacket(Slot, self.Slot5) break def DefineBoni(self): self.Values = [*] self.Boni = [*] self.Count = 0 for AttributeIndex in xrange(5): Bonus, Value = player.GetItemAttribute(self.Slot, AttributeIndex) if Bonus != 0: self.Count += 1 self.Boni.append(Bonus) self.Values.append(Value) self.ControllBoni(self.Boni, self.Values) def DefineBoni2(self): self.Values2 = [*] self.Boni2 = [*] self.Count2 = 0 for AttributeIndex in xrange(5): Bonus2, Value2 = player.GetItemAttribute(self.Slot2, AttributeIndex) if Bonus2 != 0: self.Count2 += 1 self.Boni2.append(Bonus2) self.Values2.append(Value2) self.ControllBoni2(self.Boni2, self.Values2) def DefineBoni3(self): self.Values3 = [*] self.Boni3 = [*] self.Count3 = 0 for AttributeIndex in xrange(5): Bonus3, Value3 = player.GetItemAttribute(self.Slot3, AttributeIndex) if Bonus3 != 0: self.Count3 += 1 self.Boni3.append(Bonus3) self.Values3.append(Value3) self.ControllBoni3(self.Boni3, self.Values3) def DefineBoni4(self): self.Values4 = [*] self.Boni4 = [*] self.Count4 = 0 for AttributeIndex in xrange(5): Bonus4, Value4 = player.GetItemAttribute(self.Slot4, AttributeIndex) if Bonus4 != 0: self.Count4 += 1 self.Boni4.append(Bonus4) self.Values4.append(Value4) self.ControllBoni4(self.Boni4, self.Values4) def DefineBoni5(self): self.Values5 = [*] self.Boni5 = [*] self.Count5 = 0 for AttributeIndex in xrange(5): Bonus5, Value5 = player.GetItemAttribute(self.Slot5, AttributeIndex) if Bonus5 != 0: self.Count5 += 1 self.Boni5.append(Bonus5) self.Values5.append(Value5) self.ControllBoni5(self.Boni5, self.Values5) def ChangeState(self, state): if state == 'Start': if self.SearchBoni == [*]: chat.AppendChat(1, 'Lütfen bir efsun seçin.') self.Slot = 0 self.Startmode = 1 for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): itemVNum = player.GetItemIndex(Slot) if itemVNum == self.SwitchValue: self.SlotStack = [Slot, player.GetItemCount(Slot)] break self.DefineBoni() self.State = 'Start' else: self.State = 'Stop' chat.AppendChat(1, 'Bot durdu.') def ChangeState2(self, state): if state == 'Start': if self.SearchBoni2 == [*]: chat.AppendChat(1, 'Lütfen bir efsun seçin.') self.Slot2 = 1 self.Startmode2 = 1 for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): itemVNum = player.GetItemIndex(Slot) if itemVNum == self.SwitchValue: self.SlotStack2 = [Slot, player.GetItemCount(Slot)] break self.DefineBoni2() self.State2 = 'Start' else: self.State2 = 'Stop' chat.AppendChat(1, 'Bot durdu.') def ChangeState3(self, state): if state == 'Start': if self.SearchBoni3 == [*]: chat.AppendChat(1, 'Lütfen bir efsun seçin.') self.Slot3 = 2 self.Startmode3 = 1 for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): itemVNum = player.GetItemIndex(Slot) if itemVNum == self.SwitchValue: self.SlotStack3 = [Slot, player.GetItemCount(Slot)] break self.DefineBoni3() self.State3 = 'Start' else: self.State3 = 'Stop' chat.AppendChat(1, 'Bot durdu.') def ChangeState4(self, state): if state == 'Start': if self.SearchBoni4 == [*]: chat.AppendChat(1, 'Lütfen bir efsun seçin.') self.Slot4 = 3 self.Startmode1 = 1 for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): itemVNum = player.GetItemIndex(Slot) if itemVNum == self.SwitchValue: self.SlotStack4 = [Slot, player.GetItemCount(Slot)] break self.DefineBoni4() self.State4 = 'Start' else: self.State4 = 'Stop' chat.AppendChat(1, 'Bot durdu.') def ChangeState5(self, state): if state == 'Start': if self.SearchBoni5 == [*]: chat.AppendChat(1, 'Lütfen bir efsun seçin.') self.Slot5 = 4 self.Startmode5 = 1 for Slot in xrange(player.INVENTORY_PAGE_SIZE * 2): itemVNum = player.GetItemIndex(Slot) if itemVNum == self.SwitchValue: self.SlotStack5 = [Slot, player.GetItemCount(Slot)] break self.DefineBoni5() self.State5 = 'Start' else: self.State5 = 'Stop' chat.AppendChat(1, 'Bot durdu.') def GuiParser(guiobjects, list): for object in guiobjects: Object = object[0][0]() if object[0][1] != '': Object.SetParent(list[object[0][1]]) if object[1][0] + object[1][1] != 0: Object.SetSize(object[1][0], object[1][1]) if object[2][0] + object[2][1] != 0: Object.SetPosition(object[2][0], object[2][1]) for command in object[3]: cmd = command[0] attr = getattr(Object, cmd) if callable(attr): argument = command[1] lenght = len(argument) if lenght == 1: if argument[0] == '': attr() else: attr(argument[0]) elif lenght == 2: attr(argument[0], argument[1]) elif lenght == 3: attr(argument[0], argument[1], argument[2]) elif lenght == 4: attr(argument[0], argument[1], argument[2], argument[3]) for flag in object[4]: Object.AddFlag(str(flag)) Object.Show() list.append(Object) class Item(ui.ListBoxEx.Item): def __init__(self, fileName): ui.ListBoxEx.Item.__init__(self) self.canLoad = 0 self.text = fileName self.textLine = self.__CreateTextLine(fileName) def __del__(self): ui.ListBoxEx.Item.__del__(self) def GetText(self): return self.text def SetSize(self, width, height): ui.ListBoxEx.Item.SetSize(self, 6 * len(self.textLine.GetText()) + 4, height) def __CreateTextLine(self, fileName): textLine = ui.TextLine() textLine.SetParent(self) textLine.SetPosition(0, 0) textLine.SetText(fileName) textLine.Show() return textLine NewM2Bot().Show()



Efsun Botu Kasma Sorunu Fixi

Metin2 özel sunucularında bot sistemlerinden biri olan Efsun Botu, oyuncuların ekipmanlarını yükseltmek amacıyla yoğun olarak tercih edilmektedir. Ancak bazı durumlarda bu bot sistemi kasma (crash) sorunlarına neden olabilmektedir. Bu yazıda, Efsun Botu'nun kasma sebeplerini analiz edecek ve bu sorunun kalıcı çözümünü sunacağız.

Efsun Botu Nedir?
Efsun Botu, oyuncuların belirli malzemeleri kullanarak eşyalarını yükseltmeyi sağlayabilmesi için geliştirilen otomatik sistemlerden biridir. Genellikle Python tabanlı GUI sistemlerle entegre edilerek kullanıcı dostu arayüzlerle çalıştırılır. Bu sistemler, genellikle py root ve uiscript dosyalarıyla yönetilir.

Kasma Sorununun Nedenleri
Efsun Botu kasma sorunları genellikle şu sebeplerden dolayı meydana gelir:

- Sunucu tarafında yetersiz hata kontrolü
- Yanlış item ID ya da slot yönetimi
- GUI ile sunucu arasında veri aktarımı eksiklikleri
- Client-side ve server-side senkronizasyon sorunları

Fix Uygulamaları
Kasma sorununu çözmek için öncelikle sunucu tarafında gerekli güvenlik kontrollerini yapmalısınız. Özellikle item ID kontrolü yapılmadan işlem yapılmaması gerekir. Bunun için game_src içindeki item_manager.cpp dosyasında gerekli kontrolleri genişletmeniz önerilir.

Ayrıca py_root kısmında efsun botunun çalıştığı fonksiyonlarda hata yakalama (try-except) bloklarının kullanılması önemlidir. Bu sayede beklenmedik veri girişimleri sırasında sunucunun çökmesi engellenir.

Python Tarafında Örnek Kod Düzeltmesi
Aşağıda örnek bir try-except bloğu görülmektedir:

try:
item_id = player.get_item_id(slot)
if item_id and validate_item_for_enchant(item_id):
perform_enchant_process(item_id)
except Exception as e:
log_error('Efsun hatası:', str(e))

Bu tür kontroller, sunucu güvenliğini artırır ve botun daha kararlı çalışmasını sağlar.

Client-Side Ayarlamalar
Client tarafında uiscript dosyalarında da benzer kontroller yapılmalıdır. Özellikle buton tıklamaları ve item seçim işlemleri sırasında hatalar yakalanmalı ve kullanıcıya uygun geri bildirimler verilmelidir. Bu, hem kullanıcı deneyimini artırır hem de sunucu tarafında oluşabilecek kasma riskini azaltır.

Sonuç
Efsun Botu kasma sorunları, doğru hata yakalama ve veri doğrulama mekanizmalarıyla kolayca çözülebilir. Sunucu ve client senkronizasyonu sağlandığında bu tür sistemler daha kararlı ve güvenli çalışabilir. Bu fixleri uygulayarak Metin2 özel sunucularınızda daha iyi bir kullanıcı deneyimi sunabilirsiniz.


Fix for Enchant Bot Crashing Issues

The Enchant Bot, which is one of the bot systems used in Metin2 private servers, is widely preferred by players to upgrade their equipment. However, in some cases, this bot system can cause crash issues. In this article, we will analyze the reasons behind these crashes and provide a permanent solution to this problem.

What is the Enchant Bot?
The Enchant Bot is an automatic system that allows players to upgrade their items using specific materials. It is usually integrated with user-friendly interfaces via Python-based GUI systems. These systems are typically managed through py root and uiscript files.

Reasons for Crashes
Crash problems with the Enchant Bot often occur due to the following reasons:

- Insufficient error checking on the server side
- Incorrect item ID or slot management
- Data transfer issues between GUI and server
- Client-side and server-side synchronization errors

Fix Applications
To resolve the crash issue, you should first implement necessary security checks on the server side. Especially, item ID checks must be done before any process. To do so, it is recommended to expand the necessary validations in the item_manager.cpp file within game_src.

Moreover, in the py_root section, try-except blocks should be used in the functions where the enchant bot operates. This prevents the server from crashing during unexpected data attempts.

Sample Code Correction in Python
Below is an example of a try-except block:

try:
item_id = player.get_item_id(slot)
if item_id and validate_item_for_enchant(item_id):
perform_enchant_process(item_id)
except Exception as e:
log_error('Enchant error:', str(e))

Such controls increase server security and allow the bot to run more stably.

Client-Side Adjustments
Similar checks must also be implemented in the uiscript files on the client side. Especially during button clicks and item selection processes, errors should be caught and appropriate feedback should be given to the user. This improves user experience and reduces the risk of crashes on the server side.

Conclusion
Enchant Bot crash issues can easily be resolved with proper error handling and data validation mechanisms. When server and client synchronization is ensured, such systems can operate more reliably and securely. By applying these fixes, you can offer a better user experience in your Metin2 private servers.​
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt