[十四]如何编写物品的脚本
从上一个教程到现在,脚本教程的整理停搁了一段时间,向大家表示歉意,让我们一起重新开始后面的学习吧!
在sphere的脚本编写中有几个大类,大家通过前面的帖子有了部分的了解,下面的内容让我们一起学习一下sphere脚本中最为简单的物品脚本的编写。任何学习写脚本的工作也是从物品的编写开始的。所谓物品就是我们在游戏中所手动添加的一些静态物品,如月门、兵器(剑等)、盔甲、食物、药水、卷轴、火把、钱等等。
sphere为这些物品的脚本定义了一些固定的格式和外部形态,也加入了一些触发,物品的属性和参数定义可以参考前面的教程七;触发指令可以参考前面的教程十二。在这里我想建议大家一下,在写任何的脚本的时候,最好自己新建一些文件,放在scripts目录下面的子目录中,子目录可以自己指定,这样每次版本更换的时候,不会进行大的更改,程序的管理方面会变得非常的规范和有序。同时在spheretables.scp中的[RESOURCES]一节定义如下(此例中的子目录为CUSTOM,资源文件最好放在上面的一节[RESOURCES]定义的最上面)。
[RESOURCES]
scripts\web\
Scripts\Custom\
Scripts\speech\
然后您可以按照自己的习惯来编写和命名程序文件,比如物品的和NPC的脚本、任务的脚本都可以分开来加入。
下面我们先开一个Items(物品)的脚本例子,这是一个袍子的定义:
[ITEMDEF 01f03] //物品定义开始标记
DEFNAME=i_robe //DEFNAME值等同于01f03,即ADD i_robe和ADD 01f03是一样的
RESOURCES=16 i_cloth //制作此物品需要的资源16个i_cloth
WEIGHT=3 //此物品的重量
TYPE=T_CLOTHING //此物品的类型为衣服类型
DYE=1 //是否可以被染色 1为可以
ARMOR=7 //防御等级
CATEGORY=Provisions – Clothes //在Axis这个工具里面的Items属性页显示的类别
SUBSECTION=Shirts & Robes //在Axis这个工具里面显示的分类别
DESCRIPTION=Robe //在Axis这个工具里面显示的具体名字
DUPELIST=01f04 //当物品被使用FLIP命令后进行转向后将会变成什么
SKILLMAKE=TAILORING 59.0, t_sewing_kit //制作这个物品需要的相关技能及点数
RESOURCES2=16 i_cloth,1 i_thread //制作这个物品需要那些资源
ON=@Create //被add或其他方式创建的时候触发
HITPOINTS={11 40} //在被打破之前可以被击中后损害的次数
Sphere55I的脚本规定任何物品都以ITEMDEF这个标记为开始直到下一个ITEMDEF标记活着EOF文件结束标记为终止,这其间的内容sphere都认为是一个物品的脚本。
对照一下我们前面的第七个教程中的物品变量,我们来看一下是不是物品的脚本非常简单啊?只是定义一下这个物品的外形和一些参数变量的值就可以了。下面我们在看一个物品脚本,这个物品脚本是一个任务的奖励物品,双击它可在玩家身上进行一系列的操作--添加一定数目的金钱或者是Fame值等等。
[ITEMDEF i_task_award]
ID = 012ab //该物品是卡片的外形
NAME=The Award Tarot //名字
TYPE= T_SCRIPT //类型为自定义
value =500 //出售给npc的价值
CATEGORY=Jarry Task //Axis的类定义描述
SUBSECTION=Task Items //Axis的分类定义描述
DESCRIPTION=Tarot //Axis中的名字
ON=@Create
COLOR=065 //颜色定义
TIMER =10000 //timer值,创建后开始自动倒计时
ON=@click //双击触发,99l版本以后为ON=@USERCLICK
SRC.SAYU “任务奖励物品,请在规定时间内双击领取奖品” //玩家头上显示的中文信息
RETURN 1 //不再显示物品名字,默认为单击显示物品名字
ON=@Dclick //双击触发,99l版本以后为ON=@USERDCLICK
REMOVE //删除此物品
IF <SRC.FAME> <8000 //判断双击人的Fame值是否小于8000
SRC.FAME= <SRC.FAME> + 2000 //如果小于8000则,在该值基础上加2000点
SRC.SYSMESSAGE “Your fame is: <src.fame>” //显示系统提示信息
ENDIF //结束Fame值的判断IF语句
SRC.NEWITEM = I_GOLD //双击人添加一个新物品为I_GOLD(钱)
SRC.ACT.AMOUNT = 2000 //设置钱的数量为2000 golds
SRC.ACT.BOUNCE //弹起,放到双击人包中
SRC.SAY “Wow! 2000 Gold coins and such fames” //双击人头上显示惊喜信息
RETURN 1 //结束返回1
ON=@TIMER //当timer值从10000倒计时到0触发,相当于玩家没有双击
REMOVE //删除此物品
RETURN 1 //结束返回1
大家看,sphere的脚本是不是很有趣又很简单啊?简单的是,任何物品的脚本只要把它的基本参数变量设置为您想要的值就可以了。有趣的是你可以让它具备任何您想要它具备的功能。
再来看一下一个屠龙剑的部分脚本定义:
[ITEMDEF I_Task_DragonSword]
NAME=Dragon Slayer Sword
ID=i_sword_long //长剑的外形
TYPE=13 //类型是武器
DAM=15,30 //该武器的攻击伤害值范围
RESOURCES=40 i_ingot_iron,20 i_ingot_gold,40 i_reag_dragon_blood
SKILLMAKE=Blacksmithing 110.0,TINKERING 110.0,MAGERY 80.0,t_tinker_tools
SKILL=Swordsmanship //使用它需要的技能是剑术
TWOHANDS=N //是否要两只手来拿它
REQSTR=80 //需要的STR值
WEIGHT=4 //重量,该值越小,武器的挥动速度就越快
CATEGORY=POD task
SUBSECTION=TASK common
DESCRIPTION=Dragon Slayer
ON=@Create
ATTR=04 //不掉的新人属性
HITPOINTS={200 310}
COLOR=0494
MORE2={15 20} //初始化一个more2变量的值
ON=@EQUIP //装备的时候触发
IF (<SRC.SWORDSMANSHIP> > 79.9)&&(<SRC.TACTICS> > 79.9)&&(<SRC.HEALING> > 79.9)
//如果剑术大于79.9并且战术大于79.9,同时Healing技能也大于79.9的时候,符合条件
SRC.EFFECT 3,i_fx_BLESS_EFFECT,6,15,1 //装备者身上产生魔法效果
RETURN 0 //动作继续
ELSE //否则
SRC.SAYU “您不具备装备屠龙之剑的能力.” //装备者头上显示提示信息
SRC.EFFECT 3,0374a,6,15,1 //产生魔法效果
REMOVE //删除这把剑
RETURN 1 //结束返回1
ENDIF 结束IF判断语句
ON=@Damage //当伤害的时候触发
SRC.DAMAGE <MORE2> //伤害值等于MORE2的值
RETURN 1
同样您可以在任何物品上添加任何您想要的一些效果,触发条件指令,属性,外形等等信息,这些信息来自于sphere规定的一些参数语句,可以参考前面教程七和教程十三。
怎么样?我说的没有错吧!物品的脚本是非常简单的一种类型脚本。
至于一些物品的特殊more和tdata以及more1 more2 morex morey等等值代表不同物品的不同意义,以后会归纳总结上来。

留言
还没有留言,来坐个沙发吧。
留个言