【第一章】帮助文档
【第一章】帮助文档
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为某个技能id,name为属性名称,如{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为某个技能id,name为属性名称,如u.skills.j1.lvl=50
可以使用u.adopt_owner.name设置宠物的主人的某个属性,其中name为属性名
称如u.adopt_owner.hp=100
{u.refresh_time}为房间离下次刷新的时间(单位分钟)
{c.area}表示游戏的分区{c.time}表示一个秒数,从公元1970年1月1日到当前一共是多少秒。
{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等游戏常量,其中status与status_string的对应关系为:1-开发中,2-正常,3-维护中,4-公测,5-公开展示,6-内测,其它-无效
1、增加获得敌人数量u|o.enemy_count和u|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_umsg和ut|ot.fight_omsg设置和获得当前一招产生的描述,umsg为攻击的信息,omsg为受攻击的信息
7、增加ut|ot.hurt_hp和ut|ot.hurt_mp获得当前一招产生的伤害值,只能在技能使用事件或出招事件中有效
8、增加ut|ot.cut_hp和ut|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}随机出来的就是0、1、2、3、4、5、6、7、8、9、这十个数、不会出现10这个数、因为他是随机10里面的数、(没有小数)、他只会出0到9之间数(包括0和9、举个例子:开宝箱、鸡蛋我要每次开箱在0到9个里随出数、就可以写{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=100、u.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。