玩饥荒那个挑战关卡的时候,想通关看看什么样,所以用控制台代码解锁所有物品来玩。可是每次进入新的地图都需要手动输入这些代码,很麻烦,于是上网查了python如何模拟键盘输入,查到要使用两个库:
win32api和win32con,同时使用键值码模拟键盘按键。饥荒打开控制台需要按下~键,所以找到了keyboard库,运行程序的时候只有按下~键才继续往下执行

import win32api
import win32con
import keyboard'''A   65          0   96            F1   112           Backspace    8 B   66          1   97            F2   113           Tab       9 C   67          2   98            F3   114          Clear      12 D   68          3   99            F4   115          Enter      13 E   69          4   100           F5   116          Shift      16 F   70          5   101           F6   117         Control     17 G   71          6   102           F7   118           Alt       18 H   72          7   103           F8   119        Caps Lock    20 I    73         8   104          F9   120            Esc       27 J    74         9   105          F10  121          Spacebar    32 K   75          *   106           F11  122         Page Up     33 L   76          +   107           F12  123        Page Down    34 M   77        Enter 108                              End       35 N   78          -   109                              Home      36 O   79          .   110                           Left Arrow   37 P   80          /   111                            Up Arrow    38 Q   81                                           Right Arrow   39 R   82                                           Down Arrow    40 S   83                                             Insert      45 T   84                                             Delete      46 U   85                                              Help       47 V   86                                            Num Lock     144   W  87          X   88                                186        Oem1        ;Y   89                                187        Oemplus        =Z   90                                188        Oemcomma    ,0   48                                189        OemMinus    -1   49                                190        OemPeriod    .2   50                                191        OemQuestion    /  3   51                                192        Oemtilde    `4   52                                219        OemOpenBrackets    [5   53                                220        Oem5            \6   54                                221        Oem6            ]7   55                                222        Oem7            '8   56       9   57'''

开始只有一个需求,就是输入GetPlayer().components.builder:GiveAllRecipes()
按照网上的方法是这样模拟键盘的

# G
win32api.keybd_event(16, 0, 0, 0)
win32api.keybd_event(71, 0, 0, 0)
win32api.keybd_event(71, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0)# e
win32api.keybd_event(71, 0, 0, 0)
win32api.keybd_event(71, 0, win32con.KEYEVENTF_KEYUP, 0)

一个大写字母就要四行代码,小写字母两行,这代码工作量也太大了,代码格式固定,就想到了用循环语句减少输入量。

keyboard.wait('`')for i in [20, 71, 20, 69, 84, 20, 80, 20, 76, 65, 89, 69, 82]:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)win32api.keybd_event(16, 0, 0, 0)for i in [57, 48]:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0)for i in [190, 67, 79, 77, 80, 79, 78, 69, 78, 84, 83, 190, 66, 85, 73, 76, 68, 69, 82]:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)win32api.keybd_event(16, 0, 0, 0)for i in [186, 71, 65, 82, 57, 48]:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0)for i in [37, 37, 37, 37, 73, 86, 69, 39, 76, 76, 39, 69, 73, 80, 69, 83, 39, 39, 13, 192]:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)

虽然也很繁琐,但是输入一串控制台代码来说够用了,在记事本试了一下,秒输,很爽。同时也在考虑,都这么快了,干脆把用得到的控制台代码都让python一次输入得了。但是那么多代码,这种方法肯定不行,代码工作量还是太大。观察规律发现完全可以用函数来节约代码量,于是做了两个函数,分别是不用shift键和用shift键

def WithoutShift(*args):  # 不带shift建的输入for i in args:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)def WithShift(*args):win32api.keybd_event(16, 0, 0, 0)for i in args:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0)

这样代码量就减少很多了,一个饥荒控制台代码只需最多5行python代码就可以实现

keyboard.wait('`')
'''GetPlayer().components.builder:GiveAllRecipes() '''
WithoutShift(20, 71, 20, 69, 84, 20, 80, 20, 76, 65, 89, 69, 82)
WithShift(57, 48)
WithoutShift(190, 67, 79, 77, 80, 79, 78, 69, 78, 84, 83, 190, 66, 85, 73, 76, 68, 69, 82)
WithShift(186, 71, 65, 82, 57, 48)
WithoutShift(37, 37, 37, 37, 73, 86, 69, 39, 76, 76, 39, 69, 67, 73, 80, 69, 83, 39, 39, 13, 192)# minimap = TheSim:FindFirstEntityWithTag("minimap")
WithoutShift(77, 73, 78, 73, 77, 65, 80, 32, 187, 32, 20, 84, 20, 72, 69, 20, 83, 20, 73, 77)
WithShift(186, 57, 222, 222, 48)  # :("")
WithoutShift(37, 37, 37, 37, 20, 70, 20, 73, 78, 68, 20, 70, 20, 73, 82, 83, 84, 20, 69, 20, 78, 84, 73, 84, 89,20, 87, 20, 73, 84, 72, 20, 84, 20, 65, 71, 39, 39, 77, 73, 78, 73, 77, 65, 80, 39, 39, 13, 192)# minimap.MiniMap:ShowArea(0,0,0, 10000)
WithoutShift(77, 73, 78, 73, 77, 65, 80, 190, 20, 77, 20, 73, 78, 73, 20, 77, 20, 65, 80)
WithShift(186, 83, 65, 57, 48)  # :("")
WithoutShift(37, 37, 37, 72, 79, 87, 39, 82, 69, 65, 39, 48, 188, 48, 188, 48, 188, 32, 49, 48, 48, 48, 48, 39, 13)

用记事本测试非常完美,迫不及待打开饥荒测试,一测试完犊子了,运行程序的时候饥荒控制台打开一下就关了,而且画面乱晃,小人瞎走,工具栏自己开关,心累啊。又一个字母一个字母的测试找原因,没解决,想了想应该是自动输入太快了,饥荒反应不过来了,于是在函数中加了计时器,让每个字母输入的时候慢一点,测试发现方向是对的,但是还有一个问题就是第一个大写字母总是输入不上,也不知道原因,干脆让电脑先随便输一个字母再正式开始输入控制台代码吧。测试通过,完美!完整代码如下,希望有大神可以指点一下,再改进一下。

import win32api
import win32con
import keyboard
import time'''A   65          0   96            F1   112           Backspace    8 B   66          1   97            F2   113           Tab       9 C   67          2   98            F3   114          Clear      12 D   68          3   99            F4   115          Enter      13 E   69          4   100           F5   116          Shift      16 F   70          5   101           F6   117         Control     17 G   71          6   102           F7   118           Alt       18 H   72          7   103           F8   119        Caps Lock    20 I    73         8   104          F9   120            Esc       27 J    74         9   105          F10  121          Spacebar    32 K   75          *   106           F11  122         Page Up     33 L   76          +   107           F12  123        Page Down    34 M   77        Enter 108                              End       35 N   78          -   109                              Home      36 O   79          .   110                           Left Arrow   37 P   80          /   111                            Up Arrow    38 Q   81                                           Right Arrow   39 R   82                                           Down Arrow    40 S   83                                             Insert      45 T   84                                             Delete      46 U   85                                              Help       47 V   86                                            Num Lock     144   W  87   x  88                                186        Oem1        ;Y   89                                187        Oemplus        =Z   90                                188        Oemcomma    ,0   48                                189        OemMinus    -1   49                                190        OemPeriod    .2   50                                191        OemQuestion    /  3   51                                192        Oemtilde    `4   52                                219        OemOpenBrackets    [5   53                                220        Oem5            \6   54                                221        Oem6            ]7   55                                222        Oem7            '8   56       9   57'''def WithoutShift(*args):  # 不带shift建的输入for i in args:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)time.sleep(0.05)time.sleep(0.05)def WithShift(*args):win32api.keybd_event(16, 0, 0, 0)for i in args:win32api.keybd_event(i, 0, 0, 0)win32api.keybd_event(i, 0, win32con.KEYEVENTF_KEYUP, 0)time.sleep(0.05)win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0)time.sleep(0.05)keyboard.wait('`')
'''GetPlayer().components.builder:GiveAllRecipes() '''
WithoutShift(65, 13, 192)       # 先随便输一个字母,回车,~WithoutShift(20, 71, 20, 69, 84, 20, 80, 20, 76, 65, 89, 69, 82)
WithShift(57, 48)
WithoutShift(190, 67, 79, 77, 80, 79, 78, 69, 78, 84, 83, 190, 66, 85, 73, 76, 68, 69, 82)
WithShift(186, 71, 65, 82, 57, 48)
WithoutShift(37, 37, 37, 37, 73, 86, 69, 39, 76, 76, 39, 69, 67, 73, 80, 69, 83, 39, 39, 13, 192)# 生命100000
WithoutShift(20, 71, 20, 69, 84, 20, 80, 20, 76, 65, 89, 69, 82)
WithShift(57, 48)
WithoutShift(190, 67, 79, 77, 80, 79, 78, 69, 78, 84, 83, 190, 72, 69, 65, 76, 84, 72)
WithShift(186, 83, 77, 72, 57, 48)
WithoutShift(37, 37, 37, 37, 69, 84, 39, 65, 88, 39, 69, 65, 76, 84, 72, 39, 49, 48, 48, 48, 48, 48, 48, 39, 13, 192)# 饥饿1000
WithoutShift(20, 71, 20, 69, 84, 20, 80, 20, 76, 65, 89, 69, 82)
WithShift(57, 48)
WithoutShift(190, 67, 79, 77, 80, 79, 78, 69, 78, 84, 83, 190, 72, 85, 78, 71, 69, 82)
WithShift(186, 83, 77, 57, 48)
WithoutShift(37, 37, 37, 69, 84, 39, 65, 88, 39, 49, 48, 48, 48, 39, 13, 192)# 脑残1000
WithoutShift(20, 71, 20, 69, 84, 20, 80, 20, 76, 65, 89, 69, 82)
WithShift(57, 48)
WithoutShift(190, 67, 79, 77, 80, 79, 78, 69, 78, 84, 83, 190, 83, 65, 78, 73, 84, 89)
WithShift(186, 83, 77, 57, 48)
WithoutShift(37, 37, 37, 69, 84, 39, 65, 88, 39, 49, 48, 48, 48, 39, 13, 192)# minimap = TheSim:FindFirstEntityWithTag("minimap")
WithoutShift(77, 73, 78, 73, 77, 65, 80, 32, 187, 32, 20, 84, 20, 72, 69, 20, 83, 20, 73, 77)
WithShift(186, 57, 222, 222, 48)  # :("")
WithoutShift(37, 37, 37, 37, 20, 70, 20, 73, 78, 68, 20, 70, 20, 73, 82, 83, 84, 20, 69, 20, 78, 84, 73, 84, 89,20, 87, 20, 73, 84, 72, 20, 84, 20, 65, 71, 39, 39, 77, 73, 78, 73, 77, 65, 80, 39, 39, 13, 192)# minimap.MiniMap:ShowArea(0,0,0, 10000)
WithoutShift(77, 73, 78, 73, 77, 65, 80, 190, 20, 77, 20, 73, 78, 73, 20, 77, 20, 65, 80)
WithShift(186, 83, 65, 57, 48)  # :("")
WithoutShift(37, 37, 37, 72, 79, 87, 39, 82, 69, 65, 39, 48, 188, 48, 188, 48, 188, 32, 49, 48, 48, 48, 48, 39, 13)

python自动输入饥荒控制台代码相关推荐

  1. python 自动输入_Python自动输入【新手必学】

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈,另 ...

  2. python 自动输入文字_pyautogui和pyperclip实现自动输入中文

    pyautogui的函数 (代替键盘鼠标自动完成设置的操作,超级好玩 >. moveTo(x,y)                将鼠标移动到指定的 x.y 坐标   (屏幕以左上角为原点(0, ...

  3. python自动输入文字_Python自动输入【新手必学】

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈,另 ...

  4. ios拒审4.3 python自动生成辣鸡代码

    配置文件config.json [{"key" : "jiebabuyuxiniubuyu","add_func_num" :1," ...

  5. python自动输入支付密码_Python之控制台输入密码的方法

    一.raw_input()或input(): for python 2.x [root@master test]#/usr/local/python2.7/bin/python test.py Ple ...

  6. python自动输入验证码_python下的自动化测试--selenium 验证码输入问题

    之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适,一是性能的损耗,一直需要开一个浏览器,二是对于爬 ...

  7. python自动输入_使用Python和pywin32自动输入数据

    我正在尝试编写一个python脚本来获取数据并将其输入任何形式 以下是我目前为止的代码:def pasteNum(n): win32clipboard.OpenClipboard() win32cli ...

  8. python 自动输入用户密码_Linux中Python自动输入sudo 密码

    一.背景和需求 背景: 由于docker服务进程都是以root帐号的身份运行的,所以用docker跑abpred出来的文件所有者都是root, 而我作为一般用户,操作这个文件不够权限,运行代码时需要s ...

  9. python 自动输入验证码_python 自动生成验证码并 输入识别

    两种方法: 1: ll = [] # 空列表 for x in range(10): # 吧得到的九个数加到列表,验证码是一体的,,只能当成一个字符串 ll.append(str(x)) # 大写字母 ...

  10. python自动微信发消息代码

    import timeimport pyautogui import pyperclipdef 打开微信窗口():pyautogui.hotkey("ctrl","e&q ...

最新文章

  1. Kafka:消息是如何在服务端存储与读取的,你真的知道吗?
  2. Flink从入门到精通100篇(十一)-Java SPI 机制在 Flink SQL 中的应用
  3. 怎样进入android模式,安卓手机如何进入Recovery模式的通用方式详解
  4. POJ 1286 Necklaces of Beads (Burnside定理,有限制型)
  5. .net中调用esb_大型ESB服务总线平台服务运行分析和监控预警实践
  6. Apache Curator之分布式锁原理(二)
  7. 手机里的html文档是什么,华为手机中后面带HTML的文档能删除吗?
  8. 大屏监控系统实战(2)-后台工程搭建
  9. Bootstrap创建按钮工具栏
  10. [Pro]斐波那契数列阿【斐波那契数列】
  11. 获取浏览器的User Anent及判断微信浏览器
  12. CAM350软件使用说明----PADS相关
  13. Linux下载安装Binutils工具集
  14. 阵列信号处理基础(一、协方差矩阵)
  15. 2019-03-02 致虚极守静笃 读老子《道德经》有感
  16. 你真正了解图像金字塔吗?详细介绍拉普拉斯金字塔和高斯金字塔(pyrDown() and pyrUp()),参考《OpenCV轻松入门:面向Python》
  17. 說說俺的FTP Server服務器
  18. CH341应用升级为CH347软硬件注意事项
  19. 高职医学计算机考试科目一模拟试题,医学影像技术考试题库
  20. 如何通过修改注册表关闭、开启windows10内置Windows Defender安全中心

热门文章

  1. Java注解(Annotation)
  2. SVN分支/主干Merge操作小记
  3. 计算机英语 book,book是什么意思_book在线翻译_英语_读音_用法_例句_海词词典
  4. 微信服务器推送文件在哪个文件夹,微信电脑版聊天文件在哪个文件夹?微信电脑版文件位置介绍...
  5. 基于Python绘制一个摸鱼倒计时界面
  6. INA230测量电压电流功率
  7. TDS:标签平台+API平台+数据共享平台,助力数据运营平台建设
  8. 2021-1-16-JavaGuide老哥的操作系统常见问题总结 自己按照理解,综合了王道考研的视频,对内容进行了修改,增加了内容,以便于自己理解。这份材料不是背的,而是让自己去理解的。
  9. 基于人工智能的盲人阅读器
  10. 在我的垃圾电脑上U盘安装ubuntu单系统