NPC感知

创作者: xYZeroYx
已更新:2026-08-03 15:09:42
492KB

前置 MOD

使用 NPC感知 时将自动安装

关于此 MOD

NPC感官作为NPC周围环境的监听器和调度器。它为NPC提供区域触发器(视觉和区域),并发送这些区域内发生的事件 :)

首先,我要感谢你们 耶稣 因为这简直是太疯狂了🫠,
也想要感谢所有的 QTR 团队 它们是 蒂亚戈, Raven和 量子是谁帮了我 大量 , 
而所有其他的人 模组制作者 和 朋友 这一路上我遇见的人们!
但尤其是 le.butte (顺便说一句,那一枪是从海角射出的)而且 许多内容 NickaNak 为了NIF部件!
你可以 投票 为下一个模组/更新以及测试版做准备 这里
NPC 感知
本模组本身不会做任何事情 🫠
如果你是模组作者,并希望你的NPC能在玩家或其他NPC靠近时做出动态反应,
当法术或投射物进入其视野或靠近他们时,这就是你寻找的东西🫠

上帝保佑 ❤️

调度员(监听事件)


插件使用标准的SKSE ModCallbackEvent系统发送事件。 

活动结构 
每当事件触发时,数据会按以下方式打包到ModEvent参数中:
剧透:  
显示
eventName(字符串): 事件的类型。
strArg(字符串): 触发传感器的对象的FormID(施法者——例如玩家、箭矢或法术),格式化为十六进制字符串(例如"00000014")。
numArg (浮点数): 触发器的深度等级(1、2或3)。用于区分近距离与远距离。
发件人 (TESForm):* 行为者谁 拥有 触发者(“看见”或“感知”到该对象的NPC)。

可用活动名称

剧透警告:  
显示

  • NPC感官_视觉进入: 当物体进入视野半径且NPC拥有视线时触发。
  • NPC感知_视觉退出: :当对象离开视野范围或失去视线(躲到墙后)时触发。
  • NPC感知_进入区域: 当物体进入光环范围时触发(忽略视线阻挡)。
  • NPC感知_区域出口: 当物体离开光环半径时触发。


如何在Papyrus中聆听


要在你的Papyrus脚本中监听这些事件, 
只需使用SKSE的RegisterForModEvent函数注册该ModEvent即可。🫠
剧透:  
显示

Scriptname MyCustomMod_SensesListener extends Quest

事件 OnInit()
    ; 注册你需要的活动事件
    RegisterForModEvent("NPCSenses_VisionEnter", "OnNPCVisionEnter")
    RegisterForModEvent("NPCSenses_AreaEnter", "OnNPCAreaEnter")
结束事件

事件 OnNPCVisionEnter(字符串 asEventName,字符串 asCasterHexID,浮点数 afDepthLevel,表单 akSender)
    ; 1. 谁拥有远见?(NPC正在注视)
    Actor ObserverNPC = akSender as Actor
   
    ; 2. 他们看到了什么?(我们将十六进制字符串转换回表单)
    ; 注意:在Papyrus中将十六进制字符串转换为表单需要实用模组,如PapyrusUtil或po3_PapyrusExtender
    ; 使用 po3_PapyrusExtender 的示例:
    Form SeenObject = PO3_SKSEFunctions.GetFormFromEditorID(asCasterHexID) ; *见下方注释
   
    ; 示例反应
    如果观察NPC且已看见目标
        Debug.Notification(ObserverNPC.GetDisplayName() + "刚刚在深度" + afDepthLevel + "处看到了什么")
    endif
结束事件

事件 OnNPCAreaEnter(String asEventName, String asCasterHexID, Float afDepthLevel, Form akSender)
    Actor SensorNPC = akSender as Actor
    Debug.Notification("有东西进入了" + SensorNPC.GetDisplayName() + "的光环范围内")
结束事件

(注:由于SKSE ModEvents仅支持单个) 表单
按照本地参数传递时,CasterID以十六进制字符串形式传入。 
在Papyrus中,你需要一个能够将十六进制字符串转换为FormID的库。 
或者你也可以直接通过检测玩家来追踪。 asCasterHexID == "00000014")



如何在C++中监听(SKSE插件)
如果你正在构建SKSE插件,只需为SKSE::ModCallbackEvent创建一个BSTEventSink即可。🫠
剧透:  
显示
#pragma once
#include <string>
class MySensesListener : public RE::BSTEventSink<SKSE::ModCallbackEvent> {
public:
    static MySensesListener* GetSingleton() {
        static MySensesListener singleton;
        返回&singleton;
    }
    RE::BSEventNotifyControl ProcessEvent(const SKSE::ModCallbackEvent* a_event, RE::BSTEventSource<SKSE::ModCallbackEvent>*) override {
        if (!a_event) return RE::BSEventNotifyControl::kContinue;
        std::string_view eventName(a_event->eventName.c_str());
        // 检查是否为Vision进入事件
        if (eventName == "NPCSenses_VisionEnter"sv) {
           
            // 1. 获取施法者的 FormID(将十六进制字符串转换为 uint32)
            RE::FormID casterID = std::stoul(a_event->strArg.c_str(), nullptr, 16);
           
            // 2. 获取深度等级
            int depthLevel = static_cast<int>(a_event->numArg);
           
            // 3. 获取所有者Actor
            RE::Actor* ownerActor = a_event->sender ? a_event->sender->As<RE::Actor>() : nullptr;
            if (ownerActor) {
                // 在此处编写你的自定义逻辑!
                // 示例:ownerActor->EvaluatePackage();
            }
        }
        return RE::BSEventNotifyControl::kContinue;
    }
};
// 别忘了在插件加载时注册你的水槽:
// auto modEventSource = SKSE::GetModCallbackEventSource();
// if (modEventSource) modEventSource->AddEventSink(MySensesListener::GetSingleton());

上古卷轴5:天际 特别版 的热门 MOD

探索适用于 上古卷轴5:天际 特别版 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

2025-12-16 11:53:50

前置必备Mod

修改与Mod必备前置工具

ModOrganizerTeam2024-08-04 16:31:44

Mod Organizer(MO)是一个用于管理任意大小的Mod集合的工具。它是专门为那些喜欢尝试mods的人设计的,因此需要一种简单可靠的方法来安装和卸载它们。

天空用户界面

schlangster2017-10-04 05:03:26

界面优雅,对电脑友好,并具有许多高级功能。

非官方《上古卷轴5:天际》特别版补丁 - USSEP

Arthmoor2025-09-01 07:56:09

一款针对《上古卷轴V:天际特别版》的综合性错误修复模组。非官方天际特别版补丁(简称USSEP)的目标是最终修复《天际特别版》中所有尚未被官方修复的错误。

静态网格改进模组 - SMIM

Brumbek2018-07-05 02:28:26

这是一个旨在大幅提升《上古卷轴5:天际》中无数静态3D模型外观的大型项目。简而言之,我希望通过这个项目让天际的建筑、杂物、家具和景观更加美观。

SKSE插件的地址库

meh3212024-02-14 09:19:54

包含头文件和数据库,以便轻松实现 SKSE DLL 插件的版本独立性。

比赛菜单

expired69782024-01-27 03:38:17

角色创建菜单全面改版,新增多种自定义功能,例如多种RGBA战纹、身体彩绘、手部彩绘和脚部彩绘。(需要SKSE)

Fores Skyrim SE-FNIS SE中的新闲置

NexusModsCaretaker2020-02-19 01:47:03

Skyrim没有可能的自定义动画?错误的。FNIS行为允许添加不同类型的动画到游戏:闲置/姿势,顺序,家具,配对,杀戮,生物,等等。

使用 Xmod 解锁 上古卷轴5:天际 特别版 的全部潜力 — 今天就探索这些顶级 MOD!