【饥荒脚本】饥荒控制台代码自动输入

饥荒游戏代码

GetPlayer().components.builder:GiveAllRecipes()//全物品制造

c_speed(num)//加速,例子里我写了个15

知识点:多文件,多线程(其实只用了一个),Windows虚拟按键

附录:代码全文

编译平台:Windows 10,Visual Studio 2017,C++

Key EventFuns.h

#pragma once

#include<stdio.h>
#include<Windows.h>
#include <thread>
#include <iostream>
using namespace std;

/*函数
输入键值,按下对应的按键*/
int mClickOne(int num);

//anxai按下两个键
void mClickTwo(int num1,int num2);

/*
找到文本框,将文本输入文本框
*/
void mClickLong(char * cc);

/*
全物品制造指令
//GetPlayer().components.builder:GiveAllRecipes()
*/
void mGiveAll();

/*
加速到15
c_speed(15)
*/
void mSpeed();

/*
找到指定名字窗口,激活
*/
void mFindWin(char* winName);

KeyEventFuns.cpp

/**fengzhuang 虚拟按键*/
#include "KeyEventFuns.h"

int mClickOne(int num){ 
    keybd_event(num, 0, 0, 0);
    Sleep(100);
    keybd_event(num, 0, KEYEVENTF_KEYUP, 0);
    return num;
}

void mClickTwo(int num1, int num2)
{
    keybd_event(num1, 0, 0, 0);
    Sleep(10);
    keybd_event(num2, 0, 0, 0);
    Sleep(100);
    keybd_event(num1, 0, KEYEVENTF_KEYUP, 0);
    keybd_event(num2, 0, KEYEVENTF_KEYUP, 0);
}

//函数4
void mClickLong(char * cc){
    int i = 0;
    while (cc) {
        mClickOne(cc[i]);
        i++;
    }
}

void mGiveAll()
{
    mClickTwo(180, 0xC0);//Shift+~ 调出饥荒游戏控制台
    Sleep(100);
    mClickTwo(160, 'G');//Shift + H
    mClickOne('E');
    mClickOne('T');
    mClickTwo(160, 'P');
    mClickOne('L');
    mClickOne('A');
    mClickOne('Y');
    mClickOne('E');
    mClickOne('R');
    mClickTwo(160, 0x39);//(
    mClickTwo(160, 0x30);//)
    mClickOne(0xBE);//。
    mClickOne('C');
    mClickOne('O');
    mClickOne('M');
    mClickOne('P');
    mClickOne('O');
    mClickOne('N');
    mClickOne('E');
    mClickOne('N');
    mClickOne('T');
    mClickOne('S');
    mClickOne(0xBE);//。

    mClickOne('B');
    mClickOne('U');
    mClickOne('I');
    mClickOne('L');
    mClickOne('D');
    mClickOne('E');
    mClickOne('R');
    mClickTwo(160, 0xBA);//:
    mClickTwo(160, 'G');
    mClickOne('I');
    mClickOne('V');
    mClickOne('E');
    mClickTwo(160, 'A');
    mClickOne('L');
    mClickOne('L');
    mClickTwo(160, 'R');
    mClickOne('E');
    mClickOne('C');
    mClickOne('I');

    mClickOne('P');
    mClickOne('E');
    mClickOne('S');
    mClickTwo(160, 0x39);//(
    mClickTwo(160, 0x30);//)
    mClickOne(0X0D);//Enter
    mClickTwo(VK_CONTROL, 'L');//Ctrl+L 关闭日志界面

}

void mSpeed()
{
    mClickOne(0xC0);//  ~ 调出饥荒游戏控制台
    Sleep(50);
    mClickOne('C');
    mClickTwo(160, 189);//下划线
                        //mClickTwo(160, 189);//下划线
    mClickOne('S');
    mClickOne('P');
    mClickOne('E');
    mClickOne('E');
    mClickOne('D');
    mClickTwo(160, 0x39);//(
    mClickOne(0x61);
    mClickOne(0x65);
    mClickTwo(160, 0x30);//)
    mClickOne(0X0D);//Enter
    mClickTwo(VK_CONTROL, 'L');//Ctrl+L 关闭日志界面

}

void mFindWin(char * winName)
{
    if (HWND hd = FindWindowA(NULL, winName)) {//按照名称查找窗口
        SetForegroundWindow(hd);//将窗口激活
    }
    else
    {
        cout << ("未找到窗口") << endl;
    }
}

Main.cpp

#include "KeyEventFuns.h"

void thread02() {
    char mwinname[20] = "饥荒    3DM汉化版";
    mFindWin(mwinname);            
    mGiveAll();
    mSpeed(); 
}

int main() {
    thread task02(thread02);//创建线程02
    task02.join();//运行线程02
    return 0;
}

 

 


版权声明:本文为Mercuryf原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。