【第一章】帮助文档

qqmud2周前设计教程16

【第一章】帮助文档

1、基本信息

在游戏设计主界面,有一个“基本信息”菜单,这里是定义游戏的各种最基本的信息,如“游戏名称”、“游戏简介”等。另外还有玩家的升级公式等也在这里定义。关于升级公式,涉及到表达式知识,将在后面介绍。

2、定义属性

这里可以定义房间、人物等的公共属性。例如,如果给电脑人物属性定义了“年龄”属性,那么,在设计具体的电脑人物基本属性时,就有“年龄”一项可供定义。如果把“年龄”属性定义为可显示的,那么玩家在查看电脑人物资料时可以看到电脑人物的“年龄”属性。

当定义的属性有最大值时(如hp),那么max_hp代表最大体力,hp代表体力。

3、定义表达式

这里可以定义一些全局的表达式,如定义一个名为 exp_xishu=2的表达式,在其他定义表达式的地方就可以使用{e.exp_xishu}来引用这个表达式。全局表达式主要用于定义一些可能会经常变更的系数,而这个系数又会被用在很多地方的时候,想修改这个系数就只需要修改这个全局表达式了。

4、定义装备类别

可以定义兵器和防具的类别。

5、定义技能

在这里可以定义游戏中的技能。首先,您必须定义技能默认值,包括技能默认的伤害目标,消耗目标,伤害值公式,消耗值公式等等。然后即可设计新的技能了。

6、定义公共事件

这里可以定义NPC和玩家的一些公共事件。例如可以在玩家的“注册事件”里,给玩家加一些钱,给一些初始的基本道具等。

7、设计地图

可以设计地图的分区。可以增加多个分区。用以区分地图板块。其他一些地图的设计就十分简单,可以去实际操作一下。

8、设计者管理

可以为游戏增加设计者帐号。

9、关于表达式

表达式是游戏里非常重要的概念。

设计时有5个可以引用的对象,分别为

u:代表主动方

o:代表被动方

m:代表技能、帮派对象等

c:代表系统对象

e:代表公共表达式

我们用一个例子来说明表达式:

如玩家的升级公式:({u.lvl}+1)*({u.lvl}+1)*({u.lvl}+11)+200

升级公式都是和经验(exp)相关的,意思就是,当玩家的经验达到以上的表达式的值时,就升级。{u.lvl}的意思是取到玩家的等级(请到玩家的属性设置里查看玩家各个属性的id)。当玩家现在是2级时,当经验达到 (2+1)*(2+1)*(2+11)+200时,玩家就会升级。

*代表乘

/掉表除

+代表加

-代表减

另外还有条件表达式的概念,如玩家的升级条件为 {u.lvl}<75,意思是,当玩家的等级小于75时可以升级,否则就不能升级,也就是说封顶75级。

另外举一个技能伤害公式的例子:{u.lvl}*({m.lvl}+10)*{m.mod}-{o.recovery}

这里u表示攻击方(主动方)、o表示被攻击方(被动方)、m表示技能

一些内置属性(用u为例子,也可以是o代表被动方):

{u.attack}:代表对象的兵器杀伤力

{u.recovery}:代表对象的防具防御力

{r.u.lvl}:代表一个随机数,即会得到一个 0~对象等级 之间的一个随机整数,又如{r.100}表示得到0~99之间一个随机整数。{ut.***}:表示一个临时的属性,可以设置对象的临时属性,临时属性在用户退出游戏后就失效。

{u.burthen}:用户的总的负重。

{u.ic.物品id}:用户身上某个物品的数量。

{u.jv.技能id}:用户的某项技能的等级。

{u.tasks.任务id}:表示用户身上是否有某个任务,如果为1表示有某个任务,为2则表示已经完成了此任务。为0表示没有此任务。

{u.env.***}可以取到用户当前所在房间的属性。***是房间的某个属性名。

{u.is_pk}1{u.is_practice}1是比武

{u.is_polemical}1是发起pk{u.is_fighting}1时表示正在战斗中

{u.callout_adopt_count}获得放出宠物的数量

{u.adopt_count}获得拥有宠物的数量

{u.is_adopt}1时表示是宠物

可以使用{u.skills.skill_id.name}获得人物的某个技能的属性,其中skill_id为某个技能idname为属性名称,如{u.skills.j1.lvl,o.skills.j2.lvl}

可以使用{u.adopt_owner.name}获得宠物的主人的某个属性,其中name为属性名称,{u.adopt_owner.lvl},{o.adopt_owner.skills.j1.lvl}

可以使用u.skills.skill_id.name=***设置人物的技能属性,其中skill_id为某个技能idname为属性名称,如u.skills.j1.lvl=50

可以使用u.adopt_owner.name设置宠物的主人的某个属性,其中name为属性名

称如u.adopt_owner.hp=100

{u.refresh_time}为房间离下次刷新的时间(单位分钟)

{c.area}表示游戏的分区{c.time}表示一个秒数,从公元197011日到当前一共是多少秒。

{c.year},{c.month},{c.date},{c.day},{c.hour},{c.minute},{c.second},请看其英文字面的含义就知道了。

{u.clan.***}可以得到用户帮派的一些属性,其他***是属性名,可以为下面的:

id:帮派的ID

name:帮派名

lvl:帮派的等级

exp:帮派的经验

max_members:帮派最大的成员数

tenet

chair_name:帮主的称号

chairman:帮主的ID

eraclan_members:帮派现在的成员数

{ut.is_computer}1时,表示是使用电脑的。

10、任务

可以给NPC、房间、物品定义任务。任务在玩家查看NPC(或房间、物品)时会触发。任务有触发条件,接受条件等。触发条件可以是如:{u.lvl}>=10,表示玩家达到10级时候可以触发此任务;接受条件是指玩家虽然能触发此任务,但还必须达到此条件时才能接受到。

任务的接受事件是在玩家接受任务时执行的,此事件的最后一步骤的提示语会被用来作为任务列表中的提示语。

完成事件是指玩家完成了任务后执行的事件。当然办事任务可能没有完成事件(在另外某些事件里可以删除此办事任务)。

11、事件

事件是非常重要的一个概念。事件有触发条件、事件步骤等。事件步骤可以有多个,但是,当事件执行到某个事件步骤而不满足此步骤的执行条件时,整个事件就不会继续执行。

事件步骤可以进行的操作如下:

设置属性:u.lvl=1(表示将等级设置为1级)

更改属性:u.exp=10,(表示将经验增加10);又如 u.money=-10(表示将钱-10

更改物品:

得到装备:

学会技能:

废除技能:

触发任务:

删除任务:

删除已完成任务:

挑战人物:

收养对象:

移动目标:

1.增加事件中发布公共信息,c.c_msg="",u|o.c_msg=""; 增加事件中发送私人信息,u|o.p_msg=""

3.仓库增加锁的概念,锁标志为u|o.storage_lock,由设计者控制如何上锁开锁,值为1则锁住,不能执行存取物品的操作,默认为0(可以参考g2杂货铺中的仓库密码相关操作设置)

5.增加彩色文本功能,可以使用颜色名称也可以使用颜色值,如@red@大家好@end@@#FF0000@大家好@end@(颜色名称包括:"Black", "Green","Silver", "Lime","Gray", "Olive","White","Yellow","Maroon", "Navy","Red", "Blue","Purple","Teal","Fuchsia","Aqua"

6.场景增加show_user_new_line,show_npc_new_line,show_item_new_line三个属性,如果值为1则每个玩家或npc或物品将会每个对象显示一行(可以参考g2长南村广场设置)

2、增加c.id,c.name,c.desc,c.status,c.status_string,c.creator,c.site等游戏常量,其中statusstatus_string的对应关系为:1-开发中,2-正常,3-维护中,4-公测,5-公开展示,6-内测,其它-无效

1、增加获得敌人数量u|o.enemy_countu|o.alive_enemy_count

2、增加获得敌人对象u|o.enemys.n.***u|o.alive_enemys.n.***u|o.enemys.nt.***u|o.alive_enemys.nt.***3、增加获得队友数量c.team_member_count

4、增加获得队友对象u|o.team_members.n.***u|o.team_members.nt.***

6、增加ut|ot.fight_umsgut|ot.fight_omsg设置和获得当前一招产生的描述,umsg为攻击的信息,omsg为受攻击的信息

7、增加ut|ot.hurt_hput|ot.hurt_mp获得当前一招产生的伤害值,只能在技能使用事件或出招事件中有效

8、增加ut|ot.cut_hput|ot.cut_mp获得上一回产生的总伤害

 

常规值:

常规最大设属数:50

理论最大设属数:max_len/len

常规最大挑战人物数:10

常规最大步骤数:20

理论最大步骤数:max_len/len

INPUT最大字数:200

理论最大数:922 337 203 685 477 580 7

运算最大位:17

r最大位:9

最大嵌套数:20

最大执行次:200

INPUT寿命:一个执行步骤

发呆时间:30分钟

t=task

s=scene

n=npc

i=item

j=jineng=skill

 

{r.*}的理解:r是个随机值、可以拿来作爆率、执条、随机数、首先讲随机值:r在丫网的公式表达示里是个随机代词:如{r.10}随机出来的就是0123456789、这十个数、不会出现10这个数、因为他是随机10里面的数、(没有小数)、他只会出09之间数(包括09、举个例子:开宝箱、鸡蛋我要每次开箱在09个里随出数、就可以写{r.10}、如果要至少有一个就写成{r.10}+1、二个+2、以此类推、随机还有{r.u.lvl}随机的是等级数、{r.u.ll}随机的是力量属性里的数、其它类推。第二个:执条:刚才给大家说的是随机数值、如:{r.10}==1、意思就是当10这个数里随机出来的是1这个数值、该步骤就可以执行、出的是 0/2/3/4/5/6/7/8/9、该步骤就不能执行、还有就是执条:{r.10}!=1、意思就是{r.10}1时该步骤不会执行、出023456789时该步骤执行、还有==是等于、!=是不等于、{r.10}不是非要等于1、也可以023456789当中的数只是举个例子、记住{r.1}不能等于1只能等于0因为他只出0这个数。

 

 

升级加HP+MP:公共事件,玩家事件,升级事件,设属:u.hp={u.max_hp}u.mp={u.max_mp}

 

技能攻击减对方一半血:该技能伤害公式填{o.max_hp}/2

 

帮助事项:

NO.1:先解释设计大厅→定义属性→玩家属性。这里的玩家属性包含玩家的各个主要属性,就是玩家必须拥有的。其余的电脑,技能……等等也是一样。

NO.2:定义公共事件→玩家事件。这里的玩家事件是指玩家的所有事件,注册事件里的步骤你不能把属性设在更改属性里,要设在设置属性里。比如你要设计注册过玩家的力量“u.ll=10”这个属性就是力量等于十,你可以借鉴G2平台。然后其余的事件你也可以借鉴G2平台。

 

eval基本常识:

eval-整合

v-套嵌

用法:

eval多用于文本显示,常与条件选择式a>b?x:y及套嵌v连用。

v用于属性名套嵌,例如u.l.v(u.a),是把{u.a}的值作为外层属性名的一部分。

eval基本格式:

{eval()}

注意在eval括号内的属性名都要使用v()括起

例子:

{eval(v(u.kill)>0?"":"")}

这个例中分成三部分

{eval()}v(u.a){u.a}>0?x:y

{eval()}——基本格式,省略

v(u.a)——原型为{u.a},因为此属性处于{}中,作为外层的一部分,所以变为v(u.a)

{u.a}>0?x:y——此为选择式,{u.a}要变为v(u.a)>0是条件,x,y如果为文字要加引号""

eval的用法很多,可以大量套嵌,同时支持套嵌属性运算,显示最后结果。

例子:

假设u.a=100u.b=1000

你要用模板文本显示两者相加结果,直接写{u.a}+{u.b}是无法得到的

这就要用{eval(v(u.a)+v(u.b))},这时在玩家看到的就会是运算结果了

再来讲下多层套嵌,看下这段:

例子:显示中文星期

星期{eval(v(c.day)==1?""(v(c.day)==2?"":(v(c.day)==3?"":(v(c.day)==4?"":(v(c.day)==5?"":(v(c.day)==6?"":""))))))}

这里大范围的运用了a=b?x:y这一选择式来进行套嵌,这也是整合显示时最常用的方法。

最后一步不能写a>b?x:y。只能直接写y


相关文章

ZUIWAP游戏设计权威指南

ZUIWAP游戏设计权威指南椿天的味道 整理、修改、编辑目录:【第一章】帮助文档【第二章】基础知识【第三章】设计词典和变量讲解【第四章】聊天、任务、副本系统【第五章】职业、加点、称号系统【第六章】物品...