• 技术文章 >常见问题 >Python常见问题

    python可以开发外挂吗

    silencementsilencement2020-01-15 11:25:27原创10257

    首先要声明,这里的游戏外挂的概念,和那些大型网游里的外挂可不同,不能自动打怪,不能喝药不能躲避GM…… 外挂是写不了的,

    Python是脚本语言,不可能像易语言、C语言那样流畅自如地编写辅助;游戏并不适合用Python开发,Python虽有pygame库,但是功能

    不强,游戏运行效率低下,写游戏还是要靠游戏引擎。

    这里可以用Python实现一个简单的小游戏脚本

    工具的准备

    需要安装autopy和PIL以及pywin32包。autopy是一个自动化操作的python库,可以模拟一些鼠标、键盘事件,还能对屏幕进行访问,本来我想用win32api来模拟输入事件的,发现这个用起来比较简单,最厉害的是它是跨平台的,请搜索安装;而PIL那是大名鼎鼎了,Python图像处理的No.1,下面会说明用它来做什么;pywin32其实不是必须的,但是为了方便(鼠标它在自己动着呢,如何结束它呢),还是建议安装一下。

    截屏和图像处理工具

    截屏是获取游戏图像以供分析游戏提示,其实没有专门的工具直接Print Screen粘贴到图像处理工具里也可以。我用的是PicPick,相当好用,而且个人用户是免费的;而图像处理则是为了获取各种信息的,我们要用它得到点菜图像后保存起来,供外挂分析判断。

    编辑器

    这个就不用说了吧,写代码得要个编辑器啊!

    原理分析

    看这个游戏,有8种菜,每种菜都有固定的做法,顾客一旦坐下来,头顶上就会有一个图片,看图片就知道他想要点什么菜,点击左边原料区域,然后点击一下……不知道叫什么,像个竹简一样的东西,菜就做完了,然后把做好的食物拖拽到客户面前就好了。

    顾客头上显示图片的位置是固定的,总共也只有四个位置,我们可以逐一分析,而原料的位置也是固定的,每种菜的做法更是清清楚楚,这样一来我们完全可以判断。

    代码:

    class Menu:
      def __init__(self):
        self.stuff_pos = []
        self.recipes = [None] * 8
        self.init_stuff()
        self.init_recipe()
      def init_stuff(self):
        for i in range(9):
          self.stuff_pos.append( (L + 102 + (i % 3) * 42, T + 303 + (i / 3) * 42) )
      def init_recipe(self):
        self.recipes[0] = (1, 2)
        self.recipes[1] = (0, 1, 2)
        self.recipes[2] = (5, 1, 2)
        self.recipes[3] = (3, 0, 1, 2)
        self.recipes[4] = (4, 1, 2)
        self.recipes[5] = (7, 1, 2)
        self.recipes[6] = (6, 1, 2)
        self.recipes[7] = (8, 1, 2)
      def click(self, i):
        autopy.mouse.move(self.stuff_pos[i][0] + 20, self.stuff_pos[i][1] + 20)
        autopy.mouse.click()
      def make(self, i):
        for x in self.recipes[i]:
          self.click(x)
        autopy.mouse.move(L + 315, T + 363)
        autopy.mouse.click()

    推荐学习《python教程》。

    专题推荐:python
    上一篇:换行python怎么写 下一篇:转java还是python

    相关文章推荐

    • python3怎么取幂运算• python程序怎么结束• 用python怎么从1加到n• python怎么输出map

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网