|
[传奇技术]一个BOSS查询NPC脚本
首先理解一下几个命令:
[@main]
这个命令是NPC的界面命令,点击NPC就会执行该命令下面的语句;
#if
判断命令:基础命令,作用为判断条件:比如
#IF 《====判断
CHECKGOLD 100 《====条件
#ACT 《=====执行
take 金币 100 《=====收取金币100
break 《=====结束语句
这里可以理解为判断角色背包金币是否有100或以上,如果有就执行你设置的需要NPC做的事情。
#say
NPC文字信息命令,所有在#say一下的内容都会直接显示给玩家,如比:
#say
你现在在玩传奇游戏,而且你很开心。
上面这条信息会直接显示给玩家。
#say命令可以直接写在[@main]下面
比如
[@main]
#say
你现在在玩传奇,而且你很开心。
也可以直接省略
[@main]
你现在在玩传奇,而且你很开心。
但要注意,如果是综合型语句,比如有#if 的出现,那就带有判断条件,比如:
[@main]
#IF 《=====判断
CHECKGOLD 100 《======背包是否有100以上的金币?
#say 《========NPC显示信息
你有100金币在背包里面 《=======文字信息
#elsesay 《=======如果判断条件为false NPC显示信息
你是个穷鬼,连100金币都没有! 《========文字信息
以上是基础条件,接下来讲另外一个
[@main]
#call [\功能\BOSS查询.txt] @BOSS查询 《=====转到语句
#call 这个命令就和字面意思一样,呼叫,就是呼出另外一个脚本,我也不理解为什么不直接写在NPC脚本里面,大概是习惯问题,还有个用途就是有些NPC在不同的地方出现,如果每一个NPC都去写一遍就很麻烦,所以用呼叫命令#call来达到多个NPC同用一个脚本的作用。
然后BOSS查询功能第一步,在你的土城NPC里面添加一个NPC,添加NPC会吧?不会就百度一下。
然后在NPC里面写
[@MAIN]
#CALL [\**\**.TXT] @**
星号代表了你需要呼叫的NPC脚本路径和名称,还有@**是命令段。比如:
[@MAIN]
#CALL [\功能\BOSS查询.TXT] @BOSS查询
这样写,然后再到你的Envir\QuestDiary下建立一个目录为:功能,然后在建立一个新文本文件名字叫BOSS查询,另存为ANSI格式。
打开文本文件,写入以下内容:
[@BOSS查询] 《======命令段
{ 《======命令段必须符号,不然会找不到,然后报错。
《=====中间要写BOSS查询功能的内容了
} 《======命令段必须符号,不然会找不到,然后报错。
中间内容怎么写呢?
首先介绍一个命令:
MOV M10 0
这个是变量操作命令MOV,意思就是定义变量M10的值为0
就相当于你告诉计算机,M10这个变量就是0
然后根据你需要用到的变量来多增加几个,怎么判断你要用到几个变量?比如你有5个BOSS需要查询,分别是沃玛教主、祖玛教主、黄泉教主、牛魔王、虹魔教主;那我们就定义5个变量,如下:
MOV M10 0
MOV M11 0
MOV M12 0
MOV M13 0
MOV M14 0
这样就做好5个变量了,为什么一定要用M10?不,不一定非要用M10,具体有些什么变量,你可以查询百度“传奇变量”,看看你就名表了。顺便一提,M变量是数字型,只能保存数字值,也可以加减乘除,会直接得出数字结果,S变量这种是字符串型,不能直接加减乘除得出结果,记住就行。
然后再介绍下一个命令:
GOTO @BOSS查询1 《=======这个是跳转,意思就是直接跳转到@BOSS查询1这个标签处
接下来写下
[@BOSS查询1]
然后
#IF
CheckMapSameMonCount D024 沃玛教主 > <$STR(M10)>
上面判断,然后下面命令CheckMapSameMonCount
这个命令的意思就是检查某个地图的某个怪物数量,后面有参数,这样写的
CheckMapSameMonCount 地图号 怪物名称 (>或<或=) 数量
我们最后在数量那个参数哪里用了<$STR(M10)>这个变量标签,这个意思就是把M10变量的值以字串符的形式告诉计算机。
M10这个变量我们定义的是0,那也就是说数量为0
CheckMapSameMonCount D024 沃玛教主 > <$STR(M10)>
那这个命令的意思就是说,检查地图D024里面名字为沃玛教主的怪物数量是否大于0
这样理解就对了。然后如果判断条件为True,那就执行下面的语句
#act
INC M10 1
INC这个命令是让指定变量+X的意思,比如上面这个INC M10 1的意思就是让M10变量+1
然后如法炮制其他几个BOSS
#if
CheckMapSameMonCount D024 祖玛教主 > <$STR(M11)>
#act
INC M11 1
#if
CheckMapSameMonCount D024 黄泉教主 > <$STR(M12)>
INC M12 1
#if
CheckMapSameMonCount D024 黄泉教主 > <$STR(M13)>
INC M13 1
#if
CheckMapSameMonCount D024 黄泉教主 > <$STR(M14)>
INC M14 1
这样,检测BOSS的第一步就完成了,玩家只要点击NPC,就可以计算指定地图的BOSS数量是否大于0,如果大于零的话,就用变量来+1
然后第二步
#if
CheckMapSameMonCount D024 沃玛教主 < <$STR(M10)>
DEC M10 1
这个意思是当该地图的指定怪物小于M10这个变量的时候,那M10变量就-1
DEC就是操作变量减X的命令
然后写
#OR
这个命令是多条件判断,只要有一条符合,就执行语句。这个和#IF的区别在于#OR是多个条件中有一条就可以执行,#IF是多个条件必须同时满足才执行。
NOT CheckMapSameMonCount D024 沃玛教主 = <$STR(M10)>
这个的意思就是如果改地图内指定名字的怪物数量不等于变量M10的话,NOT 就是否定的意思。
然后就执行
GOTO @BOSS查询1
break 《======结束语句,一定要加
相当于把上面的+和-再来一遍,目的就是让检测到的指定怪物数量跟M10变量值一样。
然后写NPC反馈给玩家的信息
#say
BOSS 沃玛教主 目前还存活 <$STR(M10)> 只
BOSS 祖玛教主 目前还存活 <$STR(M11)> 只
BOSS 黄泉教主 目前还存活 <$STR(M12)> 只
BOSS 牛魔王 目前还存活 <$STR(M13)> 只
BOSS 虹魔教主 目前还存活 <$STR(M14)> 只
这样一个简单的BOSS查询脚本就完成了,当然,我讲的东西只是让大家知道写这个脚本的大概思路,大神路过就当看个笑话,勿喷。知道这种思路以后,大家可以结合自己的实际情况,然后改改脚本,就可以实现更丰富的游戏效果了!那这个脚本就算讲解完毕,以下是脚本完整写法。
盟重NPC内容:
[@main]
#call [\功能\BOSS查询.txt] @BOSS查询
呼叫NPC内容:
[@BOSS查询]
{
#IF
#ACT
MOV M10 0
MOV M11 0
MOV M12 0
MOV M13 0MOV M14 0
#if
CheckMapSameMonCount D024 沃玛教主 > <$STR(M10)>
#act
INC M10 1
#if
CheckMapSameMonCount D024 祖玛教主 > <$STR(M11)>
#act
INC M11 1
#if
CheckMapSameMonCount D024 黄泉教主 > <$STR(M11)>
#act
INC M12 1
#if
CheckMapSameMonCount D024 牛魔王 > <$STR(M12)>
INC M13 1
#if
CheckMapSameMonCount D024 虹魔教主 > <$STR(M13)>
INC M14 1
#if
CheckMapSameMonCount D024 沃玛教主 < <$STR(M10)>
#act
DEC M10 1
#if
CheckMapSameMonCount D024 祖玛教主 < <$STR(M11)>
#act
DEC M11 1
#if
CheckMapSameMonCount D024 黄泉教主 < <$STR(M12)>
#act
DEC M12 1
#if
CheckMapSameMonCount D024 牛魔王 < <$STR(M13)>
DEC M13 1
#if
CheckMapSameMonCount D024 虹魔教主 < <$STR(M14)>
DEC M14 1
#OR
NOT CheckMapSameMonCount D024 虹魔教主 = <$STR(M14)>
NOT CheckMapSameMonCount D024 牛魔王 = <$STR(M13)>
NOT CheckMapSameMonCount D024 黄泉教主 = <$STR(M12)>
NOT CheckMapSameMonCount D024 祖玛教主 = <$STR(M11)>
NOT CheckMapSameMonCount D024 沃玛教主 = <$STR(M10)>
#act
goto @BOSS查询1
break
#if
#say
BOSS 沃玛教主 目前还存活 <$STR(M10)> 只
BOSS 祖玛教主 目前还存活 <$STR(M11)> 只
BOSS 黄泉教主 目前还存活 <$STR(M12)> 只
BOSS 牛魔王 目前还存活 <$STR(M13)> 只
BOSS 虹魔教主 目前还存活 <$STR(M14)> 只
break
}
|
|