bode135 / pydamo

python写游戏外挂的工具箱
271 stars 79 forks source link

pydamo简介

对大漠插件的简单封装.

更新

安装

shells\configWin32Env.bat       # use conda to create a win32_py36 interpreter

# 推荐通过git clone后, 直接放在代码根目录下使用
pip install -r requirements.txt

使用

from pydamo import Time, DM, Mouse

dm = DM()   # 可指定dm.dll路径DM(path), 若无法使用某些函数dm.f(), 则使用dm.dm.f()来调用.
ms = Mouse(dm)
tt = Time()

print(ms.position)                  # 当前鼠标位置

tt.sleep(1)
x, y = (0, 0)
ms.position = x, y                  # 移动鼠标
ms.click_right(x, y)                # 点击鼠标右键

使用条件

  1. 32位的python才能运行;
  2. 最好使用管理员权限运行(包括pycharm、bat脚本和编译好的exe文件);
  3. 后台绑定挂机为付费的高级功能,我购买的注册码不一定能用很久, 一般用前台键鼠足够。

键鼠监听

可用于录制脚本等: pynput, mouse, keyboard, git搜下照着文档用就行

其它模拟方式

这些不支持后台键鼠

  1. 64位python可以试试Ctypes和keyboard实现驱动级模拟(前台)
  1. 如果不是D3D游戏的后台模拟的话,可以试试win API的系统级后台模拟SendMessage;

  2. 如果键盘为PS/2圆形接口的话,可用winio模块,但不支持USB键盘。

  3. python自带方案(最近写原神脚本可以使用的方案)

    1. 基于ctypes的可用于原神3D鼠标相对旋转: pydirectinput.moveRel(但调用该方案经常被封)
    2. 不是驱动级模拟, 但有时也挺好用: PyAutoGUI
    3. pywin32直接用win32api.mouse_event, 参考原神钓鱼辅助

打包相关问题

依旧存在的问题

  1. 如何脱离32位python限制? 目前想到的两个方向:
    1. 自己重写一个驱动级dll, 但受限水平(计算机操作系统、驱动编程等相关知识匮乏)而无法实现
    2. 通过Microsoft的文档, 即 ctypes.windll.user32.SendInput来实现, 但容易被封
    3. 将pydamo打包为一个后台api服务, 64位程序通过api来调用(目前最可行的方案了)
  2. pynput录制的原神脚本都是相对位移, 而dm.MoveRpydirectinput.moveRel受限于鼠标加速度(系统加速度或者鼠标自带加速).想要完全复刻必须游戏有没有仅使用原始输入(Raw Input setting)功能, 不然总会有误差.已经用pywin32自带的mouse_event解决3D游戏的相对鼠标位移问题, 重点是去控制面板鼠标速度居中, 并取消windows的"提高鼠标精准度".