import player
import net
import ui
import chat
import chr
import app
import chrmgr
import item
import uiScriptLocale
class MultihackDialog(ui.BoardWithTitleBar):
state = "Durduruldu"
Config = (3.5, 1.0)
def __init__(self):
ui.BoardWithTitleBar.__init__(self)
self.LoadDuelWindow()
def __del__(self):
ui.BoardWithTitleBar.__del__(self)
def Destroy(self):
self.Hide()
return True
def LoadDuelWindow(self):
self.SetSize(250, 168)
self.Show()
self.AddFlag("float")
self.AddFlag("movable")
self.SetTitleName("Servername - Balik Botu")
self.SetCenterPosition()
self.SetCloseEvent(self.Close)
self.LoadButtons()
def LoadButtons(self):
self.textShow1 = ui.TextLine()
self.textShow1.SetParent(self)
self.textShow1.SetPosition(125, 40)
self.textShow1.SetHorizontalAlignCenter()
self.textShow1.SetDefaultFontName()
self.textShow1.SetText("Balik yakalama suresi")
self.textShow1.Show()
self.sliderBar1 = ui.SliderBar()
self.sliderBar1.SetParent(self)
self.sliderBar1.SetPosition(21, 60)
self.sliderBar1.SetEvent(ui.__mem_func__(self.SetConfig))
self.sliderBar1.SetSliderPos(0.28)
self.sliderBar1.Show()
self.textLine1 = ui.TextLine()
self.textLine1.SetParent(self)
self.textLine1.SetPosition(204, 58)
self.textLine1.SetDefaultFontName()
self.textLine1.SetText("3.5 saniye")
self.textLine1.Show()
self.textShow2 = ui.TextLine()
self.textShow2.SetParent(self)
self.textShow2.SetPosition(125, 80)
self.textShow2.SetHorizontalAlignCenter()
self.textShow2.SetDefaultFontName()
self.textShow2.SetText("Bekleme suresi")
self.textShow2.Show()
self.sliderBar2 = ui.SliderBar()
self.sliderBar2.SetParent(self)
self.sliderBar2.SetPosition(21, 100)
self.sliderBar2.SetEvent(ui.__mem_func__(self.SetConfig))
self.sliderBar2.SetSliderPos(0.5)
self.sliderBar2.Show()
self.textLine2 = ui.TextLine()
self.textLine2.SetParent(self)
self.textLine2.SetPosition(204, 98)
self.textLine2.SetDefaultFontName()
self.textLine2.SetText("2.5 saniye")
self.textLine2.Show()
self.startFish = ui.Button()
self.startFish.SetParent(self)
self.startFish.SetPosition(60, 130)
self.startFish.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
self.startFish.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
self.startFish.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
self.startFish.SetText("Basla")
self.startFish.SetEvent(lambda : self.ChangeState("Basla"))
self.startFish.Show()
self.stopFish = ui.Button()
self.stopFish.SetParent(self)
self.stopFish.SetPosition(129, 130)
self.stopFish.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
self.stopFish.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
self.stopFish.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
self.stopFish.SetText("Durduruldu")
self.stopFish.SetEvent(lambda : self.ChangeState("Durduruldu"))
self.stopFish.Show()
def SetConfig(self):
(Delay, Tolerance) = self.Config
if self.sliderBar1.GetSliderPos() * 9 + 1 != Delay:
Delay = self.sliderBar1.GetSliderPos() * 9 + 1
try:
Tmp = str(Delay).split(".")
Delay = str(Tmp[0]) + "." + Tmp[1][:1]
except:
pass
self.textLine1.SetText(str(Delay) + " saniye")
if self.sliderBar2.GetSliderPos() * 2 != Tolerance:
Tolerance = self.sliderBar2.GetSliderPos() * 2
try:
Tmp = str(Tolerance).split(".")
Tolerance = str(Tmp[0]) + "." + Tmp[1][:1]
except:
pass
self.textLine2.SetText(str(Tolerance) + " saniye")
self.Config = (Delay, Tolerance)
def ChangeState(self, arg):
chat.AppendChat(chat.CHAT_TYPE_NOTICE, "[Balik Botu] Durum: " + str(arg))
self.state = arg
if arg == "Basla":
if self.AddBait():
self.ProcessTimeStamp = app.GetTime()
self.FishAction()
self.state = "Balik Bekliyor"
else:
self.FishAction()
def OnRender(self):
if self.state == "Durduruldu":
return
if self.state == "Basla":
if self.ProcessTimeStamp + 4.0 < app.GetTime(): # 4 saniye
if self.AddBait():
self.FishAction()
self.ProcessTimeStamp = app.GetTime()
self.state = "Balik Bekliyor"
chat.AppendChat(chat.CHAT_TYPE_NOTICE, "[Balik Botu] Olta atildi balik bekleniyor.")
if self.state == "Fish":
if self.ProcessTimeStamp + float(self.Config[0]) < app.GetTime():
self.FishAction()
self.ProcessTimeStamp = app.GetTime()
self.state = "Basla"
if self.state == "Balik Bekliyor":
if not chrmgr.IsPossibleEmoticon(-1):
chat.AppendChat(chat.CHAT_TYPE_NOTICE, "[Balik Botu] Yem takiliyor.")
self.ProcessTimeStamp = app.GetTime() + 2.0 + float(self.RandomTolerance())
self.state = "Fish"
if self.ProcessTimeStamp + 48.0 < app.GetTime(): # 48 saniye
self.ProcessTimeStamp = app.GetTime()
self.state = "Basla"
def RandomTolerance(self):
Tolerance = float(self.Config[1])*10
Rnd = app.GetRandom(0, int(Tolerance))
return DivideToFloat(Rnd, 10)
def FishAction(self):
player.SetAttackKeyState(True)
player.SetAttackKeyState(False)
def AddBait(self):
Baits = [27800, 27801]
Baitcount = 0
for bait in Baits:
Baitcount += player.GetItemCountByVnum(bait)
if Baitcount <= 0:
chat.AppendChat(chat.CHAT_TYPE_NOTICE, "[Balik Botu] Yem kalmadi.")
self.state = "Durduruldu"
return 0
else:
for InventorySlot in xrange(player.INVENTORY_PAGE_SIZE*2):
ItemValue = player.GetItemIndex(InventorySlot)
try:
Baits.index(ItemValue)
net.SendItemUsePacket(InventorySlot)
return 1
except:
pass
def Close(self):
self.Hide()
def OnPressEscapeKey(self):
self.Close()
return True
def IsDivideAble(x, y):
if x == 0:
return
if float(x/y) == DivideToFloat(x, y):
return 1
def DivideToFloat(x, y):
y = x * (y**-1)
return y