菜单
2019-9-8 18:05 384 5 0 0 0

登陆查看完整内容

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






   扩展技能栏更新之后,能排放宠物按键的地方也多了很多,甚至在召唤的过程中切换技能栏的容错率也小了很多。在这篇文章中我就来教大家如何写一段完整的宠物召唤宏,还不熟悉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举报 引用

Tir na nOg

Mabinogi洛奇玩家基地

联系我们 : mabinogionline@qq.com

帮助中心

举报通道

BUG反馈与建议

私有徽章信息登记

繁体中文

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

交流群:241182316

Powered by Discuz! , Tir na nOg