Exemplo n.º 1
0
def main():
    InitLog()

    gli = (31, 21, 37, 37)
    glp = (31 + 37 // 2, 21 + 37 // 2)

    print("固定左侧 x: %d y: %d w: %d h: %d 中心点: (%d, %d)" %
          (gli[0], gli[1], gli[2], gli[3], glp[0], glp[1]))

    imgfile = WindowCaptureToFile("TWINCONTROL", "WeGame", GetvercodeDir(),
                                  284, 171, 280, 161)

    if imgfile == "":
        logger.warning("截取验证拖动图片失败")
        return

    img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)

    x, y, w, h = GetRightPos(img)
    grp = (x + w // 2, y + h // 2)
    print("x: %d y: %d w: %d h: %d 中心点: (%d, %d)" %
          (x, y, w, h, grp[0], grp[1]))

    dis = grp[0] - glp[0]
    print("横轴距离: %d" % (dis))

    beginx, beginy = 333, 354
    aj().MouseMoveToTgp(333, 354), KongjianSleep()
    aj().MouseLeftDown(), KongjianSleep()
    aj().MouseMoveR(10, 0), KongjianSleep()

    movetox, movetoy = beginx + dis, beginy
    print("移动到 %d %d" % (movetox, movetoy))
    aj().MouseMoveToTgp(movetox, movetoy)
    aj().MouseLeftUp(), KongjianSleep()
Exemplo n.º 2
0
    def ChangeEquip(self):
        if not OpenBagScene():
            logger.warning("打开装备栏失败")
            return

        bagpos = bagScene.Pos()

        aj().MouseMoveTo(bagpos[0] - 91, bagpos[1] + 192), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        def EquipBetter():
            for v in CheckReplices:
                betterEquip = self.BagEquipBetter(v[0], v[1])
                if betterEquip is not None:
                    logger.info("更换装备: %s", betterEquip)
                    pos = self.BagIdxToPos(betterEquip.idx - 9, bagpos)
                    aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
                    aj().MouseLeftDown(), KongjianSleep()
                    aj().MouseMoveTo(bagpos[0],
                                     bagpos[1] + 100), KongjianSleep()
                    aj().MouseLeftUp(), KongjianSleep()
                    aj().MouseLeftClick(), KongjianSleep()

        # 两次调用. 防止魔法封印
        EquipBetter()

        if self.DoesBagHaveBetterEquip():
            RanSleep(0.5)
            EquipBetter()
Exemplo n.º 3
0
    def CloseSkillScene(self):
        while skillScene.Match():
            logger.info("关闭技能栏")
            aj().PressKey(VK_CODE["esc"]), KongjianSleep()

            if skillstore.Match():
                aj().PressKey(VK_CODE["enter"]), KongjianSleep()
Exemplo n.º 4
0
 def EquipBetter():
     for v in CheckReplices:
         betterEquip = self.BagEquipBetter(v[0], v[1])
         if betterEquip is not None:
             logger.info("更换装备: %s", betterEquip)
             pos = self.BagIdxToPos(betterEquip.idx - 9, bagpos)
             aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
             aj().MouseLeftDown(), KongjianSleep()
             aj().MouseMoveTo(bagpos[0],
                              bagpos[1] + 100), KongjianSleep()
             aj().MouseLeftUp(), KongjianSleep()
             aj().MouseLeftClick(), KongjianSleep()
Exemplo n.º 5
0
    def OpenZupin(self):
        if not zupinScene.Match():
            Clear()  # 判断数量 + 租聘. 所以在这里clear
            logger.info("要打开幸运星租聘界面")
            if not Openesc():
                logger.warning("打开esc失败")
                return False

            pos = xingyunxing.Pos()
            aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
            aj().MouseLeftClick(), LanSleep()

        return zupinScene.Match()
Exemplo n.º 6
0
def IsinAierwenfnagxian():
    if wenziaierwenfangxian.Match() or wenzisidunxueyu.Match():
        logger.info("在艾尔文防线")
        return True

    elif maptip.Match():
        pos = maptip.Pos()
        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        logger.info("在艾尔文防线")
        return True
    else:
        # logger.warning("不在艾尔文防线")
        return False
Exemplo n.º 7
0
 def GetLocation(self):
     if IsinAierwenfnagxian():
         return "艾尔文防线"
     elif IsinHedunmaer():
         return "赫顿玛尔"
     elif IsinAerfayingdi():
         return "阿法利亚"
     elif IsInJingxiangalade():
         return "镜像阿拉德"
     elif fuckgame.Match():  # TODO 这里没有用
         return "艾尔文防线"
     elif IsIngente():
         return "根特"
     else:
         logger.warning("无法判断在哪里所以按一下.")
         aj().PressKey(VK_CODE['.']), KongjianSleep()
     return ""
Exemplo n.º 8
0
def main():
    InitLog()
    if not GameApiInit():
        sys.exit()
    FlushPid()
    if not aj().Init():
        sys.exit()
    GameWindowToTop()

    print(skillstore.Match())
Exemplo n.º 9
0
    def GetChenghao(self):
        if not self.OpenChenghao():
            logger.warning("打开称号栏失败")
            return

        pos = zhuangbeizhanshi.Pos()
        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        pos = jichudabiao.Pos()
        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseRightClick(), KongjianSleep()
Exemplo n.º 10
0
def main():
    InitLog()
    if not GameApiInit():
        sys.exit()
    FlushPid()
    if not aj().Init():
        sys.exit()
    GameWindowToTop()

    eq = Equips()
    # eq.ZupinWuqi()
    eq.ChangeEquip()
Exemplo n.º 11
0
    def RemoveNotInStrategy(self):
        if not self.OpenSkillScene():
            logger.warning("打开技能栏失败")
            return

        curskills = GetSkillObj()
        for v in curskills:
            if not self.IsInLearnStrategy(v.name) or self.IsBeidong(v.name):
                logger.warning("技能: %s 不是当前应该用的技能,拖出去" % v.name)

                # 向上移动, 脱离
                pos = idxposmap[v.idx]
                aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
                aj().MouseLeftDown(), KongjianSleep()
                aj().MouseMoveTo(pos[0], pos[1] - 150), KongjianSleep()
                aj().MouseLeftUp(), KongjianSleep()
Exemplo n.º 12
0
    def OpenChenghao(self):
        Clear()
        if not chenghaobu.Match():
            if not OpenBagScene():
                logger.warning("打开装备栏失败")
                return False

            logger.info("要打开称号栏")
            pos = chenghaobubtn.Pos()
            aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
            aj().MouseLeftClick(), LanSleep()

            aj().MouseMoveTo(0, 0)

        return chenghaobu.Match()
Exemplo n.º 13
0
    def CloseZupin(self):

        while zupinScene.Match():
            logger.info("关闭幸运星租聘界面")
            aj().PressKey(VK_CODE["esc"]), KongjianSleep()
Exemplo n.º 14
0
    def RepairAll(self):
        Clear()

        logger.info("修理所有")
        pos = self.GetFenjieJiPos()

        if pos is None or pos == (0, 0):
            return

        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        aj().MouseMoveR(56, 32), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        # 修理按钮
        repairbtn = repairButton.Pos()
        aj().MouseMoveTo(repairbtn[0], repairbtn[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
Exemplo n.º 15
0
    def ZupinWuqi(self):
        if not self.OpenZupin():
            logger.warning("打开租聘失败")
            return

        pos = zupinScene.Pos()
        aj().MouseMoveTo(pos[0] + self.xingyunwuqipos[0],
                         pos[1] + self.xingyunwuqipos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        aj().MouseMoveTo(pos[0] + 9, pos[1] + 143), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        pos = zupinconfirm2.Pos()
        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
Exemplo n.º 16
0
 def CloseFenjie(self):
     while fenjiexiulijiScene.Match():
         logger.info("关闭分解机")
         aj().PressKey(VK_CODE["esc"]), KongjianSleep()
Exemplo n.º 17
0
 def CloseSell(self):
     while sellButton.Match():
         logger.info("关闭分解机")
         aj().PressKey(VK_CODE["esc"]), KongjianSleep()
Exemplo n.º 18
0
    def FenjieAll(self):
        Clear()

        logger.info("分解所有")

        pos = self.GetFenjieJiPos()

        if pos is None or pos == (0, 0):
            return

        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        aj().MouseMoveR(56, 54), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        # 分解按钮
        fenjiebt = fenjieButton.Pos()
        aj().MouseMoveTo(fenjiebt[0], fenjiebt[1]), KongjianSleep()

        # 检查 "稀有" "勇者" "包含我的职业装备" 是否勾选
        xiyoucheck = (Picture(GetImgDir() + "checked.png", fenjiebt[0] + 67, fenjiebt[1] + 47, 12, 12),
                      (fenjiebt[0] + 67 + 6, fenjiebt[1] + 47 + 6))

        yongzhecheck = (Picture(GetImgDir() + "checked.png", fenjiebt[0] + 67, fenjiebt[1] + 61, 12, 12),
                        (fenjiebt[0] + 67 + 6, fenjiebt[1] + 61 + 6))

        zhiyecheck = (Picture(GetImgDir() + "checked.png", fenjiebt[0] + 67, fenjiebt[1] + 80, 12, 12),
                      (fenjiebt[0] + 67 + 6, fenjiebt[1] + 80 + 6))

        checks = [xiyoucheck, yongzhecheck, zhiyecheck]
        for v in checks:
            if not v[0].Match():
                aj().MouseMoveTo((v[1])[0], (v[1])[1]), KongjianSleep()
                aj().MouseLeftClick(), KongjianSleep()
                aj().MouseMoveTo(fenjiebt[0], fenjiebt[1]), KongjianSleep()

        # 分解按钮
        aj().MouseMoveTo(fenjiebt[0], fenjiebt[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        # 确认
        pos = fenjieConfirm.Pos()
        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), RanSleep(3.0)
Exemplo n.º 19
0
    def AddSkillPoints(self):
        if not self.OpenSkillScene():
            logger.warning("打开技能栏失败")
            return

        logger.info("技能栏已经打开")

        needLearn = False
        if self.NeedWangji():
            logger.info("去掉不需要技能的加点")
            aj().MouseMoveTo(536, 360), KongjianSleep()
            aj().MouseWheel(30), KongjianSleep()

            for v in self.deletedskills:
                logger.info("开始忘记技能: %s", v.name)

                if not IsSkillLearned(v.name):
                    logger.info("技能: %s 不需要忘记" % v.name)
                else:

                    for i in range(3):
                        if self.FindedPic(v.picutre):
                            break
                        aj().MouseMoveTo(536, 360), KongjianSleep()
                        aj().MouseLeftClick(), KongjianSleep()
                        aj().MouseWheel(-3), KongjianSleep()

                    if not self.FindedPic(v.picutre):
                        logger.warning("找不到技能: %s" % v.name)
                        continue

                    pos = v.GetPos()
                    needLearn = True
                    logger.info("忘记,移动到相对位置: (%d,%d)" % (pos[0], pos[1]))
                    aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
                    aj().ShiftRight(), KongjianSleep()

        logger.info("开始学习技能")
        aj().MouseMoveTo(536, 360), KongjianSleep()
        aj().MouseWheel(30), KongjianSleep()

        if self.AttackType is not None:
            pos = skillScene.Pos()
            if pos is not None or pos != (0, 0):
                tolearnpos = []
                if self.AttackType == MOFA:
                    tolearnpos.append((pos[0] + mofabaoji[0], pos[1] + mofabaoji[1]))
                    tolearnpos.append((pos[0] + mofabeiji[0], pos[1] + mofabeiji[1]))
                elif self.AttackType == WULI:
                    tolearnpos.append((pos[0] + wulibaoji[0], pos[1] + wulibaoji[1]))
                    tolearnpos.append((pos[0] + wilibeiji[0], pos[1] + wilibeiji[1]))

                for pos in tolearnpos:
                    w, h = 50, 60
                    halfw, halfh = w // 2, h // 2
                    cannotLearn = Picture(GetImgDir() + "cannotlearn.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w,
                                          dh=h)
                    jingtong = Picture(GetImgDir() + "jingtong.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h)

                    if cannotLearn.Match() or jingtong.Match():
                        logger.warning("暴击不需要学习")
                    else:
                        needLearn = True
                        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
                        aj().ShiftLeft(), KongjianSleep()
            else:
                logger.warning("没有找到技能栏")

        for v in self.learnstrategy:

            logger.info("学习技能: %s" % v.name)

            for i in range(3):
                if self.FindedPic(v.picutre):
                    break
                aj().MouseMoveTo(536, 360), KongjianSleep()
                aj().MouseLeftClick(), KongjianSleep()
                aj().MouseWheel(-3), KongjianSleep()

            if not self.FindedPic(v.picutre):
                logger.warning("找不到技能: %s" % v.name)
                continue

            pos = v.GetPos()

            # w, h = 30, 25
            w, h = 50, 60
            halfw, halfh = w // 2, h // 2
            cannotLearn = Picture(GetImgDir() + "cannotlearn.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h)
            jingtong = Picture(GetImgDir() + "jingtong.png", dx=pos[0] - halfw, dy=pos[1] - halfh, dw=w, dh=h)
            if cannotLearn.Match() or jingtong.Match():
                logger.info("技能: %s 不需要学习", v.name)
            else:
                needLearn = True
                logger.info("学习,移动到相对位置: (%d,%d)" % (pos[0], pos[1]))
                aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
                aj().ShiftLeft(), KongjianSleep()

            # aj().MouseMoveR(- (30 // 2 - 2), 0), KongjianSleep()

        logger.info("技能已学习完毕")

        if needLearn:
            # 确认按钮
            learnpos = skillSceneLearn.Pos()
            aj().MouseMoveTo(learnpos[0], learnpos[1]), KongjianSleep()
            aj().MouseLeftClick(), RanSleep(0.3)
            aj().MouseLeftClick(), KongjianSleep()
Exemplo n.º 20
0
    def DiscardAll(self):
        Clear()
        logger.info("丢弃所有")
        OpenBagScene()
        bagpos = bagScene.Pos()

        equips = GetBagEquipObj()
        for v in equips:
            pos = self.BagIdxToPos(v.idx - 9, bagpos)
            aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
            aj().MouseLeftDown(), KongjianSleep()
            aj().MouseMoveTo(83, 129), KongjianSleep()
            aj().MouseLeftUp(), KongjianSleep()
            aj().MouseMoveR(100, 100), KongjianSleep()
            pos = querenbtn.Pos()
            aj().MouseMoveTo(pos[0], pos[1])
            aj().MouseLeftClick(), KongjianSleep()


        CloseBagScene()
Exemplo n.º 21
0
def OpenBagScene():
    Clear()
    if not bagScene.Match():
        logger.info("打开装备栏")
        aj().PressKey(VK_CODE["i"]), LanSleep()
    return bagScene.Match()
Exemplo n.º 22
0
    def EquipSkillInStrategy(self):
        if not self.OpenSkillScene():
            logger.warning("打开技能栏失败")
            return

        aj().MouseMoveTo(536, 360), KongjianSleep()
        aj().MouseWheel(30), KongjianSleep()

        for v in self.learnstrategy:
            if v.beidong:
                continue

            if not self.HasEquipSkill(v.name):
                idx = self.GetEmptyPosIdx()
                destpos = idxposmap[idx]
                logger.info("技能: %s 没有装备 位置: %d 有空位 (%d, %d)", v.name, idx, destpos[0], destpos[1])

                for i in range(3):
                    if self.FindedPic(v.picutre):
                        break
                    aj().MouseMoveTo(536, 360), KongjianSleep()
                    aj().MouseWheel(-3), KongjianSleep()

                if not self.FindedPic(v.picutre):
                    logger.warning("找不到技能: %s" % v.name)
                    continue

                srcpos = v.GetPos()

                aj().MouseMoveTo(srcpos[0], srcpos[1]), KongjianSleep()
                aj().MouseLeftDown(), KongjianSleep()
                aj().MouseMoveR(10, 10), KongjianSleep()
                aj().MouseMoveTo(destpos[0], destpos[1]), KongjianSleep()
                aj().MouseLeftUp(), KongjianSleep()
Exemplo n.º 23
0
 def OpenSkillScene(self):
     # Clear() 不要再这里. 因为连续3次 (加点,脱进来,脱出去,太浪费时间了)
     if not skillScene.Match():
         logger.info("打开技能栏")
         aj().PressKey(VK_CODE["k"]), LanSleep()
     return skillScene.Match()
Exemplo n.º 24
0
def CloseBagScene():
    while bagScene.Match():
        logger.info("关闭装备栏")
        aj().PressKey(VK_CODE["esc"]), KongjianSleep()
Exemplo n.º 25
0
    def SellAll(self):
        Clear()

        logger.info("出售所有")
        pos = self.GetFenjieJiPos()

        if pos is None or pos == (0, 0):
            return

        aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()
        aj().MouseMoveR(56, 32), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        # 出售按钮
        sellbtn = sellButton.Pos()
        aj().MouseMoveTo(sellbtn[0], sellbtn[1]), KongjianSleep()
        aj().MouseLeftClick(), KongjianSleep()

        bagpos = bagScene.Pos()

        equips = GetBagEquipObj()
        for v in equips:
            pos = self.BagIdxToPos(v.idx - 9, bagpos)
            aj().MouseMoveTo(pos[0], pos[1]), KongjianSleep()
            aj().MouseLeftClick(), KongjianSleep()
            aj().MouseLeftClick(), KongjianSleep()

        self.CloseSell()