首页 > 其他分享 >用溪流 WarKey 辅助红警开局快捷操作

用溪流 WarKey 辅助红警开局快捷操作

时间:2023-01-19 09:12:01浏览次数:61  
标签:红警 end -- local 开局 start Type config WarKey

背景

自从发现红警除了 ddraw 补丁可以在最新的系统里玩后,就开始怀旧了。但是由于手残,遇到别人抢地盘基本上直接崩了。偶然有一次发现像 08 这样的高手点 30 个坦克使用工具的。那么,我开局用工具造兵营、碉堡,是不是显得不那么可耻了呢?

说干就干,我有支持 lua 脚本的溪流 WayKey,理论上都能做到。

实现一次性点 30 个坦克

这个场景没有手速要求,只是为了不麻烦,所以我们实现地简单些:要求先把鼠标放好位置,然后设定快捷键,直接给点击 N 次。

实现很简单,30 次这个次数作为参数传进来,主函数里就是 PressMouseButton(Mouse.LBUTTON)、ReleaseMouseButton(Mouse.LBUTTON) 来 30 下:

Extension =
{
    Application   = "xlWarKey",
    Version       = "3.0",
    NameSpace     = "http://www.streamlet.org/Software/xlWarKey/",

    ExtensionName = "鼠标连点",
    Author        = "溪流",
    Description   = "该脚本可以用来在红警2中一次性造多个单位。",

    Configuration =
    {
        Count    =
        {
            Type  = "number",
            Desc  = "连点次数"
        }
    },

    Entrance      = function (id)

        local config = Extension.Configuration;
        --config.Count 就是用户在软件界面上设置的连点次数

        for i = 1, config.Count, 1
        do 
            PressMouseButton(Mouse.LBUTTON);
            ReleaseMouseButton(Mouse.LBUTTON);
        end

        return true;
    end
};

(脚本文档见 https://www.streamlet.org/software/xlwarkey/)

保存为 .lua 文件放到溪流 WarKey 目录下的 Scripts 下,退出溪流 WarKey 重新打开,即可看到脚本生效。

因为溪流 WarKey 本是为魔兽写的,因此默认会勾上“仅在魔兽争霸中应用”,要去掉它。

然后改键动作选择“鼠标连点”脚本,并配置参数 Count 为 30 即可:

实现快速造兵营、碉堡

难点主要是在定位按钮的位置。

我们在不同分辨率下截几张图,发现一个规律:不管分辨率如何,面板宽度总是固定为 168 像素,面板内部的各个组件大小也是固定的。这就好办了。经过测量,得出如下结论:

  • 顶部到按钮区域高度:227
  • 面板宽度 168,左右空隙 20、22,按钮区域宽度126
  • 按钮大小 63x50

所以,对于第 r 行、第 c 列(r、c 均从 0 开始)的按钮,其中心坐标的计算公式为

x = WIDTH - 168 + 20 + 63 * c + 63/2
y = 227 + r * 50 + 50/2

点击面板按钮可以组织成一个函数:

ClickPanel = function(row, column, count)
    if count == nil then
        count = 1
    end
    local width, height = GetClientSize()
    local target_x = width - 168 + 20 + 63 * column + 32
    local target_y = 227 + row * 50 + 25
    MoveMouse(target_x, target_y)
    for i = 1, count, 1
    do 
        ClickMouse()
        Delay(10)
    end
end

有了 ClickPanel,我们可以写出造任何东西的代码了。完整脚本如下:

Extension =
{
    Application   = "xlWarKey",
    Version       = "3.0",
    NameSpace     = "http://www.streamlet.org/Software/xlWarKey/",

    ExtensionName = "红警开局快速操作",
    Author        = "溪流",
    Description   = "帮助红警手残党不要一开始就被抢死,提高游戏体验",

    Configuration =
    {
        Type =
        {
            Type  = "number",
            Desc  = "1=造电厂,2=造兵营,3=造矿场碉堡1工程师,4=造碉堡,5=造3条狗,6=造10个兵"
        }
    },

    Entrance = function (id)

        ClickKey = function (key)
            PressKey(key)
            ReleaseKey(key)
        end

        ClickMouse = function ()
            PressMouseButton(Mouse.LBUTTON)
            ReleaseMouseButton(Mouse.LBUTTON)
        end

        ClickPanel = function(row, column, count)
            if count == nil then
                count = 1
            end
            local width, height = GetClientSize()
            -- 红警面板总是在右侧固定宽度位置 168 像素,其中
            -- 内边框左侧 20 像素,右侧 22 像素,中间 126 像素为按钮,分两列,每列 63px
            -- 顶部到按钮高度 227 像素,按钮高度 50 像素
            local target_x = width - 168 + 20 + 63 * column + 32
            local target_y = 227 + row * 50 + 25
            MoveMouse(target_x, target_y)
            for i = 1, count, 1
            do 
                ClickMouse()
                Delay(10)
            end
        end

        local config = Extension.Configuration
        local start_x, start_y = GetCursorPosition()

        if config.Type == 1 then
            -- 造电厂
            ClickKey(Keys.VK_Q)
            ClickPanel(0, 0)
            MoveMouse(start_x, start_y)
        elseif config.Type == 2 then
            -- 造兵营
            ClickKey(Keys.VK_Q)
            ClickPanel(1, 0)
            MoveMouse(start_x, start_y)
        elseif config.Type == 3 then
            -- 造矿场
            ClickKey(Keys.VK_Q)
            ClickPanel(0, 1)
            MoveMouse(start_x, start_y)
        elseif config.Type == 4 then
            -- 造碉堡
            ClickKey(Keys.VK_W)
            ClickPanel(0, 1)
            MoveMouse(start_x, start_y)
        elseif config.Type == 5 then
            -- 造3条狗
            ClickKey(Keys.VK_Q)
            ClickPanel(1, 0, 3)
            MoveMouse(start_x, start_y)
        elseif config.Type == 6 then
            -- 造10个兵
            ClickKey(Keys.VK_Q)
            ClickPanel(0, 0, 10)
            MoveMouse(start_x, start_y)
        end

        return true
    end
}

因为面板按钮会随着游戏进行而会有变化,所以上述脚本只适用于开局。

标签:红警,end,--,local,开局,start,Type,config,WarKey
From: https://www.cnblogs.com/Streamlet/p/17061039.html

相关文章

  • 开局一张图,构建神奇的 CSS 效果
    假设,我们有这样一张Gif图:利用CSS,我们尝试来搞一些事情。图片的GlitchArt风在这篇文章中--​​CSS故障艺术​​,我们介绍了利用混合模式制作一种晕眩感觉的视觉效果。......
  • 开局一张图,构建神奇的 CSS 效果
    假设,我们有这样一张Gif图:利用CSS,我们尝试来搞一些事情。图片的GlitchArt风在这篇文章中--CSS故障艺术,我们介绍了利用混合模式制作一种晕眩感觉的视觉效果。有......
  • 漱星阁开局指南
    <iframesrc="https://5nz52q-my.sharepoint.com/personal/1986381425_5nz52q_onmicrosoft_com/_layouts/15/embed.aspx?UniqueId=6f9d54d0-d3db-4477-8a5a-a2b6da12ad91"......
  • EOVS 83开局
    目录公司筹备阶段第一季公司筹备阶段第一季......
  • 第五章 开局两张图
    开局一张图,剩下的全靠脑补,补脑。一、业务模型图二、平台组件图   ......
  • python网页爬虫开局通用示例
    万事开头难,好的开始是成功的一半。步骤:1、导入requests模块,2、get方法(url,timeout,headers等)3、状态判断,4、考虑编码,5、try方法判断异常。importrequests#importtimedef......
  • 手机打开局域网发布的网页
    1、局域网通过IIS发布网页成功后,默认网址能够打开网页2、用电脑上的无线IP替换localhost不知道无线IP是多少通过cmd–>ipconfig获取3、手机访问替换后的网址即可(手机连接......
  • 红警地图编辑器的使用方法
    这两天和同学无聊的时候开始玩起了以前玩的老游戏,红色警戒2.玩着玩着,觉得没有意了,因为所有的地图都玩过了,随机生成的地图每一次都没有多大的区别,所以就想看自已能不能编......
  • Debian玩红警2
    Debian玩红警21.安装winesudoaptupdatesudoaptinstallwinewine--versionwine-5.0.3(Debian5.0.3-3)2.安装wine-mono和wine-geckowine在初次安装并在终端......
  • CentOS 9 开局配置
     CentOS9开局配置CentOS9发布有几年了,一直没有尝试使用,CentOS9有一些变动。查看系统基础信息#查看系统基础信息[root@chenby~]#neofetch........