题主悬赏了80铜    |    问题正被解决中

关于chiaki、按键精灵的问题,以及自动化脚本执行(python、pynupt、vgamepad、mac)技术选型。大佬请指导

微博   微信 9天前 17:45   北京  9个回答 PS5
最近在用如龙维新赛鸡刷钱,但是在自动化操作方面碰到很多问题,恳请大佬指导:
1. 目前所有的windows机器都比较老,不支持win10,跑chiaki的时候键盘可用,有声音,但是都不能显示图像,不知道有人碰到过么?
2. 虽然不能获取图片或像素点rgb进行图像识别进行全自动化操作,但是按键精灵的半自动化脚本可行。但是在如下操作时,经常会出现跳过某个KeyPress,或者某个KeyPress执行后卡住的情况,不知道有没有按键精灵大佬指导下。
KeyPress "K", 1
Delay time1
KeyPress "Left", 1
Delay time1
KeyPress "K", 1
Delay time1
KeyPress "Down", 1
Delay time1

3. 转战mac,计划使用python(pynupt)执行键盘模拟,通过automator、系统快捷键绑定脚本,代码如下,正常在编辑器里看执行是正常的,但是在chiaki里面快捷键调起脚本后就没反应了,但是如果多调用几次脚本会偶尔还会执行一次按键调用。不知道有没有python大佬或者mac大佬指导下?
import time
from pynput.keyboard import Key, Controller
keyboard = Controller()
time1=0.2
for num in range(0,120):
keyboard.tap("k");
time.sleep(time1);
keyboard.tap(Key.left);
time.sleep(time1);
keyboard.tap("k");
time.sleep(time1);
keyboard.tap(Key.down);
time.sleep(time1);

4. 技术选型,看到有大佬的重生 自动钢琴脚本,里面用的pynupt+vgamepad,但是发现vgamepad不支持mac,希望有大佬能帮忙做下技术选型,看看还有什么自动化软件可以尝试下?后面可能看看自动化测试工具。

感觉windows电脑还是必需品,从1060等过来的等等党,决定今年618还是弄一台pc吧。
回答
  • KeyPress "K", 1
    Delay time1
    KeyPress "Left", 1
    Delay time1
    KeyPress "K", 1
    Delay time1
    KeyPress "Down", 1
    Delay time1

    ——————--
    你这个里面的delay实在太短了,就1毫秒,稍微遇到延迟,就没法把操作传给主机。调成100~300比较适合。

    而且建议别用KeyPress,而是用KeyDown(按下按键)+Delay(按下持续的时间)+KeyUp(放开按键)来模拟单词按键过程。比如:
    KeyDown "K", 1
    Delay 100
    KeyUp "K", 1

    Delay 300

    KeyDown "Left", 1
    Delay 100
    KeyUp "Left", 1

    这样能模拟比较真实的按键情况,而且有些游戏挂机需要持续按键,这样也能兼容,调一下Down和Up之间的延迟值,就是持续按键的时间。
    而且按键精灵可以识别指定屏幕区域的图片or指定坐标的像素颜色来判断是否进行下一步操作。

    Mac不知道啥情况,如果是Win,py的自动操作库一般用pyautogui。
    9天前 19:12修改 四川
    •    8天前 11:34 北京 回复 hyclew  @aikikalaskamaido 先感谢大佬的降级工具。这个延迟time1是个变量。我试过200ms也有这个问题,因为如龙赛鸡有时间要求,再长的话时间就不太够了。down up也试过,偶尔还是会出现,不行我再多试几个值吧。
      图像那个主要是win7下chiaki没画面,不行我再试试ps remote加个手柄模拟工具。
    •    4天前 23:44 四川 回复 koikoiyo  @hyclew  原谅我眼瞎..直接看称1毫秒了
  • 我写自动脚本很久了,不过我是cpp加vigem虚拟ps4手柄做的。识别最快目前应该是自己解码,但是要分析chiaki的源码,如果你有兴趣可以一起干。如果用chiaki这种串流软件渲染出来的窗口截屏,用dxgdi最快(但只能前台,延迟我测了一下只有2-8ms),其次windows gdi(可以后台)也行。其次不推荐用python,截屏延迟比较高,还是cpp比较好,我写了一些对部分图像的template match和神经网络,延迟基本上没有,主要就是网络延迟。我的太鼓达人,一些格斗游戏都是自己做脚本干的。之前还写过diablo2的脚本,那个就比较复杂了。


    如果你chiaki渲染不出图像,很可能是解码器不对,试试h264格式,软解码。

    如果你不能截取图像,很大概率是因为创建dc的时候无法创建基于directx窗口的dc,这个时候从bitblt拷贝出来的画面是黑色或者灰色的,这个时候只有用dxgdi前台识别才能做到截取窗口。这个问题我也研究了很久目前没有比较好的解决办法,想从后台截图只能加钩子,这样做本身延迟就非常高。

    按键的话其实不用什么按键精灵,也不用其他库,这样会占用你的pc,暂时你就不能干别的事了,直接给chiaki串流的窗口发按键消息就行了,这样边刷还能边干别的事。
    9天前 19:31修改 广东
    •    8天前 11:40 北京 回复 hyclew  @mastman429 实在惭愧,毕业10几年就没再写过c++了,已经沦落为java boy,只会springboot了,系统编程、神经网络已经还给老师了,用python只是图方便。
      chiaki所有选项都选了,还是没用,还是趁50系显卡,升级下电脑设备吧。
      不过这个直接给应用发消息的路子不错,可以研究下,看样子要写好还是只能从系统层面处理了。
      另外,你的3人末日要是还缺人的话,可以算我一个,周末一般都有空。
    •    8天前 12:19 广东 回复 层主  @hyclew 非常感谢,我再找一个人联系你
  • 害怕
    8天前 19:08 江苏
  • 我之前都是用android的模拟器里装chiaki,好处是android模拟器脚本录制功能太强了
    4天前 21:58 天津
  • 来学习技术贴
    3天前 13:30 江苏
发表评论,请先 登录
T