导航:首页 > 源码编译 > 魔兽世界怎么编译

魔兽世界怎么编译

发布时间:2022-11-28 08:54:42

Ⅰ 求一个Lua编辑器(WOW lua),跟使用方法。

里推荐一个不错!占用内存也比较少!适合机子不强的玩家的!

11月11日更新。添加DAB水晶按钮。赶时髦的ACE2全尺寸通用界面。附傻瓜教程。

11月11日更新:重新制作了.lua文件,采用拼音命名,删除多余lua;重新调整了布局,适合各种尺寸显示器(可能部分还需要微调)。仍然采用DAB动作条(我实在找不到比它功能更全的动作条了)添加了现在时髦的水晶皮肤。(这里感谢德鲁鲁的指导)。

此界面自认为出彩的地方是小地图和水晶动作条,小地图是高亮设计,在飞机上就像看小电视^_^。发现很多人把小地图改了,浪费了我一片苦心喔。(看图在最后)

请下载全部11。11的AddOns和WTF文件(除非你喜欢以前的样式)!!!!!

提供全部适合法师插件下载,其他的ace插件请自行于本论坛寻找,恕不回答与界面无关的问题。
这里衷心感谢触手党党魁的教程(详见 ... &extra=page%3D1)
感谢炽火大大的脚本修改插件:zScriptBox。

游戏不要选择窗口模式

游戏请选择使用ui缩放调节到 .64 即左边到底

如果你安装以后界面混乱请自行调整,方法如下:

我只说一点小窍门。(傻瓜教程)
1、下载包包并安装:清空/World of Warcraft下AddOns和WTF文件夹,请一定要备份哦,然后解压缩拷贝我的包包(请注意WTF文件夹下有3处地方要改名哦,包里有提示)。

2、进入游戏,在画面中找到“+”(即zScriptBox),点击。点了吗?ok。不要关闭游戏返回桌面,打开文件夹x:\World of Warcraft\Interface\AddOns\oSkin,用记事本打开xxx.lua文件(xxx即中文的“某某某”为我们要改动的界面)。
xxx.lua文件所对应的框体如下:

di.lua=底部信息条

dingbu.lua=顶部框

ditu1.lua、ditu2.lua=地图的2个边框

dongzhuotiao.lua=动作条边框

shifatiao.lua=施法条边框

touxiang.lua=头像边框

youxia.lua=右下框

zhuoxia.lua=左下框

比如:你要修改屏幕顶部框体,就打开dingbu.lua

3、复制里面的内容,进入游戏粘贴在zScriptBox框里,修改frame:SetWidth(xxxx);frame:SetHeight(xxxx);frame:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", -xxx, xxx);(xxxx为数字哦,先把数字稍微增减一点哦),点击zScriptBox框左上角的“RUN”,看到什么了?^_^。改的不满意?再改数字试试,直到你满意为止;注意了:这时你应该先按照你满意的数字修改xxx.lua文件并保存,然后再回到游戏点击zScriptBox框上边的“ReloadUI”,哇!改好了呀!
4、同理你也可以改变其他参数,包括颜色、边框颜色、框体透明度等等。详见上面给出的党魁大大的贴子;

给出党魁大大的说明:

local frame = CreateFrame("Frame", "MapBar", UIParent)
frame:SetFrameStrata("BACKGROUND")
frame:EnableMouse(false)
frame:SetMovable(false)
frame:SetWidth(135)
frame:SetHeight(135)
frame:ClearAllPoints()
frame:SetPoint("BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", -2, 2)

oSkin:applySkin(frame, 2, nil, nil, 50)

CreatFrame里的是自己给这个frame取的名字, 也是这个lua文件的名字,。
SetFrameStrata是设定frame的层级。有BACKGROUND,LOW,MEDIUM,HIGH和DIALOG几种, BACKGROUND最低, 一般的frame设成BACKGROUND就行了,当需要用到frame重叠的时候慵陡叩幕嵴谧〔慵兜偷? 这时再改就行了。注意frame的层级不能高于上面放置内容的层级,不然会导致鼠标操作无效等bug。
EnableMouse跟SetMovable这个顾名思义了吧。一般都是false。
SetWidth和SetHeight分别设置frame的长和宽,单位是pixel。
SetPoint是设置frame的锚点。有TOP,BOTTOM,CENTER,TOPLEFT,TOPRIGHT,BOTTOMLEFT,BOTTOMRIGHT, LEFT和RIGHT8种, 分别对应画面的8个方位。
applySkin, 把自己建立的这个frame加上oskin的皮肤。4个变量分别是"frame, header, bba, ba, fh"。"frame"是自建frame的名字, bba跟ba分别是改换frame透明度的量, 通常为nil, fh是反光度, 一般设置在0-200之间。

5、关于颜色的改法也很简单,我是在DAB上先调出颜色参数然后修改core.lua的,见上面给出的党魁大大的贴子。
6、如果你已经有了oSkin,建议还是使用我提供的oSkin,减少不必要的麻烦。

7、如果你感觉界面里哪个框你不需要,只要打开AddOns\oSkin下oSkin.toc文件在最后部分找到该xxx.lua删除即可,反之就是增加哦。

很多人一直在问插件设置的问题,这里说明一下有关ace2相关插件的设置。非ace2插件请本站搜索吧。

鼠标左键(也许是右键^_^)点击你信息栏里那个齿轮样的图标(这是所有ace2相关插件的控制中心,记住是所有哦,以后插件设置问题都在这里找)--依赖--ace2--插件名称,或者在此目录下其他栏目里找,如作者、分类等等。

万分感谢“轻言浅笑.五区斩魔者 ”整理的部分包内插件的设置命令

1. 整合背包:输入/bagnon设置。

2. 图标移动:MoveAnything。游戏中按Esc键后可见

3.冷却时间带闪光提示zcc:
/zcc reset -- 重置
/zcc shine -- 隐藏/显示闪光
/zcc random -- 自动变化闪光材质
/zcc font <value> -- 设置字体文件, 默认是 Fonts\FZLBJW.TTF
/zcc size <value> -- 字体大小, 取值1~50, 默认是 28
/zcc min <value> -- 少于此值的冷却不显示, >0, 默认是 3 秒
/zcc texture <value> -- 闪光材质, 取值1~4, 默认是 1
/zcc scale <value> -- 闪光大小, 取值36~512, 默认是 256
/zcc speed <value> -- 闪光速度, 取值-3~3, 默认是 0

4. 施法进度条:eCastingBar 输入/ecb设置

5. 技能冷却:CooldownTimers.输入/cdt menu 开配置窗口

6. 方形地图simpleMinimapv
/smm hide可以隐藏或者显示区域,时间和缩放按钮
/smm hide time可以把那个显示时间的太阳/月亮隐藏
/smm show zoom可以隐藏跟显示缩放按钮
/smm alpha (0.1 0.2~0.9 1)设置透明度 括号里的数字自己填一个你满意的透明度
/smm scale (0.1~0.9 1)设置大小
/smm lock锁定.输入一次锁定,再输入一次解锁.

7.buff显示-ElkBuffBar
输入/ebb设置 可以看见设置BUFF的参数.
/ebb locked true 锁定
/ebb locked false 解除锁定
/ebb width 设置BUFF长
/ebb height 设置BUFF高

8. 查看怪物血量:输入/MobInfo2

9. 全职业距离监控
/dw lock 锁定进度条
/dw unlock 解除锁定
/dw scale 缩放(参数范围:0.5~3系统默认的是1)
/dw usedefault 使用默认配置(当你不小心将进度条拖到屏幕外面时可以使用此命令使其重新回到屏幕中央)

10. 技能物品冷却插件 输入/cdt menu 设置

11. 聊天窗口设置 输入/sccn设置
输入/sccn timestamp 关闭时间标签
移动聊天窗口--鼠标右键点综合里的解锁 字体大小也在里面

12. 法师变羊计时 SheepWatch
使用 /sheepwatch 或 /sw 设置查看当前配置信息使用 /sw status 查看当前配置信息

13 战斗信息:SCT+SCTD+SpellAlertSCT
SCT 是显示你受到的伤害
SCTD 是显示输出的伤害
SpellAlertSCT 是显示法术预警
配置命令:
SCT:/sct, /sct menu
SCTD:/sctd,/sctd menu
SpellAlertSCT:/sasct menu

14. 团队PerfectRaid
团队:
如果是按姓名排:/praid sort name
如果是按职业排:/praid sort class
如果是按组小队排:praid sort group

15. 自动解除骑乘、坐下、变形和暗影形态
输入/ezd设置

16. 伤害统计
输入/DMSHOW

17. 狐形战斗条/DHUD

地址:

Ⅱ 求指点.魔兽世界服务器源代码怎么编译通过

Mangos服务端是一个多线程、逻辑单线程的服务端。每个线程内部都采用循环结构,主线程启动后将创建多个工作线程,主要包括负责游戏世界运作的核心线程,具有处理用户请求,执行定时器的能力。其它几个工作线程还有网络Io,该线程启动后其内部将使用线程池进行网络Io操作,不间断地接收数据包,并存储到相关玩家的消息队列中,由世界线程进行处理,其它几个工作线程先不讨论,因为今天也是第一次看mangos的源代码.务端启动后这些线程将永不停息地工作。世界线程是服务器的核心,负责处理所有玩家操作请求,定时器、AI等。
void HandleGroupInviteOpcode(WorldPacket& recvPacket);
void (WorldPacket& recvPacket);
void HandleGroupUninviteOpcode(WorldPacket& recvPacket);
void HandleGroupUninviteGuidOpcode(WorldPacket& recvPacket);
void HandleGroupSetLeaderOpcode(WorldPacket& recvPacket);
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
void HandleOptOutOfLootOpcode(WorldPacket& recv_data);

Ⅲ 请问高手,怎样开发一个魔兽世界插件软件编程

Lua 程序设计初步

作者: 沐枫 (第二人生成员)
版权所有转载请注明原出处

在这篇文章中,我想向大家介绍如何进行Lua程序设计。我假设大家都学过至少一门编程语言,比如Basic或C,特别是C。因为Lua的最大用途是在宿主程序中作为脚本使用的。
Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。
在Lua中,一切都是变量,除了关键字。请记住这句话。

I. 首先是注释
写一个程序,总是少不了注释的。
在Lua中,你可以使用单行注释和多行注释。
单行注释中,连续两个减号"--"表示注释的开始,一直延续到行末为止。相当于C++语言中的"//"。
多行注释中,由"--[["表示注释开始,并且一直延续到"]]"为止。这种注释相当于C语言中的"/*…*/"。在注释当中,"[["和"]]"是可以嵌套的。
II. Lua编程
经典的"Hello world"的程序总是被用来开始介绍一种语言。在Lua中,写一个这样的程序很简单:
print("Hello world")
在Lua中,语句之间可以用分号";"隔开,也可以用空白隔开。一般来说,如果多个语句写在同一行的话,建议总是用分号隔开。
Lua 有好几种程序控制语句,如:

条件控制:if 条件 then … elseif 条件 then … else … end
While循环:while 条件 do … end
Repeat循环:repeat … until 条件
For循环:for 变量 = 初值,终点值,步进 do … end
For循环:for 变量1,变量2,… ,变量N in表或枚举函数 do … end

注意一下,for的循环变量总是只作用于for的局部变量,你也可以省略步进值,这时候,for循环会使用1作为步进值。
你可以用break来中止一个循环。
如果你有程序设计的基础,比如你学过Basic,C之类的,你会觉得Lua也不难。但Lua有几个地方是明显不同于这些程序设计语言的,所以请特别注意。

.语句块
语句块在C++中是用"{"和"}"括起来的,在Lua中,它是用do 和 end 括起来的。比如:
do print("Hello") end
你可以在 函数 中和 语句块 中定局部变量。

.赋值语句
赋值语句在Lua被强化了。它可以同时给多个变量赋值。
例如:
a,b,c,d=1,2,3,4
甚至是:
a,b=b,a -- 多么方便的交换变量功能啊。
在默认情况下,变量总是认为是全局的。假如你要定义局部变量,则在第一次赋值的时候,需要用local说明。比如:
local a,b,c = 1,2,3 -- a,b,c都是局部变量

.数值运算
和C语言一样,支持 +, -, *, /。但Lua还多了一个"^"。这表示指数乘方运算。比如2^3 结果为8, 2^4结果为16。
连接两个字符串,可以用".."运处符。如:
"This a " .. "string." -- 等于 "this a string"

.比较运算
< > <= >= == ~=
分别表示 小于,大于,不大于,不小于,相等,不相等
所有这些操作符总是返回true或false。
对于Table,Function和Userdata类型的数据,只有 == 和 ~=可以用。相等表示两个变量引用的是同一个数据。比如:
a={1,2}
b=a
print(a==b, a~=b) -- true, false
a={1,2}
b={1,2}
print(a==b, a~=b) -- false, true

.逻辑运算
and, or, not
其中,and 和 or 与C语言区别特别大。
在这里,请先记住,在Lua中,只有false和nil才计算为false,其它任何数据都计算为true,0也是true!
and 和 or的运算结果不是true和false,而是和它的两个操作数相关。
a and b:如果a为false,则返回a;否则返回b
a or b:如果 a 为true,则返回a;否则返回b

举几个例子:
print(4 and 5) --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5

在Lua中这是很有用的特性,也是比较令人混洧的特性。
我们可以模拟C语言中的语句:x = a? b : c,在Lua中,可以写成:x = a and b or c。
最有用的语句是: x = x or v,它相当于:if not x then x = v end 。

.运算符优先级,从高到低顺序如下:
^
not - (一元运算)
* /
+ -
..(字符串连接)
< > <= >= ~= ==
and
or

III. 关键字
关键字是不能做为变量的。Lua的关键字不多,就以下几个:
and break do else elseif
end false for function if
in local nil not or
repeat return then true until while

IV. 变量类型
怎么确定一个变量是什么类型的呢?大家可以用type()函数来检查。Lua支持的类型有以下几种:

Nil 空值,所有没有使用过的变量,都是nil。nil既是值,又是类型。
Boolean 布尔值
Number 数值,在Lua里,数值相当于C语言的double
String 字符串,如果你愿意的话,字符串是可以包含''字符的
Table 关系表类型,这个类型功能比较强大,我们在后面慢慢说。
Function 函数类型,不要怀疑,函数也是一种类型,也就是说,所有的函数,它本身就是一个变量。
Userdata 嗯,这个类型专门用来和Lua的宿主打交道的。宿主通常是用C和C++来编写的,在这种情况下,Userdata可以是宿主的任意数据类型,常用的有Struct和指针。
Thread 线程类型,在Lua中没有真正的线程。Lua中可以将一个函数分成几部份运行。如果感兴趣的话,可以去看看Lua的文档。

V. 变量的定义
所有的语言,都要用到变量。在Lua中,不管你在什么地方使用变量,都不需要声明,并且所有的这些变量总是全局变量,除非,你在前面加上"local"。
这一点要特别注意,因为你可能想在函数里使用局部变量,却忘了用local来说明。
至于变量名字,它是大小写相关的。也就是说,A和a是两个不同的变量。
定义一个变量的方法就是赋值。"="操作就是用来赋值的
我们一起来定义几种常用类型的变量吧。
A. Nil
正如前面所说的,没有使用过的变量的值,都是Nil。有时候我们也需要将一个变量清除,这时候,我们可以直接给变量赋以nil值。如:
var1=nil -- 请注意 nil 一定要小写

B. Boolean
布尔值通常是用在进行条件判断的时候。布尔值有两种:true 和 false。在Lua中,只有false和nil才被计算为false,而所有任何其它类型的值,都是true。比如0,空串等等,都是true。不要被C语言的习惯所误导,0在Lua中的的确确是true。你也可以直接给一个变量赋以Boolean类型的值,如:
varboolean = true

C. Number
在Lua中,是没有整数类型的,也不需要。一般情况下,只要数值不是很大(比如不超过100,000,000,000,000),是不会产生舍入误差的。在很多CPU上,实数的运算并不比整数慢。
实数的表示方法,同C语言类似,如:
4 0.4 4.57e-3 0.3e12 5e+20

D. String
字符串,总是一种非常常用的高级类型。在Lua中,你可以非常方便的定义很长很长的字符串。
字符串在Lua中有几种方法来表示,最通用的方法,是用双引号或单引号来括起一个字符串的,如:
"This is a string."
和C语言相同的,它支持一些转义字符,列表如下:
a bell
 back space
f form feed

newline
carriage return
horizontal tab
v vertical tab
\ backslash
" double quote
' single quote
[ left square bracket
] right square bracket

由于这种字符串只能写在一行中,因此,不可避免的要用到转义字符。加入了转义字符的串,看起来实在是不敢恭维,比如:
"one line
next line
"in quotes", 'in quotes'"
一大堆的""符号让人看起来很倒胃口。如果你与我有同感,那么,我们在Lua中,可以用另一种表示方法:用"[["和"]]"将多行的字符串括起来,如:
page = [[
<HTML>
<HEAD>
<TITLE>An HTML Page</TITLE>
</HEAD>
<BODY>
<A HREF="http://www.lua.org
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[ http://www.lua.org ]">Lua</A>
[[a text between double brackets]]
</BODY>
</HTML>
]]

值得注意的是,在这种字符串中,如果含有单独使用的"[["或"]]"就仍然得用"["或"]"来避免歧义。当然,这种情况是极少会发生的。

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.John{Age=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
此网页不属于NGA网站,NGA不保证其安全性
继续访问 取消 不再提示我[ http://www.lua.org/pil/index.html ]
当然,Lua的最强大的功能是能与宿主程序亲蜜无间的合作,因此,下一篇文章,我会告诉大家,如何在你的程序中使用Lua语言作为脚本,使你的程序和Lua脚本进行交互。

BBS.NGACN.COM

[姚姚]

[1 楼] 猪小小 2005-06-29 14:11

级别: Veteran
发帖: 721
威望: 13
财富: 13

使用流程
1. 函数的使用
以下程序演示了如何在Lua中使用函数, 及局部变量
例e02.lua
-- functions
function pythagorean(a, b)
local c2 = a^2 + b^2
return sqrt(c2)
end
print(pythagorean(3,4))

运行结果
5

程序说明
在Lua中函数的定义格式为:
function 函数名(参数)
...
end
与Pascal语言不同, end不需要与begin配对, 只需要在函数结束后打个end就可以了.
本例函数的作用是已知直角三角形直角边, 求斜边长度. 参数a,b分别表示直角边长,
在函数内定义了local形变量用于存储斜边的平方. 与C语言相同, 定义在函数内的代
码不会被直接执行, 只有主程序调用时才会被执行.
local表示定义一个局部变量, 如果不加local刚表示c2为一个全局变量, local的作用域
是在最里层的end和其配对的关键字之间, 如if ... end, while ... end等。全局变量的
作用域是整个程序。

2. 循环语句
例e03.lua
-- Loops
for i=1,5 do
print("i is now " .. i)
end

运行结果
i is now 1
i is now 2
i is now 3
i is now 4
i is now 5

程序说明
这里偶们用到了for语句
for 变量 = 参数1, 参数2, 参数3 do
循环体
end
变量将以参数3为步长, 由参数1变化到参数2
例如:
for i=1,f(x) do print(i) end
for i=10,1,-1 do print(i) end

这里print("i is now " .. i)中,偶们用到了..,这是用来连接两个字符串的,
偶在(1)的试试看中提到的,不知道你们答对了没有。
虽然这里i是一个整型量,Lua在处理的时候会自动转成字符串型,不需偶们费心。

3. 条件分支语句
例e04.lua
-- Loops and conditionals
for i=1,5 do
print(“i is now “ .. i)
if i < 2 then
print(“small”)
elseif i < 4 then
print(“medium”)
else
print(“big”)
end
end

运行结果
i is now 1
small
i is now 2
medium
i is now 3
medium
i is now 4
big
i is now 5
big

程序说明
if else用法比较简单, 类似于C语言, 不过此处需要注意的是整个if只需要一个end,
哪怕用了多个elseif, 也是一个end.
例如
if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end

4.试试看
Lua中除了for循环以外, 还支持多种循环, 请用while...do和repeat...until改写本文中的for程序

BBS.NGACN.COM

[姚姚]
[2 楼] 猪小小 2005-06-29 14:20

级别: Veteran
发帖: 721
威望: 13
财富: 13

数组的使用

1.简介
Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组啦,
类啦, 都可以由table实现.

2.table的下标
例e05.lua
-- Arrays
myData = {}
myData[0] = “foo”
myData[1] = 42

-- Hash tables
myData[“bar”] = “baz”

-- Iterate through the
-- structure
for key, value in myData do
print(key .. “=“ .. value)
end

输出结果
0=foo
1=42
bar=baz

程序说明
首先定义了一个table myData={}, 然后用数字作为下标赋了两个值给它. 这种
定义方法类似于C中的数组, 但与数组不同的是, 每个数组元素不需要为相同类型,
就像本例中一个为整型, 一个为字符串.

程序第二部分, 以字符串做为下标, 又向table内增加了一个元素. 这种table非常
像STL里面的map. table下标可以为Lua所支持的任意基本类型, 除了nil值以外.

Lua对Table占用内存的处理是自动的, 如下面这段代码
a = {}
a["x"] = 10
b = a -- `b' refers to the same table as `a'
print(b["x"]) --> 10
b["x"] = 20
print(a["x"]) --> 20
a = nil -- now only `b' still refers to the table
b = nil -- now there are no references left to the table
b和a都指向相同的table, 只占用一块内存, 当执行到a = nil时, b仍然指向table,
而当执行到b=nil时, 因为没有指向table的变量了, 所以Lua会自动释放table所占内存

3.Table的嵌套
Table的使用还可以嵌套,如下例
例e06.lua
-- Table ‘constructor’
myPolygon = {
color=“blue”,
thickness=2,
npoints=4;
{x=0, y=0},
{x=-10, y=0},
{x=-5, y=4},
{x=0, y=4}
}

-- Print the color
print(myPolygon[“color”])

-- Print it again using dot
-- notation
print(myPolygon.color)

-- The points are accessible
-- in myPolygon[1] to myPolygon[4]

-- Print the second point’s x
-- coordinate
print(myPolygon[2].x)

程序说明
首先建立一个table, 与上一例不同的是,在table的constructor里面有{x=0,y=0},
这是什么意思呢? 这其实就是一个小table, 定义在了大table之内, 小table的
table名省略了.
最后一行myPolygon[2].x,就是大table里面小table的访问方式.

BBS.NGACN.COM

[姚姚]
[3 楼] yhcs 2005-06-29 14:25

级别: 警告等级2
发帖: 89
威望: -9

这个要顶,好文收藏!

[4 楼] 猪小小 2005-06-29 14:38

级别: Veteran
发帖: 721
威望: 13
财富: 13

其他还有一些高级编写资料,但在魔兽限制255字的情况下估计也用不到。所以这里不贴了。

BBS.NGACN.COM

[姚姚]
[5 楼] camus 2005-06-29 21:52

级别: Civilian
发帖: 171
威望: 1
财富: 1

变量的问题:

(1)lua似乎是不需要声明变量的,想用哪个变量那么用的时候直接赋值就可以了。根据赋值的类型那么变量就被自动定了类型了。 这样说对么? (当然,后面文章说到了这个例子:虽然这里i是一个整型量,Lua在处理的时候会自动转成字符串型,不需偶们费心。 -_-)

(2)
文章里这样说:假如你要定义局部变量,则在第一次赋值的时候,需要用local说明。

那么我在写宏的时候经常直接赋值比如 mp=UnitMana("player")/UnitManaMax("player") ,那么这个mp就成了全局变量咯?
+++++++++++++++++++++++

逻辑运算的问题

(2)一般写宏的时候,and,or都有比较运算,所以还能理解,这里直接两个数值进行逻辑运算有点懵了,
没绕明白,比如说第一句就不太清楚,有false和nil的都清楚,因为给出了规则。楼主能解释一下么?

(3)

a and b:如果a为false,则返回a;否则返回b
a or b:如果 a 为true,则返回a;否则返回b

这个规则怎么解释,还是说lua就是这样规定的没什么解释的

++++++++++++++++++++

结构的问题

(4)文章中说到了if...then....elseif....

可是现在写宏的时候很多人是if....then....if....then....if...这样嵌套的,也符合标准吧?

++++++++++++++++++

最后,谢谢楼主提供好文,,,,

BBS.NGACN.COM
i miss you so much,that's true,,,,
[6 楼] 猪小小 2005-06-30 01:39

级别: Veteran
发帖: 721
威望: 13
财富: 13

1、没错,所有未经声明的变量都是全局的。。。。甚至包括你在function里定义的变量。我已经实验过,比如在一个宏里定义了一个变量a并赋值1,运行后,如果在另一个宏里也使用了变量a,宏里要是不重新赋值就调用的话,a的值就会还是你之前所使用的那个宏里赋的值1。
但一般不用担心冲突,因为大多情况下,大多人在一个宏内使用一个新变量都会习惯重新赋值,一般不会引起太大的问题。但如果你是真正需要一些全局变量并能方便的识别他,可以这样,在宏中把作为局部变量的都用小写字母,要用做全局变量的用大写字母,因为Lua是严格区分大小写的,所以这样你就可以方便使用局部变量和全局变量了。

2、3、这个的确有点让人糊涂。。。我来这样解释把,其实你说的比较运算就是逻辑运算,都是一样。只是Lua扩大了and和or 的使用范围。

其实通常and和or所能使用的范围仅仅是布尔型的数值,所能得到的结果也是只有布尔型。即and和or只能对false和true进行运算,其结果也同样不是false就是true。运算情况如下:
false and true = false true and false= false
false and false = false true and true = true

false or true = true true or false = true
false or false = false true or true = true

但Lua扩大了and和or 所能运算的数据类型,为了使其也能运算其他类型的数据。所以才做出了这个方便的定义(当然,你说糊涂的定义也行)
a and b:如果a为false,则返回a;否则返回b
a or b:如果 a 为true,则返回a;否则返回b

现在我们可以用false和true替换a和b运算试试:
a=false b=true
false and true = false
false or true = true

a=true b=false
true and false = false
true or false = true

a=false b=false
false and false =false
false or false = false

a=true b=true
true and true = true
true or true =true

看到了把,其实结果和我们之前正常的逻辑运算是一样的。Lua仅仅是扩大的and和or所能使用的范围而已。因为Lua本身对数据类型的定义没有苛刻的要求,所以她的运算也要能适应各种类型的数据才方便。(其实这也算不上什么解释,她就是这样的定义的,方便还是糊涂就是一念之间,哈哈)

3、当然符合标准啊,嵌套归嵌套的用法,elseif归elseif。这两种用法是不同的啊,虽然结果可能一样。但有些情况嵌套方便就用嵌套,elseif方便就用elseif罗。

BBS.NGACN.COM

[姚姚]
[7 楼] 夏日晴天 2005-06-30 07:12

级别: 警告等级1
发帖: 481
威望: -3

疯掉了。。。。。。。。。。。。。。。。。。。难道只有电脑高手才能玩这个游戏啊

BBS.NGACN.COM

三大愿望:[七区不卡][跨服战场不排队][9城开TBC]

[8 楼] szsharo 2005-06-30 09:47

级别: Civilian
发帖: 44
威望: 0

下面是引用夏日晴天于2005-06-30 07:12发表的:
疯掉了。。。。。。。。。。。。。。。。。。。难道只有电脑高手才能玩这个游戏啊

wow的精髓就是保证各个不同的人群都能找到自己的乐趣,
电脑高手未必有泡菜的键盘熟练,泡菜也未必知道插件和宏~ 并不妨碍各自的乐趣~
只要表干扰别人就好~
暴雪是一帮天才的组合,偶崇拜了10年了:P
楼主是高手,难得还这么有耐心,PFPF~
本想把自己的整合插件效果图发上来的,实在是懒得去找图片空间,以后吧~
我用的是大脚+flexbar+titan+Gather+supermacro+LAX+moveanything+...
昨天大脚更新了,偶点开了新功能,被告知interface使用超过20M内存,强制退出游戏~
@@ 至今大汗不已~~~

另,使用SuperMacro这个插件可以允许将一个宏脚本的最长字节增加到1023,
允许将快捷键直接绑定到宏上(而不是拉到动作条后再绑定),允许使用其它宏的名称来
调用其它的宏。安装后即可使用。 可以解决小小MM说的字节限制问题。

[ 此贴被szsharo在2005-07-24 10:00重新编辑 ]

BBS.NGACN.COM
术士素优雅高贵的职业,尤其素帅气的侏儒术士~:P

[9 楼] 最接近神的牛 2005-06-30 10:35

级别: Civilian
发帖: 5
威望: 1
财富: 1

高人

Ⅳ 魔兽世界TMW插件怎么导入代码

1、复制别人给你的TMW的代码,可以使用ctrl+C。

2、登陆你的魔兽世界,打开聊天栏,然后输入/TMW,即可打开控制面板面板。

3、进入控制面板后,在下方有一个长条输入框,使用ctrl+V将别人给你的代码进行粘贴。

4、点击输入框边上的导入/导出/还原,选择导入部分中的来自配置文件。

5、字符串一般会带有发布者的账号名称,选择他的那个人物-服务器的部分,右边会弹出一排选项,选择创建新的配置文件,完成导入。

(4)魔兽世界怎么编译扩展阅读:

源代码主要功用有如下2种作用:

生成目标代码,即计算机可以识别的代码。

对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。

需要指出的是,源代码的修改不能改变已经生成的目标代码。如果需要目标代码做出相应的修改,必须重新编译。

Ⅳ 谁会反编译魔兽世界服务端启动文件TrinityCore.exe

这都可以?学习下

Ⅵ 谁能魔兽世界T端或M端源码下载地址和简单编译方法

T端,M端源码都没有免费的

Ⅶ 请问如何编写魔兽世界插件

1。Lua + Xml
2。Notepad++ 或者 EmEditor 或者 UltraEdit
3。www.lua.org

Ⅷ 魔兽世界用宏编的循环命令给个正确格式

具体如下:

参数说明:顺序释放法术,以","隔开。

举例 /castsequence A,B,C,D。

按宏为顺序释放A,B,C,D循环。

计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。

宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。

故事背景(安其拉入侵):

世界差一点就毁灭于黑龙王子奈法利安之手,联盟的英雄拯救了温德索尔元帅,揭露了实际上是黑龙公主奥妮克希亚的卡特拉娜的真面目,暴风城上下重归一心,联盟凝聚得更加牢固。

部落的勇士深入黑石山,勇敢的击败了炎魔,最后联合联盟的英雄在黑石山上层的黑翼之巢击败了黑龙王子奈法利安,似乎世界重归与和平。

但是远在卡利姆多大陆最南端的希利苏斯沙漠,塞纳里奥议会的前哨战发现沙漠中开始出现异动,大量的异种虫从地下涌出,一群信仰上古之神的暮光信徒开始出现,这情景不由得让人想起当年几乎将艾泽拉斯毁于一旦的流沙之战,身为塞纳里奥议会以及暗夜精灵大德鲁伊的范达尔·鹿盔再也按耐不住。

流沙之战中他失去了唯一的儿子,最后依靠3色巨龙作为诱饵,才将那些自称其拉虫族的恐怖生物永远封印在希利苏斯巨大的甲虫之墙之后,难道历史又要重演?不,这一次绝不,我们的冒险者将收集当年被损坏的流沙节杖的碎片,重新开启甲虫之墙,我们必将深入安其拉神庙,要与这些其拉虫族以及他们背后的幕后黑手做一次真正的了断。

于是有史以来,部落和联盟第一次真正意义上摒弃前嫌,共同筹措战备物资,齐心合力寻找流沙节杖的碎片,在灾难面前,种族的利益,集体的矛盾,个人的恩怨都是那么微不足道,烈日之下,希利苏斯沙漠,英雄手持流沙节杖敲响了那禁闭千年的铜锣,战争,就此开始。

Ⅸ wow 总是提示我插件大量错误怎么办

wow 总是提示插件大量错误代表编译没有成功;

解决方式:删除不必要的插件;

编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。

自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。

(9)魔兽世界怎么编译扩展阅读:

如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误的发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动纠正错误,这些工作由错误处理程序完成。

需要注意的是,一般上编译器只做语法检查和最简单的语义检查,而不检查程序的逻辑。

Ⅹ 魔兽世界

转来的希望对你有帮助

Runtime是运行时的意思,Runtime Error就是运行时错误,就是在运行期间出现的错误。

webopedia 关于 运行时错误的定义:

http://www.webopedia.com/TERM/r/runtime_error.html

An error that occurs ring the execution of a program. In contrast, compile-time errors occur while a program is being compiled. Runtime errors indicate bugs in the program or problems that the designers had anticipated but could do nothing about. For example, running out of memory will often cause a runtime error.(运行时错误是程序执行期间发生的错误,它不同于编译期间发生的错误.运行时错误可能是程序中的毛病引起的,也可能程序并无错误,例如机器存储器不够引起)

Note that runtime errors differ from bombs or crashes in that you can often recover gracefully from a runtime error.(运行时错误不同于炸弹或系统垮掉,运行时错误一般不影响操作系统运行)

具体的运行错误,要参照错误信息,分析后,想办法解决.

主要是 用到 IE的时候就出现这个 ,我平时用myie2。
上网查看了一些东西后 ,自己用 roguecleaner的软件扫描了一下,把一些垃圾广告插件都去了。就 OK了,^_^ 。

特别是出现桌面文件夹打不开的时候吓死我了,我刚重装系统,丢了些资料。

RUNTIME ERROR SSS AT III:MMM
其中,SSS是运行错误代码,III是错误发生的程序段,MMM是错误地址。

DOS 错误代码:
1 无效DoS功能号
2 文件末找到
3 路径未找到
4 打开文件过多
5 禁止文件存取
6 无效文件句柄
12 无效文件存取代码
15 无效驱动器号
16 不能删除当前日录
17 不能跨驱动器改文件名

I/O错误
100 磁盘读错误
101 磁盘写错误
102 文件变量末赋值
103 文件未打开
104 文件未用输入方式打开
105 文件末用输出方式打开
106 无效数字格式

严重错误
150 磁盘写保护
15l 未知单元
152 驱动器未准备好
153 未知命令
154 数据CRC校验错
155 驱动器请求的结构长度错
156 磁盘定位错
157 未知媒介类型
158 扇区末找到
159 打印机缺纸
160 设备写失败
161 设备读失败
162 硬件故障

致命错误
200 被零除
201 范围检查错
202 堆栈溢出错
203 堆溢出错
204 无效指针操作
205 浮点上溢出
206 浮点下溢出
207 无效浮点运算
208 未安装覆盖管理程序
209 覆盖文件读错
210 对象未初始化
211 调用抽象方法
212 流登计错
213 集合下标越界
214 集合溢出

下面列出在编译程序时可能出现的错误,在集成环境下,Turbo Pascal将自动加载源程序并定位于出错处。

1 内存溢出
2 缺标识符
3 标识符未定义
4 标识符重定义
5 语法错误
6 实型常量错
7 整型常量错
8 字符串常量跨行
9 文件嵌套过多
10 非正常文件结束
11 行过长
12 缺类型标识符
13 打开文件过多
14 无效文件名
15 文件未找到
16 磁盘满
17 无效编译指示
18 文件过多
19 指针定义中未定义类型
20 缺变量标识符
21 类型错误
22 结构过长
24 文件分量不能为文件
25 无效字符串长度
26 类型不匹配
27 无效子界基类型
28 下界大于上界
29 缺有序类型
30 缺整型常数
31 缺常数
32 缺整型或实型常数
33 缺指针类型标识符
34 无效的函数结果类型
35 缺标号标识符
36 缺BEGIN
37 缺END
38 缺整型表达式
39 缺有序表达式
40 缺布尔表达式
41 操作数类型与操作符不匹配
42 表达式错
43 非法赋值
44 缺字段标识符
45 目标文件过长
46 未定义外部标识符
47 无效*.OBJ文件记录
48 代码段过长
49 数据段过长
50 缺DO
51 无效PUBLIC定义
52 无效EXTRN定义
53 EXTRN定义过多
54 缺0F
55 缺INTERFACE
56 无效重定位引用
57 缺THEN
58 缺T0或DOWNTO
59 未定义的向前引用
60 过程过多
61 无效类型转换
62 被零除D
63 无效文件类型
64 不能读写该类型的变量
65 缺指针变量
66 缺字符串变量
67 缺字符串表达式
68 单元循环引用
69 单元名不匹配
70 单元版本不匹配
71 单元重名
72 单元文件格式错误
73 缺IMPLEMENTATl0N
74 常数与CASE类型不相匹配
75 缺记录变量
76 常数越界
77 缺文件变量
78 缺指针变量
79 缺整型或实型表达式
80 标号不在当前块中
81 标号已定义
82 标号未定义
83 无效参数
84 缺UNIT
85 缺“;”
86 缺“:”
87 缺“,”
88 缺“(”
89 缺“)”
90 缺“=”
91 缺“:=”
92 缺“[”或“(.”
93 缺“]”或“.)”
94 缺“.”
96 变量过多
97 无效FOR控制变量
98 缺整型变量
99 此处不允许用文件和
100字符串长度不匹配
101无效字顺序
102缺字符串常数
103缺整型或实型变量
104缺有序变量
105INLINE错
106缺字符表达式
107重定位项过多
112CASE常量越界
113语句错
114不能调用中断过程
116必须在8087方式下编译
117末找到目标地址
118此处不允许包含文件
120缺NIL
121无效限定符
122无效变量引用
123符号过多
124语句部分过长
126文件必须为变量参数
127条件符号过多
128条件指令错位
130初始条件定义错
13l过程和函数头与前面定义的不匹酉
132严重磁盘错误
133不能计算该表达式
134表达式错误结束
135无效格式说明符
136无效间接引用
137此处不允许结构变量
138无SYSTEM单元不能计算
139不能存取该符号
140无效浮点运算
141不能将覆盖编译至内存
142缺过程和函数变量
143无效过程或函数引用
144不能覆盖该单元
147缺对象类型
148不允许局部对象类型
149缺VIRTUAL
150缺方法标识符
151不允许虚拟构造方法
152缺构造方法标识符
153缺释放方法标识符
154FAIL只允许在构造方法内使用
155无效的操作符和操作数组合
156缺内存引用
157不能加减可重定位符号
158无效寄存器组合
159未激活286/287指令
160无效符号引用
161代码生成错
162缺ASM

解决方法,重装DOS或系统

阅读全文

与魔兽世界怎么编译相关的资料

热点内容
服务器无响应是什么原因呀 浏览:982
wd文档里的app怎么制作 浏览:511
电脑里的文件夹没有了一般能恢复吗 浏览:416
哪里有配加密钥匙的 浏览:208
服务器开不了机怎么把数据弄出来 浏览:958
gif动态图片怎么压缩 浏览:519
黑猴子棒球压缩文件解压密码 浏览:631
如何让app适应不同的手机屏幕大小 浏览:8
苹果手机如何给安卓手机分享软件 浏览:759
苹果电脑怎么运行腾讯云服务器 浏览:59
明日之后沙石堡命令助手 浏览:261
蛋糕店用什么样的app 浏览:877
长安银行信用卡app怎么取现 浏览:635
dos命令cmd命令的 浏览:226
阿里云存档视频文件的服务器 浏览:194
ftp修改文件权限命令 浏览:491
周易八卦梅花算法 浏览:676
java组织机构 浏览:953
h5大转盘游戏源码 浏览:592
学校服务器地址查询 浏览:109