传奇游戏NPC脚本编写教程

来源: 作者: 点击:
以下是传奇游戏NPC脚本编写的一般教程:
1.**了解基本文件和路径**:
-**NPC总控制文件**:在游戏服务器端的指定目录下,一般是`d:\mirserver\mir200\envir`中的`merchant.txt`文件(不同版本的传奇游戏可能路径会略有不同),游戏内的所有NPC信息都在此文件中编辑。这里记录了NPC的基本信息,如名称、所在地图、坐标、显示名称、外观编码等。
-**NPC脚本文件路径**:NPC脚本文件存放在`d:\mirserver\mir200\envir\market_def`目录下。该目录下的所有NPC脚本文件都是`.txt`文本文件格式。
-**地图配置文件**:地图相关的信息通常存储在`d:\mirserver\mir200\envir\mapinfo.txt`文件中,编写NPC脚本时可能需要参考此文件中的地图信息,比如判断玩家要传送的地图是否存在等。
2.**NPC的基础设置**:
-**新增NPC**:
-在`merchant.txt`文件中添加新增NPC的字段。字段格式通常为“自定义名称+地图编号+地图XY坐标+NPC显示名称+NPC外观编码”。例如,如果要在盟重省添加一个名为“传送员”的NPC,坐标为(329266),外观编码为73,那么在`merchant.txt`中添加的字段可以是“〖盟重传送员〗\传送员329266传送员073”(这里的“073”中,前面的“0”有时可以忽略其具体含义,重点关注后面的数字代表外观编码)。
-在`market_def`目录下创建与字段对应的NPC脚本文本。文件名的命名格式为“自定义名称-地图编码.txt”。比如对于上述盟重省的传送员,对应的脚本文件名应为“传送员-3.txt”(假设游戏中盟重省的地图编码为3)。
-**隐藏NPC**:如果想要隐藏某个NPC,只需要在`merchant.txt`文件中对应的NPC字段前面加一个英文状态下的分号`;`,注释掉该NPC字段即可。例如“;〖比奇传送员〗\传送员0329266传送员0730”,这样比奇传送员就会被隐藏。
3.**脚本主体结构**:
-每个NPC脚本文件的顶部必须有`(@main)`开头,这是引擎默认的独立NPC脚本文件固定标签,表示主体部分。一般用于显示NPC与玩家交互时的初始文字内容,比如NPC的欢迎语、介绍等。例如:
```
(@main)
#say欢迎来到我的商店,我这里有各种珍贵的物品。
```
-除了`(@main)`主体部分,其他功能的实现可以通过`(@xxx)`的格式来自定义命名。比如`(@buy)`可以用于处理玩家购买物品的功能,`(@teleport)`可以用于处理玩家传送的功能等。这些自定义的标签用于将脚本逻辑进行分类和组织,方便编写和维护。
4.**脚本命令类型**:
-**检测类型命令**:这类命令用于判断玩家是否满足某些条件,通常写在`#if`关键字后面。例如`checklevel`命令用于检测玩家的等级,`checkitem`命令用于检测玩家背包中是否有指定的物品,`checkgamegold`命令用于检测玩家的元宝数量是否满足条件等。示例:
```
(@main)
#if
checklevel>50//检测玩家等级是否大于50级
#act
//如果玩家等级大于50级,执行这里的代码
#say你的等级符合要求,可以进行下一步操作。
#elseact
//如果玩家等级不满足条件,执行这里的代码
#say你的等级不足,无法进行此操作。
```
-**执行类型命令**:当检测类型命令判断玩家满足条件后,执行类型的命令用于执行具体的操作,通常写在`#act`或`#elseact`后面。比如`give`命令用于给予玩家物品,`teleport`命令用于传送玩家到指定地图等。示例:
```
(@teleport)
#if
checkgamegold>=100//检测玩家元宝是否大于等于100
#act
teleport玩家目标地图目标坐标//传送玩家到目标地图的目标坐标
takegamegold100//扣除玩家100元宝
#say传送成功,扣除100元宝。
#elseact
#say你元宝不足,无法传送。
```
5.**常见功能的实现**:
-**地图传送功能**:创建一个地图传送NPC,玩家与该NPC交互后可以传送到指定的地图。首先在`merchant.txt`文件中添加NPC信息,然后在`market_def`目录下创建对应的脚本文件。在脚本文件中,使用检测类型命令判断玩家是否满足传送条件(如等级、元宝数量等),如果满足条件则使用`teleport`命令传送玩家。
-**商店交易功能**:编写一个商店NPC的脚本,玩家可以在该NPC处购买或出售物品。使用`checkitem`命令检测玩家背包中的物品,使用`give`和`take`命令进行物品的给予和扣除,使用`checkgamegold`命令检测玩家的元宝数量以完成交易。
6.**脚本调试与生效**:
-**调试**:在编写脚本的过程中,可能会出现各种错误。可以通过游戏服务器端的日志文件查看错误信息,根据错误提示进行修改。也可以在脚本中添加一些调试信息,比如`#say`命令输出一些变量的值或中间结果,以便检查脚本的执行逻辑是否正确。
-**生效**:完成NPC脚本的编写和修改后,需要让脚本生效。在游戏服务器的引擎控制器中,点击“控制”->“重新加载”->“所有NPC”,这样修改后的脚本就会即时生效,无需重启服务器。

在传奇游戏中,编写NPC脚本可以为游戏增添丰富的功能和互动性。以下是传奇游戏NPC脚本编写的详细教程:

首先,NPC的基本配置非常重要。配置文件位于D:\\MirServer\\Mir200\\Envir\\MerChant.txt中,可以添加NPC的名称、所在地图、坐标等基本参数。例如,如果要添加一个名为“测试使者”的NPC,坐标设置为330和350,相关代码如下:测试使者;3;330;350;测试使者\\『罗开』;0;208;0;0;0;0;0。功能脚本需要放置在D:\\MirServer\\Mir200\\Envir\\Market_Def目录下,文件名遵循“NPC名称-地图编号.txt”的格式。对于“测试使者”在盟重地图(地图编号为3),文件名应为“测试使者-3.txt”。

编写NPC功能脚本时,在“测试使者-3.txt”文件中,可以使用标签(@main)定义主要的对话内容。比如<USEITEM><JOB>您好!”表示当玩家右键点击NPC时,NPC会说出“您好!”。还可以进一步添加更多功能,如任务分配、物品交易等。通过增加特定的命令让NPC提供任务链或交换特定物品。

此外,传奇NPC脚本的删除添加与配置参数也需要了解。传奇npc分为交易类型和功能npc,npc就在两个地方,D:\\MirServer\\Mir200\\Envir\\npcs.txt和D:\\MirServer\\Mir200\\Envir\\Merchant.txt。找要删除的npc名字,找到后把那一行删除。

对于技术人员来说,#say和#elsesay两个程序段在NPC脚本中很常见,这些是直接给玩家看到的文字,也就是玩家常说的对话框内容。不同的玩家点击同一个NPC可以有不同的内容,可通过使用变量让NPC对话框动态显示内容。比如在脚本编写过程中,合理运用变量能帮助实现大部分内容,包括全局变量的统计及个人变量的显示。

总之,编写传奇游戏NPC脚本需要对配置文件的位置和参数有清晰的了解,掌握功能脚本的编写方法以及懂得如何利用变量使NPC对话框内容更加动态丰富。同时,也要注意NPC的外观和界面设计,确保其外观和颜色设置合理,界面友好且易于理解。如果NPC提供任务,应确保任务的描述清晰,接受和拒绝的按钮明显。
###传奇游戏NPC基本配置方法
传奇游戏中NPC的基本配置是非常重要的环节。配置文件位于D:\\MirServer\\Mir200\\Envir\\MerChant.txt。在此文件中可以添加NPC的基本参数,包括名称、所在地图、坐标等信息。例如,若要添加一个名为“测试使者”的NPC,坐标设置为330和350,相关代码为:〖贰〗、编写NPC功能脚本主对话编写:在“测试使者-3.txt”文件中,可以使用简单的对话脚本来初始化NPC的交互,如使用标签(@main)定义主要的对话内容,<USEITEM><JOB>您好!”表示当玩家右键点击NPC时,NPC会说出“您好!”。NPC的配置参数有着明确的意义,第一个参数为脚本命令,第二个参数为地图名,第三个参数为X坐标,第四个参数为Y坐标,第五个参数为人物名称,第六个参数为sFlag为角方向,第七个参数为APPR值,第八个参数为是否为沙城,第九个参数为sCanMove能否移动,第十个参数为sMoveTime移动时间,第十一个参数为tariff税率。在对应NPC末尾还可以增加三个参数,第一个参数表示变色模式:1=名字+身体,2=身体变色,3=名字变色;第二个参数变色间隔(毫秒);增加的第三个参数是否固定颜色:0=不固定,1-7=固定颜色。此外,如果要在布衣店添加一个新NPC,就需要在改NPC文本名字上增加-布衣店的地图代码0119,比如:银杏新人村/许家店-0119.txt。添加好NPC配置后,进行M2-控制-重新加载-重读NPC操作,再登陆游戏就能看到新添加的NPC了。

###传奇游戏NPC功能脚本编写
在传奇游戏中,NPC功能脚本的编写至关重要。首先,在“测试使者-3.txt”文件中,可以通过标签(@main)定义主要的对话内容,实现玩家与NPC的交互。例如,当玩家右键点击NPC时,NPC可以说出特定的话语,如“您好!”。在编写脚本时,要提前想清楚当前NPC的功能,用文本的方式把功能点列出来,再把功能捋清楚,区分哪些是条件要求类型的功能,哪些是条件满足执行的功能。把这些列出来之后,一个一个把对应的脚本命令找到复制粘贴到指定位置就可以了。同时,在脚本编写过程中,变量的使用非常重要,它能帮助技术人员实现大部分的内容,包括全局变量的统计及个人变量的显示。一般来说,让变量以文字形式出现在NPC对话框中,需要用到<$STR()>字符串转换功能,而人物的自定义变量则使用<$HUMAN()>转换,还有引擎内自行设定的各种变量,如<$USERNAME>,<$GUILDNAME>等等。对话框内容对于玩家来说,是最直观的体现NPC功能的一个界面,不同的NPC有不同的内容,如何让不同的玩家点击同一个NPC有不同的内容,就成为技术人员编写脚本时需要注意的事情。能够实现某种功能的脚本才是好脚本,单一的显示只会让玩家觉得不方便及麻烦。

###传奇NPC脚本删除添加与配置参数
传奇NPC分为交易类型和功能NPC,它们主要存在于两个地方,即D:\\MirServer\\Mir200\\Envir\\npcs.txt和D:\\MirServer\\Mir200\\Envir\\Merchant.txt。如果要删除一个NPC,就需要在这两个文件中找到要删除的NPC名字,然后把那一行删除。添加NPC的方式有以下两种:一是在D:\\mirserver\\Mir200\\Envir\\Merchant.txt添加NPC参数与配置文件;二是在D:\\mirserver\\Mir200\\Envir\\market_def存放NPC脚步文件。添加NPC时,需要注意NPC的字段格式。例如,新增NPC字段格式为:NPC文本名称+地图编号+地图X,Y坐标+NPC显示名称+NPC外观编码。举例来说,〖比奇传送员〗\\传送员0329266传送员0730,上面以最常见传送员为例,各参数之间用空格隔开,至少空一格。此外,还可以通过脚本命令建立一个NPC,服务器重启后消失。格式为:CreateNPCNPC名字地图坐标X(-1时随机坐标)坐标Y(-1时随机坐标)外观脚本文件脚本文件是否要加上地图名称。注意,脚本文件必须在Market_Def目录中。

###传奇游戏NPC脚本中程序段使用
在传奇游戏NPC脚本中,有各种程序段可以使用。例如,换一行可以用{图像类别/图像定位}表示,图像类别说明动物或NPC,图像定位指具体图像;用(@段)表示段,段用英文或数字表示,goto@段可以跳转到指定段,开始执行相当于B中的goto语句;<选择项目/@段>表示选择项目后转称到指定段,相当于C中的case语句;#say语句设定为字符,不用加任何定界符;#act执行命令,符合3.0规定的任何系统已定义命令;give物品数量可以给玩家一定数量的物品,除了武器数据库中有的物品,还有金币;take物品数量则是收回物品;map地图名可以移动到这个地图的随机坐标,地图名为地图的数字人码;mapmove地图名坐标A坐标B可以移动到指定坐标;monclear地图名可以清除这个地图上刷的怪物;MonGen怪物名称数量时间可以刷怪物;TimeRecall数值可以定义进入某地的时间限制,数值为分钟;BreakTimeRecall可以中断上面那个语句设定的时间;hairstyle数值可以改变头发类型;haircolor红值绿值蓝值可以设定头发颜色,值域为0-255;close可以关闭对话框。

###传奇游戏NPC变量运用
在传奇游戏NPC脚本中,变量的运用非常广泛。P变量只对当前对话NPC内有效果,如果中途点其他NPC或者对话产生close、关闭时大部分P变量均归0。该变量取值范围根据M2大值不同。P变量没有NPC间传递性,作为临时变量多重复使用效果很好,而且因为脚本命令有对该变量进行加/减/赋值/随机取值等运算,它和goto的配合可以使脚本中出现仿for循环的效果。D变量在人物不下线时对全局NPC通用传递,取值范围同P变量。既有像(0-?)变量一样的人物属性私有变量的效果又有像P变量一样的运算功能,不过下线后该变量会被清空。如果配合上(000)变量或者namelist变量的记录性,功能强大。G(0-9)变量不属于人物属性范围,对于全服务器内该变量给力并且全局NPC通用传递。该变量通过任何人的运算均产生效果,而且不保存在任何人的属性中,目前尚需要通过综合namelist或者(000)变量后才可以使其保存。此外,还有标识(001)-(499),这不是变量,是标识,初始值是关闭的,不会因为人物下线或服务器重启而重置,只有0和1两种状态,标识是私有的,不共享,一般适用于游戏内的个人任务系统。相关命令格式有Check(001)0检测标识是否关闭,SET(001)1设置标识为开的状态,reset(100)7将从100开始的7个变量回复到原始值0。还有P0-P999(私人变量,数字型)关闭对话框重置为0;D0-D999(私人变量,数字型)下线不保存,在人物不下线时对全局NPC通用传递;M0-M999(私人变量,数字型)下线不保存,切换地图清空;N0-N999(私人变量,数字型)等变量类型。

###传奇游戏NPC外观和界面设计
传奇游戏NPC的外观和界面设计对于提升游戏体验非常重要。虽然Merchant.txt文件主要控制NPC的功能和位置,但NPC的外观和颜色代码通常在另一个配置中设置,这部分可通过编辑游戏的客户端文件实现不同的外观效果。例如,可以设置NPC的变色模式,有名字+身体变色、身体变色、名字变色三种模式,还可以设置变色间隔和是否固定颜色。如果要设置NPC兔子外观,可以打开Mir200\\Envir\\Merchant.txt,在里面写上NPC代码,在NPC的外形代码设置为106就会有兔子形状的NPC效果。NPC的界面交互设计要确保友好且易于理解,如果NPC提供任务,应确保任务的描述清晰,接受和拒绝的按钮明显。同时,在整个游戏环境中保持NPC的一致性是非常重要的,这包括NPC的视觉风格、语言用词以及交互行为,应当符合游戏的整体设计和背景故事。还要优化性能,复杂的NPC脚本可能影响游戏性能,确保脚本的效率,避免不必要的计算和过长的刷新时间。

传奇游戏NPC脚本编写是一个复杂而又有趣的过程,需要掌握多个方面的知识和技能。从基本配置方法到功能脚本编写,从删除添加与配置参数到程序段使用,从变量运用到外观和界面设计,每一个环节都需要精心策划和认真实施。只有这样,才能创造出丰富多彩、引人入胜的游戏体验,让玩家沉浸在传奇游戏的世界中。
[顶部]