• 中文
  • 注册
  • Mod技术区 Mod技术区 关注:12 内容:8

    创意工坊:制作NPC

  • 查看作者
  • 打赏作者
  • 当前位置: 未转变者中文社区 > Mod技术区 > 正文
    Lv.30
    卑微萌新

    前言

    本文章翻译自 Nelson Sexton在steam指南中的文章,并加以自己的理解的翻译!如果您需要查看原版请点击下方链接!

    查看原版

    人物角色

    为了帮助加快字符创建速度,您可以在外观菜单中按“结束”键,将您的脸,头发,胡须和皮肤/头发的颜色复制到剪贴板。

    参数

    Type:NPC(类型为NPC)
    
    ID:角色ID用于将其生成到游戏中,用无符号16位整数表示,范围[0,65535]。建议不要使用小于2000的值,因为这些值是留给官方内容的。
    
    Shirt: 角色穿着的衬衫的ID!
    
    Pants: 角色穿着的裤子的ID!
    
    Hat: 角色穿着的帽子的ID!
    
    Backpack: 角色身背的背包ID:
    
    Vest: 角色穿着的背心ID!
    
    Mask: 角色佩戴的面具ID!
    
    Glasses: 角色眼部佩戴的ID!
    
    Face: 角色的表情(可在游戏中的外观菜单查看!)
    
    Hair: 角色的头发样式(可在游戏中的外观菜单查看!)
    
    Beard: 角色的胡子样式(可在游戏中的外观菜单查看!)
    
    Color_Skin: 角色的皮肤颜色(请使用颜色代码!例如:#ffffff)
    
    Color_Hair: 角色的头发颜色(请使用颜色代码!例如:#ffffff)
    
    Backward: 角色是否为左撇子如果是请指定!
    
    Primary: (主武器)角色配备的主武器的id!
    
    Secondary: (副武器)角色配备的副武器id!
    
    Tertiary: (配件)角色装备的配件id!
    
    Equipped: 将那种类型的武器装备在手中(主武器请填写:Primary 副武器请填:Secondary,配件请填写:Tertiary)
    
    Dialogue: 与NPC进行说话时候调用的对话id(单独配置)
    
    Pose: 设置NPC的姿势(站立请填写:Stand 坐下请填写:Sit 躺着请填写: Asleep)

    语言设置

    Character: 对话中显示的姓名。

    对话类

    注:创建前建议将对话和角色分类型按文件夹放置,方便修改与寻找!

    下方的#号请替换为数字,例如第一个对话请设置为0,第二个就是1,以此规律往下排列!同类型请将他们的数字设置为相同的!

    例如:

    Message _0_ Pages 10
    
    Message _1_ Pages 10

    参数:

    Type:Dialogue(类型为对话!)
    
    ID: 对话ID用于将多个对话之间连接在一起,用一个无符号的16位整数表示,范围为[0,65535]。建议不要使用小于2,000的值,因为这些值是为官方内容保留的。
    
    Messages: 显示的消息数量,本地化文件内设置了几个语言文件就写几个!
    
    Message_#_Pages: 翻阅的数数量!
    
    Message_#_Responses: 显示此消息时显示的回复数量。如果为0,则所有信息都是候选信息。
    
    Message_#_Response_#: 要显示相应的引索!
    
    Message_#_Prev: 对话ID,如果没有任何回应,则返回到对话ID。通常不需要手动设置。
    
    Message_#_Conditions: 参考条件部分。从上到下第一个通过条件的信息将被选中。
    
    Message_#_Rewards: 参考奖励部分。给予消息显示时。
    
    Responses: 可能的答复数量!
    
    Response_#_Messages: 只显示此响应的信息数量。如果为0,则显示所有信息。
    
    Response_#_Message_#: 要显示的信息的索引。
    
    Response_#_Dialogue: 点击时要打开的对话的ID。
    
    Response_#_Quest: 点击时要预览的任务的ID。
    
    Response_#_Vendor: 点击时要打开的供应商的ID。
    
    Response_#_Conditions: 参考条件部分。只有在条件通过时才可见。
    
    Response_#_Rewards: 参考奖励部分。点击后给予。

      语言设置

      Message _#_ Page_#:此页面显示的文本。
      
      Response_#:此按钮显示的文本。

      任务类

      任务类建议单独放置在一个文件夹内方便后期的寻找与修改!

      参数:

      Type: Quest(类型为任务)
      
      ID: 任务ID是用来给玩家的,用无符号16位整数表示,意思是范围[0,65535]。建议不要使用小于2000的值,因为那些是留给官方内容的。
      
      Conditions: 参考条件部分。满足条件后可交接。(此处是那些寻找类型任务在满足条件后上交物品或者交任务的地方!)
      
      Rewards: 完成任务的奖励,参考奖励部分,交给NPC/a条件时将其重置。

      语言设置

      Name: 任务菜单顶部和任务追踪是显示的文本!
      
      Description: 任务名称下的描述文字!

      供应商类型(NPC商城商店)

      下方的#号请替换为数字,例如第一个物品请设置为0,第二个就是1,以此规律往下排列!同类型请将他们的数字设置为相同的!

      建议将商店类任务配置文件单独放置在一个文件夹内方便后期的寻找修改!

      参数:

      Type: Vendor(类型为供应商)
      
      ID: 供应商ID是从对话中链接过来的,用一个无符号的16位整数表示,范围为[0,65535]。建议不要使用小于2,000的值,因为这些值是为官方内容保留的。
      
      Buying: 可回收物品的数量。(这个数量是指的下面设置的回收物品的数量,不是单个物品可最大回收的数量!)
      
      Buying_#_ID: 回收玩家的物品id(NPC回收的商品!)
      
      Buying_#_Cost: 回收物品后给玩家的经验值!(NPC回收价格)
      
      Buying_Conditions: 请参考条件部分。玩家满足条件时可将物品出售给NPC!
      
      Selling: 可出售物品的数量。(这个数量是指的下面设置的出售物品的数量,不是单个物品可最大出售的数量!)
      
      Selling_#_ID: 出售给玩家的id(NPC出售的物品!)
      
      Selling_#_Cost: 玩家购买商品需要支付的金额!
      
      Selling_Conditions: 参考条件部分。当玩家满足条件时可购买该物品!

      语言设置:

      Name: 商店菜单上面的标题!
      
      Description: 商店菜单标题下的文本!

      物体/物品类型

      你可以使用条件/奖励来进行任务进展! 有条件的对象不应该干扰玩家的碰撞,因为每个客户端都不一样。

      注:此处为找物品类任务的配置位置!可能需要在模型的配置文件中进行配置!(说实话我也没太搞明白是怎么用!)

      参数:

      Conditions: 参考条件部分,用于显示/隐藏对象。这可能应该只保留在标志上。
      
      Interactability_Conditions: 参考条件部分,只有在条件满足时才能使用。
      
      Interactability_Rewards: 参考奖励部分,使用时给予。

      语言设置:

      Interactability_Condition_0:在无法使用对象时显示的文本。

      文本类

      除了正常的格式化功能外,还有一些专门用于NPC的格式!

      语言设置参数:

      <color=rarity> </color>使用项目稀有度的颜色“ common”(普通),“ uncommon”(罕见),“ rare”(稀奇),“ epic”(史诗),“ legendary”(传奇的),“ mythical”(神话般)。
      
      <name_npc>插入NPC的名称。
      
      <name_char>插入玩家的角色名称。
      
      <br>开始新行。(可以理解为换行符)
      
      <pause>等待0.5秒,然后继续。

      条件类

      注明:此处会比较难懂所以请仔细阅读并结合范例来进行理解!

      参数:

      Conditions: 要检查的条件数量,请按照设置了多少个条件就输入多少!
      
      Condition_#_Type: 条件类型,所有类型的详细配置解释会在下方注明!此处可用类型(Experience(经验),Reputation(声望),Flag_Bool(可以理解为给玩家立一个Flag,给玩家身上附一个条件值,前面需要检测条件的位置就是需要这个东西!),Flag_Short(同前一条差不多的!),Quest(任务),Skillset(声望角色),Item(物品),Kills_Zombie(击杀僵尸),Kills_Horde(刷尸潮)Kills_Animal,(击杀动物),Compare_Flags(两标志匹配,下方有详细解释!)Time_Of_Day(比较时间)Kills_Player(击杀玩家))
      
      Condition_#_Reset: 完成后设回等效值为0。
      
      Condition_#_Logic: 将当前状态与目标状态进行比较 !有几个类型(Less_Than(小于),Less_Than_Or_Equal_To(小于等于,)Equal(等于),Not_Equal(不等于),Greater_Than_Or_Equal_To(大于等于或等于),Greater_Than(大于))

      语言设置:

      Condition_#:显示此条件的任何地方在UI中使用的文本。

      经验

      参数:

      Condition _#_ Value:目标经验。

      判断对方经验(应该是这样,我不确定)

      声望

      参数:

      Condition _#_ Value:目标声誉。

      判断使用达到目标声望(应该是这样,我不确定)

      Flag_Bool:

      参数:

      Condition _#_ ID:类似于普通ID,在玩家上检查有没有此ID。
      
      Condition _#_ Value:id上有没有附有“ True”或“ False”的目标值。
      
      Condition _#_ Allow_Unset:如果玩家还没有此标志,则通过条件。

      大约的意思就是,先查找玩家有没有被附有此id,(如果你设置了Allow_Unset)则直接通过条件跳转到下一步!

      如果玩家附有此id,会判断此id下的值,如果你设置的是Ture,而他是False,则条件不通过,他是Ture,则通过!

      大概就是这个意思,如果会一些编程类的会比较容易理解!

      Flag_Short:

      参数:

      Condition _#_ ID:类似于普通ID,在玩家上检查有没有此ID。
      
      Condition _#_ Value:标志的目标值,16位整数,表示范围[-32768,32767]。
      
      Condition _#_ Allow_Unset:如果玩家还没有此标志,则通过条件。

      大概的意思和上一条的是差不多的。都是先查找玩家身上有没有附有该id,如果没有则通过,如果有则查看他身上存在的值,是否与之匹配,不匹配则不通过,匹配则通过!

      任务:

      参数:

      Condition _#_ ID:要检查的任务ID。
      
      Condition _#_ Status:Active(有任务在身),Ready(可以完成任务),Completed(已经完成任务)

      此处会判断玩家当前的状态,可以通过此条件来设置不同条件下给玩家回复不同的消息内容!

      此处仅为判断,并不会赋值!

      角色:

      参数:

      Condition _#_ Value:判断角色(Fire(消防员),Police(警察),Army(军人),Farm(农民),Fish(渔夫),Camp(营地人员),Camp(工作),Chef(厨师),Thief(小偷),Medic(军医))

      大概意思就是判断玩家当前的角色是什么,比如你是小偷,你就不能做这个任务,大概就是这个意思了!

      物品项目:

      参数:

      Condition _#_ ID:要搜索库存的物料ID。
      
      Condition _#_ Amount:所需项目的编号。

      大概就是判断玩家的库存中有没有我所需要的物品,或者项目id(也就是那些不会显示在背包里面的物品!),如果有则通过,如果有则不通过!

      Kills_Zombie:

      参数:

      Condition _#_ Zombie:判断僵尸类型(Normal(普通僵尸),Mega(超级僵尸)Crawler(爬行僵尸),Sprinter(快速移动类型的僵尸)Flanker_Friendly(侧面友好型)Burner(火焰僵尸),Flanker_Stalk(不知道)Acid(毒液僵尸),Boss_Electric(雷电Boss),Boss_Wind(玄风Boss),Boss_Fire(火焰Boss))如果你不想设置对应的僵尸类型可以填(None)代表所有类型的僵尸!
      
      Condition _#_ ID:用于跟踪统计信息的简短标志。
      
      Condition _#_ Value:目标杀死。
      
      Condition _#_ Spawn:指定是否应生成僵尸(如boss),在离开该区域时将被杀死。
      
      Condition _#_ Nav:在编辑器中选择导航网格时可见的索引。

      最后的引索大约是在地图编辑器里面设置的僵尸生成路径,也就是需要玩家在哪一片区域刷尸潮!

      Kills_Horde:

      参数:

      Condition_#_ID: 用于跟踪统计信息的简短标志。
      
      Condition_#_Value: 目标信标已完成。
      
      Condition_#_Nav:在编辑器中选择导航网格时可见的索引。

      这个大概意思就是在这个范围内刷尸潮,引索还是在地图编辑器里面设置的!

      Kills_Animal:

      参数:

      Condition _#_ Animal:需要的动物ID。
      
      Condition _#_ ID:用于跟踪统计信息的简短标志。
      
      Condition _#_ Value:目标杀死。

      Compare_Flags:

      参数:

      Condition _#_ A_ID:左侧标志ID。
      
      Condition _#_ Allow_A_Unset:如果未指定,则如果玩家还没有此标志,则条件将失败。
      
      Condition _#_ B_ID:右侧标志ID。
      
      Condition _#_ Allow_B_Unset:如果未指定,则如果玩家还没有此标志,则条件将失败。

      这个地方比较难懂,看看就完事了!

      Time_Of_Day:

      参数:

      Condition _#_ Second:要比较的24小时时钟中的第二个,其中43200是正午,而86400是一整天。格式为军事时间00:00:00。无论一年中的当前游戏日如何,这都会通过。

      我也没太明白他说的是什么,这玩意就是判断当前时间,用于让玩家什么时候接任务可以限制玩家只能在早上接任务,或者晚上接任务!

      我这里说的白天晚上是游戏中的时间!

      Kills_Player:

      参数:

      Condition _#_ ID:用于跟踪统计信息的简短标志。
      
      Condition _#_ Value:目标杀死。

      大概就是检测玩家啥了几个人!

      奖赏/附值

      参数:

      Rewards: 给与奖励的执行数量(这里不是指给多少个是执行多少个命令!)
      
      Reward_#_Type: 可用的类型(Experience(经验),Reputation(声望),Flag_Bool,Flag_Short,Quest(任务),Item(物品),Item_Random(随机物品))

      语言设置:

      Reward_#:在显示此奖励的任何地方在UI中使用的文本。

      经验

      参数:

      Reward _#_ Value:给与的经验值!

      声望

      参数:

      Reward _#_ Value:给予的声誉数量。

      Flag_Bool:

      参数:

      Reward _#_ ID:类似于普通ID,要在播放器上设置标志ID。
      
      Reward _#_ Value:设置为“ True”或“ False”。

      这一步相当于上面的判断这里附的值!

      Flag_Short:

      参数:

      Reward _#_ ID:类似于普通ID,要在播放器上设置标志ID。
      
      Reward _#_ Value:调整标志的值,即16位整数,表示范围[-32768,32767]。
      
      Reward _#_ Modification:“Assign”设置为等于值,“Increment”添加值,“Decrement”减去值。

      Flag_Short_Random:

      参数:

      Reward _#_ ID:类似于普通ID,要在播放器上设置标志ID。
      
      Reward _#_ Min_Value:标志的最小包含值,16位整数,表示范围[-32768,32767]。
      
      Reward _#_ Max_Value:标志的最大包含值,16位整数,表示范围[-32768,32767]。
      
      Reward _#_ Modification:“Assign”设置为等于值,“Increment”添加值,“Decrement”减去值。将选择[Min_Value,Max_Value]范围内的随机值。

      任务

      参数:

      Reward _#_ ID:要提供的任务ID。

      物品

      参数:

      Reward _#_ ID:要提供的商品ID。
      
      Reward _#_ Amount:商品编号。

      Item_Random:

      参数:

      Reward _#_ ID:从中拾取物品的ID。
      
      Reward _#_ Amount:随机选择的项目的编号。

      载具

      参数:

      Reward _#_ ID:要提供的车辆ID。
      
      Reward _#_ Spawnpoint:要生成的级别中的生成点的ID(在检查器中设置)。

      此处的生成点,需要在Unturned的高级地图编辑器(Devkit中设置!)

      传送

      参数:

      Reward _#_ Spawnpoint:传送到玩家的关卡中生成点的ID(在检查器中设置)。

      此处的传送点,需要在Unturned的高级地图编辑器(Devkit中设置!)

      Flag_Math

      参数:

      Reward _#_ A_ID:进行数学运算的标志。
      
      Reward _#_ B_ID:包含要使用的数学值的标志。
      
      Reward _#_ Operation:分配,加法,减法,乘法或除法。例如,“乘法”会将A设置为A * B的值。

      看不懂就算了!

      后记

      此文章内容比较难懂,但是如果你结合范例进行看的话就没有那么难懂了,我这里面基本上结合了自己的理解,和原本的介绍进行了比较通俗的讲解吧!

      如果你想做NPC的话可以看一下这个,建议新手如果特别想搞的话可以尝试一下制作NPC的软件,或者从创意工坊或者翻一些Un俄罗斯等地图的NPC配置文件!

      建议在其他配置文件的基础上进行修改,自己从头做的难度比较大,如果你是大佬就可以无视了 [s-90] 

      这个介绍我大约写了2个小时,麻烦各位评论,收藏,点赞好吗!

      Lv.27
      大佬

      够详细 [s-87]

      回复
      Lv.27
      大佬

      够详细 [s-87]

      回复

      谢谢星空

      回复

      楼主我想做一种特殊NPC,举个例子:A,B是两个不同的NPC,玩家与A对话后A会消失,B会出现.请问有解法吗?

    • 星空-xk官方不支持你这样搞
      拉黑 1年前 电脑端回复
    • Sir_知我其名 @星空-xk 有的哦,ELVER的BIG J,夏威夷的求婚者都是这样,我没弄明白原理所以来问你 [s-13]
      拉黑 1年前 电脑端回复
    • 回复
      Lv.1

      星空,我做出来的NPC领取了任务之后任务栏并没有显示有任务,问题出在哪呢

      回复

      大佬弄完npc怎么加

      回复

      请登录之后再进行评论

      登录
    • 发布内容
    • 任务中心
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: