<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>情缘工作室 &#187; bf</title>
	<atom:link href="http://www.qyorg.com/tag/bf/feed" rel="self" type="application/rss+xml" />
	<link>http://www.qyorg.com</link>
	<description>情牵一线，缘定三生！...</description>
	<lastBuildDate>Mon, 16 Aug 2010 22:21:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Award Bios增加SLIC2.1详细教程.OEM.WIN7</title>
		<link>http://www.qyorg.com/jsjl/1334.html</link>
		<comments>http://www.qyorg.com/jsjl/1334.html#comments</comments>
		<pubDate>Mon, 14 Dec 2009 15:46:27 +0000</pubDate>
		<dc:creator>橘子xs</dc:creator>
				<category><![CDATA[技术交流]]></category>
		<category><![CDATA[8b]]></category>
		<category><![CDATA[8c]]></category>
		<category><![CDATA[9a]]></category>
		<category><![CDATA[a5 e5]]></category>
		<category><![CDATA[award bios]]></category>
		<category><![CDATA[bb]]></category>
		<category><![CDATA[bf]]></category>
		<category><![CDATA[BIOS]]></category>
		<category><![CDATA[isa]]></category>
		<category><![CDATA[OEM]]></category>
		<category><![CDATA[WIN7]]></category>
		<category><![CDATA[xp oem]]></category>
		<category><![CDATA[下载]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://www.qyorg.com/?p=1334</guid>
		<description><![CDATA[Award Bios增加SLIC2.1，可以硬激活Windows 7，微软是不会将这种方法封杀的，也就是我可以安装正版的OEM版Windows 7，可以去验证，它会说我用的是正版系统。

准备软件

（1）AwardTool，最新版的是V1.29，有汉化版的。

<span class="readmore"><a href="http://www.qyorg.com/jsjl/1334.html" title="Award Bios增加SLIC2.1详细教程.OEM.WIN7">阅读全文——共1386字</a></span>]]></description>
			<content:encoded><![CDATA[<p>Award Bios增加SLIC2.1，可以硬激活<span onclick="tagshow(event)">Windows</span> 7，<span onclick="tagshow(event)">微软</span>是不会将这种方法封杀的，也就是我可以安装正版的OEM版Windows 7，可以去验证，它会说我用的是正版<span onclick="tagshow(event)">系统</span>。</p>
<p><strong>准备软件</strong><br />
（1）AwardTool，最新版的是V1.29，有汉化版的。<br />
          使用注意：工具放在英文目录，尽量放在各盘根目录，不要放在桌面，需要安装netframework2.0以上。这个软件会随着品牌机正式安装Windows7，不断更新，充实证书和SLIC2.1的资料。<br />
<span style="color: #ff0000;">                                 <span style="text-decoration: underline;">AwardTool1.29汉化版下载</span></span>：<a title="网盘下载" href="http://down.qiannao.com/space/file/juzixs/-4e0a-4f20-5206-4eab/AwardTool129cn.rar/.page" target="_blank">网盘下载</a><span id="more-1334"></span></p>
<p>（2）SLIC_Dump_ToolKit，最新版的是V 2.2final，查看主板是否为SLIC2.1的工具，看看是否在BIOS里加入SLIC2.1模块成功。</p>
<p>一、找对你的主板Bios<br />
         可以在以下地方找到：一是你的主板光盘中，较老；二是从主板中备份出来，可以用winflash；三是到厂商的网站里<span onclick="tagshow(event)">下载</span>，较新。<br />
二、制作添加SLIC2.1<br />
        （1）查看证书与SLIC2.1是否相配<br />
                  实际上我已经在AwardTool软件中试过各品牌的证书与SLIC2.1是相配的，也补充加入了目前可以找到的品牌<span onclick="tagshow(event)">文件</span>，在点击“校验”.</p>
<p>        （2）打开AwardTool，选择你的的Bios文件<br />
        （3）选择主板制造商，<br />
                    - Pubkey 最适合华硕 ASUS<br />
                    &#8211; 超静3 最适合技嘉 Gigabyte<br />
                    &#8211; 其他可尝试 ISA 或 0+2<br />
        （4）选择要添加的OEM授权文件<br />
                   点击“SLIC文件”框右侧的浏览，会自动打开SLIC21的子目录，加入WIN7的OEM信息表<br />
                   点击“SLP文件”框右侧的浏览，会自动打开SLP的子目录，加入XP的OEM信息表<br />
                   点击“证书”框右侧的浏览，会自动打开软件主目录，点开“CERT”，选中相关.XRM-MS文件，将弹出“SLIC与证书匹配”的对话框.<br />
        （5）制作修改Bios<br />
                   勾选“记录日志”，单击最下面的“执行”。<br />
                   十几秒钟后会弹出一个新的对话框，说明是否制作成功，如成功了，会有文件名称和存放的位置。<br />
                   点击“确定”。生成了XXX_SLIC.BIN就这么简单，在存放Bios文件的目录下，还会同时生成几个过程文件，有：ACPI.BIN、ACPI_SLIC.BIN、MAIN.BIN、MAIN_SLIC.BIN，这是不要用的，可以删除。<br />
                   如果未成功，则要在高级选项界面进行<span onclick="tagshow(event)">设置</span>，高级选项主要对指定的主板有用，一般的主板不用选的，在改Bios不成功时可重复在此选择，特别是有些Bios容量很满时，用不同的选项多试几次就可能成功。<br />
三、刷新Bios<br />
         <span style="font-family: 宋体;">晚上教程很多，不做详述这里。</span></p>
<p><span style="font-family: 宋体;"> </span></p>
<p><span style="font-family: 宋体;">相关资源：<a title="联想官方Windows 7(32位/x86)简体中文旗舰版OEM光盘镜像" rel="bookmark" href="http://www.qyorg.com/?p=1339">联想官方Windows 7(32位/x86)简体中文旗舰版OEM光盘镜像</a></span></p>
<img src="http://www.qyorg.com/?ak_action=api_record_view&id=1334&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.qyorg.com/jsjl/1334.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>【落花随水烟雨寒NO.16】我想说&#8230;&#8230;.</title>
		<link>http://www.qyorg.com/nmbm/1033.html</link>
		<comments>http://www.qyorg.com/nmbm/1033.html#comments</comments>
		<pubDate>Mon, 25 May 2009 06:33:57 +0000</pubDate>
		<dc:creator>橘子xs</dc:creator>
				<category><![CDATA[你明白吗]]></category>
		<category><![CDATA[bf]]></category>

		<guid isPermaLink="false">http://wilderwein.org/?p=1033</guid>
		<description><![CDATA[是小说看的太多了，还是我就是这么爱白日做梦。是只是追求一种自以为好玩的游戏，还是寂寞的太想寻找一丝慰藉？神啊！为什么我总是经常会有一些奇怪幼稚的想法，请一道雷劈中我吧，把我变正常。         世界真的很美好吗？不会！它实在与我想象的相差太远了。         那么我要融入它吗？不要！我还是相信还是存在美好的事物。         只是我还没遇到！对！只是还没遇到。童话里不是有讲吗？善良的人总是会得到命运的眷顾，大灰狼永远捉不到小白兔。所以我相信坦诚总会换来真诚。武侠里不是又说吗？生死之交、旷世之爱，所以我相信会有绝对的友情，而不只是利用，会有完美的爱情，而不只是玩笑。书中不是有写吗？人之初，性本善。写了那么那么多，所以我相信每个人都有善良的一面，即使他被大多人定义为坏人。         主观思维，一个很&#8230;嗯，不知道怎么说的东西，不记得何时看《碎空刀》这本书，讲的是叶风勾引一个姓雷家伙老婆的故事，我这么写是不是要感叹下“唉，这对狗男女呢”？可是从书中角度人家真心相爱，姓雷的也不成人之美，况且人家叶风是主角，好像坏的家伙又变成姓雷的了。从不同的角度看问题，得到不同的答案，现在逐渐由一种观念主导着我，没有绝对的善恶，只是立场不同罢了。         主观？客观？两个几年前学政治时几乎要将我绕晕的词语，好像现在却突然明白了他们的含义。成长真是一个很神奇的东西，在经历中就慢慢明白了一些东西。我想这大概就和旧时和尚云游四方以求悟道成佛一般吧。若非身经此事，文字永远只是一句话罢了。明白的还有诗句，以前很多只是觉得很美的诗句，那时并不明白好在何处，如今却仿佛多了一丝明悟。“人生若只如初见，何事悲扇画秋风”，既未相识，又何来天涯相距，斯人何方的回忆与无奈呢，“往事不可追”，好像很多事真的是回不来了。         我已记不清是在那本书看见哪个人说过这么一句话“你不知道你的一生都错过了些什么”。错过，在一次次错过中最终擦身而过。我好想也写过这样的话。我有错过什么吗？应该有吧！我错过了什么呢？有些不知道，有些不想说。也许我现在还在错过着些什么，我想是有的，但我不知如何，我甚至不知道该去如何留住一些我在乎的东西？         也许有太多的错过，只是身在局中，自己不知，只是不去说一些该表达的话，只是不敢向前一步。或许是我想留住一些东西，或许是我想可以找到一个可以真正交心的人。我这么想过，两个人约定一个秘密的地方，好比花园的第几棵树下，谁有不开心的事，谁有想对对方说的话都写下来埋在那个地方，然后等待着几天后去寻找对方的回复。不管问什么，都必须卸下所有的伪装去回答，不管问什么，都可以通过这种方式。呃，又一个天真的怪异想法，我也有把现在写的这东西埋在一个地方去做第一份开始的念头，可是我不会去这么做，谁会陪我无聊呢？         有时候，我只是想活的简单纯粹一些，我想找个人直接去问“你在想什么？”可是大概不会有人真的坦诚的告诉我，虽然我很认真。我搞不懂人都在想什么，也许现在已经不是纯真的时代了。我初中时好像给人有测字玩过，其实只要知道对方在想什么，中国字那么伟大，想怎么说还不都随你，可能会不准吗？那时以己之心度人之意，有时我想我看得到别人心里，可是如今呢？我不知道该怎么去表达，有时即便是我想找个可以倾诉的人，可是人人都把自己包裹的那么严，我该找谁呢？是的，每个人都不想受到伤害，但是真的必须要穿上这层外衣吗？如果有人对我说“我愿意”，如果还可以找到个交心的人，那么就让我先来坦诚吧，让我走出第一步。         是佛家还是道家讲究放下，也许真的只有放下才能得到。最近忽然觉得太极是一个很神妙的图案。代表了一种平衡。如果黑白代表了两个人的世界观，那么每个人都要尽力的先去走向对方，才能达到平衡。如果黑白中间那两个圆点代表了包容，那么是否告诉我们要去接受对方的世界观呢？圆的完美，究竟要怎么样的平衡才能达到啊？         付出与回报的关系？貌似讨论这个就有点学术了。如果我费尽心力的想要一个人开心，那么也许只是他带给过我快乐吧？嗯&#8230;又一个怪异的想法，我想找一个人，一个相识了蛮久的人，把开始到如今的回忆的一幕幕，记忆力残留的画面，用卡通的方式画出来送给对方。可是这大概又是一个我只会像这样写在纸上，而不会去实施的想法，一个很现实的问题，我该去找谁呢？谁又愿意呢？          算了，反正这又不是第一个被无限搁置的想法，我好想今天心情不错啊！貌似写心情这种东西笔调也难得的变得如此轻松。哇！几乎是一气呵成写了这么多啊。趴在床上，打着手电，夜深人静，感觉也不错的说啊。知足者常乐，也许所求的还有很多，也许问题真的是在是和否中出现了第三条分支，但是就算什么，就算什么，就算有一百条我不想要的词语出现在这里形容，能够这样，我真的知足了。呃，写的连自己都看不太懂了，可是如果你不想说，那我也不会说。          高山流水觅知音，忽然想到这个，忽然想到上星期的那个想法，写一篇日志，放上去一个压缩包，设了密码，给一句提示，如果你愿意，还有我三个问题的提示，去等待有心人，去说出一句我想说很久的话，但是很明显，我又没有去做，这想法最终留于这里，呵呵~我想不到是否有人会陪我继续这个游戏？所以，算了吧。          在网上发表的某篇日志，我貌似写了一篇叫人际权限的东西。嗯，对，我没写完。有时候我比较顾虑别人的感受，所以我好想一直做人很被动，好像那时有打算过做一张表格，“事情”、“权限”、“授权时间”、“备注”，去发给我身边认识的人，让他们告诉我我可以做什么，不可以做什么，告诉我我和他们的关系到了什么程度，对，你猜对了，这个想法又只留于这里了，我想没人会去认真填的吧？          我汗啊~写这么多了啊！算了，不写了。我的想法还真不是一般的多啊。晚了。困了。也不想写了。难得好心情。难得一篇轻松随意的文字。这就叫意识流吧，貌似这种想到什么就写什么的样子。          猛然觉得笔调好像有些聊天说话的感觉，或许我想写，只是因为我想说，如果没人可以来听我说，那就这样说吧。          晚安！空气也好，这张纸也罢&#8230;                                                                                            橘子 09/04/13 02:03 写在纸上的东西&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;PS:我喜欢把我有些写下的文字或者根本就不发出来，或者等到很久才发出来，因为这样时间离那一天已经过去好久，久的甚至我自己都也许已经忘了发生过什么，所以这样，这文字就再没人能够读得懂，只有我知道&#8230;——09.05.25_14：48

]]></description>
			<content:encoded><![CDATA[<p>是小说看的太多了，还是我就是这么爱白日做梦。是只是追求一种自以为好玩的游戏，还是寂寞的太想寻找一丝慰藉？神啊！为什么我总是经常会有一些奇怪幼稚的想法，请一道雷劈中我吧，把我变正常。 <br />        世界真的很美好吗？不会！它实在与我想象的相差太远了。 <br />        那么我要融入它吗？不要！我还是相信还是存在美好的事物。 <br />        只是我还没遇到！对！只是还没遇到。童话里不是有讲吗？善良的人总是会得到命运的眷顾，大灰狼永远捉不到小白兔。所以我相信坦诚总会换来真诚。武侠里不是又说吗？生死之交、旷世之爱，所以我相信会有绝对的友情，而不只是利用，会有完美的爱情，而不只是玩笑。书中不是有写吗？人之初，性本善。写了那么那么多，所以我相信每个人都有善良的一面，即使他被大多人定义为坏人。 <br />        主观思维，一个很&#8230;嗯，不知道怎么说的东西，不记得何时看《碎空刀》这本书，讲的是叶风勾引一个姓雷家伙老婆的故事，我这么写是不是要感叹下“唉，这对狗男女呢”？可是从书中角度人家真心相爱，姓雷的也不成人之美，况且人家叶风是主角，好像坏的家伙又变成姓雷的了。从不同的角度看问题，得到不同的答案，现在逐渐由一种观念主导着我，没有绝对的善恶，只是立场不同罢了。 <br />        主观？客观？两个几年前学政治时几乎要将我绕晕的词语，好像现在却突然明白了他们的含义。成长真是一个很神奇的东西，在经历中就慢慢明白了一些东西。我想这大概就和旧时和尚云游四方以求悟道成佛一般吧。若非身经此事，文字永远只是一句话罢了。明白的还有诗句，以前很多只是觉得很美的诗句，那时并不明白好在何处，如今却仿佛多了一丝明悟。“人生若只如初见，何事悲扇画秋风”，既未相识，又何来天涯相距，斯人何方的回忆与无奈呢，“往事不可追”，好像很多事真的是回不来了。 <br />        我已记不清是在那本书看见哪个人说过这么一句话“你不知道你的一生都错过了些什么”。错过，在一次次错过中最终擦身而过。我好想也写过这样的话。我有错过什么吗？应该有吧！我错过了什么呢？有些不知道，有些不想说。也许我现在还在错过着些什么，我想是有的，但我不知如何，我甚至不知道该去如何留住一些我在乎的东西？ <br />        也许有太多的错过，只是身在局中，自己不知，只是不去说一些该表达的话，只是不敢向前一步。或许是我想留住一些东西，或许是我想可以找到一个可以真正交心的人。我这么想过，两个人约定一个秘密的地方，好比花园的第几棵树下，谁有不开心的事，谁有想对对方说的话都写下来埋在那个地方，然后等待着几天后去寻找对方的回复。不管问什么，都必须卸下所有的伪装去回答，不管问什么，都可以通过这种方式。呃，又一个天真的怪异想法，我也有把现在写的这东西埋在一个地方去做第一份开始的念头，可是我不会去这么做，谁会陪我无聊呢？ <br />        有时候，我只是想活的简单纯粹一些，我想找个人直接去问“你在想什么？”可是大概不会有人真的坦诚的告诉我，虽然我很认真。我搞不懂人都在想什么，也许现在已经不是纯真的时代了。我初中时好像给人有测字玩过，其实只要知道对方在想什么，中国字那么伟大，想怎么说还不都随你，可能会不准吗？那时以己之心度人之意，有时我想我看得到别人心里，可是如今呢？我不知道该怎么去表达，有时即便是我想找个可以倾诉的人，可是人人都把自己包裹的那么严，我该找谁呢？是的，每个人都不想受到伤害，但是真的必须要穿上这层外衣吗？如果有人对我说“我愿意”，如果还可以找到个交心的人，那么就让我先来坦诚吧，让我走出第一步。 <br />        是佛家还是道家讲究放下，也许真的只有放下才能得到。最近忽然觉得太极是一个很神妙的图案。代表了一种平衡。如果黑白代表了两个人的世界观，那么每个人都要尽力的先去走向对方，才能达到平衡。如果黑白中间那两个圆点代表了包容，那么是否告诉我们要去接受对方的世界观呢？圆的完美，究竟要怎么样的平衡才能达到啊？ <br />        付出与回报的关系？貌似讨论这个就有点学术了。如果我费尽心力的想要一个人开心，那么也许只是他带给过我快乐吧？嗯&#8230;又一个怪异的想法，我想找一个人，一个相识了蛮久的人，把开始到如今的回忆的一幕幕，记忆力残留的画面，用卡通的方式画出来送给对方。可是这大概又是一个我只会像这样写在纸上，而不会去实施的想法，一个很现实的问题，我该去找谁呢？谁又愿意呢？ <br />         算了，反正这又不是第一个被无限搁置的想法，我好想今天心情不错啊！貌似写心情这种东西笔调也难得的变得如此轻松。哇！几乎是一气呵成写了这么多啊。趴在床上，打着手电，夜深人静，感觉也不错的说啊。知足者常乐，也许所求的还有很多，也许问题真的是在是和否中出现了第三条分支，但是就算什么，就算什么，就算有一百条我不想要的词语出现在这里形容，能够这样，我真的知足了。呃，写的连自己都看不太懂了，可是如果你不想说，那我也不会说。 <br />         高山流水觅知音，忽然想到这个，忽然想到上星期的那个想法，写一篇日志，放上去一个压缩包，设了密码，给一句提示，如果你愿意，还有我三个问题的提示，去等待有心人，去说出一句我想说很久的话，但是很明显，我又没有去做，这想法最终留于这里，呵呵~我想不到是否有人会陪我继续这个游戏？所以，算了吧。 <br />         在网上发表的某篇日志，我貌似写了一篇叫人际权限的东西。嗯，对，我没写完。有时候我比较顾虑别人的感受，所以我好想一直做人很被动，好像那时有打算过做一张表格，“事情”、“权限”、“授权时间”、“备注”，去发给我身边认识的人，让他们告诉我我可以做什么，不可以做什么，告诉我我和他们的关系到了什么程度，对，你猜对了，这个想法又只留于这里了，我想没人会去认真填的吧？ <br />         我汗啊~写这么多了啊！算了，不写了。我的想法还真不是一般的多啊。晚了。困了。也不想写了。难得好心情。难得一篇轻松随意的文字。这就叫意识流吧，貌似这种想到什么就写什么的样子。 <br />         猛然觉得笔调好像有些聊天说话的感觉，或许我想写，只是因为我想说，如果没人可以来听我说，那就这样说吧。 <br />         晚安！空气也好，这张纸也罢&#8230; <br />                                                                                           橘子 09/04/13 02:03 写在纸上的东西<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />PS:我喜欢把我有些写下的文字或者根本就不发出来，或者等到很久才发出来，因为这样时间离那一天已经过去好久，久的甚至我自己都也许已经忘了发生过什么，所以这样，这文字就再没人能够读得懂，只有我知道&#8230;——09.05.25_14：48</p>
<img src="http://www.qyorg.com/?ak_action=api_record_view&id=1033&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.qyorg.com/nmbm/1033.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lua 程序设计初步</title>
		<link>http://www.qyorg.com/jsjl/114.html</link>
		<comments>http://www.qyorg.com/jsjl/114.html#comments</comments>
		<pubDate>Thu, 15 Jan 2009 07:16:20 +0000</pubDate>
		<dc:creator>橘子xs</dc:creator>
				<category><![CDATA[技术交流]]></category>
		<category><![CDATA[bf]]></category>
		<category><![CDATA[hello world]]></category>

		<guid isPermaLink="false">http://www.qyorg.com/?p=114</guid>
		<description><![CDATA[Lua 程序设计初步

作者： 沐枫 （第二人生成员）

版权所有转载请注明原出处

<span class="readmore"><a href="http://www.qyorg.com/jsjl/114.html" title="Lua 程序设计初步">阅读全文——共13346字</a></span>]]></description>
			<content:encoded><![CDATA[<p>Lua 程序设计初步</p>
<p>作者： 沐枫 （第二人生成员）<br />
版权所有转载请注明原出处</p>
<p>　　在这篇文章中，我想向大家介绍如何进行Lua程序设计。我假设大家都学过至少一门编程语言，比如Basic或C，特别是C。因为Lua的最大用途是在宿主程序中作为脚本使用的。<br />
　　Lua 的语法比较简单，学习起来也比较省力，但功能却并不弱。<br />
　　在Lua中，一切都是变量，除了关键字。请记住这句话。</p>
<p>I. 首先是注释<br />
　　写一个程序，总是少不了注释的。<br />
　　在Lua中，你可以使用单行注释和多行注释。<br />
　　单行注释中，连续两个减号&#8221;&#8211;&#8221;表示注释的开始，一直延续到行末为止。相当于C++语言中的&#8221;//&#8221;。<br />
　　多行注释中，由&#8221;&#8211;[["表示注释开始，并且一直延续到"]]&#8221;为止。这种注释相当于C语言中的&#8221;/*…*/&#8221;。在注释当中，&#8221;[["和"]]&#8221;是可以嵌套的。<br />
II. Lua编程<br />
　　经典的&#8221;Hello world&#8221;的程序总是被用来开始介绍一种语言。在Lua中，写一个这样的程序很简单：<br />
　　print(&#8220;Hello world&#8221;)<br />
　　在Lua中，语句之间可以用分号&#8221;；&#8221;隔开，也可以用空白隔开。一般来说，如果多个语句写在同一行的话，建议总是用分号隔开。<br />
　　Lua 有好几种程序控制语句，如：</p>
<p>　　条件控制：if 条件 then … elseif 条件 then … else … end<br />
　　While循环：while 条件 do … end<br />
　　Repeat循环：repeat … until 条件<br />
　　For循环：for 变量 = 初值，终点值，步进 do … end<br />
　　For循环：for 变量1，变量2，… ，变量N in表或枚举函数 do … end</p>
<p>　　注意一下，for的循环变量总是只作用于for的局部变量，你也可以省略步进值，这时候，for循环会使用1作为步进值。<br />
　　你可以用break来中止一个循环。<br />
　　如果你有程序设计的基础，比如你学过Basic，C之类的，你会觉得Lua也不难。但Lua有几个地方是明显不同于这些程序设计语言的，所以请特别注意。</p>
<p>　　．语句块<br />
　　　　语句块在C++中是用&#8221;{&#8220;和&#8221;}&#8221;括起来的，在Lua中，它是用do 和 end 括起来的。比如：<br />
　　　　do print(&#8220;Hello&#8221;) end<br />
　　　　你可以在 函数 中和 语句块 中定局部变量。</p>
<p>　　．赋值语句<br />
　　　　赋值语句在Lua被强化了。它可以同时给多个变量赋值。<br />
　　　　例如：<br />
　　　　a,b,c,d=1,2,3,4<br />
　　　　甚至是：<br />
　　　　a,b=b,a &#8212; 多么方便的交换变量功能啊。<br />
　　　　在默认情况下，变量总是认为是全局的。假如你要定义局部变量，则在第一次赋值的时候，需要用local说明。比如：<br />
　　　　local a,b,c = 1,2,3 &#8212; a,b,c都是局部变量</p>
<p>　　．数值运算<br />
　　　　和C语言一样，支持 +, -, *, /。但Lua还多了一个&#8221;^&#8221;。这表示指数乘方运算。比如2^3 结果为8, 2^4结果为16。<br />
　　　　连接两个字符串，可以用&#8221;..&#8221;运处符。如：<br />
　　　　&#8221;This a &#8221; .. &#8220;string.&#8221; &#8212; 等于 &#8220;this a string&#8221;</p>
<p>　　．比较运算<br />
　　　　&lt; &gt; &lt;= &gt;= == ~=<br />
　　　　分别表示 小于，大于，不大于，不小于，相等，不相等<br />
　　　　所有这些操作符总是返回true或false。<br />
　　　　对于Table，Function和Userdata类型的数据，只有 == 和 ~=可以用。相等表示两个变量引用的是同一个数据。比如：<br />
　　　　a={1,2}<br />
　　　　b=a<br />
　　　　print(a==b, a~=b) &#8212; true, false<br />
　　　　a={1,2}<br />
　　　　b={1,2}<br />
　　　　print(a==b, a~=b) &#8212; false, true</p>
<p>　　．逻辑运算<br />
　　　　and, or, not<br />
　　　　其中，and 和 or 与C语言区别特别大。<br />
　　　　在这里，请先记住，在Lua中，只有false和nil才计算为false，其它任何数据都计算为true，0也是true！<br />
　　　　and 和 or的运算结果不是true和false，而是和它的两个操作数相关。<br />
　　　　a and b：如果a为false，则返回a；否则返回b<br />
　　　　a or b：如果 a 为true，则返回a；否则返回b</p>
<p>　　　　举几个例子：<br />
　　　　 print(4 and 5) &#8211;&gt; 5<br />
　　　　 print(nil and 13) &#8211;&gt; nil<br />
　　　　 print(false and 13) &#8211;&gt; false<br />
　　　　 print(4 or 5) &#8211;&gt; 4<br />
　　　　 print(false or 5) &#8211;&gt; 5</p>
<p>　　　　在Lua中这是很有用的特性，也是比较令人混洧的特性。<br />
　　　　我们可以模拟C语言中的语句：x = a? b : c，在Lua中，可以写成：x = a and b or c。<br />
　　　　最有用的语句是： x = x or v，它相当于：if not x then x = v end 。</p>
<p>　　．运算符优先级，从高到低顺序如下：<br />
　　　　^<br />
　　　　not &#8211; （一元运算）<br />
　　　　 * / 　　　　 + -<br />
　　　　 ..（字符串连接）<br />
　　　　 &lt; &gt; &lt;= &gt;= ~= ==<br />
　　　　 and<br />
　　　　 or</p>
<p>III. 关键字<br />
　　关键字是不能做为变量的。Lua的关键字不多，就以下几个：<br />
　　and break do else elseif<br />
　　end false for function if<br />
　　in local nil not or<br />
　　repeat return then true until　while</p>
<p>IV. 变量类型<br />
　　怎么确定一个变量是什么类型的呢？大家可以用type()函数来检查。Lua支持的类型有以下几种：</p>
<p>　　Nil 空值，所有没有使用过的变量，都是nil。nil既是值，又是类型。<br />
　　Boolean 布尔值<br />
　　Number 数值，在Lua里，数值相当于C语言的double<br />
　　String 字符串，如果你愿意的话，字符串是可以包含&#8217;\0&#8242;字符的<br />
　　Table 关系表类型，这个类型功能比较强大，我们在后面慢慢说。<br />
　　Function 函数类型，不要怀疑，函数也是一种类型，也就是说，所有的函数，它本身就是一个变量。<br />
　　Userdata 嗯，这个类型专门用来和Lua的宿主打交道的。宿主通常是用C和C++来编写的，在这种情况下，Userdata可以是宿主的任意数据类型，常用的有Struct和指针。<br />
　　Thread　　 线程类型，在Lua中没有真正的线程。Lua中可以将一个函数分成几部份运行。如果感兴趣的话，可以去看看Lua的文档。</p>
<p>V. 变量的定义<br />
　　所有的语言，都要用到变量。在Lua中，不管你在什么地方使用变量，都不需要声明，并且所有的这些变量总是全局变量，除非，你在前面加上&#8221;local&#8221;。<br />
　　这一点要特别注意，因为你可能想在函数里使用局部变量，却忘了用local来说明。<br />
　　至于变量名字，它是大小写相关的。也就是说，A和a是两个不同的变量。<br />
　　定义一个变量的方法就是赋值。&#8221;＝&#8221;操作就是用来赋值的<br />
　　我们一起来定义几种常用类型的变量吧。<br />
　　A. Nil<br />
　　　　正如前面所说的，没有使用过的变量的值，都是Nil。有时候我们也需要将一个变量清除，这时候，我们可以直接给变量赋以nil值。如：<br />
　　　　var1=nil &#8212; 请注意 nil 一定要小写</p>
<p>　　B. Boolean<br />
　　　　布尔值通常是用在进行条件判断的时候。布尔值有两种：true 和 false。在Lua中，只有false和nil才被计算为false，而所有任何其它类型的值，都是true。比如0，空串等等，都是true。不要被C语言的习惯所误导，0在Lua中的的确确是true。你也可以直接给一个变量赋以Boolean类型的值，如：<br />
　　　　varboolean = true</p>
<p>　　C. Number<br />
　　　　在Lua中，是没有整数类型的，也不需要。一般情况下，只要数值不是很大（比如不超过100,000,000,000,000），是不会产生舍入误差的。在很多CPU上，实数的运算并不比整数慢。<br />
　　　　实数的表示方法，同C语言类似，如：<br />
　　　　4 0.4 4.57e-3 0.3e12 5e+20</p>
<p>　　D. String<br />
　　　　字符串，总是一种非常常用的高级类型。在Lua中，你可以非常方便的定义很长很长的字符串。<br />
　　　　字符串在Lua中有几种方法来表示，最通用的方法，是用双引号或单引号来括起一个字符串的，如：<br />
　　　　&#8221;This is a string.&#8221;<br />
　　　　和C语言相同的，它支持一些转义字符，列表如下：<br />
　　　　\a bell<br />
　　　　\b back space<br />
　　　　\f form feed<br />
　　　　\n newline<br />
　　　　\r carriage return<br />
　　　　\t horizontal tab<br />
　　　　\v vertical tab<br />
　　　　\\ backslash<br />
　　　　\&#8221; double quote<br />
　　　　\&#8217; single quote<br />
　　　　\[ left square bracket<br />
　　　　\] right square bracket</p>
<p>　　　　由于这种字符串只能写在一行中，因此，不可避免的要用到转义字符。加入了转义字符的串，看起来实在是不敢恭维，比如：<br />
　　　　&#8221;one line\nnext line\n\&#8221;in quotes\&#8221;, &#8216;in quotes&#8217;&#8221;<br />
　　　　一大堆的&#8221;\&#8221;符号让人看起来很倒胃口。如果你与我有同感，那么，我们在Lua中，可以用另一种表示方法：用&#8221;[["和"]]&#8221;将多行的字符串括起来，如：<br />
　　　　page = [[<br />
　　　　&lt;HTML&gt;<br />
　　　　　　&lt;HEAD&gt;<br />
　　　　　　　　&lt;TITLE&gt;An HTML Page&lt;/TITLE&gt;<br />
　　　　　　&lt;/HEAD&gt;<br />
　　　　　　&lt;BODY&gt;<br />
　　　　　　　　&lt;A HREF="http://www.lua.org"&gt;Lua&lt;/A&gt;<br />
　　　　　　　　[[a text between double brackets]]<br />
　　　　　　&lt;/BODY&gt;<br />
　　　　&lt;/HTML&gt;<br />
　　　　]]</p>
<p>　　　　值得注意的是，在这种字符串中，如果含有单独使用的&#8221;[["或"]]&#8221;就仍然得用&#8221;\["或"\]&#8220;来避免歧义。当然，这种情况是极少会发生的。</p>
<p>E. Table<br />
　　　　关系表类型，这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是C语言的数组，只能用正整数来作索引；在Lua中，你可以用任意类型来作数组的索引，除了nil。同样，在C语言中，数组的内容只允许一种类型；在Lua中，你也可以用任意类型的值来作数组的内容，除了nil。<br />
　　　　Table的定义很简单，它的主要特征是用&#8221;{&#8220;和&#8221;}&#8221;来括起一系列数据元素的。比如：</p>
<p>　　　　T1 = {} &#8212; 定义一个空表<br />
　　　　T1[1]=10 &#8212; 然后我们就可以象C语言一样来使用它了。<br />
　　　　T1["John"]={Age=27, Gender=&#8221;Male&#8221;}<br />
　　　　这一句相当于：<br />
　　　　T1["John"]={} &#8212; 必须先定义成一个表，还记得未定义的变量是nil类型吗<br />
　　　　T1["John"]["Age"]=27<br />
　　　　T1["John"]["Gender"]=&#8221;Male&#8221;<br />
　　　　当表的索引是字符串的时候，我们可以简写成：<br />
　　　　T1.John={}<br />
　　　　T1.John.Age=27<br />
　　　　T1.John.Gender=&#8221;Male&#8221;<br />
　　　　或<br />
　　　　T1.John{Age=27, Gender=&#8221;Male&#8221;}<br />
　　　　这是一个很强的特性。</p>
<p>　　　　在定义表的时候，我们可以把所有的数据内容一起写在&#8221;{&#8220;和&#8221;}&#8221;之间，这样子是非常方便，而且很好看。比如，前面的T1的定义，我们可以这么写：</p>
<p>　　　　T1=<br />
　　　　{<br />
　　　　　　10, &#8212; 相当于 [1] = 10<br />
　　　　　　[100] = 40,<br />
　　　　　　John= &#8212; 如果你原意，你还可以写成：["John"] =<br />
　　　　　　{<br />
　　　　　　　　Age=27, &#8212; 如果你原意，你还可以写成：["Age"] =27<br />
　　　　　　　　Gender=Male &#8212; 如果你原意，你还可以写成：["Gender"] =Male<br />
　　　　　　},<br />
　　　　　　20 &#8212; 相当于 [2] = 20<br />
　　　　}</p>
<p>　　　　看起来很漂亮，不是吗？我们在写的时候，需要注意三点：<br />
　　　　第一，所有元素之间，总是用逗号&#8221;，&#8221;隔开；<br />
　　　　第二，所有索引值都需要用&#8221;["和"]&#8220;括起来；如果是字符串，还可以去掉引号和中括号；<br />
　　　　第三，如果不写索引，则索引就会被认为是数字，并按顺序自动从1往后编；</p>
<p>　　　　表类型的构造是如此的方便，以致于常常被人用来代替配置文件。是的，不用怀疑，它比ini文件要漂亮，并且强大的多。</p>
<p>　　F. Function<br />
　　　　函数，在Lua中，函数的定义也很简单。典型的定义如下：<br />
　　　　function add(a,b) &#8212; add 是函数名字，a和b是参数名字<br />
　　　　 return a+b &#8212; return 用来返回函数的运行结果<br />
　　　　end</p>
<p>　　　　请注意，return语言一定要写在end之前。假如你非要在中间放上一句return，那么请写成：do return end。<br />
　　　　还记得前面说过，函数也是变量类型吗？上面的函数定义，其实相当于：<br />
　　　　add = function (a,b) return a+b end<br />
　　　　当你重新给add赋值时，它就不再表示这个函数了。你甚至可以赋给add任意数据，包括nil （这样，你就清除了add变量）。Function是不是很象C语言的函数指针呢？</p>
<p>　　　　和C语言一样，Lua的函数可以接受可变参数个数，它同样是用&#8221;…&#8221;来定义的，比如：<br />
　　　　function sum (a,b,…)<br />
　　　　如果想取得…所代表的参数，可以在函数中访问arg局部变量（表类型）得到。<br />
　　　　如 sum(1,2,3,4)<br />
　　　　则，在函数中，a = 1, b = 2, arg = {3, 4}<br />
　　　　更可贵的是，它可以同时返回多个结果，比如：<br />
　　　　function s()<br />
　　　　　　return 1,2,3,4<br />
　　　　end<br />
　　　　a,b,c,d = s() &#8212; 此时，a = 1, b = 2, c = 3, d = 4<br />
前面说过，表类型可以拥有任意类型的值，包括函数！因此，有一个很强大的特性是，拥有函数的表，哦，我想更恰当的应该说是对象吧。Lua可以使用面向对象编程了。不信？那我举例如下：</p>
<p>　　　　t =<br />
　　　　{<br />
　　　　 Age = 27<br />
　　　　 add = function(self, n) self.Age = self.Age+n end<br />
　　　　}<br />
　　　　print(t.Age) &#8212; 27<br />
　　　　t.add(t, 10)<br />
　　　　print(t.Age) &#8212; 37</p>
<p>　　　　不过，t.add(t,10) 这一句实在是有点土对吧？没关系，在Lua中，你可以简写成：<br />
　　　　t:add(10) &#8212; 相当于 t.add(t,10)</p>
<p>　　G. Userdata 和 Thread<br />
　　　　这两个类型的话题，超出了本文的内容，就不打算细说了。</p>
<p>VI. 结束语<br />
　　就这么结束了吗？当然不是，接下来，需要用Lua解释器，来帮助你理解和实践了。这篇小文只是帮助你大体了解Lua的语法。如果你有编程基础，相信会很快对Lua上手了。<br />
　　就象C语言一样，Lua提供了相当多的标准函数来增强语言的功能。使用这些标准函数，你可以很方便的操作各种数据类型，并处理输入输出。有关这方面的信息，你可以参考《Programming in Lua 》一书，你可以在网络上直接观看电子版，网址为：<a href="http://www.lua.org/pil/index.html" target="_blank"><span style="color: #800080;">http://www.lua.org/pil/index.html</span></a></p>
<p><!--++ plugin_code qcomic begin-->&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
使用流程<br />
1. 函数的使用<br />
以下程序演示了如何在Lua中使用函数, 及局部变量<br />
例e02.lua<br />
&#8211; functions<br />
function pythagorean(a, b)   <br />
local c2 = a^2 + b^2   <br />
return sqrt(c2)<br />
end<br />
print(pythagorean(3,4))</p>
<p>运行结果<br />
5</p>
<p>程序说明<br />
在Lua中函数的定义格式为:<br />
function 函数名(参数)<br />
&#8230;<br />
end<br />
与Pascal语言不同, end不需要与begin配对, 只需要在函数结束后打个end就可以了.<br />
本例函数的作用是已知直角三角形直角边, 求斜边长度. 参数a,b分别表示直角边长,<br />
在函数内定义了local形变量用于存储斜边的平方. 与C语言相同, 定义在函数内的代<br />
码不会被直接执行, 只有主程序调用时才会被执行.<br />
local表示定义一个局部变量, 如果不加local刚表示c2为一个全局变量, local的作用域<br />
是在最里层的end和其配对的关键字之间, 如if &#8230; end, while &#8230; end等。全局变量的<br />
作用域是整个程序。</p>
<p>2. 循环语句<br />
例e03.lua<br />
&#8211; Loops<br />
for i=1,5 do   <br />
print(&#8220;i is now &#8221; .. i)<br />
end</p>
<p>运行结果<br />
i is now 1<br />
i is now 2<br />
i is now 3<br />
i is now 4<br />
i is now 5</p>
<p>程序说明<br />
这里偶们用到了for语句<br />
for 变量 = 参数1, 参数2, 参数3 do<br />
循环体<br />
end<br />
变量将以参数3为步长, 由参数1变化到参数2<br />
例如:   <br />
for i=1,f(x) do print(i) end<br />
for i=10,1,-1 do print(i) end</p>
<p>这里print(&#8220;i is now &#8221; .. i)中，偶们用到了..，这是用来连接两个字符串的，<br />
偶在(1)的试试看中提到的，不知道你们答对了没有。<br />
虽然这里i是一个整型量，Lua在处理的时候会自动转成字符串型，不需偶们费心。</p>
<p>3. 条件分支语句<br />
例e04.lua<br />
&#8211; Loops and conditionals<br />
for i=1,5 do<br />
print(“i is now “ .. i)<br />
  if i &lt; 2 then     <br />
  print(“small”)   <br />
  elseif i &lt; 4 then     <br />
  print(“medium”)   <br />
  else     <br />
  print(“big”)   <br />
  end<br />
end</p>
<p>运行结果<br />
i is now 1<br />
small<br />
i is now 2<br />
medium<br />
i is now 3<br />
medium<br />
i is now 4<br />
big<br />
i is now 5<br />
big</p>
<p>程序说明<br />
if else用法比较简单, 类似于C语言, 不过此处需要注意的是整个if只需要一个end,<br />
哪怕用了多个elseif, 也是一个end.<br />
例如<br />
if op == &#8220;+&#8221; then<br />
  r = a + b<br />
elseif op == &#8220;-&#8221; then<br />
  r = a &#8211; b<br />
elseif op == &#8220;*&#8221; then<br />
  r = a*b<br />
elseif op == &#8220;/&#8221; then<br />
  r = a/b<br />
else<br />
  error(&#8220;invalid operation&#8221;)<br />
end</p>
<p>4.试试看<br />
Lua中除了for循环以外, 还支持多种循环, 请用while&#8230;do和repeat&#8230;until改写本文中的for程序<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
数组的使用</p>
<p>1.简介<br />
Lua语言只有一种基本数据结构, 那就是table, 所有其他数据结构如数组啦,<br />
类啦, 都可以由table实现.</p>
<p>2.table的下标<br />
例e05.lua<br />
&#8211; Arrays<br />
myData = {}<br />
myData[0] = “foo”<br />
myData[1] = 42</p>
<p>&#8211; Hash tables<br />
myData[“bar”] = “baz”</p>
<p>&#8211; Iterate through the<br />
&#8211; structure<br />
for key, value in myData do   <br />
print(key .. “=“ .. value)<br />
end</p>
<p>输出结果<br />
0=foo<br />
1=42<br />
bar=baz</p>
<p>程序说明<br />
首先定义了一个table myData={}, 然后用数字作为下标赋了两个值给它. 这种<br />
定义方法类似于C中的数组, 但与数组不同的是, 每个数组元素不需要为相同类型,<br />
就像本例中一个为整型, 一个为字符串.</p>
<p>程序第二部分, 以字符串做为下标, 又向table内增加了一个元素. 这种table非常<br />
像STL里面的map. table下标可以为Lua所支持的任意基本类型, 除了nil值以外.</p>
<p>Lua对Table占用内存的处理是自动的, 如下面这段代码<br />
a = {}<br />
a["x"] = 10<br />
b = a   &#8211; `b&#8217; refers to the same table as `a&#8217;<br />
print(b["x"]) &#8211;&gt; 10<br />
b["x"] = 20<br />
print(a["x"]) &#8211;&gt; 20<br />
a = nil   &#8211; now only `b&#8217; still refers to the table<br />
b = nil   &#8211; now there are no references left to the table<br />
b和a都指向相同的table, 只占用一块内存, 当执行到a = nil时, b仍然指向table,<br />
而当执行到b=nil时, 因为没有指向table的变量了, 所以Lua会自动释放table所占内存</p>
<p>3.Table的嵌套<br />
Table的使用还可以嵌套，如下例<br />
例e06.lua<br />
&#8211; Table ‘constructor’<br />
myPolygon = {   <br />
color=“blue”,   <br />
thickness=2,   <br />
npoints=4;   <br />
{x=0,   y=0},   <br />
{x=-10, y=0},   <br />
{x=-5, y=4},   <br />
{x=0,   y=4}<br />
}</p>
<p>&#8211; Print the color<br />
print(myPolygon[“color”])</p>
<p>&#8211; Print it again using dot<br />
&#8211; notation<br />
print(myPolygon.color)</p>
<p>&#8211; The points are accessible<br />
&#8211; in myPolygon[1] to myPolygon[4]</p>
<p>&#8211; Print the second point’s x<br />
&#8211; coordinate<br />
print(myPolygon[2].x)</p>
<p>程序说明<br />
首先建立一个table, 与上一例不同的是，在table的constructor里面有{x=0,y=0},<br />
这是什么意思呢？ 这其实就是一个小table, 定义在了大table之内, 小table的<br />
table名省略了.<br />
最后一行myPolygon[2].x，就是大table里面小table的访问方式.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
如何简化你的宏.</p>
<p>虽然以上介绍让我们了解道宏可以完成非常强大的功能，但暴雪实在太小气了，仅仅只给我们255个字符来编写宏的内容，假如你的宏的功能比较罗嗦，那就很麻烦了，所以以下我介绍一下一些简化宏的小技巧：</p>
<p>1、定义全局变量<br />
看完之前Lua介绍的人该都知道把，在Lua里，所有的变量都是全局变量，也就是说任何一个变量只要你在开始游戏后做过定义，那么到游戏结束时只要你不重新定义他都是有效的。但为了不让我们自己不混淆做全局用的变量和局部使用的变量，我们可以采用大小写区分的办法，即大写一律做为全局变量使用，小写都用局部变量。<br />
这样，我们可以在一个宏里把自己常用的魔法/技能都定义成变量来表示，比如我是个术士，就可以这样：<br />
F=&#8221;腐蚀术(等级 3)&#8221;   X=&#8221;献祭(等级 3)&#8221;&#8230;&#8230;.<br />
之后，我们要使用这样魔法的时候，只要直接用F或X来代替就可以了，连&#8221;"都可以省掉，是不是很方便呢~<br />
或者还可以把一些常见的API函数变量也自己定义：<br />
T=&#8221;target&#8221; P=&#8221;player&#8221;&#8230;..<br />
使用的时候和上面一样。</p>
<p>2、自定义函数<br />
说实在话，魔兽的有些函数实在长的过头，很多时候珍贵的字节都给函数占去了。所以必要的时候我们就得用自定义函数的方法去简化这些函数。<br />
自定义函数的语句为：<br />
function 函数名称(函数变量1、函数变量2&#8230;.) return 函数返回值 end<br />
比如，使用法术的这个函数是CastByName()，我们可以在宏里这样写：<br />
/scirpt function C(a) CastByName(a) end<br />
运行后，我们其他宏使用法术就只要直接用C()就可以了，是不是很方便呢？<br />
或是说话的函数：<br />
/script function S(a) SendChatMessage(a,&#8221;SAY&#8221;) end<br />
之后你要控制人物说话就用S()就可以了。</p>
<p>如果是有返回值的函数：<br />
/script<br />
function N(a)<br />
return UNitName(a)       &#8211;return之后就是表示函数的返回值,但return必须在end前面.<br />
end<br />
如果以后你要调用目标的名字，直接用 x=N(&#8220;target&#8221;)，如果按前面第一点定义了全局变量的话，更简单x=N(T)。</p>
<p>这样，我们就可以把重要的字节都用在宏的判断内容上，而不是沉长的函数上了。如果你还有什么更好的简化方法，可以跟贴哦。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
关于背包物品使用整理类的宏的制作</p>
<p>由于游戏提供的函数无法直接由物品名称调用该物品，所以通常简单的使用物品宏是比较麻烦的，一定要把使用的物品放在背包内特定的位置</p>
<p>；或则大多术士都需要的问题，能随时监视自己的灵魂碎片（当然，有插件可以做到这一点）。</p>
<p>以下我写写关于如何制作这类宏：</p>
<p>首先，我们要在背包里找到自己需要的东西，必须用循环里遍历这些包。由于放的位置有2个参数，1个是包的编号，一个是包内槽位的编号，</p>
<p>所以我们需要一个循环嵌套来搜索：</p>
<p>以下假设我们身上都是16格的包：<br />
for bag=0,4,1 do     &#8211;包的编号为从右到左，0,1,2,3,4<br />
for cw=1,16,1 do   &#8211;槽位的编号为上到下，左到右 1,2,3,4,5&#8230;&#8230;16<br />
&#8230;&#8230;&#8230;&#8230;..   &#8211;这里我们可以写如判断物品是否为我们需要的东西的语句<br />
end         &#8211;表示内循环结束      <br />
end           &#8211;外循环结束</p>
<p>或者用其他方式做这个循环：<br />
While循环：while 条件 do … end</p>
<p>Repeat循环：repeat … until 条件</p>
<p>然后，要处理的是物品的判断：<br />
我们有两个函数可以使用<br />
GetContainerItemLink() 和 GetContainerItemInfo()<br />
这两个函数使用的变量都是2个，一个是包的编号，一个是槽位的编号，但他们的返回值不同</p>
<p>GetContainerItemLink()是返回一个带着物品名字的连接，如果你用聊天函数把返回值说出来就可以看到，说出来的不光是物品的名称，还是</p>
<p>一个可以连接到物品详细内容窗口的连接。</p>
<p>比如，你的包里4，1的位置放了一块熊肉，那么用/script SendChatMessage(GetContainerItemLink(4,1),&#8221;SAY&#8221;)后，就可以看到自己说“[熊</p>
<p>肉]”，而且用鼠标点一下说的内容，还可以弹出一个描写这块肉的窗口。</p>
<p>但要注意，直接用&#8221;[熊肉]&#8220;这样字符串来判断这个物品是不行的，例如：</p>
<p>if GetContainerItemLink(4,1)==&#8221;[熊肉]&#8221; then &#8230;.. end<br />
这个判断是无效的。</p>
<p>正确的方法是，先把要做判断的物品的赋一个变量，再用变量做出判断：</p>
<p>rou=GetContainerItemLink(4,1)     &#8211;把物品连接值赋给rou</p>
<p>if GetContainerItemLink(4,1)==rou then &#8230;.. end   &#8211;现在就可以正常判断物品了</p>
<p>最后要注意的是，这个函数无法对术士的灵魂碎片做出正确的判断，意思就是，虽然灵魂碎片用这个函数显示出来是一样的，但这个函数却认</p>
<p>为所有的灵魂碎片都是不同的东西，即你把这个灵魂碎片的连接赋给一个变量后，这个变量就只能判断这个灵魂碎片，其他的灵魂碎片就无法</p>
<p>作出判断，奇怪把。所以要判断灵魂碎片，就必须用到第二个函数GetContainerItemInfo()</p>
<p>GetContainerItemInfo()的返回值非常多，几乎所有的物品信息都可以返回，但我们这里判断只用它返回的第一个值。<br />
我们可以先用聊天函数来看看第一个返回值是什么样子的：<br />
/script<br />
a=GetContainerItemInfo(4,1)<br />
SendChatMessage(a,&#8221;SAY&#8221;)</p>
<p>可以看到，返回值相当长的英文，但物品的关键字是在后面。</p>
<p>这样，我们就有2种方法来使用这个函数来判断物品。</p>
<p>1、和前一个函数的方法一样，用变量存储值后再判断，前提是要把判断的物品放在特定的位置赋一下值。<br />
2、只使用特定物品，把物品的判断关键字写在函数里，然后用string.find()来判断他。<br />
例子：某物品的关键字是bd<br />
if string.find(GetContainerItemInfo(4,1),bd) then &#8230;..end &#8211;判断包1，4位置是否存在关键字为bd物品。</p>
<p>接着要处理的是物品的使用和交换。<br />
使用特定背包位置的物品函数：UseContainerItem(index,slot)<br />
这个好理解，不用多解释了把。</p>
<p>拾取/放下物品的函数：PickupContainerItem(index,slot)<br />
这个函数有意思，你鼠标上没抓着东西的时候就是帮你拿起特定位置的物品，有的话就变成放下物品到特定的位置并交换拿起该位置的物品。</p>
<p>所以要完成2个物品在包内的交换要使用3次这个函数：<br />
PickupContainerItem(4,1) &#8211;拿起4，1位置的物品<br />
PickupContainerItem(1,4) &#8211;放在1，4位置并拿起1，4位置的物品<br />
PickupContainerItem(4,1) &#8211;把1，4位置的物品放在4，1位置</p>
<p>好拉，把以上几点组合后宏就基本完成了：</p>
<p>下面的例子是关于灵魂碎片的整理，把前4个包的灵魂碎片全放到最后一个包内：</p>
<p>/script<br />
bag=0 cw=1 sc=1   &#8211;定义好变量，bag是包的编号，cw表示查找包的槽位，sc指向最后一个包内的槽位<br />
for bag=0,3,1 do &#8211;从0号包开始，到3号包结束，最后一个包不搜索。<br />
for cw=1,16,1 do   &#8211;这里假设所有的包都是16个槽位的，如果没那么多槽位的包也可以用。<br />
if GetContainerItemLink(bag,cw)~=nil &#8211;判断这个槽位是否是空的，是空就直接跳到下一个槽位<br />
  then<br />
  if string.find(GetContainerItemInfo(bag,cw),&#8221;Gem&#8221;) &#8211;判断这个槽位里是否是灵魂碎片，Gem为灵魂碎片的关键字<br />
  then<br />
    while string.find(GetContainerItemInfo(4,sc),&#8221;Gem&#8221;) do sc=sc+1 end<br />
        &#8211;这是一个小循环，用于判断最后一个包里原来是否已经有灵魂碎片，有的话就指向包的下一个槽位<br />
    PickupContainerItem(bag,cw)<br />
    PickupContainerItem(4,sc)<br />
    PickupContainerItem(bag,cw)   &#8211;这3句控制灵魂碎片和最后一个包内物品的交换<br />
    sc=sc+1   &#8211;重要，不能忘记这个，每放置好一个碎片后就要把最后一个包的<br />
        槽位指针指向下一个槽位，上面的小循环是无法判断刚刚放好的碎片的。<br />
  end<br />
end<br />
end<br />
end   -循环结束</p>
<p>完了么，当然不行。。。因为宏的限制是255个字。所以要简化我们的宏。</p>
<p>最长的内容估计就是函数了，就先从简化函数开始：</p>
<p>建立以下宏：</p>
<p>/script function P(c,d) PickupContainerItem(c,d) end<br />
/script function I(e,f) if GetContainerItemInfo(e,f) then return string.find(GetContainerItemInfo(e,f),&#8221;Gem&#8221;) else return nil end end</p>
<p>原来的宏就变成了：</p>
<p>/script<br />
bag=0 cw=1 sc=1   <br />
for bag=0,3,1 do<br />
for cw=1,16,1 do<br />
if G(bag,cw)~=nil<br />
  then<br />
  if I(bag,cw)<br />
  then<br />
    while I(4,sc) do sc=sc+1 end<br />
    P(bag,cw)<br />
    P(4,sc)<br />
    P(bag,cw)   <br />
    sc=sc+1   <br />
  end      <br />
end<br />
end<br />
end</p>
<p>多余的变量定义和过长的变量都可以更改：</p>
<p>/script<br />
s=1   <br />
for g=0,3 do<br />
for w=1,16 do<br />
if G(g,w)<br />
  then<br />
  if I(g,w)<br />
  then<br />
    while I(4,s) do s=s+1 end<br />
    P(g,w)<br />
    P(4,s)<br />
    P(g,w)   <br />
    s=s+1   <br />
  end      <br />
end<br />
end<br />
end</p>
<p>现在写的下了吧。呵呵，至于使用物品的宏我虽然已经写好了，但没有测试过，等测试没问题后再放出来把。有兴趣的朋友也可以自己写写。</p>
<p>但要注意一点，使用物品的宏只要找到物品就可以马上跳出循环，所以用Repeat循环做比较合适</p>
<p><!--++ plugin_code qcomic begin--> <!--++ plugin_code qcomic end--></p>
<img src="http://www.qyorg.com/?ak_action=api_record_view&id=114&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.qyorg.com/jsjl/114.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>回忆这东西。。。</title>
		<link>http://www.qyorg.com/nmbm/1086.html</link>
		<comments>http://www.qyorg.com/nmbm/1086.html#comments</comments>
		<pubDate>Tue, 27 Nov 2007 17:41:23 +0000</pubDate>
		<dc:creator>橘子xs</dc:creator>
				<category><![CDATA[你明白吗]]></category>
		<category><![CDATA[a5]]></category>
		<category><![CDATA[a6]]></category>
		<category><![CDATA[a8]]></category>
		<category><![CDATA[b0]]></category>
		<category><![CDATA[b3]]></category>
		<category><![CDATA[ba]]></category>
		<category><![CDATA[bb]]></category>
		<category><![CDATA[bf]]></category>

		<guid isPermaLink="false">http://wilderwein.org/?p=1086</guid>
		<description><![CDATA[我一直以为对于高中我不会有丝毫的眷恋~只是到最后了才发现~自己还是选择了伤感。。。 其实有很多东西也许原本谈不上宝贵~只是到了失去时，才发觉~原来自己早已习惯了那样。。。 才明白！朋友~原来是个很沉重的词语！只是我不明白为什么相遇总是预示着离去。。。 从梦中惊醒，环望着四周的我~才发现~原来~又只剩下了我一个人。。。 感觉时间像是一个轮回，只是还没从上个轮回中解脱，自己却又陷入了另一个轮回中了。。。 我总是活在回忆。。。总是活在过去。。。 所以~即便是到了如今，我仍在怀念初中时身边的人们，会想起我或者他们说过的每一句话；会想起在一起做过的每一件事；甚至也会偶尔故地重游，独自触景伤怀一番。。。我害怕想起他们，却总是想起。。。 所以~即便是我以为不会有留恋，我曾任性的以为，最宝贵的友情，最纯真的友情，都只存在于初中那个朦胧、天真的时代。。。我过客般的走过高中，却发现自己还是留下了什么。。。 我不记得是谁和我说过~不在一起了，又不是以后永别了，还能再见的啊。。。我没有反驳。。。只是在心底笑了。。。不一样了~是不会一样了。。。我太多次被这句话所欺骗，虽然希望，却知道那是奢望。。。 原来空间的阻隔竟有着如此的力量，可以冲淡一切。。。可以冲掉一切。。。 或许那份感情不会消失，却足已变淡。。。再见时也许再不会和原先一样了；再碰面时也许我们只会出于礼貌的寒暄一句；再相遇时也许只是勾起我们心底的那份回忆，却不会叫醒擦身而过的对方。。。我们都已有了彼此新的轨道，又何必去打扰对方。。。就像是已经相交过了的两条直线，只能渐行渐远了。。。 我留恋从我身边走过的每一个人，这样的留恋是痛苦的。。。我想再次的经历从前的种种，却也清楚的明白过去的都已经是曾经了。。。 这样也许能被称作是念旧吧。。。我希望身边的事都永远不变，却阻止不了那样的改变。。。 甚至是还在身边的有的人。。。有时猛然发现其实也陌生了，又或者变真实了。。。我说不上这样的改变好与坏否，只是这样的改变，从来都会勾起我的回忆。。。而那样的回忆，是我唯一所珍惜的东西。。。 再这样的晚上。。。有着这样的心潮膨涌。。。于是写下了这样的东西。。。很想有个人可以陪再身边，我们坐在草地上，仰望着星空，你可以听我倾诉深埋心中的所有情绪，让我不在寂寞。。。不在孤单。。。你~明白吗?。。。

]]></description>
			<content:encoded><![CDATA[<p>我一直以为对于高中我不会有丝毫的眷恋~只是到最后了才发现~自己还是选择了伤感。。。 <br />其实有很多东西也许原本谈不上宝贵~只是到了失去时，才发觉~原来自己早已习惯了那样。。。 <br />才明白！朋友~原来是个很沉重的词语！只是我不明白为什么相遇总是预示着离去。。。 <br />从梦中惊醒，环望着四周的我~才发现~原来~又只剩下了我一个人。。。 <br />感觉时间像是一个轮回，只是还没从上个轮回中解脱，自己却又陷入了另一个轮回中了。。。 <br />我总是活在回忆。。。总是活在过去。。。 <br />所以~即便是到了如今，我仍在怀念初中时身边的人们，会想起我或者他们说过的每一句话；会想起在一起做过的每一件事；甚至也会偶尔故地重游，独自触景伤怀一番。。。我害怕想起他们，却总是想起。。。 <br />所以~即便是我以为不会有留恋，我曾任性的以为，最宝贵的友情，最纯真的友情，都只存在于初中那个朦胧、天真的时代。。。我过客般的走过高中，却发现自己还是留下了什么。。。 <br />我不记得是谁和我说过~不在一起了，又不是以后永别了，还能再见的啊。。。我没有反驳。。。只是在心底笑了。。。<br />不一样了~是不会一样了。。。我太多次被这句话所欺骗，虽然希望，却知道那是奢望。。。 <br />原来空间的阻隔竟有着如此的力量，可以冲淡一切。。。可以冲掉一切。。。 <br />或许那份感情不会消失，却足已变淡。。。再见时也许再不会和原先一样了；再碰面时也许我们只会出于礼貌的寒暄一句；再相遇时也许只是勾起我们心底的那份回忆，却不会叫醒擦身而过的对方。。。我们都已有了彼此新的轨道，又何必去打扰对方。。。就像是已经相交过了的两条直线，只能渐行渐远了。。。 <br />我留恋从我身边走过的每一个人，这样的留恋是痛苦的。。。我想再次的经历从前的种种，却也清楚的明白过去的都已经是曾经了。。。 <br />这样也许能被称作是念旧吧。。。我希望身边的事都永远不变，却阻止不了那样的改变。。。 <br />甚至是还在身边的有的人。。。有时猛然发现其实也陌生了，又或者变真实了。。。我说不上这样的改变好与坏否，只是这样的改变，从来都会勾起我的回忆。。。而那样的回忆，是我唯一所珍惜的东西。。。 <br />再这样的晚上。。。有着这样的心潮膨涌。。。于是写下了这样的东西。。。很想有个人可以陪再身边，我们坐在草地上，仰望着星空，你可以听我倾诉深埋心中的所有情绪，让我不在寂寞。。。不在孤单。。。你~明白吗?。。。</p>
<img src="http://www.qyorg.com/?ak_action=api_record_view&id=1086&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.qyorg.com/nmbm/1086.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
