Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/14/2021 in all areas

  1. Source MartySama 2017, a pedido de muitas famílias. Já vou fazer download e verificar se a estrutura está completa e pronta a compilar. Links Informações: Link Download: Link VirusTotal: Link Créditos: Xenoq
    2 points
  2. AddictMt2 serverfiles View File Informações: tlthings.net Submitter [Admin] tierrilopes Submitted 08/17/18 Category Serverfiles  
    1 point
  3. Ir até ao ficheiro game.py (root): Procurar por: from _weakref import proxy Adicionar por baixo: from switchbot import Bot Procurar por: self.quickSlotPageIndex = 0 Adicionar por baixo: self.switchbit = Bot() self.switchbot.hide() Procurar por: onPressKeyDict[app.DIK_F4] =lambda : self.__PressQuickSlot(7) Adicionar por baixo: onPressKeyDict[app.DIK_F6] =lambda : self.__toogleSwitchbot() Adicionar no fim do ficheiro: def __toggleSwitchbot(self): if self.switchbot.bot_shown == 1: self.switchbot.Hide() else: self.switchbot.Show() Colocar o ficheiro switchbot.py dentro da pasta root. switchbot.py
    1 point
  4. Fix crash core: Open input_main.cpp and search: PCHARACTER m_pkChrTarget = CHARACTER_MANAGER::instance().Find(p->dwVID); Add under that function this: if (!ch || !m_pkChrTarget) return; Need looks like this: Download 1 : http://www.mediafire.com/file/rbbzy0t8c4d0s8b/Target_Information_System.rar Download 2 : http://www.girlshare.ro/3489671292.8 Good luck
    1 point
  5. Olá! Hoje, trago a vocês, uma versão da Evolution Software. Serverfilles Versão 2018/19 Completa. - Algumas Imagens: Cliente Fechado Source BIN Source GAME/DB MakePack Cliente Aberto Game: AutoPatch - DESIGN CROWN Dump Proto:
    1 point
  6. Deixo aqui duas Interfaces criadas pelo/a Aza Hatiras.Interface 1:Interface 2:Créditos: Aza Hatiras interface 1.7z interface 2.7z
    1 point
  7. Não tem: -Lycan -Offline Shop -Pet system https://mega.nz/#!gUZXVYLD!7S6lfnmoYTarlDCRzfGRwNnVj3Zg5HQ6zGiq6P6H5Mc São Files 40K Limpas e básicas para começar um servidor. Não as testei mas tenho a confirmação que trabalham. Se alguém as utilizar por favor dê uma opinião. Fonte: Inforge
    1 point
  8. Olá galera, tudo bem com vocês? Meu problema é o seguinte: No meu cliente, tenho instalado o switchbot do Mijago 2.3, porém no add 6/7 ele só consegue parar em somente 1 add que eu coloco, como na foto abaixo: Mas quando eu tento colocar dois adds, o switch fica em um loop infinito, ou seja, ele não consegue parar nos dois bônus que eu coloquei, eu já testei e ele passa direto! Lembrando que esse problema só acontece com os adds 6/7, os adds verdes estão normais. Tenho uma leve impressão que o problema esteja nas seguintes funções: def checkSwitch_rare(self): def GetProb_rare(self): Alguém pode ajudar? Abaixo está o código do switch: import shop import player import item import ui import net import localeinfo as locale import chat import grp import wndMgr import mouseModule from uitooltip import ItemToolTip # Switchbot by Mijago ; v 2.2.1 WEAR_NAMES = ItemToolTip.WEAR_NAMES AFFECT_DICT = ItemToolTip.AFFECT_DICT ### Hier die Boni angeben, die auf dem Server Ativoiert sind. Die angegebene Liste ist nur ein Beispiel und MUSS angepasst werden! BONI_AVAIL = [1,2,3,4,5,6,9,10,12,13,14,15,16,17,18,19,20,21,22,23,27,28,29,30,31,32,33,34,37,39,41,43,44,45,48,53,59,60,61,62,63,71,72,78,79,80,81] # Hier 6/7 Boni angeben! BONI_RARE_AVAIL = [1,2,3,4,5,6,9,10,12,13,14,15,16,17,18,19,20,21,22,23,27,28,29,30,31,32,33,34,37,39,41,43,44,45,48,53,59,60,61,62,63,71,72,78,79,80,81] # Das Switch-Item SWITCH_VNUM = 71084 SWITCH_RARE_VNUM = 71052 # Die folgenden zahlen geben den MINMAX Bereich des Reglers an, der die Tempo angibt. MIN_SWITCH_DELAY = 35 MAX_SWITCH_DELAY_APPEND = 120 # Max 10!! MAX_NUM = 7 proposals = { 1: { # 1 = Weapon "PVP (Koerper)":[ [9,10], [15,10], [17,10], [16,10], [5,8], [3,8], ], "PVP (Mental)":[ [9,10], [15,10], [17,10], [6,8], [5,10], [16,10], ], "PVM": [ [5,10], [19,20], ], }, 2: [ # Armor [ #BODY, ], [ #HEAD, ], [ #SHIELD, ], [ #WRIST, ], [ #FOOTS, ], [ #NECK, ], [ #EAR, ], ], } # Farben :) # COLOR_BG = grp.GenerateColor(0.0, 0.0, 0.0, 0.5) # COLOR_INACTIVE = grp.GenerateColor(0.0, 0.0, 1.0, 0.2) # COLOR_ACTIVE = grp.GenerateColor(0.1, 0.6, 1.0, 0.2) # COLOR_FINISHED = grp.GenerateColor(0.0, 0.8, 1.0, 0.3) # COLOR_INACTIVE_RARE = grp.GenerateColor(0.0, 0.2, 1.0, 0.2) # COLOR_ACTIVE_RARE = grp.GenerateColor(0.2, 0.7, 1.0, 0.2) # COLOR_HIGHLIGHT_RARE = grp.GenerateColor(0.2, 0.2, 1.0, 0.05) # COLOR_PIN_HINT = grp.GenerateColor(0.0, 0.5, 1.0, 0.3) # COLOR_CHECKBOX_NOT_SELECTED = grp.GenerateColor(0.0, 0.3, 1.0, 0.1) # COLOR_CHECKBOX_SELECTED = grp.GenerateColor(0.0, 0.3, 1.0, 0.3) # Standardfarben: COLOR_BG = grp.GenerateColor(0.0, 0.0, 0.0, 0.5) COLOR_INACTIVE = grp.GenerateColor(1.0, 0.0, 0.0, 0.2) COLOR_ACTIVE = grp.GenerateColor(1.0, 0.6, 0.1, 0.2) COLOR_FINISHED = grp.GenerateColor(0.0, 1.0, 0.0, 0.2) COLOR_INACTIVE_RARE = grp.GenerateColor(1.0, 0.2, 0.0, 0.2) COLOR_ACTIVE_RARE = grp.GenerateColor(1.0, 0.7, 0.2, 0.2) COLOR_HIGHLIGHT_RARE = grp.GenerateColor(1.0, 0.2, 0.2, 0.05) COLOR_PIN_HINT = grp.GenerateColor(0.0, 0.5, 1.0, 0.3) COLOR_CHECKBOX_NOT_SELECTED = grp.GenerateColor(1.0, 0.3, 0.0, 0.1) COLOR_CHECKBOX_SELECTED = grp.GenerateColor(0.3, 1.0, 1.0, 0.3) DISTANCE_BOTTOM = 36 class Bar(ui.Bar): def __init__(self,layer = "UI"): ui.Bar.__init__(self,layer) def SetColor(self,color): wndMgr.SetColor(self.hWnd, color) self.color = color class BonusSelector(ui.Bar): def Activate(self): self.sub_parent.resetSwitch() self.Status_new.SetColor(COLOR_ACTIVE) self.sub_parent.StatusBar.SetColor(COLOR_ACTIVE) self.sub_parent.StatusText.SetText("Ativo") self.Starter.SetText("Switch ("+str(self.index+1)+") Parar") self.sub_parent.boni_active = 1 if self.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.swib_normal.SetColor(COLOR_ACTIVE) pass def Deactivate(self): self.sub_parent.resetSwitch() self.Status_new.SetColor(COLOR_INACTIVE) self.sub_parent.StatusBar.SetColor(COLOR_INACTIVE) self.sub_parent.StatusText.SetText("Inativo") self.Starter.SetText("Switch ("+str(self.index+1)+") Iniciar") self.sub_parent.boni_active = 0 if self.sub_parent.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.swib_normal.SetColor(COLOR_INACTIVE) pass def Activate_rare(self): self.sub_parent.resetSwitch_rare() self.sub_parent.StatusBar_rare.SetColor(COLOR_ACTIVE_RARE) self.sub_parent.StatusText_rare.SetText("6/7 Ativo") self.Starter_rare_boni.SetText("6/7 Parado") self.sub_parent.boni_rare_active = 1 if self.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.swib_rare.SetColor(COLOR_ACTIVE_RARE) pass def Deactivate_rare(self): self.sub_parent.resetSwitch_rare() # self.Status_new.SetColor(COLOR_INACTIVE) self.sub_parent.StatusBar_rare.SetColor(COLOR_INACTIVE_RARE) self.sub_parent.StatusText_rare.SetText("6/7 Inativo") self.Starter_rare_boni.SetText("6/7 Iniciar") self.Starter_rare_boni.SetUp() self.sub_parent.boni_rare_active = 0 if self.sub_parent.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.swib_rare.SetColor(COLOR_INACTIVE_RARE) pass def Finish(self): self.Status_new.SetColor(COLOR_FINISHED) self.sub_parent.StatusBar.SetColor(COLOR_FINISHED) self.sub_parent.StatusText.SetText("Pronto") self.Starter.SetText("Switch ("+str(self.index+1)+") Continuar") self.sub_parent.boni_active = 0 if self.sub_parent.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.swib_normal.SetColor(COLOR_FINISHED) pass def Finish_rare(self): # self.Status_new.SetColor(COLOR_FINISHED) self.sub_parent.StatusBar_rare.SetColor(COLOR_FINISHED) self.sub_parent.StatusText_rare.SetText("6/7 Pronto") self.Starter_rare_boni.SetText("6/7 Continuar") self.sub_parent.boni_rare_active = 0 if self.sub_parent.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.swib_rare.SetColor(COLOR_FINISHED) pass def Block(self): self.BlockBar.Show() self.BlockBar.sub.Show() self.Starter.Hide() pass def Unblock(self): self.BlockBar.sub.Hide() self.BlockBar.Hide() self.Starter.Show() pass def enable_rare_boni(self): for i in range(0,4): self.boni[6][i].Show() self.boni[7][i].Show() self.Starter.SetPosition(0,140+45) self.bg_rare_boni.Show() self.bg_rare_boni_but.Show() self.Starter_rare_boni.Show() self.sub_parent.StatusBar_rare.Show() if self.sub_parent.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.Enable_rare(1) def disable_rare_boni(self): for i in range(0,4): self.boni[6][i].Hide() self.boni[7][i].Hide() self.Starter.SetPosition(0,140) self.bg_rare_boni.Hide() self.bg_rare_boni_but.Hide() self.Starter_rare_boni.Hide() self.sub_parent.StatusBar_rare.Hide() self.Deactivate_rare() if self.sub_parent.parentWindow.parentWindow.gameWindow != None: self.sub_parent.blockBar.Enable_rare(0) def __init__(self,sub_parent): ui.Bar.__init__(self, "UI") self.sub_parent = sub_parent self.index = sub_parent.index self.SetColor(COLOR_BG) #Define bg do item adicionado self.SetSize(500,290+10) self.boni = {} self.Status_new = ui.Bar() self.Status_new.SetParent(self) self.Status_new.SetColor(COLOR_INACTIVE) self.Status_new.SetSize(500,5) self.Status_new.Show() self.bg_rare_boni = ui.Bar() self.bg_rare_boni.SetColor(COLOR_HIGHLIGHT_RARE) self.bg_rare_boni.SetParent(self) self.bg_rare_boni.SetPosition(0,132) self.bg_rare_boni.SetSize(500,51) self.bg_rare_boni.Hide() self.bg_rare_boni_but = ui.Bar() self.bg_rare_boni_but.SetColor(COLOR_HIGHLIGHT_RARE) self.bg_rare_boni_but.SetParent(self) self.bg_rare_boni_but.SetPosition(400,133+50) self.bg_rare_boni_but.SetSize(100,25) self.bg_rare_boni_but.Hide() self.EnableRareBoni = CheckBox("6/7 Mostrar") self.EnableRareBoni.SetParent(self) self.EnableRareBoni.SetPosition(10,250) self.EnableRareBoni.eventUp = self.disable_rare_boni self.EnableRareBoni.eventDown = self.enable_rare_boni self.EnableRareBoni.Show() self.Starter = ui.ToggleButton() self.Starter.SetWindowHorizontalAlignCenter() self.Starter.SetParent(self) self.Starter.SetUpVisual("d:/ymir work/ui/public/XLarge_Button_01.sub") self.Starter.SetOverVisual("d:/ymir work/ui/public/XLarge_button_02.sub") self.Starter.SetDownVisual("d:/ymir work/ui/public/XLarge_button_03.sub") self.Starter.SetPosition(0,140) self.Starter.SetText("Switch Iniciar") self.Starter.SetToggleDownEvent(self.Activate) self.Starter.SetToggleUpEvent(self.Deactivate) self.Starter.Show() self.Starter_rare_boni = ui.ToggleButton() self.Starter_rare_boni.SetWindowHorizontalAlignCenter() self.Starter_rare_boni.SetParent(self) self.Starter_rare_boni.SetUpVisual("d:/ymir work/ui/public/Large_Button_01.sub") self.Starter_rare_boni.SetOverVisual("d:/ymir work/ui/public/Large_button_02.sub") self.Starter_rare_boni.SetDownVisual("d:/ymir work/ui/public/Large_button_03.sub") self.Starter_rare_boni.SetPosition(200,140+45) self.Starter_rare_boni.SetText("6/7 Iniciar") self.Starter_rare_boni.SetToggleDownEvent(self.Activate_rare) self.Starter_rare_boni.SetToggleUpEvent(self.Deactivate_rare) self.Starter_rare_boni.Hide() for i in range(7,5,-1): vas = i self.boni[vas] = {} self.boni[vas][0] = ui.TextLine() self.boni[vas][0].SetParent(self) self.boni[vas][0].SetText("Bonus "+str(vas)) self.boni[vas][0].SetPosition(15,10+25*(vas-1)) self.boni[vas][0].Hide() self.boni[vas][1] = DropDown(self,"- Nenhuma -") self.boni[vas][1].SetPosition(70,10+25*(vas-1)) for x in AFFECT_DICT: if x in BONI_RARE_AVAIL: self.boni[vas][1].AppendItem(str(AFFECT_DICT[x](0)),x) self.boni[vas][1].SetSize(330,20) self.boni[vas][1].Hide() self.boni[vas][2] = ui.Bar("UI") self.boni[vas][2].SetParent(self) self.boni[vas][2].SetPosition(410,10+25*(vas-1)) self.boni[vas][2].SetColor(0xC0000000) self.boni[vas][2].SetSize(80,20) self.boni[vas][2].Hide() self.boni[vas][3] = Edit2("0",14) self.boni[vas][3].SetParent(self.boni[vas][2]) self.boni[vas][3].SetNumberMode() self.boni[vas][3].SetSize(80,20) self.boni[vas][3].SetPosition(4,3) self.boni[vas][3].Hide() for i in range(0,5): vas = 5-i self.boni[vas] = {} self.boni[vas][0] = ui.TextLine() self.boni[vas][0].SetParent(self) self.boni[vas][0].SetText("Bonus "+str(vas)) self.boni[vas][0].SetPosition(15,10+25*(vas-1)) self.boni[vas][0].Show() self.boni[vas][1] = DropDown(self,"- Nenhuma -") self.boni[vas][1].SetPosition(70,10+25*(vas-1)) for x in AFFECT_DICT: if x in BONI_AVAIL: self.boni[vas][1].AppendItem(str(AFFECT_DICT[x](0)),x) self.boni[vas][1].SetSize(330,20) self.boni[vas][1].Show() self.boni[vas][2] = ui.Bar("UI") self.boni[vas][2].SetParent(self) self.boni[vas][2].SetPosition(410,10+25*(vas-1)) self.boni[vas][2].SetColor(0xC0000000) self.boni[vas][2].SetSize(80,20) self.boni[vas][2].Show() self.boni[vas][3] = Edit2("0",14) self.boni[vas][3].SetParent(self.boni[vas][2]) self.boni[vas][3].SetNumberMode() self.boni[vas][3].SetSize(80,20) self.boni[vas][3].SetPosition(4,3) self.boni[vas][3].Show() self.but_propose = DropDown(self,'Sugestões',0) self.but_propose.SetParent(self) self.but_propose.SetPosition(380,210) self.but_propose.OnChange=self.change_boni # self.but_propose.Show() self.BlockBar = ui.Bar() self.BlockBar.SetParent(self) self.BlockBar.SetColor(COLOR_INACTIVE) self.BlockBar.SetPosition(0,5) self.BlockBar.SetSize(500,170-5+35+2) self.BlockBar.Hide() self.BlockBar.sub = ui.Bar() self.BlockBar.sub.SetParent(self) self.BlockBar.sub.SetColor(COLOR_INACTIVE) self.BlockBar.sub.SetPosition(500-122,5+170-5+35+2) self.BlockBar.sub.SetSize(122,30) self.BlockBar.sub.Hide() self.BlockText = ui.TextLine() self.BlockText.SetParent(self.BlockBar) self.BlockText.SetWindowHorizontalAlignCenter() self.BlockText.SetHorizontalAlignCenter() self.BlockText.SetPosition(0,140) self.BlockText.SetText("Você não pode mudar este item.") self.BlockText.Show() self.prepare_propose() def change_boni(self): use = self.but_propose.DropList.GetSelectedItem().value bon = 1 item.SelectItem(self.sub_parent.vnum) for x in use: # TODO: Check if bonus exists on item!! ok = 1 for i in xrange(item.ITEM_APPLY_MAX_NUM): (affectType, affectValue) = item.GetAffect(i) if affectType == x[0]: ok = 0 if ok == 0: continue y = self.boni[bon][1] y.SelectByAffectId(x[0]) self.boni[bon][1].act.SetText(y.DropList.GetSelectedItem().textBox.GetText()) self.boni[bon][3].SetText(str(x[1])) bon+=1 for x in range(bon,6): y = self.boni[x][1].DropList y.SelectIndex(0) self.boni[x][1].act.SetText(y.GetSelectedItem().textBox.GetText()) self.boni[x][3].SetText("0") def prepare_propose(self): self.but_propose.DropList.RemoveAllItems() self.but_propose.maxh = 95 self.but_propose.c = 0 self.but_propose.AppendItem("Vazio",[]) item.SelectItem(self.sub_parent.vnum) type = item.GetItemType() use = proposals[type] if type == 2: use = use[item.GetItemSubType()] for prop in use: self.but_propose.AppendItem(prop,use[prop]) class ItemTabBar(ui.Window): class BlockBar(ui.Window): size_res = 32 multi = 1 def SetSize(self,i=1): self.multi = i ui.Window.SetSize(self,self.size_res,self.size_res*i) if self.rare_enabled == 1: self.swib_normal.SetSize(self.size_res,self.size_res*i/3*2) pos1 = int(1.0*self.size_res*i/3.0*2.0) self.swib_normal.SetSize(self.size_res,pos1) self.swib_rare.SetSize(self.size_res,self.size_res*i-pos1) self.swib_rare.SetPosition(0,pos1) self.swib_rare.Show() else: self.swib_normal.SetSize(self.size_res,self.size_res*i) self.swib_rare.Hide() def Enable_rare(self,o = 1): self.rare_enabled = o self.SetSize(self.multi) def __init__(self): ui.Window.__init__(self) self.rare_enabled = 0 self.swib_normal = ui.Bar() self.swib_normal.SetParent(self) self.swib_normal.SetSize(self.size_res,self.size_res*self.multi) self.swib_normal.SetColor(COLOR_INACTIVE) self.swib_normal.SetPosition(0,0) self.swib_normal.Show() self.swib_rare = ui.Bar() self.swib_rare.SetParent(self) self.swib_rare.SetSize(self.size_res,self.size_res) self.swib_rare.SetColor(COLOR_INACTIVE_RARE) self.swib_rare.SetPosition(0,0) self.swib_rare.Hide() self.SetSize(1) class ItemTab(ui.Bar): height_selected = 36*3+8 height_unselected = 36*3+5 def Destroy(self): self.parentWindow.parentWindow.enable_rebuy.SetParent(self.parentWindow.parentWindow) self.parentWindow.parentWindow.but_speed.SetParent(self.parentWindow.parentWindow) self.parentWindow.parentWindow.help_show_rare.SetParent(self.parentWindow.parentWindow) self.parentWindow.parentWindow.help_rebuy.SetParent(self.parentWindow.parentWindow) # self.parentWindow.parentWindow.help_stop_all.SetParent(self.parentWindow.parentWindow) self.parentWindow.parentWindow.help_duration.SetParent(self.parentWindow.parentWindow) # self.parentWindow.parentWindow.but_deactivate_all.SetParent(self.parentWindow.parentWindow) # self.parentWindow.parentWindow.but_deactivate_all.Hide() self.parentWindow.parentWindow.enable_rebuy.Hide() self.parentWindow.parentWindow.but_speed.Hide() self.bonusSelector.Hide() self.bonusSelector.__del__() self.Hide() self.__del__() def DeleteMe(self): self.parentWindow.DeleteTab(self.tabnum) def __init__(self,parent,tabnum,index = 0,vnum = 0): ## Init ItemTab ui.Bar.__init__(self) self.SetColor(COLOR_BG) self.SetSize(self.width,self.height_unselected) self.index = index self.tabnum = tabnum self.vnum = vnum self.count = 0 self.count_rare = 0 self.parentWindow = parent self.SetParent(parent) if self.parentWindow.parentWindow.gameWindow != None: self.blockBar = ItemTabBar.BlockBar() self.blockBar.SetParent(self.parentWindow.parentWindow.gameWindow.interface.wndInventory.wndItem) ipi = self.parentWindow.parentWindow.gameWindow.interface.wndInventory.inventoryPageIndex self.blockBar.Show() ip2 = self.index - ipi*45 self.blockBar.SetPosition(((ip2-int(ip2/5)*5)*self.blockBar.size_res),int(ip2/5)*self.blockBar.size_res) self.ItemIcon = ui.ImageBox() self.ItemIcon.SetParent(self) self.ItemIcon.AddFlag("not_pick") self.ItemIcon.SetWindowHorizontalAlignCenter() self.ItemIcon.SetWindowVerticalAlignCenter() self.ItemIcon.Show() self.SlotName = ui.TextLine() self.SlotName.SetParent(self) self.SlotName.SetWindowHorizontalAlignCenter() self.SlotName.SetHorizontalAlignCenter() self.SlotName.SetPosition(0,5) self.SlotName.SetText("Slot %d" % (self.index+1)) self.SlotName.AddFlag("not_pick") self.SlotName.Show() self.StatusBar = Bar() # Special Bar self.StatusBar.SetParent(self) self.StatusBar.SetWindowVerticalAlignBottom() self.StatusBar.SetSize(self.width,20) self.StatusBar.SetPosition(0,20) self.StatusBar.SetColor(COLOR_INACTIVE) self.StatusBar.AddFlag("not_pick") self.StatusBar.Show() self.StatusText = ui.TextLine() self.StatusText.SetParent(self.StatusBar) # self.StatusText.SetParent(self) self.StatusText.SetWindowHorizontalAlignCenter() self.StatusText.SetWindowVerticalAlignCenter() self.StatusText.SetHorizontalAlignCenter() self.StatusText.SetVerticalAlignCenter() self.StatusText.SetPosition(0,0) self.StatusText.SetText("Inativo") self.StatusText.Show() self.StatusBar_rare = Bar() # Special Bar self.StatusBar_rare.SetParent(self) self.StatusBar_rare.SetWindowVerticalAlignBottom() self.StatusBar_rare.SetSize(self.width,20) self.StatusBar_rare.SetPosition(0,40) self.StatusBar_rare.SetColor(COLOR_INACTIVE_RARE) self.StatusBar_rare.AddFlag("not_pick") self.StatusBar_rare.Hide() self.StatusText_rare = ui.TextLine() self.StatusText_rare.SetParent(self.StatusBar_rare) self.StatusText_rare.SetWindowHorizontalAlignCenter() self.StatusText_rare.SetWindowVerticalAlignCenter() self.StatusText_rare.SetHorizontalAlignCenter() self.StatusText_rare.SetVerticalAlignCenter() self.StatusText_rare.SetPosition(0,0) self.StatusText_rare.SetText("6/7 Inativo") self.StatusText_rare.Show() self.CloseBut = ui.Button() self.CloseBut.SetParent(self) self.CloseBut.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub") self.CloseBut.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub") self.CloseBut.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub") self.CloseBut.SetToolTipText("Fechar", 0, -23) self.CloseBut.SetEvent(self.DeleteMe) self.CloseBut.SetPosition(0,0) self.CloseBut.Show() self.OnMouseLeftButtonDown = lambda: self.Select() self.boni_active = 0 self.boni_rare_active = 0 self.bonusSelector = BonusSelector(self) self.bonusSelector.SetParentProxy(self.parentWindow.parentWindow) self.bonusSelector.SetPosition(10,35+36*3+4*2) self.bonusSelector.Hide() self.vnum = 0 self.SetIndex(index) self.resetSwitch() self.resetSwitch_rare() def IsActive(self): return self.boni_active == 1 def IsActive_rare(self): return self.boni_rare_active == 1 def SetParentProxy(self,parent): ui.Bar.SetParentProxy(self,parent) def Select(self): for a in self.parentWindow.tabList: self.parentWindow.tabList[a].UnSelect() self.parentWindow.tabList[a].bonusSelector.Hide() self.bonusSelector.Show() self.SetSize(self.width,self.height_selected) self.Update() # self.parentWindow.parentWindow.but_deactivate_all.SetParent(self.bonusSelector) # self.parentWindow.parentWindow.but_deactivate_all.SetPosition(415-10,200+10) # self.parentWindow.parentWindow.but_deactivate_all.Show() self.parentWindow.parentWindow.enable_rebuy.SetParent(self.bonusSelector) #Define a posição do botão de repetir compra self.parentWindow.parentWindow.enable_rebuy.SetPosition(10,266+10) self.parentWindow.parentWindow.enable_rebuy.Show() self.parentWindow.parentWindow.but_speed.SetParent(self.bonusSelector) #Define a posição do botão de velocidade self.parentWindow.parentWindow.but_speed.SetPosition(0,270+10) self.parentWindow.parentWindow.but_speed.Show() self.parentWindow.parentWindow.help_show_rare.SetParent(self.bonusSelector) self.parentWindow.parentWindow.help_rebuy.SetParent(self.bonusSelector) # self.parentWindow.parentWindow.help_stop_all.SetParent(self.bonusSelector) self.parentWindow.parentWindow.help_duration.SetParent(self.bonusSelector) def UnSelect(self): self.SetSize(self.width,self.height_unselected) self.Update() def Update(self): self.StatusBar.SetPosition(0,20) self.SetPosition((self.width+self.dist)*self.tabnum,0) self.SlotName.SetText("Slot %d" % (self.index+1)) def resetSwitch(self): self.values = [0,0,0,0,0] def resetSwitch_rare(self): self.values_rare = [0,0] # last_switch = -1 rebuyed = 0 def nachkauf(self): if self.parentWindow.parentWindow.buyed != 0: return else: self.parentWindow.parentWindow.buyed = 1 if self.parentWindow.parentWindow.enable_rebuy.checked == 1: for i in range(0,shop.SHOP_SLOT_COUNT): me = shop.GetItemID(i) if me == SWITCH_VNUM: if shop.GetItemPrice(i) > player.GetMoney(): # chat.AppendChat(1,"-- Switchitem gefunden! Aber wir haben kein Geld :(") self.bonusSelector.Deactivate() return else: net.SendShopBuyPacket(i) self.rebuyed = 1 # self.Switch() return rebuyed_rare = 0 def nachkauf_rare(self): if self.parentWindow.parentWindow.buyed_rare != 0: return else: self.parentWindow.parentWindow.buyed_rare = 1 if self.parentWindow.parentWindow.enable_rebuy.checked == 1: for i in range(0,shop.SHOP_SLOT_COUNT): me = shop.GetItemID(i) if me == SWITCH_RARE_VNUM: if shop.GetItemPrice(i) > player.GetMoney(): # chat.AppendChat(1,"-- Switchitem gefunden! Aber wir haben kein Geld :(") self.bonusSelector.Deactivate_rare() return else: net.SendShopBuyPacket(i) self.rebuyed_rare = 1 # self.Switch() return # self.bonusSelector.Deactivate() def Switch_rare(self): lc = 0 for i in range(0,90*2): if player.GetItemIndex(i) == SWITCH_RARE_VNUM: lc+=player.GetItemCount(i) if lc == 0 and self.parentWindow.parentWindow.enable_rebuy.checked == 0: chat.AppendChat(2,"Slot %d: 6/7 Switch cancelado -> Nenhum item foi bem-sucedidos!" % (self.index+1)) self.bonusSelector.Deactivate_rare() return if lc < 15: self.nachkauf_rare() if lc == 0: self.bonusSelector.Deactivate_rare() chat.AppendChat(2,"Slot %d: 6/7 Mudança cancelada -> Sem itens de mudança!" % (self.index+1)) return for i in range(0,90*2): if player.GetItemIndex(i) == SWITCH_RARE_VNUM: net.SendItemUseToItemPacket(i,self.index) return def Switch(self): lc = 0 for i in range(0,90*2): if player.GetItemIndex(i) == SWITCH_VNUM: lc+=player.GetItemCount(i) if lc == 0 and self.parentWindow.parentWindow.enable_rebuy.checked == 0: self.bonusSelector.Deactivate() return if lc < 15: self.nachkauf() if lc == 0: self.bonusSelector.Deactivate() return for i in range(0,90*2): if player.GetItemIndex(i) == SWITCH_VNUM: net.SendItemUseToItemPacket(i,self.index) return # self.nachkauf() def checkSwitch(self): ok = 0 for i in range(0,5): if player.GetItemAttribute(self.index, i) != self.values[i]: ok = 1 self.prob = self.GetProb() self.StatusText.SetText("Ativo (%d%%)" %self.prob) if ok == 1 or self.prob >= 90: if self.prob >= 90: chat.AppendChat(1,"Slot %d: Pronto!" % (self.index+1)) self.bonusSelector.Finish() return self.values = [player.GetItemAttribute(self.index, i) for i in range(0,5)] self.Switch() elif self.rebuyed > 0: self.rebuyed = 0 self.Switch() elif ok == 0 and self.count < 5: self.count+=1 elif ok == 0 and self.count >= 5: self.count = 0 self.Switch() # elif self.last_switch > -1 and player.GetItemCount(self.last_switch) == 0: # chat.AppendChat(2,"%d"%player.GetItemCount(self.last_switch)) # self.last_switch = 0 # self.Switch() # else: # if self.GetProb() != 100: # self.Switch() pass def checkSwitch_rare(self): ok = 0 for i in range(0,2): if player.GetItemAttribute(self.index, i+6) != self.values_rare[i]: ok = 1 self.prob_rare = self.GetProb_rare() self.StatusText_rare.SetText("Ativo (%d%%)" %self.prob_rare) if ok == 1 or self.prob_rare >= 90: if self.prob_rare >= 90: self.bonusSelector.Finish_rare() chat.AppendChat(1,"Slot %d: 6/7 Pronto!" % (self.index+1)) return self.values_rare = [player.GetItemAttribute(self.index, i) for i in range(5,7)] self.Switch_rare() elif self.rebuyed_rare > 0: self.rebuyed_rare = 0 self.Switch_rare() elif ok == 0 and self.count_rare < 5: self.count_rare+=1 elif ok == 0 and self.count_rare >= 5: self.count_rare = 0 self.Switch_rare() pass def UpdateItem(self): # try: vnum = player.GetItemIndex(self.index) if vnum == 0 and self.vnum != 0: self.resetSwitch() self.resetSwitch_rare() self.vnum = 0 self.bonusSelector.Deactivate() self.bonusSelector.Block() self.bonusSelector.prepare_propose() self.ItemIcon.Hide() if self.parentWindow.parentWindow.gameWindow != None: self.blockBar.SetSize(1) return elif vnum != self.vnum: self.resetSwitch() self.resetSwitch_rare() self.vnum = vnum self.bonusSelector.Deactivate() self.bonusSelector.prepare_propose() item.SelectItem(self.vnum) if self.parentWindow.parentWindow.gameWindow != None: (w,h) = item.GetItemSize() self.blockBar.SetSize(h) if item.GetItemType() != 1 and item.GetItemType() != 2: self.bonusSelector.Block() else: self.bonusSelector.Unblock() self.ItemIcon.Show() self.ItemIcon.LoadImage(item.GetIconImageFileName()) # self.values = [player.GetItemAttribute(self.index, i) for i in range(0,5)] return if self.IsActive(): self.checkSwitch() if self.IsActive_rare(): self.checkSwitch_rare() # except: # pass def SetIndex(self,index): self.index = index self.bonusSelector.index = index self.bonusSelector.Starter.SetText("Switch ("+str(index+1)+") Iniciar") self.Update() self.UpdateItem() def GetProb_rare(self): values = [player.GetItemAttribute(self.index, i+6) for i in range(0,2)] val2 = {} for i in range(0,2): try: affectString = AFFECT_DICT[values[i][0]](values[i][1]) val2[values[i][0]] = values[i][1] self.bonusSelector.ibi[i+6].SetText(affectString) except: pass prob = 0 max = 0 yp = self.GenList_rare() for x in yp: if yp[x] in val2 and val2[yp[x]] >= int(self.bonusSelector.boni[x+5][3].GetText()): prob = prob+1 max = max+1 if max > 0: prozent = 100/max*prob else: prozent = 100 return prozent pass def GetProb(self): values = [player.GetItemAttribute(self.index, i) for i in range(0,5)] val2 = {} # for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): for i in range(0,5): try: affectString = AFFECT_DICT[values[i][0]](values[i][1]) val2[values[i][0]] = values[i][1] self.bonusSelector.ibi[i].SetText(affectString) except: pass prob = 0 max = 0 yp = self.GenList() for x in yp: if yp[x] in val2 and val2[yp[x]] >= int(self.bonusSelector.boni[x][3].GetText()): prob = prob+1 max = max+1 if max > 0: prozent = 100/max*prob else: prozent = 100 return prozent def GenList(self): ret = {} for i in range(0,5): if self.bonusSelector.boni[5-i][1].selected.value != 0: ret[5-i] = self.bonusSelector.boni[5-i][1].selected.value return ret def GenList_rare(self): ret = {} for i in range(0,2): if self.bonusSelector.boni[6+i][1].selected.value != 0: ret[i+1] = self.bonusSelector.boni[6+i][1].selected.value return ret def __init__(self,parent): ui.Window.__init__(self) self.SetSize(500,36*3+4*2) self.tabCount = 0 self.tabList = {} self.parentWindow = parent self.SetParent(parent) self.plusBar = ui.Bar() self.plusBar.SetParent(self) self.plusBar.SetSize(90,30) self.plusBar.SetWindowVerticalAlignCenter() self.plusBar.SetColor(COLOR_BG) # self.plusBar.OnMouseLeftButtonDown = lambda: self.AddTab_pre() self.plusBar.OnMouseLeftButtonUp = lambda: self.AddTab_pre() self.OnMouseLeftButtonUp = lambda: self.AddTab_pre() self.plusBar.SetPosition(30,0) self.plusBar.Show() self.AddText = ui.TextLine() self.AddText.SetParent(self.plusBar) self.AddText.SetText("Arraste o item") self.AddText.SetWindowVerticalAlignCenter() self.AddText.SetWindowHorizontalAlignCenter() self.AddText.SetVerticalAlignCenter() self.AddText.SetHorizontalAlignCenter() self.AddText.SetPosition(0,0) self.AddText.Show() dist = [ [500, 0 ], #1 [240, 10 ], [160, 10 ], [117, 10.5], # [ 80, 25 ], #5 [ 92, 10 ], #5 [ 75, 10 ], #6 [ 64, 9 ], #7 [ 56, 7.5], #8 [ 50, 6.5], #9 [ 45, 5.5], #10 ][MAX_NUM-1] self.ItemTab.width = dist[0] self.ItemTab.dist = dist[1] #For 8 # dist = 9-1.5 # width = 56 # For 9 # dist = 9-2.5 # width = 50 # For 10 # dist = 9-3.5 # width = 45 def DeleteTab(self,id): if self.parentWindow.gameWindow != None: self.tabList[id].blockBar.Hide() self.tabList[id].blockBar.Destroy() self.tabList[id].Destroy() # del self.tabList[id] self.tabCount = self.tabCount -1 if self.tabCount > id and id < 5: for i in xrange(id,self.tabCount): self.tabList[i] = self.tabList[i+1] self.tabList[i].tabnum = i self.tabList[i].SetPosition((self.tabList[i].width+self.tabList[i].dist)*i,0) del self.tabList[self.tabCount] else: del self.tabList[id] if self.tabCount > 0: self.tabList[0].Select() if (self.ItemTab.width+self.ItemTab.dist)*self.tabCount < 20: self.parentWindow.SetSize(520,387-210) self.parentWindow.but_speed.Hide() self.plusBar.SetPosition(20,0) else: (x,y) = self.tabList[self.tabCount-1].GetLocalPosition() self.plusBar.SetPosition(x+self.ItemTab.width+self.ItemTab.dist,0) # self.plusBar.SetPosition((self.ItemTab.width+self.ItemTab.dist)*self.tabCount-10,0) self.plusBar.Show() def AddTab_pre(self): if mouseModule.mouseController.isAttached(): attachedSlotType = mouseModule.mouseController.GetAttachedType() attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber() attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex() item.SelectItem(attachedSlotVnum) if item.GetItemType() != 1 and item.GetItemType() != 2: mouseModule.mouseController.DeattachObject() chat.AppendChat(2,"Você não pode mudar este item.") return for a in self.tabList: if self.tabList[a].index == attachedSlotPos: mouseModule.mouseController.DeattachObject() chat.AppendChat(2,"O Esse Slot está pronto para ser incrível!") return if player.SLOT_TYPE_INVENTORY == attachedSlotType: self.AddTab(attachedSlotPos,attachedSlotVnum) chat.AppendChat(2,"Item adicionado!") mouseModule.mouseController.DeattachObject() def AddTab(self,id,vnum = 0): if self.tabCount < MAX_NUM: self.tabList[self.tabCount] = self.ItemTab(self,self.tabCount,id,vnum) self.tabList[self.tabCount].Select() self.tabList[self.tabCount].Show() self.tabCount+= 1 if (self.ItemTab.width+self.ItemTab.dist)*self.tabCount < 20: self.plusBar.SetPosition(20,0) else: (x,y) = self.tabList[self.tabCount-1].GetLocalPosition() self.plusBar.SetPosition(x+self.ItemTab.width+self.ItemTab.dist,0) if self.tabCount == MAX_NUM: self.plusBar.Hide() self.parentWindow.SetSize(520,450+10) self.parentWindow.but_speed.Show() # return 0 class Bot(ui.BoardWithTitleBar): class PinGroup(ui.Bar): def OnUpdate(self): ## Now check position. (x,y) = self.GetGlobalPosition() max_x = wndMgr.GetScreenWidth()-self.GetWidth() max_y = wndMgr.GetScreenHeight()-self.GetHeight()-DISTANCE_BOTTOM if not x == self.pos_x or not y == self.pos_y: old_dir = self.dir if self.pos_x == 0 and not self.pos_y == 0 and not self.pos_y == max_y and old_dir != 1: self.parse_dir(1) elif self.pos_x == max_x and not self.pos_y == 0 and not self.pos_y == max_y and old_dir != 2: self.parse_dir(2) elif self.pos_y == max_y and not self.pos_x == 0 and not self.pos_x == max_x and old_dir != 4: self.parse_dir(4) elif self.pos_y == 0 and not self.pos_x == 0 and not self.pos_x == max_x and old_dir != 3: self.parse_dir(3) max_x = wndMgr.GetScreenWidth()-self.GetWidth() max_y = wndMgr.GetScreenHeight()-self.GetHeight()-DISTANCE_BOTTOM if self.pos_x == 0 and not self.pos_y == 0 and not self.pos_y == max_y: x = 0 elif self.pos_x == max_x and not self.pos_y == 0 and not self.pos_y == max_y: x = max_x elif self.pos_y == 0 and not self.pos_x == 0 and not self.pos_x == max_x: y = 0 elif self.pos_y == max_y and not self.pos_x == 0 and not self.pos_x == max_x: y = max_y if x > 0 and x < max_x and y > 0 and y < max_y: if y < int(max_y/2): y = 0 else: y = max_y if x < int(max_x/2): x = 0 else: x = max_x x = min(max(0,x),wndMgr.GetScreenWidth()-self.GetWidth()) y = min(max(0,y),wndMgr.GetScreenHeight()-self.GetHeight()-DISTANCE_BOTTOM) self.SetPosition(x,y) self.pos_x = x self.pos_y = y # (self.pos_x,self.pos_y) = self.GetGlobalPosition() self.parent.OnUpdate() for c in self.txtlist: c.SetColor(c.item.StatusBar.color) c.txt2.SetText("Status: %s" % c.item.StatusText.GetText()) try: c.listWin2.SetColor(c.item.StatusBar_rare.color) c.txt3.SetText("Status: %s" % c.item.StatusText_rare.GetText()) except: pass def ShowMainWindow(self): (x,y) = self.parent.GetGlobalPosition() x = min(max(32,x),wndMgr.GetScreenWidth()-self.parent.GetWidth()-32) y = min(max(32,y),wndMgr.GetScreenHeight()-self.parent.GetHeight()-DISTANCE_BOTTOM-32) self.parent.SetPosition(x,y) self.parent.Show() self.__del__() def parse_dir(self,dir): self.dir = dir w,h = 100,50 for listWin in self.txtlist: itm = listWin.item listWin.AddFlag("not_pick") if dir >= 3: listWin.SetPosition(w,4) listWin.SetSize(90,h-8) w+=92 if itm.bonusSelector.EnableRareBoni.checked == 1: w+=15 listWin.SetSize(105,4+12+12) listWin.listWin2.SetSize(105,14) listWin.listWin2.Show() listWin.txt3.Show() else: listWin.SetPosition(0,h) listWin.SetSize(w,4+12+12+2) if itm.bonusSelector.EnableRareBoni.checked == 1: listWin.SetSize(w,4+12+12) listWin.listWin2.SetSize(w,14) listWin.listWin2.Show() listWin.txt3.Show() # itl.append(txt3) h+=12 pass h+=4+12+12+4 self.SetSize(w,h) def __init__(self,parent,dir = 1): self.parent = parent self.dir = dir ui.Bar.__init__(self) # Direction: 1 = left; 2 = right; 3 = top self.SetColor(COLOR_BG) w,h = 100,50 self.AddFlag("float") self.AddFlag("movable") self.maximise_but = ui.Button() self.maximise_but.SetParent(self) self.maximise_but.SetPosition(4,4) self.maximise_but.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") self.maximise_but.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") self.maximise_but.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") self.maximise_but.SetText("Ampliar") self.maximise_but.SetEvent(self.ShowMainWindow) self.maximise_but.Show() self.stop_but = ui.Button() self.stop_but.SetParent(self) self.stop_but.SetPosition(4,24) self.stop_but.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") self.stop_but.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") self.stop_but.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") self.stop_but.SetText("Desativar tudo") self.stop_but.SetEvent(self.parent.deactivate_all) self.stop_but.Show() self.txtlist = [] for a in self.parent.itemTabBar.tabList: itm = self.parent.itemTabBar.tabList[a] listWin = ui.Bar() listWin.item = itm self.txtlist.append(listWin) listWin.SetColor(itm.StatusBar.color) listWin.SetParent(self) listWin.AddFlag("not_pick") listWin.Show() listWin.txt1 = ui.TextLine() listWin.txt1.SetParent(listWin) listWin.txt1.SetText("Slot %d:" %(itm.index+1)) listWin.txt1.Show() listWin.txt1.SetPosition(4,2) listWin.txt2 = ui.TextLine() listWin.txt2.SetParent(listWin) listWin.txt2.SetText("Status: %s" % itm.StatusText.GetText()) listWin.txt2.SetPosition(4,2+12) listWin.txt2.Show() listWin.listWin2 = ui.Bar() listWin.listWin2.AddFlag("not_pick") listWin.listWin2.SetColor(itm.StatusBar_rare.color) listWin.listWin2.SetParent(listWin) listWin.listWin2.SetPosition(0,4+12+12) listWin.listWin2.SetSize(w,12+2) listWin.listWin2.Hide() listWin.txt3 = ui.TextLine() listWin.txt3.SetParent(listWin.listWin2) listWin.txt3.SetText("Status: %s" % itm.StatusText_rare.GetText()) listWin.txt3.SetPosition(4,0) listWin.txt3.Hide() if dir >= 3: listWin.SetPosition(w,4) listWin.SetSize(90,h-8) w+=92 if itm.bonusSelector.EnableRareBoni.checked == 1: w+=15 listWin.SetSize(105,4+12+12) listWin.listWin2.SetSize(105,14) listWin.listWin2.Show() listWin.txt3.Show() else: listWin.SetPosition(0,h) listWin.SetSize(w,4+12+12+2) if itm.bonusSelector.EnableRareBoni.checked == 1: listWin.SetSize(w,4+12+12) listWin.listWin2.Show() listWin.txt3.Show() # itl.append(txt3) h+=12 pass h+=4+12+12+4 # else: # self.txtlist.append(itl) self.SetSize(w,h) (x,y) = self.parent.GetGlobalPosition() x = min(max(0,x),wndMgr.GetScreenWidth()-self.GetWidth()) y = min(max(0,y),wndMgr.GetScreenHeight()-self.GetHeight()-DISTANCE_BOTTOM) if dir == 1: # self.SetWindowHorizontalAlignLeft() self.SetPosition(0,y) elif dir == 2: # self.SetWindowHorizontalAlignRight() self.SetPosition(wndMgr.GetScreenWidth()-self.GetWidth(),y) elif dir == 3: # self.SetWindowVerticalAlignTop() self.SetPosition(x,0) else: # self.SetWindowVerticalAlignBottom() self.SetPosition(x,wndMgr.GetScreenHeight()-(DISTANCE_BOTTOM+h)) (self.pos_x,self.pos_y) = self.GetGlobalPosition() self.parse_dir(dir) # if dir == 1: # self.SetWindowHorizontalAlignLeft() # self.SetPosition(0,0) # elif dir == 2: # self.SetWindowHorizontalAlignRight() # self.SetPosition(self.GetWidth(),0) # elif dir == 3: # self.SetWindowHorizontalAlignCenter() # self.SetPosition(0,0) # elif dir == 4: # self.SetWindowHorizontalAlignCenter() # self.SetPosition(0,36+h) # else: # return # ERR pinhint = 0 def ShowPinHint(self,type): self.pinhint = type if type == 0: self.PinHint.Hide() return # type=2 (x,y) = self.GetGlobalPosition() if type == 1: # Left self.PinHint.SetWindowHorizontalAlignLeft() self.PinHint.SetWindowVerticalAlignCenter() self.PinHint.SetSize(max(min(30,30-x),3),wndMgr.GetScreenHeight()) self.PinHint.SetPosition(0,0) elif type == 2: # Right self.PinHint.SetWindowHorizontalAlignRight() self.PinHint.SetWindowVerticalAlignCenter() self.PinHint.SetSize(30,wndMgr.GetScreenHeight()) self.PinHint.SetPosition(max(min(30,30-(wndMgr.GetScreenWidth()-(x+self.GetWidth()))),3),0) elif type == 3: # Top self.PinHint.SetWindowHorizontalAlignCenter() self.PinHint.SetWindowVerticalAlignTop() self.PinHint.SetSize(wndMgr.GetScreenWidth(),max(min(30,30-y),3)) self.PinHint.SetPosition(0,0) elif type == 4: # Top self.PinHint.SetWindowHorizontalAlignCenter() self.PinHint.SetWindowVerticalAlignBottom() self.PinHint.SetSize(wndMgr.GetScreenWidth(),30) self.PinHint.SetPosition(0,36+max(min(30,30-(wndMgr.GetScreenHeight()-36-(y+self.GetHeight()))),3)) self.PinHint.Show() # else: def __init__(self): ui.BoardWithTitleBar.__init__(self) self.gameWindow = None self.SetTitleName("SacredMt2 Switchbot") self.AddFlag("float") self.AddFlag("movable") self.SetPosition(30,30) # self.SetSize(520,387) # self.SetSize(520,387-210) self.SetSize(520,387-210) self.PinHint = ui.Bar() self.PinHint.SetColor(COLOR_PIN_HINT) self.PinHint.Show() self.OnMouseLeftButtonDown = self.drag_start self.OnMouseLeftButtonUp = self.drag_end self.titleBar.MinimizeBut = ui.Button() self.titleBar.MinimizeBut.SetParent(self.titleBar) self.titleBar.MinimizeBut.SetUpVisual("d:/ymir work/ui/public/minimize_button_01.sub") self.titleBar.MinimizeBut.SetOverVisual("d:/ymir work/ui/public/minimize_button_02.sub") self.titleBar.MinimizeBut.SetDownVisual("d:/ymir work/ui/public/minimize_button_03.sub") self.titleBar.MinimizeBut.SetToolTipText("Minimizar", 0, -23) self.titleBar.MinimizeBut.SetPosition(520 - self.titleBar.btnClose.GetWidth()-3- 32 - 3, 3) self.titleBar.MinimizeBut.SetEvent(lambda: self.PinShow(1)) self.titleBar.MinimizeBut.Show() self.titleBar.HelpBut = ui.ToggleButton() self.titleBar.HelpBut.SetParent(self.titleBar) self.titleBar.HelpBut.SetUpVisual("d:/ymir work/ui/public/small_button_01.sub") self.titleBar.HelpBut.SetOverVisual("d:/ymir work/ui/public/small_button_02.sub") self.titleBar.HelpBut.SetDownVisual("d:/ymir work/ui/public/small_button_03.sub") self.titleBar.HelpBut.SetToolTipText("Detalhado Ajuda", 0, -23) self.titleBar.HelpBut.SetText("Ajuda") self.titleBar.HelpBut.SetPosition(3, 0) self.titleBar.HelpBut.SetToggleDownEvent(lambda: self.ToggleHelp(1)) self.titleBar.HelpBut.SetToggleUpEvent(lambda: self.ToggleHelp(0)) # self.titleBar.HelpBut.Show() self.but_deactivate_all = ui.Button() # self.but_deactivate_all.SetParent(self) self.but_deactivate_all.SetParent(self.titleBar) # self.but_deactivate_all.SetPosition(415,350) self.but_deactivate_all.SetPosition(3+5+self.titleBar.HelpBut.GetWidth(), 0) self.but_deactivate_all.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub") self.but_deactivate_all.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub") self.but_deactivate_all.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub") self.but_deactivate_all.SetText("Parar todos") self.but_deactivate_all.SetEvent(self.deactivate_all) self.but_deactivate_all.Show() self.titleBar.but_deactivate_all = ui.Button() self.titleBar.but_deactivate_all.SetParent(self.titleBar) self.titleBar.but_deactivate_all.SetPosition(3+5+self.titleBar.HelpBut.GetWidth()+5+self.but_deactivate_all.GetWidth(), 0) self.titleBar.but_deactivate_all.SetUpVisual("d:/ymir work/ui/public/small_button_01.sub") self.titleBar.but_deactivate_all.SetOverVisual("d:/ymir work/ui/public/small_button_02.sub") self.titleBar.but_deactivate_all.SetDownVisual("d:/ymir work/ui/public/small_button_03.sub") self.titleBar.but_deactivate_all.SetText("Info") self.titleBar.but_deactivate_all.SetEvent(self.about) # self.titleBar.but_deactivate_all.Show() self.titleName.SetPosition(60, 4) self.enable_rebuy = CheckBox("Repetir compra") self.enable_rebuy.Toggle() self.enable_rebuy.Hide() self.but_speed = ui.SliderBar() self.but_speed.SetParent(self) self.but_speed.SetWindowHorizontalAlignCenter() self.but_speed.SetPosition(0,360) self.but_speed.SetSliderPos(0.0) # self.but_speed.SetToolTipText("Switch-Geschwindigkeit", 0, -23) # self.but_speed.Show() self.but_speed.Hide() self.itemTabBar = ItemTabBar(self) self.itemTabBar.SetPosition(10,35) self.itemTabBar.Show() self.buyed = 0 self.buyed_rare = 0 self.SetCloseEvent(self._Hide) self.Hide = self._Hide ### NOW initialize the HELP stuff! self.help_add_item = HelpBar(0.8,'Arraste um item aqui para adicioná-lo.') self.help_add_item.SetParent(self) self.help_add_item.SetPosition(60,50) self.help_minimize = HelpBar(0.8,'Arraste o bot para a borda para torna-lo menor!',1) self.help_minimize.SetParent(self.titleBar) self.help_minimize.SetWindowHorizontalAlignCenter() self.help_minimize.SetPosition(100,-30) self.help_show_rare = HelpBar(0.85,'Isso permite que você alterne a exibição de 6/7 bônus.') self.help_show_rare.SetParent(self) # self.help_show_rare.SetPosition(35,312) self.help_rebuy = HelpBar(0.5,'O bot deve comprar de novo?') self.help_rebuy.SetParent(self) # self.help_rebuy.SetPosition(25,297) self.help_stop_all = HelpBar(0.8,'Para de rodar TODOS os itens!',1) self.help_stop_all.SetParent(self.titleBar) self.help_stop_all.SetPosition(3+5+self.titleBar.HelpBut.GetWidth()*1.2,-30) self.help_duration = HelpBar(0.8,'Retarda o bot.',1) self.help_duration.SetParent(self) def ToggleHelp(self,val): self.help_on = val def Show(self): ui.BoardWithTitleBar.Show(self) self.bot_shown = 1 def _Hide(self): ## ONLY FOR TESTING # for a in range(0,self.itemTabBar.tabCount): # self.itemTabBar.DeleteTab(0) ui.BoardWithTitleBar.Hide(self) self.bot_shown = 0 def deactivate_all(self): for a in self.itemTabBar.tabList: self.itemTabBar.tabList[a].bonusSelector.Starter.SetUp() self.itemTabBar.tabList[a].bonusSelector.Starter.OnToggleUp() self.itemTabBar.tabList[a].bonusSelector.Starter_rare_boni.SetUp() self.itemTabBar.tabList[a].bonusSelector.Starter_rare_boni.OnToggleUp() pass drag = 0 def drag_start(self): self.drag = 1 def drag_end(self): self.drag = 0 if self.pinhint > 0: self.PinShow(self.pinhint) # self.PinGroupBox = self.PinGroup() pass self.ShowPinHint(0) def PinShow(self,dir): self.PinGroupBox = self.PinGroup(self,dir) self.Hide() self.PinGroupBox.Show() def EnableInventoryTweak(self,gameWindow): self.gameWindow=gameWindow self.gameWindow.interface.wndInventory.inventoryTab[0].SetEvent(lambda arg=0: self.__SetInventoryPage(arg)) self.gameWindow.interface.wndInventory.inventoryTab[1].SetEvent(lambda arg=1: self.__SetInventoryPage(arg)) def __SetInventoryPage(self,arg): self.gameWindow.interface.wndInventory.SetInventoryPage(arg) for a in self.itemTabBar.tabList: itm = self.itemTabBar.tabList[a] if itm.index >= arg*45 and itm.index < (arg+1)*45: itm.blockBar.Show() else: itm.blockBar.Hide() help_on = 0 counter = 0 AboutWindow = None def OnUpdate(self): if self.AboutWindow: if self.AboutWindow.x_counter > 1: self.AboutWindow.x_counter -=1 self.AboutWindow.text6.SetText("Tempo: %0.1f" % (self.AboutWindow.x_counter/45.0)) elif self.AboutWindow.x_counter == 1: self.AboutWindow.Hide() # self.AboutWindow.Delete() if self.help_on == 1: (x,y) = self.itemTabBar.plusBar.GetLocalPosition() self.help_add_item.SetPosition(x+20,50) self.help_add_item.Show() self.help_stop_all.Show() self.help_minimize.Show() if self.itemTabBar.tabCount > 0: self.help_show_rare.SetPosition(25,164) self.help_show_rare.Show() self.help_rebuy.SetPosition(15,147) self.help_rebuy.Show() # self.help_duration.SetPosition(300,180) self.help_duration.SetPosition(190-5.5+self.but_speed.GetSliderPos()*int(35.5+self.but_speed.GetWidth()/2),180) self.help_duration.Show() else: self.help_show_rare.Hide() self.help_rebuy.Hide() self.help_duration.Hide() else: self.help_add_item.Hide() self.help_minimize.Hide() self.help_show_rare.Hide() self.help_rebuy.Hide() self.help_stop_all.Hide() self.help_duration.Hide() if self.drag == 1: (x1, y1) = self.GetGlobalPosition() # if x1 < 0: # x1 = 0 # elif x1 > wndMgr.GetScreenWidth()-520: # x1 = wndMgr.GetScreenWidth()-520 # if y1 < 0: # y1 = 0 # elif y1 > wndMgr.GetScreenHeight()-36-self.GetHeight(): # y1 = wndMgr.GetScreenHeight()-36-self.GetHeight() x1 = max(min(wndMgr.GetScreenWidth()-520,x1),0) y1 = max(min(wndMgr.GetScreenHeight()-36-self.GetHeight(),y1),0) self.SetPosition(x1,y1) if x1 < 30: self.ShowPinHint(1) elif wndMgr.GetScreenWidth()-x1-520 < 30: self.ShowPinHint(2) elif y1 < 30: self.ShowPinHint(3) elif wndMgr.GetScreenHeight()-y1-self.GetHeight() < 60: self.ShowPinHint(4) else: self.ShowPinHint(0) # self.SetPosition(x1+(x-self.drag_pos[0]),y1) pass if self.gameWindow != None: for a in self.itemTabBar.tabList: itm = self.itemTabBar.tabList[a] self.counter+=1 if self.counter >= int(self.but_speed.GetSliderPos()*MAX_SWITCH_DELAY_APPEND+MIN_SWITCH_DELAY): self.buyed = 0 self.buyed_rare = 0 self.counter = 0 for a in self.itemTabBar.tabList: itm = self.itemTabBar.tabList[a] itm.UpdateItem() # if itm. def about(self): self.AboutWindow = ui.ThinBoard() self.AboutWindow.SetParent(self) self.AboutWindow.SetSize(250,100) self.AboutWindow.SetWindowHorizontalAlignCenter() self.AboutWindow.SetWindowVerticalAlignCenter() self.AboutWindow.SetPosition(0,0) self.AboutWindow.Show() self.AboutWindow.x_counter = 450 self.AboutWindow.text1 = ui.TextLine() self.AboutWindow.text1.SetParent(self.AboutWindow) self.AboutWindow.text1.SetWindowHorizontalAlignCenter() self.AboutWindow.text1.SetHorizontalAlignCenter() self.AboutWindow.text1.SetPosition(0,5) self.AboutWindow.text1.SetText("Switchbot V2.2 by Metin2") self.AboutWindow.text1.SetPackedFontColor(ui.GenerateColor(58, 141, 221)) self.AboutWindow.text1.Show() self.AboutWindow.text2 = ui.TextLine() self.AboutWindow.text2.SetParent(self.AboutWindow) self.AboutWindow.text2.SetPosition(8,18) self.AboutWindow.text2.SetText("Esse Switchbot foi desenvolvido por Metin2.") self.AboutWindow.text2.Show() self.AboutWindow.text3 = ui.TextLine() self.AboutWindow.text3.SetParent(self.AboutWindow) self.AboutWindow.text3.SetPosition(8,18+13) self.AboutWindow.text3.SetText("Novas idéias são sempre bem-vindas!") self.AboutWindow.text3.Show() self.AboutWindow.text4 = ui.TextLine() self.AboutWindow.text4.SetParent(self.AboutWindow) self.AboutWindow.text4.SetPosition(8,18+13*3) self.AboutWindow.text4.SetText("Peço que você não use esse bot sem o minha") self.AboutWindow.text4.Show() self.AboutWindow.text5 = ui.TextLine() self.AboutWindow.text5.SetParent(self.AboutWindow) self.AboutWindow.text5.SetPosition(8,18+13*4) self.AboutWindow.text5.SetText("Aprovação.") self.AboutWindow.text5.Show() self.AboutWindow.text6 = ui.TextLine() self.AboutWindow.text6.SetParent(self.AboutWindow) self.AboutWindow.text6.SetPosition(200,18+13*5) self.AboutWindow.text6.SetText("Tempo: %d" % self.AboutWindow.x_counter) self.AboutWindow.text6.Show() class HelpBar(ui.Window): def __init__(self,width,text,centered = 0): ui.Window.__init__(self) self.AddFlag("not_pick") self.AddFlag("attach") img = ui.ExpandedImageBox() img.SetParent(self) img.LoadImage("d:/ymir work/ui/pattern/help_stick.tga") img.SetRenderingRect(0.0, -width, 0.0, 0.0) img.Show() self.img = img txt = ui.TextLine() txt=ui.TextLine() txt.SetParent(self) txt.SetText(text) txt.Show() img.SetPosition(0,18-width*img.GetHeight()) txt.SetPosition(0,0) txt.SetWindowHorizontalAlignCenter() if centered != 0: txt.SetHorizontalAlignCenter() # txt.SetPosition(0,0) self.txt = txt class DropDown(ui.Window): dropped = 0 dropstat = 0 last = 0 lastS = 0 maxh = 95 OnChange = None class Item(ui.ListBoxEx.Item): def __init__(self,parent, text,value=0): ui.ListBoxEx.Item.__init__(self) self.textBox=ui.TextLine() self.textBox.SetParent(self) self.textBox.SetText(text) # self.textBox.SetLimitWidth(parent.GetWidth()-132) self.textBox.Show() self.value = value def GetValue(self): return self.value def __del__(self): ui.ListBoxEx.Item.__del__(self) def __init__(self,parent,tt = "",down=1): ui.Window.__init__(self,"TOP_MOST") self.down = down self.SetParentProxy(parent) self.bg = ui.Bar("TOP_MOST") self.bg.SetParent(self) self.bg.SetPosition(0,0) self.bg.SetColor(0xc0000000) self.bg.OnMouseOverIn = self.bgMouseIn self.bg.OnMouseOverOut = self.bgMouseOut self.bg.OnMouseLeftButtonDown = self.ExpandMe self.bg.Show() self.act = ui.TextLine() self.act.SetParent(self.bg) self.act.SetPosition(4,2) self.act.SetText(tt) self.act.Show() self.GetText = self.act.GetText self.Drop = ui.Bar("TOP_MOST") self.Drop.SetParent(self.GetParentProxy()) self.Drop.SetPosition(0,21) # self.Drop.SetSize(150,95) self.Drop.SetSize(150,0) # self.Drop.SetColor(0xc00a0a0a) self.Drop.SetColor(0xff0a0a0a) self.ScrollBar = ui.ThinScrollBar() self.ScrollBar.SetParent(self.Drop) self.ScrollBar.SetPosition(132,0) # self.ScrollBar.SetScrollBarSize(95) self.ScrollBar.SetScrollBarSize(0) # self.ScrollBar.Show() self.DropList = ui.ListBoxEx() self.DropList.SetParent(self.Drop) self.DropList.itemHeight = 12 self.DropList.itemStep = 13 self.DropList.SetPosition(0,0) # self.DropList.SetSize(132,self.maxh) self.DropList.SetSize(132,13) self.DropList.SetScrollBar(self.ScrollBar) self.DropList.SetSelectEvent(self.SetTitle) self.DropList.SetViewItemCount(0) self.DropList.Show() if tt != "": self.AppendItemAndSelect(tt) self.selected = self.DropList.GetSelectedItem() self.SetSize(120,20) def __del__(self): ui.Window.__del__(self) c = 1 def AppendItem(self,text,value=0): self.c+=1 self.DropList.AppendItem(self.Item(self,text,value)) self.maxh = min(95,13*self.c) if self.c > 7: self.ScrollBar.Show() def AppendItemAndSelect(self,text,value=0): self.DropList.AppendItem(self.Item(self,text,value)) self.DropList.SelectIndex(len(self.DropList.itemList)-1) def SelectByAffectId(self,id): for x in self.DropList.itemList: if x.value == id: self.DropList.SelectItem(x) break def SetTitle(self,item): self.act.SetText(str(item.textBox.GetText())) self.last = self.DropList.basePos self.lastS = self.ScrollBar.GetPos() self.dropped = 0 self.selected = item if self.OnChange: self.OnChange() # self.Drop.Hide() def SetPosition(self,w,h): ui.Window.SetPosition(self,w,h) if self.down == 1: self.Drop.SetPosition(w,h+21) else: self.Drop.SetPosition(w,h-self.Drop.GetHeight()) def SetSize(self,w,h): ui.Window.SetSize(self,w,h) self.bg.SetSize(w,h) self.Drop.SetSize(w,0) self.DropList.SetSize(w-18,self.maxh) for x in self.DropList.itemList: x.SetSize(w-18,12) self.ScrollBar.SetPosition(w-18,0) def ExpandMe(self): if self.dropped == 1: # self.Drop.Hide() self.dropped = 0 else: # self.Drop.Show() self.dropped = 1 def OnUpdate(self): iter = 6 if self.Drop.GetHeight() < 50: self.ScrollBar.Hide() else: self.ScrollBar.Show() if self.dropped == 0 and self.dropstat == 1: if self.Drop.GetHeight() <=0: self.dropstat = 0 self.Drop.SetSize(self.Drop.GetWidth(),0) self.ScrollBar.SetScrollBarSize(self.Drop.GetHeight()) self.Drop.Hide() else: if self.Drop.GetHeight()-iter < 0: self.Drop.SetSize(self.Drop.GetWidth(),0) else: self.Drop.SetSize(self.Drop.GetWidth(),self.Drop.GetHeight()-iter) (w,h) = self.GetLocalPosition() self.SetPosition(w,h) self.ScrollBar.SetScrollBarSize(self.Drop.GetHeight()) self.DropList.SetViewItemCount(int(self.Drop.GetHeight()/13)) self.DropList.SetBasePos(self.last+1) self.DropList.SetBasePos(self.last) elif self.dropped == 1 and self.dropstat == 0: self.Drop.Show() self.SetTop() if self.Drop.GetHeight() >=self.maxh: self.Drop.SetSize(self.Drop.GetWidth(),self.maxh) self.ScrollBar.SetScrollBarSize(self.maxh) self.dropstat = 1 self.DropList.SetViewItemCount(7) self.ScrollBar.SetPos(self.lastS) else: self.ScrollBar.SetScrollBarSize(self.Drop.GetHeight()+iter) self.Drop.SetSize(self.Drop.GetWidth(),self.Drop.GetHeight()+iter) (w,h) = self.GetLocalPosition() self.SetPosition(w,h) self.DropList.SetViewItemCount(int(self.Drop.GetHeight()/13)) self.DropList.SetBasePos(self.last+1) self.DropList.SetBasePos(self.last) ## BG Hover def bgMouseIn(self): self.bg.SetColor(0xc00a0a0a) def bgMouseOut(self): self.bg.SetColor(0xc0000000) class Edit2(ui.EditLine): def __init__(self,main = "",ml = 99): ui.EditLine.__init__(self) self.SetText(main) self.main = main self.SetMax(ml) self.SetUserMax(ml) def GetText(self): res = ui.EditLine.GetText(self) if res == "": return "0" else: return res def __del__(self): ui.EditLine.__del__(self) def OnSetFocus(self): ui.EditLine.OnSetFocus(self) if ui.EditLine.GetText(self) == self.main: self.SetText("") def OnKillFocus(self): ui.EditLine.OnKillFocus(self) if ui.EditLine.GetText(self) == "": self.SetText(self.main) class CheckBox(ui.Window): checked = 0 eventUp =None eventDown=None def __init__(self,cont = ""): ui.Window.__init__(self) self.BG = ui.Bar("UI") self.BG.SetParent(self) self.BG.SetPosition(0,0) self.BG.SetSize(20,20) # self.BG.SetColor(0xc00b0b0b) self.BG.SetColor(COLOR_CHECKBOX_NOT_SELECTED) self.BG.OnMouseLeftButtonUp = self.Toggle self.OnMouseLeftButtonUp = self.Toggle self.BG.Show() self.Title = ui.TextLine() self.Title.SetParent(self) self.Title.SetPosition(25,2) self.Title.SetText(cont) self.Title.Show() self.stat = ui.TextLine() self.stat.SetParent(self.BG) self.stat.SetPosition(0,0) self.stat.SetWindowHorizontalAlignCenter() self.stat.SetWindowVerticalAlignCenter() self.stat.SetHorizontalAlignCenter() self.stat.SetVerticalAlignCenter() self.stat.SetSize(0,0) self.stat.SetText("") self.SetSize(25+self.Title.GetTextSize()[0]+5,20) self.stat.Show() def __del__(self): ui.ToggleButton.__del__(self) def Toggle(self): if self.checked == 1: self.OnToggleUp() else: self.OnToggleDown() def OnToggleUp(self): self.stat.SetText("") # self.BG.SetColor(0xc00b0b0b) self.BG.SetColor(COLOR_CHECKBOX_NOT_SELECTED) self.checked = 0 if self.eventUp: self.eventUp() def OnToggleDown(self): # self.BG.SetColor(0xf00b0b0b) self.BG.SetColor(COLOR_CHECKBOX_SELECTED) self.stat.SetText("X") self.checked = 1 if self.eventDown: self.eventDown() # Zum Testen # a = Bot() # a.Show() # oder; # Bot().Show()
    1 point
  9. Já foi publicado a algum tempo, a tempos começei a trabalhar no código disso, mas no entretanto dropei a meio porque arranjei algo melhor, no entretanto se alguém quiser o código posso o disponibilizar. Imagens Preview: Download
    1 point
  10. < ==== Sistemas ==== > 1. Sistema reportar jogador. (ESC) < ==== itens / mobs ==== > 1. Não contém nenhum item novo / mob. < ==== Proteção ==== > 1. O Hack do MarcossCC de mudar de nome não funciona 2. Kick Hack não funciona. Se alguém tentar chutar, ele vai chutá-lo até parar o hack 3. Exploite no login resolvido, também aquele na tabela do jogador + o resto das explorações com a solução neste fórum. < ==== Bugs conhecidos no servidor ==== > 1. Não encontramos nenhum erro até agora! 2. Sim as ServerFiles / Cliente tem Bugs < ==== Instalar Server Files ==== > 1. Colocar o game.twix em /usr/home Execute o seguinte comando na maquina virtual: cd /usr/home && tar -zxvf game.twix 2. Colocar o mysql.twix em /var/db Execute o seguinte comando na maquina virtual: cd /var/db && tar -zxvf mysql.twix < ==== Dados Navicat ==== > Utilizator: OrientalMT2 Parolă: !@#$$#@!ORIENTALMT22016$#@! < ==== Conta Teste ==== > ID: admin Senha: admin ID: admin2 Senha: admin Tradução original < ==== Apresentação ==== > < ==== Download Server Files ==== > https://mega.nz/#F!BJhwBAZJ!yRQGpJunbCMdRSSI_Bx8DQ VirusTotal dos arquivos Launcher Windows 7,8,10 https://www.virustotal.com/#/file/cd4ce72ec512beaa5c53efe45dc505b267f26dd8fdeab95b0191036ba2d426d1/detection game.twix https://www.virustotal.com/#/file/10ab7bf795e29b8cfa80551e6b274faf009a6dd1b96097423f228e91d5e60f6a/detection mysql.twix https://www.virustotal.com/#/file/8c7267826c7505101070e658a93c85f5efb3f06a3f97df2376e9cee1e995a638/detection Eu não consegui compilar a source game/bin dessa server files/cliente se algum conseguir pfv mede uma luz
    1 point
  11. A versão anterior foi descontinuada. Esta versão tem como base a source mainline. Corrigidos todos os avisos. Contém todas as correções de sql injection. Contém tudo o que a versão anterior tinha. Password web_api modificada para: QbBsxFZnmcPC8n6fuk6byGjMKxSUJQNxpJuCQ6LKRtX3Ycy8QM (AVISO! Modificar esta password para uma diferente e forte) Como usar o ficheiro ova(virtualbox)? 1- Instalar o VirtualBox 2- Abrir o VirtualBox 3- Extrair o ficheiro mt2source.7z 4- Ir a File-->> Import Appliance e selecionar o ficheiro ova. 5- Editar as definições da máquina a vosso gosto (memória ram, placa de rede, etc) Como usar o ficheiro ova(vmware)? 1- Instalar a Vmware Workstation 2- Abrir a vmware 3- Extrair o ficheiro TMT_metin2_src.7z 4- Ir a File-->> Open e selecionar o ficheiro ova. 5- Editar as definições da máquina a vosso gosto (memória ram, placa de rede, etc) Compilação game: Compilação db: Informações:
    1 point
  12. Bom Dia. Aqui deixo uma source de que toda gente fala bastante bem penso que ainda esta a venda e cara talvez mais actualizada que esta visto que foi um leak de 2016 de qualquer maneira continua a ser uma das melhores sources disponiveis na internet. http://www60.zippyshare.com/v/ZEe9CqjV/file.html https://www.virustotal.com/#/file-analysis/MWViMmIzMjk0YzU0MjkxZmFiM2FhMTVmN2MzOTk2OWM6MTUwNzQ2MDczMA== Desciçao da source http://daemonservice.altervista.org/docs/Source Selling.html Comsegui compilar o cliente em VS2013 com tools vs120 com a seguinte pasta de Extern http://www80.zippyshare.com/v/nW2BWf04/file.html https://www.virustotal.com/#/file-analysis/YjlmMzE5NmYxYzQ2NzgxMTZlNjVmNDg2N2U0MTAwODQ6MTUwNzQ3MTI4Nw== para compilar vao ter de ir as propriedades do projecto UserInterface e em Linker / Advanced na ultima escolha Image has Safe Exceptions Handlers defenir para No (/SAFESH:NO)
    1 point
  13. Boas Venho aqui postar as serverfiles do rubinum: Link: Ainda não testei Scan: Ficheiro: admin-panel.zip. Scan: Ficheiro: ishop.zip Scan: Ficheiro: rb-website.zip Scan: Ficheiro: share.zip pasta que contem as quests etc. Scan: Ficheiro: Sql.zip querys da Base de dados Algumas imagens Surce Conteudo Fonte Turkommo
    1 point
  14. Boas amigos. É o seguinte, eu uso o zone archiver para extarir e compilar protos 40k e entao que eu extraio o item proto, entro nele , mudo so para testar o nome da espada nivel 1 , faço tudo certo e guardo, fecho, compilo e aparece com o nome "temp.xml" e eu mudo para item proto o nome, coloco no locale no sitio certo e apago o item proto que lá estava e compilo o meu locale para meter no cliente e quando vou a entrar no jogo nao dá!!!!!!!! mudei o nome de itemproto.xml para itemproto e meti o ficheiro a chamar-se "ficheiro" no tipo de ficheiro, em vez de ser xml tentei de novo e nao deu!!!! Ao entrar no metin, na parte do login falha e aparece apenas "experiencia(..)" Agradeço a quem tente ajudar... e já agora nao consigo extrair o meu mob proto, extraio com o 40k e apenas aparece "versao (...)" em vez de tudo detalhado!!!!!! Obrigado... E, quando eu abro com notec++ o item proto ao fim de compilar ,eis o que me aparece e o ficheiro está em xml. (mas atenção que meti em xml e testei e depois meti em tipo ficheiro e testei e também nao deu, mas proto isto é apenas o que me aparece quando abro o que me dá ao fim de compilar)
    1 point
  15. Introdução Olá TMoore's visto que muitos muitos querem adquirir novos conhecimentos criar seus próprios projectos, só que como algumas pessoas tem um pouco de receio de mexer sem saber e danificar algo muitos optam por sacar algo prefeito e meter online editando apenas algumas coisinhas, isso tem vindo a transformar o metin2 cada vez mais depressivo, tendo em conta que já existia um tópico semelhante do @ tierrilopes mas já não se encontra activo e ainda tendo em conta do tópico das Files TMoore Tutorials e como muitas pessoas pediram-me a source das files e não a partilhei ainda, então decide criar este tópico para vos poder explicar como criar as "vossas" próprias server files isso iria fazer com que vocês criassem algo vosso e não simplesmente sacar as files quaisquer e meter online. Claro que este tutorial não será feito todo de uma vez porque isto será um processo demorado e o mais todos claro possível para que todos possam acompanhar todos os processos sem se perder, lembrando que são livres de colocar questões sempre que possível (Apenas no tópico, não respondo a qualquer questão relacionado a este tópico caso a questão não tenha sido feita no tópico.) 1 - Ferramentas & Recursos Primeiramente vou deixar neste tutorial o link de todas as ferramentas necessárias para prosseguir com o tutorial Winscp - Link Sim é necessário ser o Winscp porque vamos trabalhar com atalhos e é mais rápido trabalhar com atalhos através do winscp do que linha de comandos e também indico o winscp porque penso que não é possível criar atalhos através do filezilla ou Bitvise (que eu saiba) Notepad++ - Link Ou Sublime Text - Link Eu pessoalmente utilizo o notepad++ com mais frequência mas existem casos em que o notepad++ não é o mais indicado, por exemplo quando edito coisas mínimas no mob_proto ou item_proto, editando com o notepad++ ocorre erros porque o notepad++ altera algumas formatações do documento. Bitvise - Link Aconselho a utilização deste software porque utilizando este software não será necessário abrir mais outro software para nos permitir conectar via sftp ou ssh isso porque esse software por si já permite fazer ambas das conexões. Navicat - Link Este software será utilizado para a gestão da base de dados. Eter Manager - Link Aconselho a utilização deste software e não o eternexus porque trabalhando com este software podemos trabalhar de uma forma mais organizada e mais rápido do que com o eternexus. Cliente Metin2PT 2014 R40K - Link Também pode ser utilizado outro cliente sendo que não aconselho porque poderá vir a surgir duvidas devido a utilização de outro cliente diferente do tutorial. Dedicado, vps ou localhost - Caso a vossa ideia seja só testar etc, sem ter objectivo de abrir o servidor ao publico podem comprar um dedicado ou uma vps numa das seguintes hospedagens: BlazingFast VPS; EterHost VPS (Não aconselho); Kimsufi "Dedicados"; Ou podem utilizar também localhost utilizando uma das seguintes ferramentas: Virtual Box, VMware, caso a vossa ideia seja começar um projeto mais avançado com o intuito de o abrir ao publico aconselho dedicados com mais potencias tais como: OVH, Soyoustart, BlazingFast Dedicados, entre outros, isso vai ser escolha vossa dependendo do que desejam e também com o montante que pretendem gastar. Poderá existir alguns software que não foram adicionados ao tópico e que também seja necessário mais a frente serão adicionados, este tópico será actualizado uma vez por dia com um novo capitulo do tutorial, lembrando que o objectivo deste tutorial é ensinar como organizar a estrutura da files e cliente, envolvendo assim tutorias de vários temas relacionados ao metin2. Nenhum conteúdo feio no tutorial será disponibilizado para download para que todos tenham de fazer por si próprio todos os conteúdos aqui desenvolvidos. ​Próxima actualização a este tópico será para falar sobre a "Organização da área de trabalho" e "instalação das ferramentas de trabalho". Obrigado ao TierriLopes pelos conhecimentos e divulgação das ferramentas a utilizar neste tutorial, Mustafa Eroğlu pelo link do Navicat, GunnerMBT pelo Eter Manager, Rafa pelo cliente Metin2Pt. Cumprimentos Dynamic Things
    1 point
  16. https://mega.nz/folder/Fo003YLZ#WGG_CMIMEb1tQf42uxj3-g
    1 point
  17. Boas tardes comunidade! Estou com um problema... Instalei o FREEBSD em VirtualBOX, depois de configurar tudo (Pelo menos é o que penso) e inicializar a máquina, não consigo ligar a mesma através do FTP.. Segui o tutorial que vem nas files do addict.. Abaixo deixo as configurações que usei.... Caso alguem consiga dar uma ajuda fico inteiramente grato... Cumprimentos Swift
    1 point
  18. https://mega.nz/#F!RU422AjY!ZgxH4IYX6UCZlAraVq0xkA
    1 point
  19. Go to file char_battle.cpp Look for: dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100; Add this after: EffectPacket(SE_PENETRATE); Do this twice on the file.
    1 point
  20. reupload >> https://mega.nz/folder/98VDwapD#QBubg2K3fsy25WDqwyqBJQ
    1 point
  21. Go to file root/introcreate.py Look for: DESCRIPTION_FILE_NAME = ( uiScriptLocale.JOBDESC_WARRIOR_PATH, uiScriptLocale.JOBDESC_ASSASSIN_PATH, Add this before: HAIR_DATA = ( [ 1, 2, 3, 4, 5, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, ], ## Warrior [ 1, 2, 3, 4, 5, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, ], ## Assassin [ 1, 2, 3, 4, 5, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, ], ## Sura [ 1, 2, 3, 4, 5, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, ], ## Shaman ) Look for: ########################################################### if -1 != self.reservingRaceIndex: if app.GetTime() - self.reservingStartTime >= 1.5: chrSlot=self.stream.GetCharacterSlot() textName = self.editCharacterName.GetText() raceIndex = self.reservingRaceIndex shapeIndex = self.reservingShapeIndex startStat = self.START_STAT[self.reservingRaceIndex] statCon = self.stat[0] - startStat[0] statInt = self.stat[1] - startStat[1] statStr = self.stat[2] - startStat[2] statDex = self.stat[3] - startStat[3] net.SendCreateCharacterPacket(chrSlot, textName, raceIndex, shapeIndex, statCon, statInt, statStr, statDex) self.reservingRaceIndex = -1 ########################################################### Replace with: ########################################################### if -1 != self.reservingRaceIndex: if app.GetTime() - self.reservingStartTime >= 1.5: chrSlot=self.stream.GetCharacterSlot() textName = self.editCharacterName.GetText() raceIndex = self.reservingRaceIndex shapeIndex = self.reservingShapeIndex hairIndex = self.HAIR_DATA[chr.RaceToJob(self.reservingRaceIndex)][self.hairIndex]#New hair startStat = self.START_STAT[self.reservingRaceIndex] statCon = self.stat[0] - startStat[0] statInt = self.stat[1] - startStat[1] statStr = self.stat[2] - startStat[2] statDex = self.stat[3] - startStat[3] net.SendCreateCharacterPacket(chrSlot, textName, raceIndex, shapeIndex, hairIndex, statCon, statInt, statStr, statDex) #New hair self.reservingRaceIndex = -1 ########################################################### Look for: def OverOutStatButton(self): self.toolTip.Hide() Add this after: def IncreaseHair(self): chr_id = self.__GetSlotChrID(self.gender, self.slot) chr.SelectInstance(chr_id) if(self.hairIndex >= len(self.HAIR_DATA[chr.RaceToJob(chr.GetRace())]) - 1): return self.hairIndex += 1 chr.SetHair(self.HAIR_DATA[chr.RaceToJob(chr.GetRace())][self.hairIndex]) self.hairNumber.SetText(str(self.hairIndex)) chr.SetMotionMode(chr.MOTION_MODE_GENERAL) chr.SetLoopMotion(chr.MOTION_INTRO_WAIT) def DecreaseHair(self): chr_id = self.__GetSlotChrID(self.gender, self.slot) chr.SelectInstance(chr_id) if(self.hairIndex == 0): return self.hairIndex -= 1 self.hairNumber.SetText(str(self.hairIndex)) chr.SetHair(self.HAIR_DATA[chr.RaceToJob(chr.GetRace())][self.hairIndex]) chr.SetMotionMode(chr.MOTION_MODE_GENERAL) chr.SetLoopMotion(chr.MOTION_INTRO_WAIT) Look for: self.btnCreate = getChild("create_button") self.btnCancel = getChild("cancel_button") self.btnPrev = getChild("prev_button") self.btnNext = getChild("next_button") self.btnLeft = getChild("left_button") self.btnRight = getChild("right_button") self.textBoard = getChild("text_board") Add this after: self.btnIncreaseHair = getChild("increase_hair") self.hairNumber = getChild("hair_number") self.btnDecreaseHair = getChild("decrease_hair") Look for: getChild("hth_button").ShowToolTip = lambda arg=self.STAT_CON: self.OverInStatButton(arg) getChild("hth_button").HideToolTip = lambda arg=self.STAT_CON: self.OverOutStatButton() getChild("int_button").ShowToolTip = lambda arg=self.STAT_INT: self.OverInStatButton(arg) getChild("int_button").HideToolTip = lambda arg=self.STAT_INT: self.OverOutStatButton() getChild("str_button").ShowToolTip = lambda arg=self.STAT_STR: self.OverInStatButton(arg) getChild("str_button").HideToolTip = lambda arg=self.STAT_STR: self.OverOutStatButton() getChild("dex_button").ShowToolTip = lambda arg=self.STAT_DEX: self.OverInStatButton(arg) getChild("dex_button").HideToolTip = lambda arg=self.STAT_DEX: self.OverOutStatButton() Add this after: self.btnIncreaseHair.SetEvent(ui.__mem_func__(self.IncreaseHair)) self.btnDecreaseHair.SetEvent(ui.__mem_func__(self.DecreaseHair)) Look for: def Open(self): print "OPEN CREATE WINDOW ----------------------------------------------------------------------------" playerSettingModule.LoadGameData("INIT") self.reservingRaceIndex = -1 self.reservingShapeIndex = -1 Add this after: self.hairIndex = 0 Look for: def __DecreaseSlotIndex(self): Add this bellow: if(self.hairIndex > 0): for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(0, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(str(self.hairIndex)) for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(1, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(str(self.hairIndex)) Look for: def __IncreaseSlotIndex(self): Add this bellow: if(self.hairIndex > 0): for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(0, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(self.hairIndex) for i in xrange(SLOT_COUNT): chr.SelectInstance(self.__GetSlotChrID(1, i)) chr.SetHair(0) self.hairIndex = 0 self.hairNumber.SetText(self.hairIndex) Go to file locale/xx/ui/createcharacterwindow.py Look for: { "name" : "shape_button_02", "type" : "radio_button", "x" : 139, "y" : 239 + TEMPORARY_HEIGHT, "text" : "2", "default_image" : ROOT_PATH + "Middle_Button_01.sub", "over_image" : ROOT_PATH + "Middle_Button_02.sub", "down_image" : ROOT_PATH + "Middle_Button_03.sub", }, Add this after: { "name" : "increase_hair", "type" : "button", "x" : 81, "y" : 239 + TEMPORARY_HEIGHT + 25, "default_image" : "d:/ymir work/ui/game/windows/btn_plus_up.sub", "over_image" : "d:/ymir work/ui/game/windows/btn_plus_over.sub", "down_image" : "d:/ymir work/ui/game/windows/btn_plus_down.sub", }, { "name" : "hair_number", "type" : "text", "x" : 110, "y" : 239 + TEMPORARY_HEIGHT + 25, "text" : "0", }, { "name" : "character_hairstyle", "type" : "text", "x" : 43, "y" : 293, "text" : "HairStyle", "text_horizontal_align" : "center", }, { "name" : "decrease_hair", "type" : "button", "x" : 139, "y" : 239 + TEMPORARY_HEIGHT + 25, "default_image" : "d:/ymir work/ui/game/windows/btn_minus_up.sub", "over_image" : "d:/ymir work/ui/game/windows/btn_minus_over.sub", "down_image" : "d:/ymir work/ui/game/windows/btn_minus_down.sub", }, On this 2 functions: "name" : "create_button", "name" : "cancel_button", Look for: "y" : 265 + TEMPORARY_HEIGHT, Change with: "y" : 285 + TEMPORARY_HEIGHT, Go to UserInterface/Packet.h Look for: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; BYTE CON; BYTE INT; BYTE STR; BYTE DEX; } TPacketCGCreateCharacter; Replace with: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; WORD hair; BYTE CON; BYTE INT; BYTE STR; BYTE DEX; } TPacketCGCreateCharacter; Go to UserInterface/PythonNetworkStreamPhaseSelect.cpp Look for: bool CPythonNetworkStream::SendCreateCharacterPacket (BYTE index, const char *name, BYTE job, BYTE shape, BYTE byCON, BYTE byINT, BYTE bySTR, BYTE byDEX) { TPacketCGCreateCharacter createCharacterPacket; createCharacterPacket.header = HEADER_CG_PLAYER_CREATE; createCharacterPacket.index = index; strncpy (createCharacterPacket.name, name, CHARACTER_NAME_MAX_LEN); createCharacterPacket.job = job; createCharacterPacket.shape = shape; createCharacterPacket.CON = byCON; createCharacterPacket.INT = byINT; createCharacterPacket.STR = bySTR; createCharacterPacket.DEX = byDEX; Replace with: bool CPythonNetworkStream::SendCreateCharacterPacket(BYTE index, const char *name, BYTE job, BYTE shape,WORD wHair, BYTE byCON, BYTE byINT, BYTE bySTR, BYTE byDEX) { TPacketCGCreateCharacter createCharacterPacket; createCharacterPacket.header = HEADER_CG_PLAYER_CREATE; createCharacterPacket.index = index; strncpy(createCharacterPacket.name, name, CHARACTER_NAME_MAX_LEN); createCharacterPacket.job = job; createCharacterPacket.shape = shape; createCharacterPacket.hair = wHair; createCharacterPacket.CON = byCON; createCharacterPacket.INT = byINT; createCharacterPacket.STR = bySTR; createCharacterPacket.DEX = byDEX; Go to UserInterface/PythonNetworkStream.h Look for: bool SendCreateCharacterPacket (BYTE index, const char *name, BYTE job, BYTE shape, BYTE byStat1, BYTE byStat2, BYTE byStat3, BYTE byStat4); Replace with: bool SendCreateCharacterPacket(BYTE index, const char *name, BYTE job, BYTE shape, WORD wHair, BYTE byStat1, BYTE byStat2, BYTE byStat3, BYTE byStat4); Go to UserInterface/PythonNetworkStreamModule.cpp Look for: PyObject *netSendCreateCharacterPacket (PyObject *poSelf, PyObject *poArgs) { int index; if (!PyTuple_GetInteger (poArgs, 0, &index)) { return Py_BuildException(); } char *name; if (!PyTuple_GetString (poArgs, 1, &name)) { return Py_BuildException(); } int job; if (!PyTuple_GetInteger (poArgs, 2, &job)) { return Py_BuildException(); } int shape; if (!PyTuple_GetInteger (poArgs, 3, &shape)) { return Py_BuildException(); } int stat1; if (!PyTuple_GetInteger (poArgs, 4, &stat1)) { return Py_BuildException(); } int stat2; if (!PyTuple_GetInteger (poArgs, 5, &stat2)) { return Py_BuildException(); } int stat3; if (!PyTuple_GetInteger (poArgs, 6, &stat3)) { return Py_BuildException(); } int stat4; if (!PyTuple_GetInteger (poArgs, 7, &stat4)) { return Py_BuildException(); } if (index < 0 && index > 3) { return Py_BuildException(); } CPythonNetworkStream &rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendCreateCharacterPacket ((BYTE) index, name, (BYTE) job, (BYTE) shape, stat1, stat2, stat3, stat4); return Py_BuildNone(); } Replace with: PyObject* netSendCreateCharacterPacket(PyObject* poSelf, PyObject* poArgs) { int index; if (!PyTuple_GetInteger(poArgs, 0, &index)) return Py_BuildException(); char* name; if (!PyTuple_GetString(poArgs, 1, &name)) return Py_BuildException(); int job; if (!PyTuple_GetInteger(poArgs, 2, &job)) return Py_BuildException(); int shape; if (!PyTuple_GetInteger(poArgs, 3, &shape)) return Py_BuildException(); int hair; if (!PyTuple_GetInteger(poArgs, 4, &hair)) return Py_BuildException(); int stat1; if (!PyTuple_GetInteger(poArgs, 5, &stat1)) return Py_BuildException(); int stat2; if (!PyTuple_GetInteger(poArgs, 6, &stat2)) return Py_BuildException(); int stat3; if (!PyTuple_GetInteger(poArgs, 7, &stat3)) return Py_BuildException(); int stat4; if (!PyTuple_GetInteger(poArgs, 8, &stat4)) return Py_BuildException(); if (index<0 && index>3) return Py_BuildException(); CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.SendCreateCharacterPacket((BYTE)index, name, (BYTE)job, (BYTE)shape, (WORD)hair, stat1, stat2, stat3, stat4); return Py_BuildNone(); } Go to game/src/Packet.h Look for: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; BYTE Con; BYTE Int; BYTE Str; BYTE Dex; } TPacketCGPlayerCreate; Replace with: typedef struct command_player_create { BYTE header; BYTE index; char name[CHARACTER_NAME_MAX_LEN + 1]; WORD job; BYTE shape; WORD hair; BYTE Con; BYTE Int; BYTE Str; BYTE Dex; } TPacketCGPlayerCreate; Go to db/src/ClientManagerPlayer.cpp Inside: void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerCreatePacket* packet) This is default query. Please check your query of your source and adjust according. Look for: queryLen = snprintf(queryStr, sizeof(queryStr), "INSERT INTO player%s " "(id, account_id, name, level, st, ht, dx, iq, " "job, voice, dir, x, y, z, " "hp, mp, random_hp, random_sp, stat_point, stamina, part_base, part_main, part_hair, gold, playtime, " "skill_level, quickslot) " "VALUES(0, %u, '%s', %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, 0, %d, 0, ", GetTablePostfix(), packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.st, packet->player_table.ht, packet->player_table.dx, packet->player_table.iq, packet->player_table.job, packet->player_table.voice, packet->player_table.dir, packet->player_table.x, packet->player_table.y, packet->player_table.z, packet->player_table.hp, packet->player_table.sp, packet->player_table.sRandomHP, packet->player_table.sRandomSP, packet->player_table.stat_point, packet->player_table.stamina, packet->player_table.part_base, packet->player_table.part_base, packet->player_table.gold); sys_log(0, "PlayerCreate accountid %d name %s level %d gold %d, st %d ht %d job %d", packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.gold, packet->player_table.st, packet->player_table.ht, packet->player_table.job); Replace with: queryLen = snprintf(queryStr, sizeof(queryStr), "INSERT INTO player%s " "(id, account_id, name, level, st, ht, dx, iq, " "job, voice, dir, x, y, z, " "hp, mp, random_hp, random_sp, stat_point, stamina, part_base, part_main, part_hair, gold, playtime, " "skill_level, quickslot) " "VALUES(0, %u, '%s', %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, " "%d, %d, %d, %d, %d, %d, %d, %d, %d, 0, ", GetTablePostfix(), packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.st, packet->player_table.ht, packet->player_table.dx, packet->player_table.iq, packet->player_table.job, packet->player_table.voice, packet->player_table.dir, packet->player_table.x, packet->player_table.y, packet->player_table.z, packet->player_table.hp, packet->player_table.sp, packet->player_table.sRandomHP, packet->player_table.sRandomSP, packet->player_table.stat_point, packet->player_table.stamina, packet->player_table.part_base, packet->player_table.part_base, packet->player_table.parts[PART_HAIR], packet->player_table.gold); sys_log(0, "PlayerCreate accountid %d name %s level %d gold %d, st %d ht %d job %d hair %d", packet->account_id, packet->player_table.name, packet->player_table.level, packet->player_table.gold, packet->player_table.st, packet->player_table.ht, packet->player_table.job, packet->player_table.parts[PART_HAIR]); Look for: pack.player.wMainPart = packet->player_table.part_base; Add after: pack.player.wHairPart = packet->player_table.parts[PART_HAIR]; Go to game/src/input_login.cpp Look for: bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire) Replace with: bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, WORD hair, BYTE bEmpire) Look for: table->part_base = shape; Add after: table->parts[PART_HAIR] = hair; Look for: void CInputLogin::CharacterCreate(LPDESC d, const char * data) { struct command_player_create * pinfo = (struct command_player_create *) data; TPlayerCreatePacket player_create_packet; sys_log(0, "PlayerCreate: name %s pos %d job %d shape %d", pinfo->name, pinfo->index, pinfo->job, pinfo->shape); Replace with: void CInputLogin::CharacterCreate(LPDESC d, const char * data) { struct command_player_create * pinfo = (struct command_player_create *) data; TPlayerCreatePacket player_create_packet; sys_log(0, "PlayerCreate: name %s pos %d job %d shape %d hair %d", pinfo->name, pinfo->index, pinfo->job, pinfo->shape, pinfo->hair); Look for: if (!NewPlayerTable2(&player_create_packet.player_table, pinfo->name, pinfo->job, pinfo->shape, d->GetEmpire())) Replace with: if (!NewPlayerTable2(&player_create_packet.player_table, pinfo->name, pinfo->job, pinfo->shape, pinfo->hair, d->GetEmpire()))
    1 point
  22. Download : https://mega.nz/#F!NcFRnLwb!0Laz29q_ycizK2cCrZ5Y6Q!tcsVEIAZ Navicat User: root Password: 123 Senha dos arquivos está no Link Password do Mega, nos updates.
    1 point
  23. Boas comunidade, venho compartilhar uma nova serverfiles, contem alguns sistemas, deixando claro que não são de minha autoria, somente estou a compartilhar. Loja Offline, Troca Canal, SwitchBoot, Crafts e muito + ------------------------------------------------ Navicat: asilzade Link Download https://www.dosyaupload.com/6thk quem puder efetuar outro upload solicitamos para administração anexar no post. Desfrutem !
    1 point
  24. Serverfiles e Source limpas, com apenas algumas modificações básicas tais como a Loja Offline. Serverfiles: Nvl. Max 99 Loja Offline (Sistema Simples) Drop Hard (modificado) Sem Disfarces Sem novo sistema de Pets Sem montadas (fácil ativação por Quest) 4 Inventários 80 Slots Missões de vários Servidores Source: Penso que tenha os exploits resolvidos, mas não tenho a certeza. Imagens: Dados Mysql: root / admin https://mega.nz/#!GwBkEJrK!TJbnqz-wswyW2nf8ob_NrxzVRgkVww1wZ_QDMzg7LcY Créditos: Co0L
    1 point
  25. Serverfile+Source+Game+Mysql com proteção de ficheiros. Source sem sistemas, game sem quests e mapas, client limpo 292Mb Downloads : https://drive.google.com/uc?id=1z9Aaw-Z_6lCmBEcwJr9k7BcAVUnX2CxZ&export=download https://mega.nz/#F!4tY0yTKB!j4OszezEhR6BzuNQjVCzhQ Não pude fazer scan devido internet. Se gostou deixa uma avaliação
    1 point
  26. Won System Removed Offline Shop Bank Problem Fix Offline Shop Average Fixed Arms Edit Fix Fixing Error Opening All CHs Fix Okey Card System Problem Fixed bug when the item is stored Item Deletion Fix (Fixed in the Seller) Number of CH (downloaded to 4) Fix P2P Opening Master Skill Number increased to 17 Fix Some Riding Problems Fix Yang Problem (Direct Inventory Income) FPS Removed (Discarded) The Pepsi Seal has been activated (but it is cast from the game of not using contraction) 115-120 Lwl Guns Armor Attached Fix Quest Onscreen Problem Mob Drop Set Special Item Drop Set Configurations Retouching Data and Map Files Renewed LINKS: Fonte: SoluS
    1 point
  27. GAME VERSION: R40250 DB VERSION: R40250 CLIENT VERSION: R40250 FILES VERSION: v1.6 +Sequence Fix +Time bob Fix +P2p Fix +War Fix +Cube Fix +Dice Fix +CheckPoint Fix +Guild Exploit Fix +limit_time Fix +Dungeon Core Down Fix +İnternal İp Fix +Check_server Fix +Quest getflag Fix +Ox Fix +Ymir licence Fix +Fix Exploit Fix (SQL Injected) +Sql Messenger Mesaj Inject Fix +All the solutions necessary source + OFFLINE_SHOP + SASH + WON SYSTEM OFFICIAL + LYCAN + OFFICIAL PET SYSTEM + 4 INVENTORY + ETC http://i.hizliresim.com/nEq8W1.png http://i.hizliresim.com/kE5nJr.png http://i.hizliresim.com/1NRMrb.png http://i.hizliresim.com/2jp8NO.png http://i.hizliresim.com/6mj55k.png http://i.hizliresim.com/A3j577.png http://i.hizliresim.com/gXQZXL.png http://i.hizliresim.com/rEGZ0m.png http://i.hizliresim.com/7AjgRa.png http://i.hizliresim.com/6mjPgk.png http://i.hizliresim.com/5YjVrM.png http://i.hizliresim.com/jBdnzJ.png http://i.hizliresim.com/byPb4d.png http://i.hizliresim.com/0y3DmZ.png http://i.hizliresim.com/2jpZ12.png http://i.hizliresim.com/LQj3A0.png Update v1.7 http://i.hizliresim.com/OEPg4z.png Registro de alterações Won System Removed Offline Shop Bank Problem Fix Offline Shop Average Fixed Arms Edit Fix Fixing Error Opening All CHs Fix Okey Card System Problem Fixed bug when the item is stored Item Deletion Fix (Fixed in the Seller) Number of CH (downloaded to 4) Fix P2P Opening Master Skill Number increased to 17 Fix Some Riding Problems Fix Yang Problem (Direct Inventory Income) FPS Removed (Discarded) The Pepsi Seal has been activated (but it is cast from the game of not using contraction) 115-120 Lwl Guns Armor Attached Fix Quest Onscreen Problem Mob Drop Set Special Item Drop Set Configurations Retouching Data and Map Files Renewed Sursa: turkmmo Fonte: http://www.freakgamers.org Topico: Luffy https://www.virustotal.com/pt/file/55da02fde50d6b7dd6689a1a24546355352446e7afb3f2a45d2a9b16b00d7911/analysis/1487294375/ Senha para extrair arquivo: luffy Informações:
    1 point
  28. Boas Venho vos trazer mais umas serverfiles. Estas prontas a montar e rápidas de montar. O que contem as serverfiles: ----------------------------------------------------- cliente surce: server e cliente game e db ----------------------------------------------------- Serverfiles 41K neste caso 40k. Não sei se são pagas mas parecem muito boas e a rodar bem. na verssion diz marty surce mas não sei façam bom proveito delas Fiz um video a instalar as mesmas e como se instala alem disso deixei um pequeno txt de como as montar Links: Cliente 376 mb. Seguir video para montar cliente! EXE do cliente virus scan limpo Surce 97 MB Game e db 34 MB Ver video de como montar! Virus scan: mysql e game ------------------------------------------------- PW mysql: dolunay ----------------------------------------- Video tutorial Tutorial em video by mi. Fonte turkommo
    1 point
  29. Boas Pessoal! Deixo aqui a ultima versão do Best que encontrei na internet atualizada. Problemas ate agora que vi foi algumas tabelas do mysql-> play , se alguém conseguir arrumar peço que ajudem nesse problema mais fora isso eu acho elas muito boas. Tabelas corrompida: 1- bank_user 2-gemisavasi 3-okay_event 4-online - CARACTERÍSTICAS GERAIS - # 1-120 TR Tipo Servidor de Trabalho. # 5.Caracter Lycan - (dupla defesa - garra e faca) # Sistema bialog avançado. # extra refinar o sistema. # Sistema automático de eventos C ++. # Shaman Support System (Afroid). # Sistema de zona de guerra. # Sistema de Ranking de Jogadores. # Sistema de classificação da guilda. # Sistema de classificação do chefe. # Sistema NPC Remoto. # Sistema de Introdução à Guilda. # Sistema de História da Guilda. # História da Guilda - Agente - Sistema Estacionário. # Sistema avançado do banco. # Sistema WS avançado. # sistema de sucesso. # Sistema de bloqueio de contas. # Painel de Gerenciamento In-Game GM. # Sistema doméstico de passageiros. # Sistema Fast Stone Stone e BK Reading. # Sistema Imperial Tournament # Sistema Hayomi Tournament # Sistema Extra Slot. # Sistema do Painel Avançado do Jogador. # Local Save system. # Sistema OX avançado. # sistema Gun Evolution. # sistema de efeito de fantasia. # Sistema oficial de Gaya. # sistema renascido. # Gun e sistema de projeção de fantasia # Sistema Oficial Rainha Meley # Floresta Encantada Oficial e Jotun Thrym! # Semere sem erros e Razador & Orc Maze! # Sistema de inventário adicional para livro de habilidades e objetos de atualização. # Sistema de pontuação durante todo o ano , # Sistema de janela de negociação (Seamless Bugless). # Sistema de Mercado Offline Multifuncional. (Bar, Pula, Talon, oportunidades de vendas com Won) # sistema de alquimia Oficial # oficiais geração do Sistema de Armas # aparência e armaduras sistema aparência vale, # oficial sistema forte de passageiros, sistema # oficial Won, claro # Mobiliário-Buy sistema # Sistema oficial de habilidade 7 e 8 # Sistema oficial de sacola de flechas # Sistema de cálculo ortográfico (armadura, arma) # Comércio para colocar esse sistema de efeitos de itens, sistemas # mostrar os itens caiu de Moblar e slot # 2 pedaços de diferentes Botas Efsun (verde Efsun, barco normais Efsun) Sistema # Entrada sistema de segurança, traje # bônus de combinação sistema de transmissão, Artigos # Espírito sistema de fixação , # sistema de Nível Oficial Pet, mudar você exercita Costume # e esforço você adicionar sistema # Broca (Armour-gun) adicionando sistema 4.Task # sistema Youtube # sistema de chefe de segurança, # sistema oficial de talismã, # tigre e dragão Efeito óssea sistema , # sistema de demonstração de informações do monstro, # Dragon Hunters sistema de classificação, # no inventário, deve usar o sistema pet, # Ao lado deve visitar passageiro sistema de pet shaman, # Título (Title) sistema # sistema de espelho Peito v2 # Total (pm) O sistema de notificação # avançado sistema OX, e mais agradável bom sistema foi trazido para o mesmo grau que item_proto e mob_proto oficial arranjo. Todos os itens de bosses do servidor Metin2 Official estão incluídos no jogo e em todas as novas versões da versão 18.1. Obs: Quando logar com o char vai pedir uma senha para ter acesso ao inventario Password-->> 1234 Mysql Password : /*bestproduction*/ ACCOUNT / UYELIK K.d: bestpro01 Pass: 123exelans123 K.d: test Pass: 123exelans123 K.d: test Pass: 123exelans123 DOWNLOAD DO ARQUIVO https://www.mediafire.com/file/wyy7d3h1gdlc1tf/BESTProduction_FINAL_VERSIYON_07.11.2018_TR.rar/file - CONFIGURAÇÃO [Setup] - o arquivo que você baixou ''04 .files'' é um jogo e MySQL no klaksör FTP / de modo a ter-se aos diretórios topo Exemplo: http://prntscr.com/lf8jkh Se o seu servidor depois do trabalho Eliminação é completado os arquivos de instalação abaixo Execute operações. Conecte-se ao nosso servidor com o programa Putty, execute as seguintes operações. cd / usr rm -rf cd / var / db rm -rf mysql Desta forma, você excluiu com êxito a rede instalada anteriormente. Então vamos instalar a v4. Conecte-se ao seu servidor com o mesmo programa Putty e faça o seguinte. cd / tar zxvf best_game_2018.tar.gz configuração do jogo MySQL yükliyel depois que eu sou feito tar zxvf best_mysql_2018.tar.gz Após a instalação do MySQL, reinicie e inicie o jogo. Jogos começam comandos cd / usr / jogo shi temizle.sh sh baslat.sh digitar o número que deseja transformar Poucos ch. - Client Pack ajuste [Setup] - o arquivo que você baixou ''03 .Client' 'é klaksör o içindekli do desktop para o' metin2client '' em nome da criação de uma nova pasta é klaks. Da mesma forma, ''02 .Pytho o' klaksör os arquivos também está no recém-criado transferência para o Klaksör. Por exemplo: http://prntscr.com/lf8o0y Você precisa ter o Python instalado no seu computador para fechar os pacotes .https://www.python.org/downloads/ Depois vá para a página '' MakePack '' e abra o programa '' pack.py ''. Feche todos os arquivos, exceto o arquivo bin em 'MakePack', ou seja, os nomes dos pacotes, escrevendo na tela. Exemplo: http://prntscr.com/lf8pux Os pacotes que você fecha são enviados automaticamente para o intercalador do pacote no kernel, Metin2Client. #DESCULPEM PELA MINHA TRADUÇÃO PQ FIZ PELO GOOGLE TRADUTOR.
    1 point
  30. Olá pelo momento Filesim Was Near Time Warez. 10 dos clientes comprados foram abordados. Eu sou forçado a compartilhar essa porcentagem. -------------------------------------------------- -------------------------- Versão Frebsd: 9.2 Python Version: 2.7 Granny Version: 2.9 Versão do jogo: 40k -------------------------------------------------- -------------------------- 3000 tentaram online. Os textos original estão dentro dos spoiler Todos os prints https://i.tlthings.net/album/A ---------------------------------------------------------------------------- Theovahdan Npc Sistema de cinto Sistema de Transferência de Bônus de Costume Sistema de projeção versão original Sistema de mercado off-line Completamente compatível com todos os sistemas. Nível Pet System Todos os Problemas corrigem o Lidir. Escala Lidir. Sistema completamente problemático Completamente sem problema Item Sell & Delete System O livro de habilidades do sistema de nomes caído Sistema de reflexão do livro de habilidades do bate-papo Active Alchemy System Completamente Completamente Sem Costura Sistema Alquimista de Alquimia Alchemy Mirroring System Sistema de slot de anel duplo Sistema Duplo Efsun Bot Sistema de Projeção de Cura de Conversão Falling Goods Vision System Sistema de Evolução de Armas Totalmente Bugless Completamente Bone Bone System Sistema de Negociação Sistema de bônus Hp Bar System Sistema de tempo de adição de grupo e amigo Sistema de menus rápidos do inventário Yan Mini Map Systems Sistemas de barra de tarefas Sistema de irradiação Ep System Sistema de canais rápidos Meley Ini System O Sistema Florestal Ochao Dungeon System Sistema de papel espiritual Sistema de categoria de tarefa Guild General e Leader System + Sistema de Efeito de Sucesso Exitoso Novo efeito de entrada Okey Card System Npc Truing System Sistema de compensação de livro de habilidades Sistema de recompensa de nível 120 Sistema de Seqüenciamento de Sala de Cristal Sistema Shadow Warrior 5. Sistema de seleção de habilidade de nível Peles poderosas contra Lycans Sistema de economia de conta Opções de jogo e sistema 7/8 sistema de habilidade passiva Sistema de Bênção Auxiliar Todos os animais de estimação no tronco estão ligados. Cabelo Lycan Sistema de vendas com Ep Game Mysql Client Source Senha rar: FrozenShower Fica aqui oque acho que são soluções para problemas nas files/client com a tradução original Fonte: turkmmo Tópico: Eu NOVO LINK DE DOWNLOAD PELO JonGeN http://www.mediafire.com/file/jnddi31989nc548/12.07.2017+Files-Source+Tek+Pack.7z
    1 point
  31. Visulizar Arquivo Best Production V4 Informações: tlthings.net Características: Autor CAMBOJA Enviado 17/08/2018 Categoria Serverfiles
    1 point
  32. https://mega.nz/#F!g9AWQT5K!xy0W8RJsnCRTSpVwk-Oz0Q
    1 point
  33. https://mega.nz/#!XBo1DR6b!6uYTNXaqc9EItEmWQMR-jpBz_NE6vSxuXbcqQtj02Dk https://mega.nz/#!Wcp2RASY!zrjnPBcsyDKO4xTGIvGEbzLVYW-vLtIqOiS2taYsxsA https://mega.nz/#!HcZwELZS!R49RGPebq9lGRcF2okKJ1QgLmr_5cv9WP8R4EJz6E4M https://mega.nz/#!OQBjVABY!3uqYiffdkJ389FjCJBPjBkPqazi0kgjrOEiXSUkVRWA
    1 point
  34. LINK: https://drive.google.com/drive/folders/0BwI-ze23YyIIb1g2RDJoX2lQZlk http://prntscr.com/ipujou
    1 point
  35. Amigo, quando você extrai o proto ele cria sim um XML, mas quando você for compilar tem que selecionar de novo o XML, e o Zone vai criar um Item_proto_nuevo e voce renomeia para item_proto e pronto
    1 point
  36. Deixo aqui a lista de correções aplicada por mim no passado: Problema com Shura - Resolvido. Problema com Pets - Resolvido. Problema com Anti-Hacks - Resolvido. Problema com DC syshack - Resolvido. Problema com Injection SQL - Resolvido. Sistema de Pets Attack by Ivan Santos - Removido. Todos os bugs principais da source mainline - Resolvido.
    1 point
  37. Boas Venho partilhar mais umas serverfiles que eram pagas e foram postas free provavelmente traz surce cliente serverfiles. Como a minha net é limitada a 100GB não posso sacar tudo para ver e testar. Videos Link para baixar 2.19GB ------------------------------------------------------------------------------- LZO para descompacat o ROOT Coloque este lso em baixo para o desencriptar. chave Index: 02DEEE31 05815DB7 28A116A3 001A30B1 chave Pacote: 04B4A04E 1F8EF81C 0019DBA8 1D2C9FAE ------------------------------------------------------------------------------ Um pouco da conversa traduzida pelo google do tópico original: Para todos aqueles que vendem este servidor de arquivos sem direitos! A opinião do proprietário da Knoop de Metin2Angora rouba do PC de outra pessoa com o Keylogere e outros! Cuide daqueles que jogam Metin2Angora no keyloge! Não se registre com as contas metin2ro no Metin2Angora, eles verifiquem as contas e testar o script e você acordará sem itens no Metin2Ro Proof: vou postar aqui o servidor roubado por Knoop do PC. O que ele vende com 75 euros! E para aqueles que fazem o servidor, ele será backdog e muitos mais não fazem jogadores suficientes! Prova de vendas de servidor para servidor https://www.facebook.com/Knop.Tehnic/po ... 9914638299 Detalhes do arquivo do servidor Fonte: just4metin
    1 point
  38. Boas pesquisando por outros lugares encontrei mais umas serverfiles. OBS: não testei Liguagem turko Tipo pvp Videos: Link para baixar Sem scan de virus devido ao tamanho dos ficheiros e de nao ter sacado Fonte: turkommo
    1 point
  39. Problemas detectados: gmake[1]: *** No rule to make target '.obj/attr_transfer.o', needed by '../game_r41040'. Stop. Solução: Remover attr_transfer.cpp da Makefile em game/src Erro ao ligar db: Assertion failed: (index < row->size()), function AsStringByIndex, file CsvReader.cpp, line 395. Abort (core dumped) Solução: Tem de ser adaptada ferramenta para descompactar protos. FreeBSD9.3 com files e source instalados. Localização /server e /server/source Informações: user:root password:tlthings MySQL remote user: db_admin_user MySQL remote password: l5vnAsh66VawX9xC6z8iSnK3byyyAFYoBzYp88urP8MDhhFTkapLjMA2u0WsfTUv Link de download: GoogleDrive
    1 point
  40. Falta update 1.8 que saio recentemente Abraço só não consegui obter o game/db
    1 point
  41. alguém ja testou estas files? eu fiz download e isto foi modificado pela ultima vez em 2015..... (o game é de 25/05/2015) acho que nem as vou montar mas obrigado por partilhares.
    1 point
  42. estas files são pagas? no final diz comprar mas esta ai o link do mega! obrigado por partilhares
    1 point
  43. Aqui está o link no MEGA atualizado: https://mega.nz/#F!q1YAQQjB!yvtCkpHqd8c0WsJtfxZGMA Upload por mim, se deixar de funcionar avisem...
    1 point
  44. https://drive.google.com/drive/folders/0BwI-ze23YyIIb1g2RDJoX2lQZlk espero ter ajudado ! fonte: www.freakgamers.org
    1 point
  45. Segue em anexo os ficheiros epk descomprimidos. demirgame_pvpsystem.7z
    1 point
  46. Algumas correcções ao tutorial: def demirstartgame(self): net.SendQuestInputStringPacket(str(constInfo.demir startgame)) Correcto: def demirstartgame(self): net.SendQuestInputStringPacket(str(constInfo.demirstartgame)) procuramos por self.buttonDict[localeinfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP)) Debaixo adiciona mos: Este é para os clientes 40k self.buttonDict[localeinfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.demirwsgame)) self.buttonDict[localeinfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.demirgogame)) self.buttonDict[localeinfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.demirgogame)) Correcto: Procurar : self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP)) self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP)) self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP)) E substituir por: self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.demirwsgame)) self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.demirgogame)) self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.demirgogame)) Agora procura mos por: def OnPVP(self) Debaixo adiciona mos: def demirwsgame(self): net.SendChatPacket("/pvp %d" % (self.vid)) constInfo.demirstartgame = self.vid event.QuestButtonClick(constInfo.demirvidgame) def demirgogame(self): constInfo.demirstartgame = self.vid event.QuestButtonClick(constInfo.demirvid) Correcto: Agora procura mos por: def OnPVP(self): net.SendChatPacket("/pvp %d" % (self.vid)) E substituirmos por: def demirwsgame(self): net.SendChatPacket("/pvp %d" % (self.vid)) constInfo.demirstartgame = self.vid event.QuestButtonClick(constInfo.demirvidgame) def demirgogame(self): constInfo.demirstartgame = self.vid event.QuestButtonClick(constInfo.demirvid) Legendas: Letras a vermelho = Onde ouve erro no tutorial Letras a Verde = Onde ouve a correcção ao tutorial. Cumprimentos Dynamic Things
    1 point
  47. Só falta alterar os efeitos para uns traduzidos e tá malha
    1 point
×
×
  • Create New...