﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-谁动了我的全局变量？-文章分类-系统设计</title><link>http://www.cnitblog.com/snwcwt/category/1021.html</link><description>勇气，可以克服一切困难！</description><language>zh-cn</language><lastBuildDate>Tue, 11 Oct 2011 16:59:59 GMT</lastBuildDate><pubDate>Tue, 11 Oct 2011 16:59:59 GMT</pubDate><ttl>60</ttl><item><title>魔兽世界任务系统摸拟尝试(1) </title><link>http://www.cnitblog.com/snwcwt/articles/3538.html</link><dc:creator>风舞影天</dc:creator><author>风舞影天</author><pubDate>Mon, 24 Oct 2005 17:55:00 GMT</pubDate><guid>http://www.cnitblog.com/snwcwt/articles/3538.html</guid><wfw:comment>http://www.cnitblog.com/snwcwt/comments/3538.html</wfw:comment><comments>http://www.cnitblog.com/snwcwt/articles/3538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/snwcwt/comments/commentRss/3538.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/snwcwt/services/trackbacks/3538.html</trackback:ping><description><![CDATA[<P>最近对魔兽的任务系统有翻想法，写点东西出来供大家点评修改。</P>
<P>相信玩过WOW的朋友都或多或少的知道它的任务系统吧，或许因为WOW的UI用的是LUA+XML就让大家认为服务器上的很多东西也是用的LUA。我认为这不一定，用什么脚本或方式是其次，主要是本身的系统如何。当然，想要研究WOW的任务系统，那么首先是必须熟悉它，所以你得先玩，然后你才能分析。WOW的所有任务不外乎以下几种：杀怪、收集任务物品、探索区域、传话、需要一些特殊条件的、我没想到的。杀怪似乎就比较单一了，杀死某个怪，小组或个人都会完成；收集任务物品，这一点我认为要稍嫌复杂一些，主要源于任务物品的获得方式，比如我将送信之类的任务归为此类，任务物品的获得方式为从接任务的NPC处接到，另外还有打怪掉落、打开场景上一些特殊物品获得，打怪掉落也可能掉落不是任务物品的，比如战士30级职业任务有一环是到湿地打一种骨头，然后点右键测试它的坚固性，有机率得到任务物品，再如从NPC处得到任务物品然后在正确的地方使用；探索区域就走到某些地方；特殊条件的比如萨尔可以接到的关于尼尔陆（好象是这名）中有一环是去和他谈话、部落这边的知识试练回答问题的任务等等。</P>
<P>任务的获得也有不同的方式：从NPC处接任务、从场景上的一些元素上得到、掉落的可以触发一个任务的物品，接任务的条件也五花八门，不过第一点是每个任务都有一个任务等级和任务可以接受的等级，其它条件比如需要完成某个任务才能接的、接了某任务或完成某任务就不能接的（如铁匠的分支任务）、完成某任务后怪才会掉落触发任务物品的（部落在灰谷的守猎任务）、根据角色某些属性决定能否获得的任务（职业任务、生活技能任务、部落和联盟之间的任务不能互通等等）、等待大家补充的。</P>
<P>部落这边50+后可以接到一个去东瘟疫之地的任务（相信联盟也有类似的），可以在三个NPC处接到，所以NPC（不限于NPC）能给玩家什么任务和任务本身应该是没什么关系的（也应该没有关系）。基本上我将任务系统划分成四个部分：任务信息、给予任务信息、玩家信息、完成过程。</P>
<P>任务信息：这部分包括任务本身的一些基本信息，我第一个想到的是任务ID，然后根据一些表面的东西分出诸如任务名、任务介绍、任务目标、完成条件、对话内容、任务等级、接受等级、任务奖励、任务***(不知怎么说，就是接任务的时候会给玩家的物品)、任务类型（普通、精英、PVP、团队、地下城等）</P>
<P>给予任务信息：一般存放在NPC处、触发任务物品处、场景特定元素处（其实可以看成一种特殊的NPC，或者应该说对于程序来说根本没有NPC、怪物之分，他们不同的是数据不同而已），这些一般存放可以给出什么任务的信息，触发一个任务的物品可能会特殊一点，因为一般只能接到一个任务，不过也可以和前两种同样看待。</P>
<P>玩家信息：除开玩家的一些属性就是任务的信息，但实际上他们都是同样一个东西--玩家属性，可能我更偏好于每个任务都有一个记录其是完成的状况，而且对于重复性的任务可能更好加以区分。另外这里说点就是玩家的属性不是固定在程序中的，比如玩家的生命值、等级不是在程序中有这样一些变量：m_iLevel,m_iHealPoint等等，而应该是属性有一个ID和其值，数据库存放时存放属性ID和值，当服务器启动时会根据一个配置文件来读入相应属性ID的属性名等信息，如脚本中访问的名字等,而这样单在任务系统中的好处就在于对于接任务的条件可以统一的放入一个列表中进行存放。不过这是我认为还不错的方式。</P>
<P>完成过程：这个就五花八门了，杀怪、收集、探索、特殊条件，几乎就是任凭策划大人们的想象力而写出一些对应的代码，当然杀怪、收集、探索是占大多数且有条可依的，一些比较特殊的就靠脚本来支撑是我目前认为最好的方式了。</P>
<P>(未完待续)</P><img src ="http://www.cnitblog.com/snwcwt/aggbug/3538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/snwcwt/" target="_blank">风舞影天</a> 2005-10-25 01:55 <a href="http://www.cnitblog.com/snwcwt/articles/3538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>