todey During i design anti exp hack I have problems in def IsDivideAble
Reformed tried in different ways but I could not
Code:
import app
import ui
import player
import chr
import chat
import chrmgr
import time
import skill
import nonplayer
import net
import snd
import item
import math
import miniMap
import uiminimap
import background
import exception
import uiCommon
import grp
import os
import shop
import ServerInfo
import game
import chat
import thread
import pack
import uiPrivateShopBuilder
import sys
import ime
import uiTip
import interfacemodule
import messenger
import locale
import constInfo
import exchange
import textTail
import snd
import net
import effect
import wndMgr
import fly
import systemSetting
import quest
import guild
import dbg
class FarmToolsDialog(ui.ScriptWindow):
Gui = []
PotionBuffer = {}
Taus = [50821, 50822, 50823, 50824, 50825, 50826]
ExpBot = "off"
PotionManagerGui = []
PotionManager = [100, 5]
PotionManagerState = "off"
def __init__(self):
ui.ScriptWindow.__init__(self)
self.Gui = []
self.AddGui()
def __del__(self):
self.Gui[0].Hide()
try:
self.PotionManagerGui[0].Hide()
except:
pass
ui.ScriptWindow.__del__(self)
def Destroy(self):
self.Hide()
return TRUE
def CreateGuild(self):
net.SendAnswerMakeGuildPacket(self.Gui[7].GetText())
self.Gui[5].SetText("Erfahrungs-Grenze:")
self.Gui[7].SetText("100")
self.Gui[7].SetNumberMode()
self.Gui[8].SetText("off")
self.Gui[8].SetEvent(lambda : self.ToggleExpBot())
def ToggleExpBot(self):
if self.ExpBot == "off":
self.Gui[8].SetText("on")
self.ExpBot = "on"
chat.AppendChat(1, "Der Exp-Spendebot wurde aktiviert.")
else:
self.Gui[8].SetText("off")
self.ExpBot = "off"
chat.AppendChat(1, "Der Exp-Spendebot wurde deaktiviert.")
def HidePotionManagement(self):
self.PotionManagerGui[0].Hide()
def SetConfig(self):
Value, Time = self.PotionManager
MinValue = int(self.PotionManagerGui[5].GetSliderPos() * 200)
MinTime = int(self.PotionManagerGui[8].GetSliderPos() * 10)
if MinValue != Value:
self.PotionManagerGui[6].SetText("+ " + str(MinValue))
if MinTime != Time:
self.PotionManagerGui[9].SetText(str(MinTime) + " min")
self.PotionManager = [MinValue, MinTime]
def TogglePotionManager(self, state):
if state == "Start":
self.PotionManagerState = "on"
chat.AppendChat(1, "Der Potion Manager wurde gestartet.")
else:
self.PotionManagerState = "off"
chat.AppendChat(1, "Der Potion Manager wurde angehalten.")
def OnRender(self):
if self.PotionManagerState != "on" or player.GetStatus(player.HP) <= 0:
return
if not shop.IsOpen():
chat.AppendChat(1, "Bitte öffne zuerst einen Shop.")
self.TogglePotionManager("Stop")
return
MinValue, MinTime = self.PotionManager
MinTime = MinTime * 60
ItemIndex = self.PotionManagerGui[2].GetSelectedItem()
if ItemIndex:
pass
else:
chat.AppendChat(chat.CHAT_TYPE_INFO, "Bitte wähle ein Item aus!")
return
PotionValue = int(ItemIndex.GetText().split(" ")[0])
#Check Potions:
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemIndex = player.GetItemIndex(InventorySlot)
if PotionValue == ItemIndex:
Value0, Value , Time = [player.GetItemMetinSocket(InventorySlot, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
if Value >= MinValue and Time >= MinTime:
self.TogglePotionManager("Stop")
else:
net.SendShopSellPacket(InventorySlot)
if self.PotionManagerState != "on":
return
#Buy Potions:
for EachShopSlot in xrange(shop.SHOP_SLOT_COUNT):
ShopItemValue = shop.GetItemID(EachShopSlot)
if ShopItemValue == int(PotionValue):
net.SendShopBuyPacket(EachShopSlot)
break
def OpenPotionManagement(self):
self.PotionManagerGui = []
self.PotionManager = [100, 5]
self.PotionManagerState = "off"
tmp = [
[[ui.BoardWithTitleBar, ""], [200, 340], [0,0], [["SetCenterPosition", [""]], ["SetCloseEvent", [self.HidePotionManagement]], ["SetTitleName", ["Potion Manager"]]], ["movable", "float"]],
[[ui.SlotBar, 0], [170, 140], [10, 35], [], []],
[[ui.ListBoxEx, 0], [0, 0], [25, 50], [["SetViewItemCount", [6]]], []],
[[ui.ScrollBar, 0], [0, 0], [160, 40], [["SetScrollBarSize", [130]]], []],
[[ui.TextLine, 0], [0, 0], [70, 180], [["SetDefaultFontName", [""]], ["SetText", ["Mindest Wert"]], ["SetFontColor", [0.6, 0.7, 1.0]]], []],
[[ui.SliderBar, 0], [0, 0], [13, 200], [["SetEvent", [ui.__mem_func__(self.SetConfig)]], ["SetSliderPos", [0.5]]], []],
[[ui.TextLine, 0], [0, 0], [85, 215], [["SetDefaultFontName", [""]], ["SetText", ["+ 100"]], ], []],
[[ui.TextLine, 0], [0, 0], [85, 240], [["SetDefaultFontName", [""]], ["SetText", ["Dauer"]], ["SetFontColor", [0.6, 0.7, 1.0]]], []],
[[ui.SliderBar, 0], [0, 0], [13, 260], [["SetEvent", [ui.__mem_func__(self.SetConfig)]], ["SetSliderPos", [0.5]]], []],
[[ui.TextLine, 0], [0, 0], [87, 275], [["SetDefaultFontName", [""]], ["SetText", ["5 min"]], ], []],
[[ui.Button, 0], [0, 0], [35, 300], [['SetUpVisual', ["d:/ymir work/ui/public/middle_button_01.sub"]],['SetOverVisual', ["d:/ymir work/ui/public/middle_button_02.sub"]], ['SetDownVisual', ["d:/ymir work/ui/public/middle_button_03.sub"]], ["SetText", ["Start"]], ['SetEvent', [lambda : self.TogglePotionManager("Start")]]], []],
[[ui.Button, 0], [0, 0], [105, 300], [['SetUpVisual', ["d:/ymir work/ui/public/middle_button_01.sub"]],['SetOverVisual', ["d:/ymir work/ui/public/middle_button_02.sub"]], ['SetDownVisual', ["d:/ymir work/ui/public/middle_button_03.sub"]], ["SetText", ["Stop"]], ['SetEvent', [lambda : self.TogglePotionManager("Stop")]]], []],
]
GuiParser(tmp, self.PotionManagerGui)
self.PotionManagerGui[2].SetScrollBar(self.PotionManagerGui[3])
for blaaa in self.Taus:
self.PotionManagerGui[2].AppendItem(Item(str(blaaa) + " " + str(item.GetItemName(item.SelectItem(blaaa)))))
def AddGui(self):
Gui = [
[[ui.ThinBoard, ""], [349, 537], [0,0], [["SetCenterPosition", [""]]], ["movable", "float"]],
[[ui.Button, 0], [0, 0], [313, 15], [['SetUpVisual', ["d:/ymir work/ui/public/close_button_01.sub"]],['SetOverVisual', ["d:/ymir work/ui/public/close_button_02.sub"]], ['SetDownVisual', ["d:/ymir work/ui/public/close_button_03.sub"]], ['SetToolTipText', ["Inchide", 0, - 23]], ['SetEvent', [lambda : self.__del__()]]], []],
[[ui.TextLine, 0], [0, 0], [113, 18], [["SetDefaultFontName", [""]], ["SetText", ["Farm Tools by DaRealFreak"]], ["SetFontColor", [0.1, 0.7, 1.0]]], []],
[[ui.TextLine, 0], [0, 0], [129, 40], [["SetDefaultFontName", [""]], ["SetText", ["Auto Potion Usage"]], ["SetFontColor", [0.6, 0.7, 1.0]]], []],
[[ui.TextLine, 0], [0, 0], [134, 392], [["SetDefaultFontName", [""]], ["SetText", ["Guild Management"]], ["SetFontColor", [0.6, 0.7, 1.0]]], []],
[[ui.TextLine, 0], [0, 0], [137, 405], [["SetDefaultFontName", [""]], ["SetText", ["Enter Guildname:"]], ], []],
[[ui.SlotBar, 0], [100, 18], [129, 425], [], []],
[[ui.EditLine, 6], [100, 17], [10, 2], [["SetMax", [12]], ["SetFocus", [""]]], []],
[[ui.Button, 0], [0, 0], [134, 450], [['SetUpVisual', ["d:/ymir work/ui/public/large_button_01.sub"]],['SetOverVisual', ["d:/ymir work/ui/public/large_button_02.sub"]], ['SetDownVisual', ["d:/ymir work/ui/public/large_button_03.sub"]], ["SetText", ["Create Guild"]], ['SetEvent', [lambda : self.CreateGuild()]]], []],
[[ui.TextLine, 0], [0, 0], [131, 482], [["SetDefaultFontName", [""]], ["SetText", ["Potion Management"]], ["SetFontColor", [0.6, 0.7, 1.0]]], []],
[[ui.Button, 0], [0, 0], [134, 500], [['SetUpVisual', ["d:/ymir work/ui/public/large_button_01.sub"]],['SetOverVisual', ["d:/ymir work/ui/public/large_button_02.sub"]], ['SetDownVisual', ["d:/ymir work/ui/public/large_button_03.sub"]], ["SetText", ["Potion Manager"]], ['SetEvent', [lambda : self.OpenPotionManagement()]]], []],
]
GuiParser(Gui, self.Gui)
#Guild System Fix:
if player.GetGuildID() != 0:
self.Gui[5].SetText("Erfahrungs-Grenze:")
self.Gui[5].SetPosition(134, 405)
self.Gui[7].SetText("100")
self.Gui[7].SetNumberMode()
self.Gui[8].SetText("off")
self.Gui[8].SetEvent(lambda : self.ToggleExpBot())
self.Potions = []
for i in xrange(50813, 50827):
self.Potions.append(i)
self.Potions.remove(50815)
self.Potions.remove(50816)
self.Leftovers = [50801, 50802, 50107, 50108, 71027, 71028, 71029, 71030, 71044, 71045, 27102]
for bla in self.Leftovers:
self.Potions.append(bla)
tmp = []
x = 40
y = 70
for potion in self.Potions:
Index = self.Potions.index(potion)
if IsDivideAble(Index, 4):
x = 40
y += 50
ItemName = item.GetItemName(item.SelectItem(potion))
ItemIcon = item.GetIconImageFileName()
button = [[ui.ExpandedImageBox, 0], [0, 0], [x, y], [['LoadImage', [ItemIcon]]], []]
name = [[ui.Button, 0], [0, 0], [x - 15, y + 30], [['SetUpVisual', ["d:/ymir work/ui/public/middle_button_01.sub"]],['SetOverVisual', ["d:/ymir work/ui/public/middle_button_02.sub"]], ['SetDownVisual', ["d:/ymir work/ui/public/middle_button_03.sub"]], ["SetText", [ItemName]], ['SetEvent', [lambda arg = (self.Potions.index(potion)): self.AutoUsage(arg)]]], []]
tmp.append(button)
tmp.append(name)
x += 78
GuiParser(tmp, self.Gui)
def AutoUsage(self, ItemIndex):
ItemValue = self.Potions[ItemIndex]
try:
del self.PotionBuffer[ItemValue]
chat.AppendChat(1, item.GetItemName(item.SelectItem(ItemValue)) + " nicht mehr genutzt.")
except KeyError:
self.PotionBuffer[ItemValue] = app.GetGlobalTimeStamp()
chat.AppendChat(1, item.GetItemName(item.SelectItem(ItemValue)) + " ab jetzt automatisch genutzt.")
def UsePotion(self, ItemValue):
if player.GetItemCountByVnum(ItemValue) == 0:
return
Firework = [50107, 50108]
Berries = [50813, 50814, 50817, 50818, 50819, 50820, 50801, 50802]
GodItems = [71027, 71028, 71029, 71030]
HelpItems = [71044, 71045, 27102]
if ItemValue in self.Taus:
HighestValue = [0, 0]
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemIndex = player.GetItemIndex(InventorySlot)
if ItemValue == ItemIndex:
Value0, Value , Time = [player.GetItemMetinSocket(InventorySlot, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)]
if HighestValue[0] < Value:
HighestValue = [Value, InventorySlot, Time]
self.PotionBuffer[ItemValue] = app.GetGlobalTimeStamp() + HighestValue[2] + 2
net.SendItemUsePacket(HighestValue[1])
elif ItemValue in Firework:
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemIndex = player.GetItemIndex(InventorySlot)
if ItemValue == ItemIndex:
net.SendItemUsePacket(InventorySlot)
self.PotionBuffer[ItemValue] = app.GetGlobalTimeStamp() + 482
break
elif ItemValue in Berries:
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemIndex = player.GetItemIndex(InventorySlot)
if ItemValue == ItemIndex:
net.SendItemUsePacket(InventorySlot)
self.PotionBuffer[ItemValue] = app.GetGlobalTimeStamp() + 362
break
elif ItemValue in GodItems:
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemIndex = player.GetItemIndex(InventorySlot)
if ItemValue == ItemIndex:
net.SendItemUsePacket(InventorySlot)
self.PotionBuffer[ItemValue] = app.GetGlobalTimeStamp() + 1802
break
elif ItemValue in HelpItems:
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemIndex = player.GetItemIndex(InventorySlot)
if ItemValue == ItemIndex:
net.SendItemUsePacket(InventorySlot)
self.PotionBuffer[ItemValue] = app.GetGlobalTimeStamp() + 603
break
chat.AppendChat(1, "Auto Usage: " + str(ItemValue))
def OnUpdate(self):
if player.GetGuildID() != 0 and self.ExpBot == "on":
try:
Exp = player.GetEXP()
if Exp >= int(self.Gui[7].GetText()) and Exp >= 100:
net.SendGuildOfferPacket(Exp)
except:
self.ToggleExpBot()
chat.AppendChat(1, "Bitte gebe einen Wert an.")
if self.PotionBuffer == {}:
return
for Potion in self.PotionBuffer:
if app.GetGlobalTimeStamp() >= self.PotionBuffer[Potion]:
self.UsePotion(Potion)
def IsMobAlive(vid):
global LastCheck
global MatchCount
global HookedVid
chr.SelectInstance(vid)
BoundBox = chr.GetBoundBoxOnlyXY(vid)
Distance = player.GetCharacterDistance(vid)
if chr.GetInstanceType(vid) == chr.INSTANCE_TYPE_ENEMY:
if HookedVid[0] == vid and HookedVid[1] <= 0 and Distance <= 200:
return 0
if LastCheck == str(BoundBox):
MatchCount += 1
else:
MatchCount = 0
LastCheck = str(BoundBox)
if Distance >= 975:
return 1
if MatchCount >= 9:
MatchCount = 0
return 0
else:
return 1
else:
if BoundBox[3] >= 175:
return 0
else:
return 1
def IsBetween(x, y, z):
tmp = []
for i in xrange(x, y):
tmp.append(i)
try:
tmp.index(z)
return 1
except:
pass
def GuiParser(guiobjects, list):
#[Type, Parentindex],[Sizex, Sizey], [Posx, Posy], [commands], [flags]
for object in guiobjects:
Object = object[0][0]()
if object[0][1] != "":
Object.SetParent(list[object[0][1]])
if object[1][0] + object[1][1] != 0:
Object.SetSize(object[1][0], object[1][1])
if object[2][0] + object[2][1] != 0:
Object.SetPosition(object[2][0], object[2][1])
for command in object[3]:
cmd = command[0]
attr = getattr(Object,cmd)
if callable(attr):
argument = command[1]
lenght = len(argument)
if lenght == 1:
if argument[0] == "":
attr()
else:
attr(argument[0])
elif lenght == 2:
attr(argument[0], argument[1])
elif lenght == 3:
attr(argument[0], argument[1], argument[2])
elif lenght == 4:
attr(argument[0], argument[1], argument[2], argument[3])
for flag in object[4]:
Object.AddFlag(str(flag))
Object.Show()
list.append(Object)
def IsDivideAble(x, y):
if x == 0:
return
if float(x/y) == DivideToFloat(x, y):
return 1
def DivideToFloat(x, y):
try:
return x * (y**-1)
except:
return 0
def Show(self):
ui.ThinBoard.Show(self)
start = FarmToolsDialog()
start.Show()
(no selected item data)
please
Please help me





