def __init__(self): ui.ScriptWindow.__init__(self) self.Show() self.path = list() self.currDestinationX = 0 self.currDestinationY = 0 self.state = STATE_STOPPED self.stoppedTimer = OpenLib.GetTime() self.lastPlayerPos = (0, 0) self.maxDistanceToDest = 50 #self.lastMoveX,lastMoveY = (0,0) self.generalTimer = 0
def GoToPositionAvoidingObjects(self, x, y, maxDist=250, callback=None): self.maxDistanceToDest = maxDist self.callback = callback if (round(x) != round(self.currDestinationX) or round(y) != round(self.currDestinationY)): my_x, my_y, z = player.GetMainCharacterPosition() self.path = net_packet.FindPath(my_x, my_y, x, y) if (len(self.path) > 0): self.currDestinationX = x self.currDestinationY = y self.state = STATE_MOVING self.stoppedTimer = OpenLib.GetTime() return MOVING else: self.state = STATE_STOPPED self.currDestinationX = 0 self.currDestinationY = 0 return NO_PATH_FOUND else: if (self.state == STATE_FINISH): self.state = STATE_STOPPED return DESTINATION_REACHED return None
def OnUpdate(self): val, self.lastTime = OpenLib.timeSleep(self.lastTime, 0.1) if (val and self.enableButton.isOn and OpenLib.IsInGamePhase()): if self.state == self.STATE_WAITING: valWaitState, self.lastTimeWaitState = OpenLib.timeSleep( self.lastTimeWaitState, self.WaitDelaySlider.GetSliderPos() * 10) if valWaitState: if self.CheckInv() == False: return net_packet.SendStartFishing(2) chat.AppendChat( 3, "[Fishing-Bot] Using bait, and start fishing") self.SetState(self.STATE_FISHING) self.lastTimeFishState = OpenLib.GetTime() self.isRodDown = True self.isMoving = False if self.state == self.STATE_FISHING: valFishState, self.lastTimeFishState = OpenLib.timeSleep( self.lastTimeFishState, self.StartStopDelaySlider.GetSliderPos() * 10) if valFishState: chat.AppendChat(3, "[Fishing-Bot] Pulling Rod") net_packet.SendStopFishing( net_packet.SUCCESS_FISHING, self.ServerDelaySlider.GetSliderPos() * 10) self.lastTimeWaitState = OpenLib.GetTime() self.SetState(self.STATE_WAITING) self.isRodDown = False if self.state == self.STATE_GOING_TO_SHOP: #The callback will take care of leaving the state pass if self.state == self.STATE_IMPROVING_ROD: val, self.lastTimeImprove = OpenLib.timeSleep( self.lastTimeImprove, 0.5) if not val: return self.LevelUpRod() if self.state == self.STATE_PLACE_FIRE: val, self.lastTimeFire = OpenLib.timeSleep(self.lastTimeFire, 0.2) if not val: return for vid in net_packet.InstancesList: chr.SelectInstance(vid) race = chr.GetRace() if race == self.campFireRace: self.GrillFishes(vid) if self.enableButton.isOn: Movement.GoToPositionAvoidingObjects( self.startPosition[0], self.startPosition[1], callback=_PositionRestoreCallback, maxDist=250) self.SetState(self.STATE_GOING_TO_SHOP) else: self.SetState(self.STATE_WAITING)