Example #1
0
def gotoCity(proc, cityid, wayPointList):
    
    def isClose(x1, y1):
        x, y = dolScript.getSeaPos(proc)
        return dolLib.distance(x1, y1, x, y) <= 10
    
    print 'Go to City %x' % (cityid)

    for x1, y1 in wayPointList:
        x, y = dolScript.getSeaPos(proc)
        log('Going to %d, %d' % (x1, y1))
        log('My pos = %d, %d' % (x, y))
        while(dolLib.distance(x1, y1, x, y) > 5):
            log('---Going to %d, %d' % (x1, y1))
            dolLib.turnPos(proc, x1, y1)
            time.sleep(2)
            
            state = dolScript.getSailState(proc)
            if(state < 4):
                dolCall.sail(proc, 4)
                time.sleep(2)
            
            if(not isClose(x1, y1) and not dolScript.isSceneChange(proc) and not dolScript.isAutoSail(proc) and dolScript.getHP(proc) >= 10):
                dolCall.custom_safe(proc, 1)
                time.sleep(2)
                
            sCount, sList = dolScript.getSkill(proc) 
    
            if(not isClose(x1, y1) and not dolScript.isSceneChange(proc) and sCount != 3 and 75 not in sList): #75 == 警戒
                log("发动警戒技能") 
                dolCall.custom_safe(proc, 3)#f3 警戒
                time.sleep(2)
            
            
            
            if(not isClose(x1, y1) and dolScript.getHPRatio(proc) < 0.4):
                if(not dolScript.isOnline(proc)):
                    break
                    
                hp1 = dolScript.getHP(proc)
                log("要补行动力, 行动力 = %d" % (hp1))
                dountil(dolScript.isNormal, [proc])
                
                dolCall.custom_safe(proc, 7) #f7 要设置为料理
                time.sleep(2)
                hp2 = dolScript.getHP(proc)
                log("吃了一个料理, 行动力 = %d" % (hp2))
                if(hp1 == hp2):
                    time.sleep(5)
                time.sleep(0.2)
            x, y = dolScript.getSeaPos(proc)
            print "Now in (%d, %d), distance to (%d, %d) is %d" % (x,y, x1, y1, dolLib.distance(x1, y1, x, y))
    dolCall.sail(proc, 0)
    dolCall.enterDoor(proc, cityid)
            
        
    
Example #2
0
 def lib2Dock(self):
     proc = self.proc
     while(dolScript.getLocationType(proc) == dolCallEnum.LocType.House):
         dolCall.enterDoor(proc, self.cityRead.libOutID)
         time.sleep(0.5)
     while(dolScript.getLocationType(proc) == dolCallEnum.LocType.City):
         dolCall.move(proc, dolCallEnum.MoveTo.Dock)
         time.sleep(0.5)
     
     self.nextDoFunc = self.toSecDock
     self.nextDoPara = []
Example #3
0
 def dock2Lib(self):
     self.makeAllDo(dolCall.move, [self.cityRead.downShip])
     
     proc = self.proc
     while(dolScript.getLocationType(proc) != dolCallEnum.LocType.City):
         dolCall.move(proc, self.cityRead.downShip)
         time.sleep(1.5)
     
     myid = dolScript.getPCID(proc)
     self.makeAllDo(dolCall.follow, [myid])    
     
     x, y = self.cityRead.libEnterPos
     dolCall.walk(proc, x, y)
     time.sleep(1)
     dolCall.enterDoor(proc, self.cityRead.libEnterID)
     
     self.nextDoFunc = self.read
     self.nextDoPara = [self.hwnd, self.proc]
Example #4
0
def kaitu(proc, dtaClass):
    hlper = helper.ProcessHelper()
    hwnd = hlper.getHwndByProc(proc)
    assert isinstance(dtaClass, kaituDta.kaituDtaBase)
    
    def __printLastLog(depth = 5):
        print 'last log'
        logList = dolScript.readLog(proc, depth)
        for log in logList:
            print log
    
    def __stopSkill():
        while(True):
            sc, _ = dolScript.getSkill(proc)
            if(sc != 0):
                dll.Mouse('LClick', hwnd, 780, 290)
                time.sleep(0.5)
                dll.Key('KeyClick', hwnd, win32con.VK_RETURN)
                time.sleep(1)
            else:
                break
    
    while(True):
        while(True):
            x, y = dtaClass.kaiPos
            dolCall.walk(proc, x, y)
            
            while(dolScript.getHP(proc) < 20):
                dolCall.custom_safe(proc, 7)
                time.sleep(1)
            
            dolCall.custom_safe(proc, 4)
            
            statAddr = 0x00B72FB8
            
            statArr = []
            
            while(not dolScript.inLog(proc, '點經驗。', 2) and not dolScript.inLog(proc, '冒險等級上升到', 2) and not dolScript.inLog(proc, '冒險經驗值達到了', 2)):
                
                sub = '這附近好像有什麼東西'
                if(dolScript.inLog(proc, sub, 2)):
                    print '好像有什麼東西, 繼續'
                    dolCall.custom_safe(proc, 4)
                    time.sleep(2)
                if(dolScript.inLog(proc, '未能發現任何物品')):
                    if(not dolScript.inLog(proc, '開鎖失敗了')):    
                        __printLastLog()
                        print "can't find any item"
                        __stopSkill()
                        beep('', '没图了!')
                        
                        return    
                    else:
                        dolCall.custom_safe(proc, 4)
                        
                time.sleep(0.2)
                
                print 'wait ... %d' % (dolScript.getByte(proc, statAddr))
                statArr.append(dolScript.getByte(proc, statAddr))
            print 'final wait ... %d' % (dolScript.getByte(proc, statAddr))
            statArr.append(dolScript.getByte(proc, statAddr))
            
            logger = TextLogger('kaituLog.txt')
            logger.log(repr(statArr))
            
            if(dolScript.inLog(proc, '未能發現任何物品')):
                if(not dolScript.inLog(proc, '開鎖失敗了')):  
                    __printLastLog() 
                    print "can't find any item"
                    __stopSkill() 
                    beep('', '没图了!')
                    return
                else:
                    continue
            __printLastLog()
            break
        
        __stopSkill()
            
        
        x, y = dtaClass.churchOutPos
        dolCall.walk(proc, x, y)
        dolCall.enterDoor(proc, dtaClass.churchOutID)
        
        x, y = dtaClass.reportEnterPos
        dolCall.walk(proc, x, y)
        dolCall.enterDoor(proc, dtaClass.reportEnterID)
        
        x, y = dtaClass.reportPos
        dolCall.walk(proc, x, y)
        bossid = dtaClass.reportNPCID
        
        while(not dolScript.isDialogOpen(proc)):
            dolCall.openDialog(proc, bossid, 0x65)
            time.sleep(0.5)
        dountil(dolScript.isDialogOpen, [proc])
        
        while(dolScript.getReportSeq(proc) != dtaClass.subSeq):
            dll.Key('KeyClick', hwnd, win32con.VK_DOWN)
            time.sleep(0.5)
        
        
        dll.Key('KeyClick', hwnd, win32con.VK_RETURN)
        time.sleep(1)
        while(not dolScript.inLog(proc, '已經做了報告。', 2) and not dolScript.inLog(proc, '點聲望', 2) ):
            
            dll.Key('KeyClick', hwnd, win32con.VK_RETURN)
            time.sleep(1)
        
        dolCall.enterDoor(proc, dtaClass.reportOutID)
        x, y = dtaClass.churchPos
        dolCall.walk(proc, x, y)
        dolCall.enterDoor(proc, dtaClass.churchEnterID)