菜单
2019-9-8 18:05 1197 9 1 0 1

登陆查看完整内容

您需要 登录 才可以下载或查看,没有帐号?注册






   扩展技能栏更新之后,能排放宠物按键的地方也多了很多,甚至在召唤的过程中切换技能栏的容错率也小了很多。在这篇文章中我就来教大家如何写一段完整的宠物召唤宏,还不熟悉G502设置的话可以先浏览逻辑G系列鼠标-宠物召唤宏(1)


  • 快捷键设置

   如果用宏来召唤宠物会涉及很多快捷键的调用,设置的不合理会与正常释放技能的按键发生冲突,通常是蓄力技能(蓄力技能最好设置到F1-F12)和召唤按键的冲突,所以合理设置快捷键是很有必要,以下是我的快捷键。


1.png 取消.png
快捷.png




  • 代码实现

  1. --按键设置类 保存宠物对应的技能栏和按键--
  2. Skills = {
  3.         skill = "", --技能栏快捷键
  4.         backSkill ="", --默认技能栏
  5.         petKeys = {}, --技能栏上宠物对应的按键[1~=]
  6.         waitSleep = 500 --宠物召唤后停留500毫秒后取消召唤,该值为默认值
  7. }
  8. function Skills:new(skill,backSkill,petKeys,waitSleep)
  9.     local o = {};
  10.     setmetatable(o, self);
  11.     o.skill = skill;
  12.         o.backSkill = backSkill;
  13.         o.petKeys = petKeys;
  14.         o.waitSleep = waitSleep;
  15.         return o;
  16. end
复制代码


  1. --当前宠物索引及技能栏索引
  2. CurrentIds = {
  3.         currentSkillIndex = 1,
  4.         currentPetIndex = 1
  5. }

  6. function CurrentIds:new(currentSkillIndex,currentPetIndex)
  7.         local o = {};
  8.         setmetatable(o, self);
  9.         o.currentSkillIndex = currentSkillIndex;
  10.         o.currentPetIndex = currentPetIndex;
  11.         return o
  12. end
复制代码



看下我的古龙设置位置,举例我古龙设置的第一个技能栏是6号,代码中第一个Skills的“semicolon对应的是“;” ,
“tide” 对应的是“·”

古龙6.png
古龙5.png
古龙4.png
  1. --古龙
  2. G5CurrentIds = CurrentIds:new(1,1)
  3. G5Skills = {
  4.                 Skills:new("semicolon","tilde",{"1","2","3","4","5","6","7","8","9","0","minus","equal"},550),
  5.                 Skills:new("quote","tilde",{"1","2","3","4","5","6","7","8","9","0","minus","equal"},550),
  6.                 Skills:new("4","tilde",{"6","7","8","9","0","minus","equal"},550)
  7. }
复制代码





这是具体的宠物召唤实现
  1. --currentIds 记录当前宠物所在的技能栏以及键位
  2. --skills 技能栏集合
  3. --isChange2 是否切换到扩展技能栏2 默认true
  4. --召唤古龙

  5. function DragonCallNext(currentIds,skills,isChange2)
  6.         OutputLogMessage("skillslength = %s  ",table.getn(skills));
  7.         OutputLogMessage("currentSkillIndex = %s  ",currentIds.currentSkillIndex);

  8.         skill = skills[currentIds.currentSkillIndex];
  9.         pets = skill.petKeys;
  10.         pet = pets[currentIds.currentPetIndex];
  11.         OutputLogMessage("pet = %s",(currentIds.currentPetIndex));
  12.         --召唤前先取消宠物
  13.         PressKey(skill.backSkill);
  14.         ReleaseKey(skill.backSkill);
  15.         Sleep(100)
  16.         if(isChange2 == true) then
  17.                 PressKey("lalt");
  18.                 PressKey("v");
  19.                 ReleaseKey("lalt");
  20.                 ReleaseKey("v");
  21.         end
  22.         --切换到技能栏
  23.         if(skill.skill == "4" or skill.skill == "3" or skill.skill == "2") then
  24.                 PressKey("lalt");
  25.                 PressKey(skill.skill);
  26.                 ReleaseKey("lalt");
  27.                 ReleaseKey(skill.skill);
  28.         else
  29.                 PressKey(skill.skill);
  30.                 ReleaseKey(skill.skill);
  31.         end
  32.         --召唤宠物
  33.         PressKey(pet);
  34.         ReleaseKey(pet);
  35.         --Sleep(100)
  36.         --切换回默认技能栏
  37.         PressKey("lalt");
  38.         PressKey(skill.backSkill);
  39.         ReleaseKey("lalt");
  40.         ReleaseKey(skill.backSkill);

  41.         if(isChange2 == true) then
  42.                 PressKey("lalt");
  43.                 PressKey("v");
  44.                 ReleaseKey("lalt");
  45.                 ReleaseKey("v");
  46.         end
  47.         Sleep(550)
  48.         --取消宠物
  49.         PressKey(skill.backSkill);
  50.         ReleaseKey(skill.backSkill);
  51.         --Sleep(300)
  52.         --更新技能栏以及宠物键位
  53.         if(currentIds.currentPetIndex < table.getn(pets)) then
  54.                 currentIds.currentPetIndex = currentIds.currentPetIndex + 1;
  55.         else
  56.                 currentIds.currentSkillIndex = currentIds.currentSkillIndex + 1;
  57.                 currentIds.currentPetIndex = 1;
  58.         end
  59.         if(currentIds.currentSkillIndex > table.getn(skills)) then
  60.                 currentIds.currentSkillIndex = 1;
  61.                 currentIds.currentPetIndex = 1;
  62.         end
  63.         return currentIds;
  64. end
复制代码




G键触发事件
  1. function OnEvent(event, arg)
  2.         --G5
  3.         if (event == "MOUSE_BUTTON_RELEASED" and arg == 5) then
  4.                 OutputLogMessage("in MOUSE_BUTTON_RELEASED 5 \n");
  5.                 G5CurrentIds=DragonCallNext(G5CurrentIds,G5Skills,true)
  6.         end
  7. end
复制代码




注:此文禁止转载!






评分总计 : 1人参与 +15 | 查看全部评分
\(•ㅂ•)/♥+15

HOT

kidmaomao /显示全部评论

三叶草探索者

 

感谢楼主的文章,为了搞懂楼主的内容,让我也去浅学了一些LUA~
楼主就是没有把自定义化的内容标注出来,可能有一些玩家会看不懂
班门弄斧一下,请楼主指教~

确定某个键需要召唤宠物的宠物摆放位置,

G5Skills = {
Skills:new("semicolon",  -----这个是分号,对应楼主的6排快捷栏,ALT是另外组合搭配,在下方代码中添加的

"tilde",  ----这个是波浪号,切回1号主技能栏键,ALT是另外组合搭配,在下方添加的,

{"1","2","3","4","5","6","7","8","9","0","minus","equal"},    -----该技能栏放宠物的对应位置,哪些格子放了骨龙了,大括号中就填哪些号,minus是减号,equal是等于号

550), -----取消召唤宠物的延迟设置


Skills:new("quote","tilde",{"1","2","3","4","5","6","7","8","9","0","minus","equal"},550),   -----逻辑同上,quote是引号,对应楼主6号快捷栏的骨龙

Skills:new("4","tilde",{"6","7","8","9","0","minus","equal"},550)  -----逻辑同上,4是对应楼主4号快捷栏,ALT是另外组合搭配的
}

确定切左二行和右二行的快捷键,
  • if(isChange2 == true) then
  •                 PressKey("lalt");   -------楼主的快捷键是ALT+V,搜索楼主的代码,然后在这里替换你需要替换的快捷键
  •                 PressKey("v");
  •                 ReleaseKey("lalt");
  •                 ReleaseKey("v");
  •         end



楼主的技能栏快捷键设置,
  • if(skill.skill == "4" or skill.skill == "3" or skill.skill == "2") then  -----因为楼主的2、3、4排快捷栏是要搭配ALT来按的
  •                 PressKey("lalt");
  •                 PressKey(skill.skill);
  •                 ReleaseKey("lalt");
  •                 ReleaseKey(skill.skill);
  •         else                                           -------5、6、7、8不需要搭配ATL来按,应该是根据你的需要,来修改这里
  •                 PressKey(skill.skill);
  •                 ReleaseKey(skill.skill);
  •         end

楼主的1号主技能栏和取消宠物键是绑定了的~
按照楼主的代码,1号主技能栏是ALT+波浪号,取消宠物是波浪号,这两个功能是通过按不按ALT来区分了,波浪号应该是可以替换其他的吧?



其他应该保持和楼主一致就可以了~非常好的代码教学~

风来の东林 : kidmaomao同学分析的非常对,热烈鼓掌~ / 2019-9-10 13:59
发表于 2019-9-9 22:35举报 +1 引用

2#

丶范尼斯 /显示全部评论

 

发表于 2019-9-8 20:05举报 引用

4#

西鼠霸王 /显示全部评论

三叶草

 

我缺的是古龙啊
发表于 2019-9-11 09:05举报 引用

5#

收藏收藏
发表于 2019-9-15 09:35举报 引用

6#

a58565621 /显示全部评论

 

完全不懂
发表于 2019-9-23 19:46举报 引用

7#

猫的树和我的你 /显示全部评论

三叶草春的呢喃

 

罗技G603 鼠标一直处于无连接状态。。。。。。。。。。。。。。。。头大
发表于 2019-9-25 12:46举报 引用

8#

天河幻想 /显示全部评论

三叶草小幽灵

 

膜拜大神我是完全没看懂
发表于 2019-10-14 14:25举报 引用

9#

羙系丨琻鱼丶 /显示全部评论

三叶草

 

非常实用啊~~
发表于 2019-11-6 08:01举报 引用

Tir na nOg

Mabinogi洛奇玩家基地

联系我们 : mabinogionline@qq.com

帮助中心

举报通道

BUG反馈与建议

私有徽章信息登记

捐助迪尔纳诺

交流群:241182316

Powered by Discuz! , Tir na nOg