• 用Python写一个游戏脚本,你会吗?


     

    前言
    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
    作者:ivat4u 

    学习python有一段时间了,由于python语言的强大和简洁,是一个不错的脚本语言,就准备做个游戏脚本练练手。如果你也想多练项目实战。可以去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目
    听说pywin32写脚本还不错
    pywin32主要代码
    我以楚留香的电脑版为例,记录脚本的编写之路吧。
    窗口句柄
    因为主要游戏都在windows跑,没什么好说的,第一步应该是获取窗口句柄。
    在按键精灵帮助下,我们知道了游戏窗口句柄的类名和名字分别为"Messiah_Game",“楚留香”。
    利用win32gui的函数,获取到窗口句柄,并稍微调整一下我们理想的大小。

    import win32con
    import win32gui
    import win32api
    
    
    hwnd=win32gui.FindWindowEx(0,0,"Messiah_Game","楚留香")
    win32gui.SetForegroundWindow (hwnd)
    
    if(win32gui.IsIconic(hwnd)):
        win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
    win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 300,200,1200,800,win32con.SWP_SHOWWINDOW)

    这样就完成对窗口的激活和尺寸,位置设定了。
    接下来我们先做一个模块的功能,比如自动摆摊购买,因为端游模式和手游模式摆摊位置不同,我们首先确定为端游模式的坐标。
    自动购买第一步,首先是鼠标能移动到‘’藏宝阁‘’图标上
    然后我们关注我们需要抢购的东西,再拿他与我们需求的价格做对比,如果小于我们理想的价格,则让脚本自动购买。

    所以模拟键盘鼠标的操作和价格识别就显得尤为重要。以下为关注界面,每点击一次关注就会刷新,似乎有点击事件间隔限制。关注界面

     '''我们希望脚本是在端游模式跑起来的,方便测试,先默认一个Mode为端游模式,后期可以设置一个检查模式功能'''
        Mode='端游模式'
        if(Mode=='端游模式'):
            win32api.SetCursorPos([557, 584])
            win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    启动脚本后,发现鼠标虽然移动成功,但是单击命令似乎只能在游戏之外的窗口才会执行?
    为什么呢?
    这是由于游戏屏蔽了系统API提供的模拟输入,包括键盘鼠标的模拟操作都不会生效。
    看起来事情并不简单。
    那怎么办?如果你学习也迷茫。可以去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目

    别急,我们可以模拟键盘鼠标驱动的硬件操作。
    以下理一下我们思路
    目的:我们希望模拟键盘和鼠标的操作。
    可以使用方式或库:

    • pyinput
    • autopy
    • win32api
    • winio
    • vb类似于按键精灵的模式
      前面三种已经证明不可行,因为都是api层面的操作,一定都会被游戏系统屏蔽。
      关于第四种可以实现IO驱动的模拟
      介绍winio
      但是进入github查看说明文档发现:
      不支持
      也就是说,winio的python接口还不支持win10,其他语言倒是可以支持,但是我们的代码不就前功尽弃了吗?
      因此联想到可以使用vb的按键精灵模式来实现模拟输入。
      在这里我们并不是要推翻整个代码重写,更不是把语言换成vbscript,我们可以通过调用按键精灵某些插件实现模拟的键盘鼠标输入。
      今天就分析到这里,下一篇我们来讲讲怎么使用python调用vb脚本实现键盘鼠标的dx游戏模拟输入吧。
  • 相关阅读:
    String空格删除和java删除字符串最后一个字符的几种方法
    Ceph 12.2.0 实践osd 智能分组功能
    Ceph 12.2.0 实践osd 智能分组功能
    Ceph 12.2.0 实践osd 智能分组功能
    Ceph 12.2.0 实践osd 智能分组功能
    取区域/扇区边界点
    取区域/扇区边界点
    取区域/扇区边界点
    取区域/扇区边界点
    解决客户端向服务器数据库传输中文乱码的方法
  • 原文地址:https://www.cnblogs.com/chengxuyuanaa/p/11984723.html
Copyright © 2020-2023  润新知