Programming 板


LINE

※ [本文转录自 Test 看板] 作者: wa007123456 (大笨羊) 看板: Test 标题: [心得] 浅学UI心得 Part1<革新二版> 时间: Wed Feb 10 01:13:18 2010 ※ [本文转录自 WOW 看板] 作者: wa007123456 (大笨羊) 看板: WOW 标题: [心得] 浅学UI心得 Part1<革新二版> 时间: Wed Feb 10 01:06:00 2010 一、简介: 魔兽世界(World of Warcraft)全球知名的线上游戏,除了 其独特的设计之外,也提供玩家自行设定介面的功能。本 篇文章重点都是关於魔兽世界的API Lua语法和XML的探讨, 希望这篇文章能抛砖引玉,主要针对没学过程式的人,吸引 台湾更多人来作魔兽世界的使用者介面。 二、如何安装插件 魔兽世界(以下简称wow)安装插件的位置是从你安装的路径 来判断,如果你下载了一个UI,他通常是一个资料夹,里面 包含了一些插件的档案(XML toc lua),首先复制或剪下插 件的资料夹,然後放到以下位置: ..\World of Warcraft\Interface\AddOns 之後打开wow,会发现在选择角色的的地方,左下角出现了 "插件"的按钮,打开他就可以看到有关於你插件的使用情形 ,按下核取方块来启动你所安装的插件,然後点进入游戏 就可以看到此插件的情形了。 三、制造一个空的插件 首先在..\World of Warcraft\Interface\AddOns的位置下 面新增一个资料夹,把他取成你想要的插件名称,然後在 资料夹下面产生一个*.txt档案,并更改副档名为.toc, 之後利用记事本编辑页面内容 输入以下文字: ## Interface: 30300 ## Title: 你想要的标题名称(美国) ## Title-zhTW:你想要的标题名称(台湾) ## Title-zhCN:你想要的标题名称(大陆) ## Author: 你的名称 ## Version: 版本编号 ## Notes-zhTW: 简介 ## eMail: 你的的e-mail ## DefaultState: Enabled ## LoadOnDemand: 0 请注意,档案名称必须和资料夹名称一样,不然wow的系统 不会侦测到此插件,之後进入游戏,你就会发现你的插件 出现在插件管理器里面,这代表你成功的完成了一个空的 插件。 四、Lua语法快速导览 Lua是一种嵌入式的语言,他可以嵌入某些以编译好的程式 之中,由於他是直译式的语言,所以和C语言不太一样,不 需要宣布型别,以下开始介绍简单的Lua语法。 1.甚麽是变数? 变数是程式里面最基本的元件,如果没有他就无法跟程式 进行互动,在Lua里面由於变数不需要宣布型别,因此数字 可以轻松变成字串,而字串也可以变回数字。 所谓字串就是由多个char(字元)所构成的型体。 例如说: str1="Welcome"; 就代表说我宣告了一个叫做str1的字串,他的内容是"Welcome" 实际上在记忆体里面是'W' 'e' 'l' 'c' 'o' 'm' 'e'所连续构 成的,这也是为什麽他叫做字串的原因。 如果要输入数值型别 请造我这样做: no=1; 这样就宣告一个叫做no的变数,他的内容是1 但是变数之所以可以称为变数,就是他的值可以任意改变。 我可以在同一个Lua档案里面写如下: no=2; 此刻no的值就变成2了。 另外要注意的是,变数名称的合法性,也就是说不能输入有冲突的名字 开头不能是数字 不能是关键字(for function...etc) 关键字大全: and break do else elseif end false for function if in local nil not or repeat return then true until while 不然直译的时候会发生错误。 另外有一件事情一定要记得,请为你的变数取有意义的名称, 这种方式叫做匈牙利命名法,尽量少使用像是a b c等让人无法看懂得变数 而是改成num sum current state count...等比较有意义的单字。 这样做可以帮助你Debug的时候更容易。 2.变数的基本运算 如果不能进行变数的计算,那得到的资料也无法产生结果。 我们先谈谈数值型别的加减 例如: no1=5; no2=5; no3=no1+no2; 此刻no3的值会变成10 以下列出所有的运算子 + :把两个数字或是变数进行相加的功能 - :把两个数字或是变数进行相减的功能 * :把两个数字或是变数进行相乘的功能 / :把两个数字或是变数进行相除的功能(注意 / 後面不可以是0) % :把两个数字或变数进行相乘後得到余数的功能 以下进行一个比较复杂的运算: result=(1*2)%3+(9-4)/5; 之後result的值会是1,记住,要先计算的变数请括号起来, 不然程式会使用四则运算的方法来进行,可能会跟你预期的 内容不同。 3.字串 之前有提到字串是一组连续的char所构成 在Lua里面数值转字串是非常容易得一件事情 例如: no1=123; str1="The Num is:"..no1; print(str1); 会在萤幕上面印出"The Num is:123" 注意两个字串或是字串跟数字的串连方法就是 使用 .. 运算子 .. :把两个字串连接起来 4.注解 要产生注解其实很简单,例如 no1=1 --宣告一个变数 内容为1 其中--後面的字不会被执行 为什麽要产生注解? 因为你写的程式别人未必会看得懂 而且可能时间一久你就忘了他是怎 麽运作的,养成写注解的习惯很重要。 5.资料与型别 虽然之前说,直译语言并不需要型别的宣告。 但是事实上'1'和1的内容并不相同,所以这 一小节简单介绍一些基本的资料型别。 nil:这代表是空的意思,通常是用来判断某些事情有没有成功 或是回传值的用法,如果物件没有宣告成功那就是一个nil值。 Boolean:中文译作布林,他只有两种值,一个是true(真)一个是false(假) 用来做一些逻辑运算。 Numbers:数值型别 String:字串型别 Table:物件型别,请你想像一张明信片上面,有人的名字 图片 地址 电话 等...资料,而物件型别就是一张明信片,里面有多个成员。 请看以下范例: table1 = {} -- 产生一个物件 k = "x" table1[k] = 10 -- 产生一个成员 key值是"x" 内容是10 a[20] = "great" -- 产生一个成员 key值是20 内容是"great" print(a["x"]) -- 印出10 k = 20 print(a[k]) --> 印出great table["x"] = table["x"] + 1 -- "x"成员加1 print(a["x"]) --> 11 范例中产生了一个table1物件 其中用k来当作关键值 并设定这个成员的内容为10 然後再设定20来当作关键 值然後产生一个成员内容是"great" 然後再分别印出他们。 6.函式 产生一个函式的方法为 function func_Name () end 为什麽要用函式? 其实函式跟数学上的函式非常相似 都是一连串的计算 然後回传某个值这样 只是数学上面的函式你必须还要自己算一遍 但是电脑上的函式 电脑会帮你运算 因为某些运算的事情可能比较复杂 也可能会一直重复如果没有使用函式 程式的开发速度就会变慢很多 我会在wow API中再度提到。 7.关系运算子 以下简列一些关系运算子 < :小於 > :大於 <= :小於等於 >= :大於等於 == :完全等於 ~= :不等於 运算子会测验两个变数的关系 然後回传true或是false 8.逻辑运算子 and:且 运算子 or:或 运算子 这两个运算子有甚麽差别呢? 请看下面 a.andd运算子是说当两方都是真的时候 才会回传真 不然就回传假 b.or运算子是说两方只要有一个是真 就会传回真,只有两个都是假的时候 才会传回假。 9.全域变数和区域变数 在Lua中,可以宣告local让变数变成区域变数, 以避免重复的变数宣告。 甚麽叫做区域变数? 区域变数就是离开某个范围的时候 就会被释放掉的变数 这麽做是为了要让程式执行的速度更快更好 全域变数则是直到程式结束,才会释放掉的变数 10.流程控制 电脑中 总是避免不了一些逻辑判断 这个时候我们就需要一些流程控制的方法: 以下简介流程的结构 if:主判断式 elseif:附从判断式 else:最终附从判断式 让我举一个简单的例子: if(no1==no2) then print("no1 等於 no2"); elseif(no1~=no2) then print("no1 不等於 no2"); else print("这是甚麽?"); end 第一个判断式会判断no1是不是等於no2 第二个判断式会判断no1是不是不等於no2 第三个判断式则是上述都不成立的时候出现 利用判断式可以做很多事情,例如你希望 发生甚麽事情後 才会执行某个函式。 这都需要判断式的帮忙。 11.阵列 写程式的时候,难免会遇到要宣告很多变数的时候, 在变数少的时候或许还好,可是只要人一变多,就会 让你打到手痛。 让我们看看下面的例子 no1=1; --我宣告了一个变数 no2=2; --我又宣告了一个变数 no3=3; --我还是宣告了一个变数 no4=4; --奇怪我怎麽还在宣告变数 no5=5; --是不是快要宣告完了? no6=6; --天阿 救救我离开这个无限宣告的定义... ......... 所以说我们需要一个东西,他叫作阵列 他的宣告方式如下: no={1,2,3,4,5,6}; 我可以很方便的取用各种数值 temp=no[2]; --temp=2 这是阵列很大的功用 当然你可以在[]里面加入变数或是字串 用动态的方式存取阵列 12.重复结构 有时候程式也需要某些重复运算的地方, 我们希望缩短程式码的长度 因此发明了重复结构 简单介绍两个常用的重复结构 while:当你不知道甚麽时候会结束的重复结构 for:你确定甚麽时候可以结束的重复结构 利用while举例: local sum = 0,i=1 while i<=10 do sum = sum + i; i=i+1; end print(sum); 上述程式码在进行1+2+3...+10的事情 其结果为55 利用for举例: for的样式是长这样: for var=exp1,exp2,exp3 do something(); end 会不断的执行something函式 其中用var当作基底值 跟 exp2比较 并相加exp3的值 在跟exp2比较 直到exp3传回真为止 例如: local sum=0; for i=1,i<=10,1 do sum=sum+i; end print(sum); 其结果为55 =============================Part1 结束====================================== --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.221.7
1F:推 Blacky1128:快推 虽然我看不懂 XD 02/10 01:08
2F:推 gg90052:其实这篇是共通的程式设计基础XD 02/10 01:10
3F:推 hhpsjoe:推你有心.. 02/10 01:10
4F:→ wa007123456:今天看起来无关...不过明天我会提WOW的API 02/10 01:11
5F:→ wa007123456:这篇是基础篇 可能跟魔兽没关系 囧 但是很重要 02/10 01:11
--



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.221.7 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.221.7
6F:→ WPC001:这似乎是LUA... 跟UI好像没太大的关系吧 123.195.63.235 02/11 00:48
7F:推 hacker10158:要等他讲到API那边0.0 140.112.218.77 02/11 14:18







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP