PLOTITEM注解

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

PLOT1和PLOT2都是32位的变量.作为玩家的属性存储.

若你连什么是二进制位都不清楚,建议先去翻翻计算机入门书籍

plot1
tus所给的plot1通常用于实现职业系统和种族系统.以TUS自带的转职为例.
TUS在tustables.scp里规定了
几种常见的职业.分别是:
[SKILLCLASS 1]
NAME=Ranger  //浪人
STR=100      //单项str上限
INT=80
DEX=120

[SKILLCLASS 2]
NAME=Paladin //游侠
STR=120

[SKILLCLASS 3]
NAME=Theif  //大盗
STR=100
INT=80
DEX=150

[SKILLCLASS 4]
NAME=Sorcerer //女巫

[SKILLCLASS 5]
NAME=Mage     //巫师

[SKILLCLASS 6]
NAME=Mercenary  //雇佣兵

[SKILLCLASS 7]
NAME=Gladiator //角斗士

[SKILLCLASS 8]
NAME=Cleric  //牧师

分别对应于plot1的1-8位,在tustrig.scp
中为简明起见,不采用掩码而是直接采用相应的位编号(1-8)来直观地进行一一对应.
假如我们要限制巫师(plot1的第5位),那么可以在tustrig.scp里加上如下代码:

[plotitem 5] //默认的plot就是plot1,plot2没有plot1的触发功能.
ontrigger=equip  //若mage试图装备东西,可以在下面根据实际情况添加复杂点的判断.
src.message Mage can not wear this!
return 1   //返回1表示取消当前操作,这里是取消了装备行为.
当然也可以加上其他触发方式,

ontrigger=targon_char
…
if (src.targ.plot1 & 080)    //若对象为角斗士,为什么是080可看下文解释
…         //使魔法打击翻倍或魔法失效等等,看你想象力了
//0x80=0b10000000 (即第7位为1,自右至左,第7位为角斗士位,0b表示下面为二进制表示式)

plot2
   plot2不能用[plotitem #]的形式在tustrig.scp里触发,但可以用来标记任务的
完成度,比如有这样一个任务由三部分组成:
1.   李逍遥到仙灵岛求药(若未完成设plot2的第0位为0,完成后该位标1)
2.   李逍遥遇到赵灵儿(若未完成设plot2第1位为0,完成后该位标1)
3.   李逍遥拿到药(若未完成plot2第2位为0,完成后该位标1)

则李逍遥接此任务前plot2前三位为0,所有任务完成后前三位变成0b111,判断李逍遥
是否完成所有任务便可用如下语句实现:
if ((plot2 & 07)==07) //07即(二进制的111)

当然,只要你喜欢,也可以用plot1来实现.
此外,我们也可以用plot1或plot2来跟踪玩家的某些行为是否违法.
比如在购房时先检查某个位是否为1,若是说明该玩家已有房子了;若否,则购房成立,
并设该位成1避免玩家将来重复购房.
同样地可以用之避免重婚.

留言

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

留个言

留个言