def rushWall(hwnd, proc): ''' 撞墙 ''' if(dolScript.getLocationType(proc) != dolCallEnum.LocType.Sea): print 'not in sea! Exit!' return myname = dolScript.getRoleName(proc) print myname def __alert(): #logger.log( "断线了,退出脚本") title = "警告" message = "[%s] 断线 !!!".decode('utf-8') message = message % (myname) message = message.encode('utf-8') beep(title, message) cos, sin = dolScript.getAngleT(proc) cos = -cos sin = -sin while(True): if(not dolScript.isOnline(proc)): __alert() return if(dolScript.getLocationType(proc) != dolCallEnum.LocType.Sea): print 'not in sea! Exit!' return dolCall.turnT(proc, cos, sin) print 'turn...' time.sleep(0.2)
def sailing(hwnd, proc, hwndList = None): ''' 航行异常处理 ''' global sailingLock stormWeather = 0x48 if(hwndList == None): hwndList = [hwnd] myid = dolScript.getPCID(proc) party = dolScript.getParty(proc) leadHwnd = None myname = dolScript.getRoleName(proc) if(party != [] and myid != party[0]): for hwnd in hwndList: if(__findLead(hwnd)): leadHwnd = hwnd if(leadHwnd == None): print "找不到队长,退出" return log( "[%s] 开始队员异常处理" % (myname)) count = 0 while(True): #if(count % 20 == 0): #log( "[%s] 报到!" % (myname)) if(dolScript.getLocationType(proc) != dolCallEnum.LocType.Sea): log( "[%s] Not in sea, exit" %(myname)) break if(not dolScript.isOnline(proc)): log( "[%s] 断线了, 退出脚本" % (myname)) beep(unicode("警告"), unicode("[%s] 断线了!!!" % (myname))) break if(dolScript.isBadWeather(proc)): log("遇到暴风") while(dolScript.getSailState(proc) != 0): dolCall.sail(proc, 0) time.sleep(0.2) beep(unicode("警告"), unicode("遇到暴风!!!")) log('遇到暴风, 已停船, 停止脚本') break statetxt = dolScript.getShipState(proc) if(statetxt == "鼠患"): leadProc = WindowHelper.getProcByHwnd(leadHwnd) log("[%s]发现<%s>,请求队长发动驱除技能" % (myname, statetxt)) dountil(dolScript.isNormal, [leadProc]) dolCall.custom(leadProc, 4)#f4 驱除 time.sleep(2) win32api.CloseHandle(leadProc) count += 1 time.sleep(0.5) log( "[%s] 退出脚本sailing" % (myname)) return print "sailing()" a = MutexGuard(sailingLock) print "Lock acquired" count = 0 while(True): if(not dolScript.isOnline(proc)): log( "断线了, 退出脚本") beep(unicode("警告"), unicode("[%s] 断线了!!!" % (myname))) break if(dolScript.getLocationType(proc) != dolCallEnum.LocType.Sea): log( "Not in sea, exit") break #if(count % 10 == 0): # log("Sailing() running...") if(dolScript.getCombat(proc) == 2): #被攻击 log("停战") dountil(dolScript.isNormal, [proc]) dolCall.custom(proc, 6) #f6 要设置为停战 time.sleep(2) if(dolScript.isBadWeather(proc)): log("遇到暴风") while(dolScript.getSailState(proc) != 0): dolCall.sail(proc, 0) time.sleep(0.2) beep(unicode("警告"), unicode("遇到暴风!!!")) log('遇到暴风, 已停船, 停止脚本') break while(dolScript.getHPRatio(proc) < 0.4): if(not dolScript.isOnline(proc)): break hp1 = dolScript.getHP(proc) log("要补行动力, 行动力 = %d" % (hp1)) dountil(dolScript.isNormal, [proc]) dolCall.custom(proc, 7) #f7 要设置为料理 time.sleep(2) hp2 = dolScript.getHP(proc) log("吃了一个料理, 行动力 = %d" % (hp2)) if(hp1 == hp2): time.sleep(5) time.sleep(0.2) if(not dolScript.isAutoSail(proc) and dolScript.getSailState(proc) != 0 and dolScript.getWeather(proc) != stormWeather): log("操帆") dountil(dolScript.isNormal, [proc]) dolCall.custom(proc, 1) #f1 要设置为操帆 time.sleep(3) statetxt = dolScript.getShipState(proc) if(statetxt == "鼠患" or statetxt == "海藻"): log("发现<%s>,发动驱除技能" % (statetxt)) dountil(dolScript.isNormal, [proc]) dolCall.custom(proc, 4)#f4 驱除 time.sleep(3) sCount, sList = dolScript.getSkill(proc) if(sCount != 3 and 75 not in sList): #75 == 警戒 log("发动警戒技能") dountil(dolScript.isNormal, [proc]) dolCall.custom(proc, 3)#f3 警戒 time.sleep(2) #======================================================================= # if(sCount != 3 and 12 not in sList): #12 == 钓鱼 # log("发动钓鱼技能") # dountil(dolScript.isNormal, [proc]) # dolCall.custom(proc, 2) #f2 钓鱼 # time.sleep(2) #======================================================================= preFatigue = dolScript.getFatigue(proc) if(preFatigue > 40): while(preFatigue > 40): if(not dolScript.isOnline(proc)): break log("要消除疲劳, 疲劳 = %f" % (preFatigue)) dountil(dolScript.isNormal, [proc]) dolCall.custom(proc, 7) #f7 要设置为料理 fatigue = dolScript.getFatigue(proc) time.sleep(2) log("吃了一个料理, 疲劳 = %f" % (fatigue)) if(fatigue == preFatigue): log("料理并不能降低疲劳") break else: preFatigue = fatigue count += 1 time.sleep(0.3)