石器时代NPC脚本制作Q&A,石器时代发布网,石器技术交流站!
石器时代NPC脚本制作Q&A
我写的任何一个NPC都是用UE.
为什麽用UE而不用工具呢?
UE写NPC相对於工具来说,自由度高很多.
用工具写NPC(如JIEJIE或LIIIR的),写出来的NPC都有很大的限制.
一些工具没有收录的指令自然也就不能用了.

下面讲讲怎麽写.
从create档开始说吧.
create其实有许多参数在里头.
但真正要用的也就那麽几条.
哦,对了.有一点不得不提一下.每一个create档都必须是UNIX换行符的,而且档头必须加上NPCCREATE的字样.
下面说说要用的参数.
1.floorid
NPC出现的地图号
2.borncenter
NPC出现的座标 X,Y
3.dir
NPC的方向
4.graphicname
NPC的样子
5.name
NPC的名称
6.enemy
NPC的范本类型(对应template档里的templatename)
7.file
NPC的文件位址,有一些类型的NPC无须此项参数,与上述第6项以|号分隔
eg:enemy=chaneevent|file:genout/xxx
8.createnum
这项..貌似没多大用.但是否可有可无,没测试过.
下面发一下create档的基本格式,懒的朋友可以直接复制过去改改参数使用.
记得转成UNIX换行符,只需修改红色部分即可.

NPCCREATE
{
floorid=地图号
borncenter=X,Y
dir=方向(填数字)
graphicname=图号
name=NPC名字
enemy=范本类型(用得最多的是changeevent)|file:档位址(NPC目录下的相对路径)
}


那下面来说说NPC指令的编写.
一般来说,写一个任务,同种类型第一个NPC是最难写的.
如,你要写10个changeevent类型的NPC,那麽第一个,就是最难写的.
现在我写脚本都是通过对旧的脚本进行增删动作来写的.
其实这很简单.只要记得几个最常用的指令就好了.
下面用changeevent类型的NPC举例.

eg:
CODE:
NomalMainMsg:我要吃肉~~~
这是不符合该NPC其他事件时的对话.不属於任何事件内.
[Copy to clipboard]

CODE:

EventNo:5
TYPE:REQUEST
EVENT:ENDEV=1&NOWEV!=5&ENDEV!=5
RequestMsg1:\n\n咕咕……\n啊啊啊…我肚子好饿哦!
RequestMsg2:\n\n咦?你是谁?我怎麽没见过你。\n算了,那正好。\n如果你帮我个忙,我们就是朋友了。
RequestMsg3:\n\n村外有好多乌力,\n打倒它们可以得到 乌力的肉 。\n你可以打 2 个 乌力的肉 给我吗?
ThanksMsg:\n\n谢谢你啦。\n快去快回吧!\n我口水都流出来啦!
ThanksMsg2:\n\n什麽?你没有武器?\n那我把我从我爸爸那偷来的借你用用。\n别去向我爸爸告密,不然我就不理你了!
ItemFullMsg:\n\n道具太多啦,清理一下再来吧。
GetItem:100
EventEnd

EventNo:这是任务旗标(无旗标的话写-1)
TYPE:事件类型(这里的REQUEST代表接任务,说完话以後人物身上就会带有NOWEV=刚刚设定的旗标的属性,可用於判定)
EVENT:对话条件判定(即达到该条件才能出现对话)
RequestMsg:接受前的对话(可加1.2.3)
ThanksMsg:看字面都知道是啥了吧.
ItemFullMsg:道具满时对话,如果下面没有给道具的指令的话,这句话没有也可以.
GetItem:给道具,多样道具用,风格
EventEnd 代表对话事件结束
[Copy to clipboard]


TYPE有ACCEPT REQUEST MESSAGE
REQUEST上面已经解释了,所以就不说了.
ACCEPT类型时,上面的"RequestMsg"这是应改为"AcceptMsg"
MESSAGE时,上面的"RequestMsg"应改为"NomalWindowMsg"

EVENT判定的话请到论坛里翻翻语句.



最後总结一下如何写出又快又好的NPC.
最大的秘诀就是通过修改别人的好的脚本或自己写过的好脚本.
我现在写NPC都是修改自己写好的NPC.
遇到一些新鲜的NPC,如猜迷啊猜拳什麽的,也可以通过复制修改原来的NPC来写.
千万别忽视原来的NPC,原来的NPC仔细研究,会有许多不为人知的发现.

千万不要用工具..新手的话,那更别用了.
因为你用工具的话,你永远不知道NPC是怎麽出来的,怎麽运行的.
写NPC,还要学会灵活地套!
因为NPC的类型有很多,不同类型的NPC有不同的作用,没有一个NPC是万能的.
如果想要一个NPC既有这种类型的功能,又有那种类型的功能,那就要懂得套了.
这些不需要特别地讲,你NPC写多了,对某种类型的NPC功能熟练了,自然就会套上去了.呵呵.

下面附上一些NPC模型.请自行修改斟酌使用.
另外..请别直接放在NPC目录下使用,因为NPC是不会显示出来的,因为我做了点手脚.呵呵.
NPC脚本语句是没问题的,所以只要参照复制着改就没问题了.
如果有NPC显示不出来的问题,请检查NPC相关的CREATE跟脚本档是否为UNIX换行符.
还有一点要说一下,记得用UE来编辑,用WINDOWS自带记事本的话,出错概不回答.


Q:
如何设置标旗呢?

A:
你自己可以看看已有任务是怎麽设置的啊
比如神秘老人的参数

EventNo:84
TYPE:REQUEST
EVENT:ENDEV=82&ENDEV=83&ENDEV=72&ENDEV=71
RequestMsg:年轻人,我在你身上看到了魔法的痕迹,你是否去过天空之岛呀~~~


其中第3行EVENT:就表示接任务的条件.
ENDEV=82表示完成动物园任务
ENDEV=83打完席格
ENDEV=71表示打完封印之间的精灵王
ENDEV=72表示打完小黑
同时具备这些条件,也就是拿了黑羊,且做过动物园的任务,就可以接神秘老人的任务了.

Q:
那标旗在哪里设定?还是直接在这里设置?

A:
在写NPC脚本时,在EVENT:後面填写所需要的旗标.
如果是想自己定义旗标的话,可以像第1行EventNo:84的那样,自己编一个,比如300以後的.之後想让人物接过任务後完成相应旗标,就写上EndSetFlg:300

Q:
你刚才所说的全部都是解任务需要的标旗,那任务做完之後所给的标旗又在哪里设置?

A:
EndSetFlg:300 这个就是了

Q:
不太明白~~能给个例子来吗?

A:
还以神秘老人做例子吧

首先是去神秘老人那里接任务

EventNo:84
TYPE:REQUEST
EVENT:ENDEV=82&ENDEV=83&ENDEV=72&ENDEV=71
RequestMsg:年轻人,我在你身上看到了魔法的痕迹,你是否去过天空之岛呀~~~
ThanksMsg1:果然,那你是为什麽而去的呀?是什麽人送你上去的呀?那里可不是一般人可以去的呢~~
ThanksMsg2:什麽?原来你是为了化解主人和光明精灵王的误会而去的?
ThanksMsg3:..呵...\n看来你命中注定和精灵有缘呢..\n我也是来自天空岛的精灵哦~~
ThanksMsg4:当年我主人在盛怒下离开了天空岛来到这块大陆,但不知为什麽,主人忽然失了踪,我这些年来走遍伊甸,一直都找不到呢...
ThanksMsg5:如果你有遇到我主人的话,记得通知我一声啊~~~
EventEnd


然後是去找精灵王打架

EventNo:84
TYPE:ACCEPT
EVENT:NOWEV=84
AcceptMsg:原来这一切都是幻影,想不到我会被困在这里...要不是你的闯入破坏了平衡,这结界可能永远把我困在这了...
ThanksMsg1:什麽?你是为了光明精灵王而来的?我不想提起那不守信诺的家伙...
ThanksMsg2:.....
ThanksMsg3:原来事实是这样,看来是我误会他了,\n等我恢复魔力後我就会回去找他的,真是辛苦你啦~~
ThanksMsg4:这东西给你,就当是谢谢你的一番奔波吧~
GetRandItem:19731,19732
ItemFullMsg:你身上东西太多了,等你整理一下再来找我吧~~
EndSetFlg:84
EventEnd

最後找神秘老人要LV2戒指

EventNo:-1
TYPE:MESSAGE
EVENT:ENDEV=82&ENDEV=83&ENDEV=84&ENDEV=72&ENDEV=71&ITEM!=19729&ITEM!=19730
NomalWindowMsg:真是太感谢你了,一想到这些年来主人受困在幻影之界,而身为属下的人竟未能及时营救,真是令人惭愧啊~~\
这样吧,为了感谢您帮了这个大忙,这东西给你,相信对你一定有相当大的帮助的!
GetRandItem:19729,19730
ItemFullMsg:你身上东西太多了,等你整理一下再来找我吧~~
EventEnd

第一次找神秘老人的任务旗标是84,说完後,得到NOWEV:84
找精灵王打架需要NOWEV=84,正好就是上一个任务结束後得到的旗标
打完後,84号任务通过EndSetFlg:84完成,就是说以後不能再打精灵王了
有了ENDEV=84,再去找神秘老人,得到LV2戒指

Q:
EventNo:84
EventEnd
EndSetFlg:84
这些分别代表什麽意思?

A:
EventNo:84是任务编号,EventEnd是结束该任务.2个一起用,就会得到NOWEV=84,表示已经接了84号任务,或正在做84号任务
如果不想任务结束後获得任务旗标,可以设定成EventNo:-1
EndSetFlg:84,表示增加结束类的任务旗标,也就是ENDEV=84,表示的当然就是已经做完84号任务

Q:
得到了标旗後人物就永远有这个标旗了是吗?
不是有一些任务只能做一次的吗?例如MM,一生只能做一次,如果得到MM任务的标旗後,不就可以无限打了吗?
要怎样设计呢?
又例如天空.第一次打小黑时他给只黑羊你.再回去打一次就什麽都没有,这些是怎样设定的?

A:
转生的地址找不到,不是很清楚,不过个人猜想,里面应该有清除旗标的参数,不过是只清除特定的参数,或者不清除特定的参数.
如果抛开转生的问题,只是在一转之内要求只能做一次,倒是可以设置.方法就是对同一个人物设定2个以上的任务,一个是没完成任务的,一个是完成任务的.这样NPC首先会判断你是否有对应的已完成的旗标,有的话,直接就跳到已完成的对话上去;没完成的话,才会去接最开始那个任务.

以小黑为例吧

NomalMainMsg:我是黑暗精灵柯黑穆肯。

#催促玩家回家
EventNo:-1
TYPE:MESSAGE
EVENT:ENDEV=4&ENDEV=69&ENDEV=70&ENDEV=71&ENDEV=72
NomalWindowMsg:虽然没有见到精灵王大人,不过你的任务已经圆满达成了。
EventEnd

#给黑羊
EventNo:-1
TYPE:ACCEPT
EVENT:ENDEV=4&ENDEV=69&ENDEV=70&ENDEV=71&NOWEV=72
AcceptMsg1:勇敢的年轻人,我柯黑穆肯在此对於你过人的智慧与能力表示敬意!\n四位守护已经和我说明过你的来意了,刚刚的迷宫与战斗只是想再试试你而已。
AcceptMsg2:如今我已经知道你确实拥有晋见精灵王大人的资格了。如何,你准备好了吗?
ThanksMsg:果然是个勇者!不过很可惜的,精灵王大人现在并不在天空之岛…\n不过你的心意我柯黑穆肯一定会传达给精灵王大人的。\n为了表示我个人的敬意,送只邦达霍恩和你一起步向未来吧!\n如果想回到尼斯大陆的话,那位小黑精灵可以送你回去。
PetFullMsg:你身边的宠物太多了,麻烦留个空位给我的随从吧?
GetPet:484
EndSetFlg:72
EventEnd

#完全未开任务打倒对话
EventNo:-1
TYPE:MESSAGE
EVENT:ENDEV=4&ENDEV=69&ENDEV=70&NOWEV=71
NomalWindowMsg:没想到我柯黑穆肯竟然会被人类击败,难道光明精灵王的世界改造计画已经成功了吗?
EventEnd

事实上,小黑这个NPC一共有3个任务参数
首先是最下面的打仗,只要满足蓝色那些条件,就可以直接开打,所以打小黑是无限的
然後是中间那部分送黑羊,得到黑羊後,会附加一个EndSetFlg:72的旗标,也就是ENDEV=72
这样,在最上面那部分中,由於有了ENDEV=72,所以只会表示"虽然没有见到精灵王大人,不过你的任务已经圆满达成了"这句话,而不会再重复中间送黑羊的步骤了
也就是说,如果要让一个NPC做多重任务,且任务之间有先後顺序的话,可以把最开始的任务放在最後面,最後完成的任务放在最前面,这样系统就会依次顺序判断接任务的条件.

Q:
AcceptMsg1:勇敢的年轻人,我柯黑穆肯在此对於你过人的智慧与能力表示敬意!\n四位守护已经和我说明过你的来意了,刚刚的迷宫与战斗只是想再试试你而已。
AcceptMsg2:如今我已经知道你确实拥有晋见精灵王大人的资格了。如何,你准备好了吗?
ThanksMsg:果然是个勇者!不过很可惜的,精灵王大人现在并不在天空之岛…\n不过你的心意我柯黑穆肯一定会传达给精灵王大人的。\n为了表示我个人的敬意,送只邦达霍恩和你一起步向未来吧!\n如果想回到尼斯大陆的话,那位小黑精灵可以送你回去。



请问这些是对话麽?如果是该怎样改?AcceptMsg1和AcceptMsg2有什麽区别?ThanksMsg这个又是什麽意思?还有\n这又是啥意思?

A:
找个简单任务的脚本对照一下就明白了嘛
AcceptMsg是翻页,比如说NPC的话太多,一页放不下,就可以用AcceptMsg+数字来表示第1页说什麽,第2页又说什麽.
ThanksMsg是接到任务後对话.因为AcceptMsg这种任务在最後通常会有让玩家选择确定还是取消的选项,如果选确定表示接任务的话,ThanksMsg这些话才能出来,表示确实接了任务.
至於说\n,其实就是回车了,也就是换行,重起一行书写.

Q;
有些标旗是对话後得到的.就像上面的神秘老人那样
但有些标棋是战斗後再对话才得到的.
这些战斗後再对话才得到的标旗又如何设计呢?如果没记错,战斗NPC和对话NPC是不同的
请教教我~

A:
战斗後再说一次,这个可能有不同的情况.我知道的一种其实非常简单,就是做2个一模一样的NPC,一个是管战斗的,一个是管完成任务的.这样与战斗NPC交战後,WARP跳转至任务NPC的地图,然後再与後者对话.这个任务NPC是在另外一张地图上的,正常情况下到达不能,只能通过战胜前一个NPC後跳转.比如席格 巴克 风城王子都是这样

Q:
黑蛙不是这样啊~它也是打完後对话的.不过是在同一个地图..是不是跟标旗有关呢?

A;
那只是你自己感觉不到地图换了而已,实际上黑蛙王也是2个,看看下面这个,floorid=後面接的是地图座标,你可以找个没打过蛙王的人用GM指定瞬移到30607看看
#战斗里昂蛙王(80级,毒攻击,综合攻击,高敏)
{
floorid=30605
borncorner=7,9,7,9
time=0
createnum=1
dir=4
ignoreinvincible=1
graphicname=100886
name=里昂蛙王
enemy=event69_5|file:king/event69_5.arg
}

#里昂蛙王(蛙洞的守护主,喜爱闪闪发亮的宝物)
{
floorid=30607
borncorner=7,9,7,9
time=0
createnum=1
dir=4
ignoreinvincible=1
graphicname=100886
name=里昂蛙王
enemy=changeevent|file:king/event69_6
}

Q:
原来是这样`~看来我看漏眼了
那战後之後的所得的标旗在哪里设计?还是战斗NPC没有标旗的~

A;
黑蛙王的任务因为是很早以前的任务了,所以他的写法跟现在的常用写法有点不一样,看得不是很懂
战斗蛙王应该是通过道具来判定的,即拿到黑蛙王的金珠後与其交谈发生战斗,没拿不会战斗
而任务蛙王是通过道具和任务旗标2个条件来判断的,得有金珠,还得在老爷爷那里接过任务,才会得到黑玉
至於该任务结束的旗标,则要到将黑玉交给新藏才算正式完成

Q;
TYPE:XXXXX 这些是什麽?我发现每一个任务的这里都不一样哦~有什麽用的?

A:
只知道MESSAGE是纯粹的面版文字,REQUEST和ACCEPT都有选择项,至於REQUEST和ACCEPT有什麽区别,就不清楚

Q:
照你这样说.TYPE:XXXXX是没用的啦?

想问你要个装备NPC脚本
就是那些可以升级装备的NPC.
例如 斧头....如有用2个斧头跟NPC交换,就可以得到一个 斧头+1
你会弄吗?

A:
怎麽会没用的呢?接任务的时候用REQUEST或ACCEPT来询问是否要接任务,而等任务完成後,就可以用MESSAGE来说一些事後的话

这个没弄过,不过道理上应该想得明白,先是验证ITEM=XXXX*2,然後是DelItem:XXXX*2,最後Additem:YYYY

Q:
ITEM=XXXX*2,然後是DelItem:XXXX*2,最後Additem:YYYY 
这样我明白.不过道理上应该一个NPC只能换一个道具.如何才可以选择性的的换呢?
还有,我编辑任务的时候发现一个问题
就是战斗的时候,如何才可以限制条件来战斗呢
例如:我在做天空.要打小黑,不管你有没有接任务,都可以打(我指的是直接用命令传送到小黑面前)
不过打完後发现没接任务的不能得到黑羊,要接了任务和打了4界才能得到黑羊
又如:我正在做某个任务.到了要跟战斗NPC开战.因为事前接了任务,所以可以开打,不过有些人没接任务,跟战斗NPC对话的时候就只能对话,不能开打
究竟怎样才能限制开打的条件呢?

A:
前面介绍小黑时不是说过嘛,一个人物可以有多个参数.你要你用不同的参数来控制他的反应就行了.像EVENT:Item=xxxx*2这种,只要身上存在xxxx*2的道具,他自然会说话,没有就不会说话,或者接其他任务的嘛.至於如果同时符合2个任务的条件怎麽办的问题,你可以用MenuHead来制造选项去解决,後面会附上铜制武器的资料,自己琢磨一下吧

至於小黑,刚刚查了一下发现,战斗NPC和任务NPC也是2个人,战斗NPC没有任何要求,谁去都能打,之後跳转的NPC有3个参数,没接任务是一个,接任务但没拿黑羊是一个,拿了黑羊又是另外一个.想限制战斗NPC的话,可以参考席格的资料,自己加上道具或旗标



#### 金属防具加工师 ####

START_MSG:你想加工铜制防具吗??加工一次要一万元喔。铜铠1需要三块铜及其他材料,铜铠2需要铜铠1及七块铜,铜铠3要铜铠2及13块铜。铜兜1需要三块铜及其他材料,铜兜2需要铜兜1及七块铜,铜兜3要铜兜2及13块铜。

MenuHead:选择你想要的防具
NeedHead:需要的材料

#### 铜铠1加工 ####
{
CHANGEITEM:20270
NeedItem:20286,13078
FREE:ENDEV=4&ENDEV=81&ITEM=20286*3&ITEM=13078&GOLD>=10000&reITEM>=1
DelGold:10000
DelItem:20286*3,13078*1
AddItem:20270
}

#### 铜铠2加工 ####
{
CHANGEITEM:20271
NeedItem:20286,20270
FREE:ENDEV=4&ENDEV=81&ITEM=20286*7&ITEM=20270&GOLD>=10000&reITEM>=1
DelGold:10000
DelItem:20286*7,20270*1
AddItem:20271
}

#### 铜铠3加工 ####
{
CHANGEITEM:20272
NeedItem:20286,20271
FREE:ENDEV=4&ENDEV=81&ITEM=20286*13&ITEM=20271&GOLD>=10000&reITEM>=1
DelGold:10000
DelItem:20286*13,20271*1
AddItem:20272
}

#### 铜兜1加工 ####
{
CHANGEITEM:20273
NeedItem:20286,13076
FREE:ENDEV=4&ENDEV=81&ITEM=20286*3&ITEM=13076&GOLD>=10000&reITEM>=1
DelGold:10000
DelItem:20286*3,13076*1
AddItem:20273
}

#### 铜兜2加工 ####
{
CHANGEITEM:20274
NeedItem:20286,20273
FREE:ENDEV=4&ENDEV=81&ITEM=20286*7&ITEM=20273&GOLD>=10000&reITEM>=1
DelGold:10000
DelItem:20286*7,20273*1
AddItem:20274
}

#### 铜兜3加工 ####
{
CHANGEITEM:20275
NeedItem:20286,20274
FREE:ENDEV=4&ENDEV=81&ITEM=20286*13&ITEM=20274&GOLD>=10000&reITEM>=1
DelGold:10000
DelItem:20286*13,20274*1
AddItem:20275
}

Q:
CHANGEITEM:20270
NeedItem:20286,13078
FREE:ENDEV=4&ENDEV=81&ITEM=20286*3&ITEM=13078&GOLD>=10000&reITEM>=1
这些後面能附中文解释麽?

EVENT:Item=xxxx这里能举个例麽?
任务对话NPC的参数我已经懂了,只是不懂战斗NPC的选择性战斗而已,也就是刚才所说的限制战斗的条件

A:
CHANGEITEM:20270
这项表示这个代码是用来干什麽的,不知道有没有实际作用,照着写好了
NeedItem:20286,13078
这个表示需要道具铜块和最好的皮
FREE:ENDEV=4&ENDEV=81&ITEM=20286*3&ITEM=13078&GOLD>=10000&reITEM>=1
这个是具体的要求 ENDEV=4表示已成人;ENDEV=81表示做完金飞航空;ITEM=20286*3,需要3个铜块;ITEM=13078表示需要1个最好的皮;GOLD>=10000表示金钱要大於10000;reITEM>=1,道具栏至少留1位


战斗NPC,还是看看席格的吧,不过又多了N多不明参数,这个我还没有测试过,你自己照着规律往下套吧......

entype:2
askbattlemsg1:哦,你能夺得那面旗,表示你已经击败了我的
askbattlemsg2:弟兄们!
askbattlemsg3:
askbattlemsg4:我们潜伏在这地下,秘密训练战士,就是要伺
askbattlemsg5:机解放可怜的动物们,并且揭穿这伊甸园的黑
askbattlemsg6:幕!
startmsg:想带走拉斯基,就拿出实力来吧!--
dieact:1
warpfl:60045
warpx:6
warpy:7
endmsg:唉,我们的准备还是不够充分吗?…………
item:19718
steal:1
enemyno:1791,1789,1789,1789,1789,1787,1787,1787,1787,1787
deniedmsg:我看你还没有资格跟我较量吧~~先让我的弟兄们陪你玩玩……
alreadymsg:马上轮到你,急什麽!
onebattle:1

Q:
晕了,在席格那里我根本看不出哪里限制了,连标旗也没看见。。。
entype和askbattlemsg又不知道什麽意思,难道真的找不到限制战斗的窍门?!

A:
entype和askbattlemsg不用管他,照着抄下来就行了,前者估计就是和TYPE一样的,既然都是要做战斗NPC,这一项肯定是一样的.後者带着msg字样,一看就知道是显示台词用的,跟任务类NPC的使用方法应该差不多.重要的是item:19718这一项,这是黑旗,打席格必备的道具,但我现在看不出来放到这里的这个道具,究竟是做为任务限制的,还是战斗结束後消除的

再来一个风城布鲁斯壮的吧,跟席格有些类似,不过还有些不同......

NEWNPCENEMY

#####工头布鲁斯壮战斗型
entype:2
askbattlemsg1:怎麽?你对钱没兴趣吗??
askbattlemsg2:年轻人,可千万不要迷惑呀。在你年轻力壮的时候多赚些钱。
askbattlemsg3:风精灵??那只是存在於传说和幻想之中的神话而已。
askbattlemsg4:难道肚子饿的时候,风精灵会给你食物吗?
askbattlemsg5:那好吧,既然你屡劝不听,我可不能让你在这里蛊惑人心。
startmsg:让我来秤秤你的斤两吧…
dieact:1
warpfl:7453
warpx:9
warpy:8
enemyno:1887,1888,1888,1888,1888
deniedmsg:你似乎是偷跑进来的…
alreadymsg:等我先处理一下事情,先去伐木吧
onebattle:1
OVER

NEWEVENT1:
FREE:ENDEV=4&ENDEV=81&ENDEV=112&ENDEV=113&ENDEV=114&NOWEV=115
WARP:7453,9,8
endmsg:我~输~了。
OVER

NEWEVENT2:
FREE:LV>0
WARP:117,180,99
endmsg:别想混水摸鱼!
OVER

Q:
这个跟再见精灵王差不多

NEWNPCENEMY

entype:2
askbattlemsg1:可恶呀!为什麽你总是阴魂不散?
askbattlemsg2:这次我一定要打垮你这该死的家伙~~~
startmsg:这次我一定要好好的教训你这没信用的家伙!
dieact:1
warpfl:60033
warpx:17
warpy:12
enemyno:1786,1772,1773,1772,1773,1690,1782,1783,1784,1785
deniedmsg:你是什麽东西?
alreadymsg:慢慢来,下一个就轮到你了…
onebattle:1
OVER

NEWEVENT1:
FREE:ENDEV=69&ENDEV=70&ENDEV=71&ENDEV=72&NOWEV=84
WARP:60034,17,12
endmsg:可恶呀~~~为什麽又输了~~~
OVER

NEWEVENT2:
FREE:ENDEV=84
WARP:60034,17,12
endmsg:可恶呀~~~为什麽又输了~~~
OVER

NEWEVENT3:
FREE:LV>0
WARP:117,180,99
endmsg:别想混水摸鱼!
OVER

究竟是什麽地方限制战斗了呢?真是奇怪~~
我想应该跟
NEWEVENT1:
FREE:ENDEV=69&ENDEV=70&ENDEV=71&ENDEV=72&NOWEV=84
WARP:60034,17,12
endmsg:可恶呀~~~为什麽又输了~~~
OVER
这个有关
我觉得前者是战斗时的对话和战C
後者,就是有标旗这个。就决定限制战斗的标旗
但是再认真看一下。就会发现地图不同
你觉得呢?

A:
刚试过风城的,看来布鲁斯壮和精灵王是一个类型的,并没有所谓的限制,因为地图的问题,只要到达战斗NPC那里,就可以直接开战.至於後面的FREE:ENDEV=,是战胜後再判断的,如果符合条件,就跳转到任务NPC那里,如果不符合条件,比如布鲁斯壮,就会跳转到监狱 WARP:117,180,99就是监狱迷宫的起点.
而席格是确实的道具限制,我进入60044地图,对话後不会战斗,造了一个黑旗後,就可以战斗了,所以还是要以席格的资料为参照物.

A:
刚刚试了下小黑的,只要加入item:xxxx就可以起到限制战斗的作用,具体如下:

entype:2
askbattlemsg1:我是黑暗精灵柯黑穆肯。
askbattlemsg2:四位守护刚告诉我有人类闯入天空之岛的时候,我还不太敢相信呢。
askbattlemsg3:没想到你还通过了四位守护的考验而来到这圣殿…
askbattlemsg4:不过,我是不能让你就这麽轻易见到精灵王大人的!
askbattlemsg5:准备好接受我的挑战了吗?
startmsg:好!那让你知道我柯黑穆肯的恐怖!
dieact:1
warpfl:30670
warpx:15
warpy:9
endmsg:以一个人类的力量竟然可以打倒我柯黑穆肯,真是不可思议…
item:19718
enemyno:1691,1688,1687,1689,1686,1678,1679,1677,1680
deniedmsg:我柯黑穆肯不与无名之辈交手。
alreadymsg:凡事都有先来後到,不要那麽想寻死…
onebattle:1

19718代表黑旗,当然,你也可以换成其他道具


再说你那个NPC吧.我用已经做过一些任务的ID试,不是说话後没反应,就是弹出空白面版.但换了个新出生的人,就可以顺利接任务.不过接了任务得不到300的旗标......具体怎麽回事我也搞不明白了- -
你可以考虑将第一条的TYPE:REQUEST换成ACCEPT
把最後一条的TYPE:ACCEPT和RequestMsg:分别换成TYPE:MESSAGE和NomalWindowMsg:

Q:
嗯~我也觉得这样好~
不过刚才我弄了个任务对话的NPC,就是接任务那个,到了游戏里就显示不出来了,究竟是什麽问题~我把它拿出来,麻烦你帮我看下哪里出毛病了~

####接任务####

NomalMainMsg:说话~~


EventNo:300
TYPE:REQUEST
EVENT:LV>190&ENDEV=4&ENDEV=72
RequestMsg:小子。看来你不简单~~~
ThanksMsg1:果然,你是否听说过水龙神?\n其实它真的存在的\n
ThanksMsg2:传说在远古时代,光明精灵王和黑暗精灵王大战\n经过千年的战斗後,光明精灵王最终以自己的躯体将黑暗精灵王封印...
ThanksMsg3:其实事实并不是这样,在最後一战的时候,光明精灵王的力量其实在黑暗精灵王之下\n在黑暗精灵王将要使出最後一击把光明精灵王击败的时候...
ThanksMsg4:水龙神突然出现在他们面前。\n光明精灵王为了拯救苍生,恳求水龙神把力量分一些给他...
ThanksMsg5:最终光明精灵王借着水龙神的力量将黑暗精灵王封印/n而作为得到水龙神力量的代价,光明精灵王也要被封印千年...
ThanksMsg6:怎样,现在想见水龙神了吧~那好。我就告诉你它的行踪吧~~\n不过途中会有些麻烦的。现在你先去水龙洞看看吧..
EventEnd


EventNo:-1
TYPE:ACCEPT
EVENT:LV>190
RequestMsg:小子。看来你不简单~~~不过这里不收留未成年的小孩的...滚
EventEnd




NPCCREATE
###### 龙神使者 ######
{
name=龙神使者
floorid=2000
borncenter=60,60,1,1
dir=5
createnum=1
enemy=changeevent|file:my/shuilongsheng/shuilongsheng
graphicname=16610
}


哪里出问题了?

A:
改了几处,可以正常运行了,如下:

NomalMainMsg:说话~~


EventNo:-1
TYPE:MESSAGE
EVENT:ENDEV=4&NOWEV=255
NomalWindowMsg:快去看看吧
EventEnd
EventNo:255
TYPE:REQUEST
EVENT:LV>190&ENDEV=4&ENDEV=72
RequestMsg:小子。看来你不简单~~~
ThanksMsg1:果然,你是否听说过水龙神?\n其实它真的存在的\n
ThanksMsg2:传说在远古时代,光明精灵王和黑暗精灵王大战\n经过千年的战斗後,光明精灵王最终以自己的躯体将黑暗精灵王封印...
ThanksMsg3:其实事实并不是这样,在最後一战的时候,光明精灵王的力量其实在黑暗精灵王之下\n在黑暗精灵王将要使出最後一击把光明精灵王击败的时候...
ThanksMsg4:水龙神突然出现在他们面前。\n光明精灵王为了拯救苍生,恳求水龙神把力量分一些给他...
ThanksMsg5:最终光明精灵王借着水龙神的力量将黑暗精灵王封印/n而作为得到水龙神力量的代价,光明精灵王也要被封印千年...
ThanksMsg6:怎样,现在想见水龙神了吧~那好。我就告诉你它的行踪吧~~\n不过途中会有些麻烦的。现在你先去水龙洞看看吧..
EventEnd

EventNo:-1
TYPE:MESSAGE
EVENT:LV>190
NomalWindowMsg:小子。看来你不简单~~~不过这里不收留未成年的小孩的...滚
EventEnd

蓝色的部分是增加了一个接任务後的对话,不然会重复接任务,导致错误
红色的部分,之前我举例举错了,旗标最大只能到8位,也就是255
粉色的部分,因为还没有接任务,感觉用MESSAGE的参数更好些
以上修改完毕,可以正常接任务,并取得旗标

Q:
嗯,好。
不过你说旗标最大只能到8位。可你後面又接255
也就是多少?

A;
8位元是电脑2进制的说法,具体解释起来比较麻烦,反正你就知道添数字,最大只能到255就行了

Q:
不可以取消标旗的限制的吗?

A:
这个估计要反汇编游戏程式才可能实现吧,不是简单改改数字就行的.

Q:
我晕了...
刚才我发现DATA档里的一个名为 jobdaily.txt的文件
里面全都是标旗
有什麽用的?
还是只是一个说明文件?

A:
应该只是一些资料而已吧,没看到伺服器运行时有调用这个档.
不过通过这个,倒是可以知道那些旗标系统已经使用过了,自己编任务时就可以避免重复

Q:
为什麽我不能显示去任务NPC的?
麻烦你帮我检测一下哪里错了

这个是shuilongshen.create里面的:


NPCCREATE


###### 龙神使者 ######
{
name=龙神使者
floorid=2000
borncenter=63,64,1,1
dir=5
createnum=1
enemy=shuilongshen|file:my/shuilongshen/shuilongshen1
graphicname=16994
}


###### PK ######
{
name=PK
floorid=2000
borncenter=63,65,1,1
dir=5
createnum=1
enemy=shuilongshen|file:my/shuilongshen/shuilongshenpk.arg
graphicname=16742
}



这个是shuilongshenpk.arg里面的:


entype:2
askbattlemsg1:我是黑暗精灵柯黑穆肯。
askbattlemsg2:四位守护刚告诉我有人类闯入天空之岛的时候,我还不太敢相信呢。
askbattlemsg3:没想到你还通过了四位守护的考验而来到这圣殿…
askbattlemsg4:不过,我是不能让你就这麽轻易见到精灵王大人的!
askbattlemsg5:准备好接受我的挑战了吗?
startmsg:好!那让你知道我柯黑穆肯的恐怖!
dieact:1
warpfl:2000
warpx:69
warpy:64
endmsg:以一个人类的力量竟然可以打倒我柯黑穆肯,真是不可思议…
item:21055
enemyno:1691,1688,1687,1689,1686,1678,1679,1677,1680
deniedmsg:我柯黑穆肯不与无名之辈交手。
alreadymsg:凡事都有先来後到,不要那麽想寻死…
onebattle:1



这个是shuilongshen1里面的:


####接任务####

NomalMainMsg:说话~~


EventNo:-1
TYPE:MESSAGE
EVENT:ENDEV=4&NOWEV=230
NomalWindowMsg:快去看看吧
EventEnd

EventNo:230
TYPE:REQUEST
EVENT:LV>190&ENDEV=4&ENDEV=72
RequestMsg:小子。看来你不简单~~~
ThanksMsg1:果然,你是否听说过水龙神?\n其实它真的存在的\n
ThanksMsg2:传说在远古时代,光明精灵王和黑暗精灵王大战\n经过千年的战斗後,光明精灵王最终以自己的躯体将黑暗精灵王封印...
ThanksMsg3:其实事实并不是这样,在最後一战的时候,光明精灵王的力量其实在黑暗精灵王之下\n在黑暗精灵王将要使出最後一击把光明精灵王击败的时候...
ThanksMsg4:水龙神突然出现在他们面前。\n光明精灵王为了拯救苍生,恳求水龙神把力量分一些给他...
ThanksMsg5:最终光明精灵王借着水龙神的力量将黑暗精灵王封印/n而作为得到水龙神力量的代价,光明精灵王也要被封印千年...
ThanksMsg6:怎样,现在想见水龙神了吧~那好。我就告诉你它的行踪吧~~\n不过途中会有些麻烦的。现在你先去水龙洞看看吧..
EventEnd

EventNo:-1
TYPE:MESSAGE
EVENT:LV>190
NomalWindowMsg:小子。看来你不简单~~~不过这里不收留未成年的小孩的...滚
EventEnd



哪里出问题了?

A:
NPCCREATE


###### 龙神使者 ######
{
name=龙神使者
floorid=2000
borncenter=63,64,1,1
dir=5
createnum=1
enemy=shuilongshen|file:my/shuilongshen/shuilongshen1
graphicname=16994
}


###### PK ######
{
name=PK
floorid=2000
borncenter=63,65,1,1
dir=5
createnum=1
enemy=shuilongshen|file:my/shuilongshen/shuilongshenpk.arg
graphicname=16742
}


问题在这里,给你转篇文章吧

其中NPCCREATE为档头,凡是create档必须在档开头+这个
{}之间是一个NPC的设置
floorid为NPC所在地图ID
borncenter为NPC座标
time目前我也不明白为什麽
createnum似乎是创造数目?或者是在同create档中的同名NPC的编号吧
ignoreinvincibl似乎所有create中都是1
graphicname为NPC图档id
name为NPC名称
enemy格式为NPC模组|file:所刷NPC的档目录【是gmsv/data/npc下的绝对路径,如yucunpc/dj.arg的全部路径为gmsv/data/npc/yucunpc/dj.arg】
NPC模组,模组一般为template档
目前常用模组有
npcgen_warpman   一般用来作传送员
npcgen_warp   一般是传送点
devilpk和sb_dou 一般是战斗NPC
changeevent   一般是任务NPC
npcgen_shop   一般是商店NPC
npcgen_man   一般是对话类型NPC??一般无用

Q;
这麽说就是将shuilongshen改成changeevent就可以啦~~
file:my/shuilongshen/shuilongshenpk.arg这个应该没错吧`~~

A:
任务型的改成changeevent,战斗型的sb_dou
不要自己编,那样系统不认的.....

上一篇;石器时代各NPC资料夹对照
下一篇;石器时代npc脚本指令代码