def OnUpdate(self): val, self.lastTime = OpenLib.timeSleep(self.lastTime, TIME_WAIT) if not val or self.State == STATE_NONE or not OpenLib.IsInGamePhase(): return if self.State == STATE_WAITING_OPEN_SHOP: #chat.AppendChat(3,"Waiting for shop to be open.") if shop.IsOpen(): self.State = STATE_SELLING return self.OpenShop() if self.State == STATE_SELLING: val, self.lastTimeSell = OpenLib.timeSleep(self.lastTimeSell, TIME_SELL) if val: if len(self.sellItems_list) == 0: self.State = STATE_BUYING return slot = self.sellItems_list.pop(0) net.SendShopSellPacketNew(slot, player.GetItemCount(slot), 1) chat.AppendChat(3, "[NPC-SHOPER] Sold item at slot " + str(slot)) return if self.State == STATE_BUYING: val, self.lastTimeBuy = OpenLib.timeSleep(self.lastTimeBuy, TIME_BUY) if (val): if len(self.buyItems_list) == 0: self.State = STATE_FINISH_SHOPPING return slot = self.buyItems_list.pop(0) net.SendShopBuyPacket(slot) else: return if self.State == STATE_FINISH_SHOPPING: self.EndNPCBusiness() return if self.State == STATE_GIVING_ITEMS: val, self.lastTimeGive = OpenLib.timeSleep(self.lastTimeGive, TIME_GIVE_ITEM) if not val: return if len(self.giveItems_list) == 0: self.EndNPCGiveItem() return else: vid = self.npcAction.SearchVIDClosest() if vid == None: #chat.AppendChat(3,"[NPC-GIVER] No NPC with vid " +str(vid)+" is close.") self.EndNPCGiveItem() return else: slot = self.giveItems_list.pop() #chat.AppendChat(3,"[NPC-GIVER] Giving "+ str(player.GetItemCount(slot)) + " item(s) at slot " +str(slot)+" to VID " +str(vid)) net.SendGiveItemPacket(vid, player.SLOT_TYPE_INVENTORY, slot, player.GetItemCount(slot)) OpenLib.skipAnswers(self.npcAction.event_answer)
def OnUpdate(self): if self.State == self.STATE_NONE or not OpenLib.IsInGamePhase(): return val, self.generalTimer = OpenLib.timeSleep(self.generalTimer, TIME_WAIT_MAP_CHANGE) if not val: return if self.State == self.STATE_MOVING: OpenLog.DebugPrint("[MAP] - State Moving") if self.currLink.GetOriginMapName( ) != background.GetCurrentMapName(): self.SetStateMapChanging() return if self.State == self.STATE_MAPCHANGING: OpenLog.DebugPrint("[MAP] - State Map Changing") self.StateMapChanging()
def OnUpdate(self): val, self.generalTimer = OpenLib.timeSleep(self.generalTimer, TIME_WAIT) if not val or not OpenLib.IsInGamePhase(): return OpenLog.DebugPrint("[MOVEMENT] - State:" + str(self.state)) if not (self.state == STATE_MOVING) or len(self.path) == 0: return next_x, next_y = self.path[0] my_x, my_y, my_z = player.GetMainCharacterPosition() maxdst = 40 if (len(self.path) == 1): maxdst = self.maxDistanceToDest if OpenLib.dist(next_x, next_y, my_x, my_y) < maxdst: self.path.pop(0) if (len(self.path) == 0): #Destination Reached self.state = STATE_FINISH if (self.callback != None): self.callback() self.callback = None self.currDestinationX = 0 self.currDestinationY = 0 return else: next_x, next_y = self.path[0] if self.lastPlayerPos == (my_x, my_y): val, self.stoppedTimer = OpenLib.timeSleep(self.stoppedTimer, TIME_STOPPED_ALLOWED) if val: #If is stuck self.path = net_packet.FindPath(my_x, my_y, self.currDestinationX, self.currDestinationY) #player.ClickSkillSlot(9) self.lastPlayerPos = (my_x, my_y) self.GoStraightToPoint(next_x, next_y)
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)