image

网上找到一个罗技的xml格式的永劫无间鼠标宏,但是现在的罗技的驱动一般都是ghub,好像导入不了xml格式的驱动,用java写了一个转换代码,把罗技的xml格式的鼠标宏转到按键精灵。之前写的万能宏脚本就是用的按键精灵,之前用按键精灵的同学可以拿下这次转换后的脚本,不过这次需要你自己手动新建下脚本。

xml鼠标宏截图

1.png

按键精灵脚本

2.png
从上面张图片可以看出 xml格式的鼠标宏按键精灵的区别挺大的,手动改的话很费时间,所以写了个转换代码。
java转换代码

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class XmlAnalysis {
    public static void main(String[] args) throws DocumentException {
        //1.创建Reader对象
        SAXReader reader = new SAXReader();
        //2.加载xml
        Document document = reader.read(new File(Test.class.getClassLoader().getResource("924.xml").getPath()));
        //3.获取根节点
        Element rootElement = document.getRootElement();
        System.out.println("rootname:"+rootElement.getName());
        Element data = rootElement.element("profile").element("macros");
        //遍历根节点的子节点,用Element对象的elementIterator获取子节点的迭代器
        Iterator<Element> booksIterator = data.elementIterator();
        //遍历迭代器,获取根节点的信息
        while(booksIterator.hasNext()) {
            System.out.println("------开始遍历---------");
            Element book = booksIterator.next();
            //获取book的属性名和属性值
            List<Attribute> bookattributes = book.attributes();
            for (Attribute attribute : bookattributes) {
                if("name".equals(attribute.getName())){
                    //去掉括号
                    System.out.println("name:"+attribute.getValue());
                }
            }
            //遍历book节点子节点,elementIterator得到迭代器
            Iterator it2 = book.elementIterator();
            while(it2.hasNext()) {
                Element a = (Element) it2.next();
                Iterator it3 = a.elementIterator();
                while(it3.hasNext()){
                    Element a1 = (Element) it3.next();
                    //System.out.println("21212:"+a1.getTextTrim());
                    List<Attribute> aattributes = a1.attributes();
                    String tempStr = "";
                    for (Attribute attribute : aattributes) {
                        if("button".equals(attribute.getName())||"direction".equals(attribute.getName())||"value".equals(attribute.getName())){
                            tempStr += attribute.getName()+":"+attribute.getValue()+" ";
                        }
                        if("milliseconds".equals(attribute.getName())){
                            tempStr = "Delay "+attribute.getValue();
                        }
                    }
//                    System.out.println("源:"+tempStr);
//                    System.out.println("目标:"+change2Aj(tempStr));
                    System.out.println(change2Aj(tempStr));
                }
            }
            System.out.println("------结束遍历--------");
        }
    }

    /**
     * 罗技xml 转换成 按键精灵脚本内容
     * @param tempStr
     * @return
     */
    public static String change2Aj(String tempStr){
        String cmdStr = "";
        //判断是否是按键
        if(tempStr.contains("value")){
            String[] strArrays = tempStr.trim().split(" ");
            String tep1 = "";
            String tep2 = "";
            for (int i = 0; i < strArrays.length; i++) {
                if(strArrays[i].contains("direction")){
                    //System.out.println("strArrays[i].split(\":\")[1]:"+strArrays[i].split(":")[1]);
                    if("down".equals(strArrays[i].split(":")[1])){
                        tep1 = "KeyDown ";
                    }
                    if("up".equals(strArrays[i].split(":")[1])){
                        tep1 = "KeyUp ";
                    }
                }else{
                    //获取 key 用:分割 取第二个
                   String key = strArrays[i].split(":")[1];
                   tep2 = key;
                }
            }
            cmdStr = tep1 + "\""+tep2+"\", 1";
            //如果是鼠标点击
        }else if(tempStr.contains("button")){
            String[] strArrays = tempStr.trim().split(" ");
            String tep1 = "";
            String tep2 = "";
            for (int i = 0; i < strArrays.length; i++) {
                if(strArrays[i].contains("direction")){
                    //System.out.println("strArrays[i].split(\":\")[1]:"+strArrays[i].split(":")[1]);
                    if("down".equals(strArrays[i].split(":")[1])){
                        tep1 = "Down ";
                    }
                    if("up".equals(strArrays[i].split(":")[1])){
                        tep1 = "Up ";
                    }
                }else{
                    if("right".equals(strArrays[i].split(":")[1])){
                        tep2 = "Right";
                    }
                    if("left".equals(strArrays[i].split(":")[1])){
                        tep2 = "Left";
                    }
                }
            }
            cmdStr = tep2 + tep1 + " 1";
            //deley 直接输出
        }else if(tempStr.contains("Delay")) {
            cmdStr = tempStr;
        }else{
            cmdStr = "未识别";
        }
        return cmdStr;
    }
}

转换后的脚本

8.png

永劫无间万能宏 按键精灵使用说明

1.打开按键精灵 点击新建脚本

3.png

2.点击切换源文件模式

4.png

3.打开转换后的脚本 把这一段复制到按键精灵 注意不要复制name

5.png

4.然后修改下文件名及描述,点击保存 如果出现 您的脚本已经顺利通过语法检查,说明脚本没有错误,保存成功。

6.png

5.关闭脚本编写界面回到主界面 勾选有效,设置启动按键,终止按键,就可以到游戏中使用了

7.png

转换的脚本有:

一键飞爪
•一键单发长剑剑气
•一键右键蓄力振 右键按住
•一键跳振刀
•一键闪C振刀
•一键通用跳砍
•一键通用振刀
•一键通用升龙
•太刀-升龙斩+下劈连招(海迅电商)
•太刀长剑闪避升龙
•连续按E挣脱金刚抓取
•长剑-升龙斩+下劈连招
•一键匕首跳下劈
•一键匕首金色霸体+C震
•匕首妖刀姬左蓄力+妖刀斩+下劈一套连
•一键匕首金+蓝色滑步霸体
•一键振刀(支持蓄力)海迅电商
•一键通用蓄力闪
•一键长枪太刀单次赶路
•一键长枪太刀双次赶路
•一键龙王破
•长剑-长枪-太刀通用无霸体连招
•长枪+升龙斩+下劈蓄力
•长枪+升龙斩+下劈
•长枪+跳A+下劈
•长枪双A+升龙斩+下劈连招
•长枪-龙王破金色霸体哪吒闹海
•阔刀升龙+空中A+右键斩
•一键C振刀
•一键闪振刀
•按住滑铲跳赶路 手动先跑起来
•长剑连招AA升龙AA下劈
•长枪按住无限上挑
•太刀连招2 A双A 升龙 下劈
•匕首连招1 AA升龙下劈
•阔刀连招1 升龙下劈
•按住吃甲+滑步
•按住吃药+滑步
•一键右键龙王破
•匕首7连 A升龙AA跳AA下劈
•匕首金色滑步+蓄力连招
•太刀-A闪-A闪-升龙AA+跳AA下劈
•太刀连招1 A 双A跳 双A 下劈 右蓄力斩+左冲刺斩
•崔三娘长枪秒人连招
•按住连续下劈 拜年下劈
•火男遮影步后闪3升龙连招
•火男遮影步轰拳A三升龙蓄力斩( 开大跑起来用 海迅电商)
•长剑-A闪-A闪-升龙+右+左+跳AA+下劈
•长枪-龙王破+闹海1下+升龙A下劈
•一键双发长剑剑气
•一键太刀二次滑步+蓄力斩
•一键太刀一次滑步+蓄力斩

下载: 包含破解版按键精灵及转换后的脚本 关注公众号 程序员咩咩 回复 1003 获取 回复时注意不要带空格

Q.E.D.


程序员咩咩,六年java程序员,也会一些python,分享一些工作生活中的心得体会。