魔兽世界技能宏如何制作```

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔兽世界技能宏如何制作```相关的知识,希望对你有一定的参考价值。

魔兽世界里释放技能自动说话的宏如何制作```

比如DZ的脚踢技能```

释放时要说"打断施法"怎么做```

参考技术A D. String    字符串,总是一种非常常用的高级类型。在Lua中,你可以非常方便的定义很长很长的字符串。    字符串在Lua中有几种方法来表示,最通用的方法,是用双引号或单引号来括起一个字符串的,如:    "This is a string."    和C语言相同的,它支持一些转义字符,列表如下:    \a bell    \b back space    \f form feed    \n newline    \r carriage return    \t horizontal tab    \v vertical tab    \\ backslash    \" double quote    \’ single quote    \[ left square bracket    \] right square bracket    由于这种字符串只能写在一行中,因此,不可避免的要用到转义字符。加入了转义字符的串,看起来实在是不敢恭维,比如:    "one line\nnext line\n\"in quotes\", ’in quotes’"    一大堆的"\"符号让人看起来很倒胃口。如果你与我有同感,那么,我们在Lua中,可以用另一种表示方法:用"[["和"]]"将多行的字符串括起来,如:    page = [[                  An html Page                    http://www.lua.org">Lua</A>        [[a text between double brackets]]              ]]    值得注意的是,在这种字符串中,如果含有单独使用的"[["或"]]"就仍然得用"\["或"\]"来避免歧义。当然,这种情况是极少会发生的。E. Table    关系表类型,这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是C语言的数组,只能用正整数来作索引;在Lua中,你可以用任意类型来作数组的索引,除了nil。同样,在C语言中,数组的内容只允许一种类型;在Lua中,你也可以用任意类型的值来作数组的内容,除了nil。    Table的定义很简单,它的主要特征是用""和""来括起一系列数据元素的。比如:    T1 = -- 定义一个空表    T1[1]=10 -- 然后我们就可以象C语言一样来使用它了。    T1["John"]=Age=27, Gender="Male"    这一句相当于:    T1["John"]= -- 必须先定义成一个表,还记得未定义的变量是nil类型吗    T1["John"]["Age"]=27    T1["John"]["Gender"]="Male"    当表的索引是字符串的时候,我们可以简写成:    T1.John=    T1.John.Age=27    T1.John.Gender="Male"    或    T1.JohnAge=27, Gender="Male"    这是一个很强的特性。    在定义表的时候,我们可以把所有的数据内容一起写在""和""之间,这样子是非常方便,而且很好看。比如,前面的T1的定义,我们可以这么写:    T1=          10, -- 相当于 [1] = 10      [100] = 40,      John= -- 如果你原意,你还可以写成:["John"] =              Age=27, -- 如果你原意,你还可以写成:["Age"] =27        Gender=Male -- 如果你原意,你还可以写成:["Gender"] =Male      ,      20 -- 相当于 [2] = 20        看起来很漂亮,不是吗?我们在写的时候,需要注意三点:    第一,所有元素之间,总是用逗号","隔开;    第二,所有索引值都需要用"["和"]"括起来;如果是字符串,还可以去掉引号和中括号;    第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;    表类型的构造是如此的方便,以致于常常被人用来代替配置文件。是的,不用怀疑,它比ini文件要漂亮,并且强大的多。  F. Function    函数,在Lua中,函数的定义也很简单。典型的定义如下:    function Add(a,b) -- Add 是函数名字,a和b是参数名字     return a+b -- return 用来返回函数的运行结果    end    请注意,return语言一定要写在end之前。假如你非要在中间放上一句return,那么请写成:do return end。    还记得前面说过,函数也是变量类型吗?上面的函数定义,其实相当于:    Add = function (a,b) return a+b end    当你重新给Add赋值时,它就不再表示这个函数了。你甚至可以赋给Add任意数据,包括nil (这样,你就清除了Add变量)。Function是不是很象C语言的函数指针呢?    和C语言一样,Lua的函数可以接受可变参数个数,它同样是用"…"来定义的,比如:    function sum (a,b,…)    如果想取得…所代表的参数,可以在函数中访问arg局部变量(表类型)得到。    如 sum(1,2,3,4)    则,在函数中,a = 1, b = 2, arg = 3, 4    更可贵的是,它可以同时返回多个结果,比如:    function s()      return 1,2,3,4    end    a,b,c,d = s() -- 此时,a = 1, b = 2, c = 3, d = 4前面说过,表类型可以拥有任意类型的值,包括函数!因此,有一个很强大的特性是,拥有函数的表,哦,我想更恰当的应该说是对象吧。Lua可以使用面向对象编程了。不信?那我举例如下:    t =         Age = 27     Add = function(self, n) self.Age = self.Age+n end        print(t.Age) -- 27    t.Add(t, 10)    print(t.Age) -- 37    不过,t.Add(t,10) 这一句实在是有点土对吧?没关系,在Lua中,你可以简写成:    t:Add(10) -- 相当于 t.Add(t,10)  G. Userdata 和 Thread    这两个类型的话题,超出了本文的内容,就不打算细说了。VI. 结束语  就这么结束了吗?当然不是,接下来,需要用Lua解释器,来帮助你理解和实践了。这篇小文只是帮助你大体了解Lua的语法。如果你有编程基础,相信会很快对Lua上手了。  就象C语言一样,Lua提供了相当多的标准函数来增强语言的功能。使用这些标准函数,你可以很方便的操作各种数据类型,并处理输入输出。有关这方面的信息,你可以参考《Programming in Lua 》一书,你可以在网络上直接观看电子版,网址为: http://www.lua.org/pil/index.html  当然,Lua的最强大的功能是能与宿主程序亲蜜无间的合作,因此,下一篇文章,我会告诉大家,如何在你的程序中使用Lua语言作为脚本,使你的程序和Lua脚本进行交互。使用流程1. 函数的使用以下程序演示了如何在Lua中使用函数, 及局部变量例e02.lua-- functions function pythagorean(a, b) local c2 = a^2 + b^2 return sqrt(c2) end print(pythagorean(3,4)) 参考技术B 这个东西是比较复杂的........................... 参考技术C 这我不会玩``

利用Lua脚本语言制作魔兽WOW插件

1 WOW内编程办法
第一种:打开WOW自带macro宏编辑窗口-->输入/script或WOW API直接制作简单宏

(1)跪倒求婚Macro
/kneel
/say 如果你不嫁给我,我就一辈子不起来

(2)切换WOW程序的窗口与全屏模式
/script SetCVar("gxWindow",1-GetCVar("gxWindow"));
/console gxRestart

(3) 打开所有包
/script OpenAllBags()
/script CloseBag(X)  (X=4~0)

(4) ALT键切换
用Alt切换大小冰箭
/cast [modifier:alt] 寒冰箭(等级 1);寒冰箭(等级 11)
用Alt切换AOE火/雪
/cast [modifier:alt] 烈焰风暴(等级 6);暴风雪(等级 6)
用Alt切换大小魔爆术
/use 莫阿姆之眼
/cast [modifier:alt] 魔爆术(等级 1);暴风雪(魔爆术 6)

(5)饰品+技能(多饰品+stopcasting )
/use 赞达拉英雄护符
/cast 火球术(等级 12)

(6)闪烁宏(按一次闪现后需再按一次以便调回方向)
/stopcasting
/cast 闪现术
/script FlipCameraYaw(180);

(7)招BB并立即攻击目标(连按2次)
/cast [nopet] 召唤水元素
/stopmacro [target=pettarget,exists]
/petattack

第二种:打开WOW自带macro宏编辑窗口-->结合WOW API+Lua制作复杂宏(255字以内)
目标:把前4个包的灵魂碎片全放到最后一个包内
/script
  bag=0 cw=1 sc=1   --定义好变量,bag是包的编号,cw表示查找包的槽位,sc指向最后一个包内的槽位
  for bag=0,3,1 do --从0号包开始,到3号包结束,最后一个包不搜索。
  for cw=1,16,1 do   --这里假设所有的包都是16个槽位的,如果没那么多槽位的包也可以用。
  if GetContainerItemLink(bag,cw)~=nil --判断这个槽位是否是空的,是空就直接跳到下一个槽位
    then
    if string.find(GetContainerItemInfo(bag,cw),"Gem") --判断这个槽位里是否是灵魂碎片
    then
      while string.find(GetContainerItemInfo(4,sc),"Gem") do sc=sc+1 end
            --判断最后一个包里原来是否已经有灵魂碎片,有的话就指向包的下一个槽位
      PickupContainerItem(bag,cw)
      PickupContainerItem(4,sc)
      PickupContainerItem(bag,cw)     --这3句控制灵魂碎片和最后一个包内物品的交换
      sc=sc+1   --每放置好一个碎片后把最后一个包的槽位指针指向下一个槽位
    end --(then end)
  end --(then end)
  end --(for end)
  end   --(for end 循环结束)

因为宏的限制是255个字,需要简化,先从内容最长的函数开始。建立以下宏:
/script function P(c,d) PickupContainerItem(c,d) end
/script function I(e,f)
if GetContainerItemInfo(e,f) then return string.find(GetContainerItemInfo(e,f),"Gem") else return nil end
end
      原来的宏就变成了:
  /script
  bag=0 cw=1 sc=1  
  for bag=0,3,1 do
  for cw=1,16,1 do
  if G(bag,cw)~=nil
    then
    if I(bag,cw)
    then
      while I(4,sc) do sc=sc+1 end
      P(bag,cw)
      P(4,sc)
      P(bag,cw)    
      sc=sc+1  
    end          
  end
  end
  end
多余的变量定义和过长的变量都可以更改:
  /script
  s=1  
  for g=0,3 do
  for w=1,16 do
  if G(g,w)
    then
    if I(g,w)
    then
      while I(4,s) do s=s+1 end
      P(g,w)
      P(4,s)
      P(g,w)    
      s=s+1  
    end          
  end
  end
  end
      这样就实现了结合WOW API+Lua制作宏的目标。

第三种: Interface/AddOns建立插件文件夹-->编写.Toc索引+.XML框架+.Lua脚本-->WOW启动Load插件
       Addons (Add-Ons)  俗称插件,是一些附加的文件,被放置在玩家 WOW 游戏目录下的 Interface 文件夹中。插件使用Blizzard提供的LUA和XML代码(官方API函数接口)来扩充玩家可以使用的用户功能,通过暴雪WOW的编译机解释和执行。
       重点学习并实现第三类--Lua/XML+Lib+WOW API编写插件。

2 插件分类
       按体系分类: 独立单体插件(如TrinketMenu饰品管理器,SCT战斗信息插件);ACE类插件(FuBar系列,BigWig团队助手);D系列插件(DAB 、DUF、DART)
       按功能分类: 界面背景插件(Xart、Dart、Oskin);战斗辅助插件(DEX、SCT、NaturEnemyCastBar);日常辅助插件(Auctioneer拍卖助手 CT_MailMod邮件助手
       按插件设置分类: 免设置插件 (MCP插件控制盒,CT_MailMod邮件助手);图形界面设置插件(NaturEnemyCastBar,D系列插件);输入指令设置插件(StatusBars,ocb)
        其中按体系分的独立单体插件是指下载后可直接放入World of Warcraft/Interface/AddOns 文件夹下使用的插件。ACE类插件:分自带库类型,公共库类型。自带库的只要放入addons下就可以了。公共库类型的,需要自己在Addons下有一个公共库!!!Libs。D系列插件:目前最常见就是3个,DAB动作条插件,DUF头像界面插件,Dart界面背景类插件。和ACE类一样,需要一个D系列专用的DiscordLibrary库。
        重点学习战斗信息辅助类+简单图形界面设置插件。

2 目前学习并实现的
(1)Welcome插件功能:支持"/"命令;当在WOW中改变区域时,显示文本欢迎信息;支持两种文本显示位置-聊天框/屏幕中央;WOW中可自定义Welcome信息;欢迎消息格式为:自定义Welcome信息+系统地名。
插件文件:Welcome.toc+Welcome.lua+Locale-enUs.lua;注:本插件无界面,故无XML文件。
核心代码段:
WelcomeHome=AceLibrary("AceAddon-2.0"):new("AceConsole-2.0","AceEvent-2.0","AceDB-2.0")--使用Lib库
Welcome:RegisterChatCommand(L["Slash-Commands"], opts) --支持"/"命令
self:RegisterEvent("ZONE_CHANGED")--登记区域改变事件
self:Print(self.db.profile.message)--聊天框显示
UIErrorsFrame:AddMessage(self.db.profile.message, 1.0, 1.0, 1.0, 5.0)--屏幕中央显示
self:Print("XXX"+GetSubZoneText()) --显示自定义格式+系统地名

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
























































































































以上是关于魔兽世界技能宏如何制作```的主要内容,如果未能解决你的问题,请参考以下文章

魔兽世界技能宏怎么做

高分求魔兽世界宏命令函数和各个职业技能

wow魔兽 法师 wow求高手帮忙做个宏

魔兽世界LR宏

魔兽世界盗贼致盲宏

魔兽世界 宏怎么做