跳转到内容
模组网
登录并关注  
icedream

NifSE 简单使用说明

被推荐的帖子

NifSE正确安装后,通过OBSE启动CS您将可以在脚本中使用NifSE的函数。

使用NifSE的第一步是NifOpen。NifOpen让NifSE加载NIF文件到内存中,这样您就可以对其进行操作。同时可以通过参数定义此操作是只读或者是可写的,默认此参数为false(只读)。

实例

使用NifSE的一个脚本

ref playerWeapon
string_var filepath
short nifID

Begin GameMode

  if ( playerWeapon != player.GetEquippedObject 16 )
    if ( playerWeapon )
      let filepath := NifGetOriginalPath nifID
      SetModelPath filepath playerWeapon
      NifClose nifID
    endif
    let playerWeapon := player.GetEquippedObject 16
    let filepath := GetModelPath playerWeapon
    let nifID := NifOpen $filepath 1
    let filepath := NifGetPath nifID
    SetModelPath filepath playerWeapon
  endif

End
每当玩家装备新武器,就创建可以被NifSE编辑的武器模型副本,然后指定武器的模型到该副本。如果上一个武器受到了影响,则设置该武器模型回原来的文件,并且在NifSE中关掉该nif文件。基于此,您可以通过NifSE的其他函数实现其他功能。

NIF结构

NIF文件是有一系列block(块)组成的,通常称之为NiObjects,里面包含了各种数据。要了解NIF文件并且知道如何对其修改,您必须知道block的层次结构以及NIF的结构。

通常NIF以根源(root)开始。root是NiNode块,这几乎是所有NIF文件的第一个块(所以blockID是0,也是NIfSE函数参数的默认值)。root下面有一系列的子块,叫做NiAVObject。因为NiNode本身是NiAVObject的一种形式,所以这些子块也可以是NiNode块,或者其他的NiAVObject形式。进一步说,因为NiAVObject是NiObjectNET的子类,所以root和它的所有子块又有一系列的额外数据,这是NiExtraData衍生出来的block。

NIF 块结构的其余部分,以NiObject起头,这是最常见的基础block。对于NIFSE来说,只有部分block会显示,因为NifSE仅能处理这些block。想要完整了解NIF block的,可以查看Niflib文档

NifOpen

用法

(短整型:NifID) NifOpen 字符串:filePath 布尔值:writable
只读方式打开NIF文件,如果将该可选布尔值设置为true,则变成编辑模式打开NIF文件。然后返回特定的标识符,并传递到其他NifSE函数中以识别模型文件。如果打开模型失败或者其他的错误,返回值为-1.

注意事项

在NifSE v1.0 α1.2中,打开失败的nif将会返回0。这会导致脚本不知道模型出错然后继续对模型进行操作。此bug在NifSE v1.0 α1.3中修复。

文件路径必须是相关到 Oblivion\Data\Meshes\。

当您请求的是编辑模式,NifSE会创建指定nif的副本,然后您编辑的其实是该nif文件。原来的nif文件是不会被修改的。您可以通过NifGetPath获取该副本的文件路径。

NifClose

用法

(布尔值:success) NifClose 短整型:nifID
告诉NifSE该NIF不再需要使用了。将从NifSE内存中清除该文件,并且不会保存到存档中。

如果其他地方还使用到这个模型的,此命令会导致模型丢失。

注意事项

部分情况下,如果其他NIF依赖此NIF的,已关闭的NIF还是会出现在存档中。NIF仅会保存与必须的数据一样多的内容,以方便在读档时能够正确重建该模型。如果需要的模型被关闭了,那个因为重建需要而保留下来的数据将会在下一次存档中删除。

NifGetPath

用法

(字符串:filePath) NifGetPath 短整型:nifID
返回NifID指定的特定nif文件的路径,路径是相对于 Oblivion\Data\Meshes\ 而言的。要注意,对于可编辑的nif,此路径跟传送给 NifOpen 的文件路径是不一样的。所以,此函数必须使用以获取该文件路径。如果需要获取传送给 NifOpen 的真实路径,则使用函数 NifGetOriginalPath 。

NifGetOriginalPath

用法

(字符串:OriFilePath) NifGetOriginalPath 短整型:NifID
返回实际传送给 NifOpen 的nif文件的路径,路径是相对于 Oblivion\Data\Meshes\ 而言的。对于只读的nif文件,此数值跟 NifGetPath 是一样的,但是对于可编辑的nif而言,此数值则不相同。
  • Upvote 1

分享此帖子


帖子链接
分享到其他网站

创建账户或者登录再讨论

您需要成为会员才能留下讨论

创建账户

在本社区注册新账户。很简单的!

注册为新账户

登录

已有账户?这边登录

马上登录
登录并关注  

×
×
  • 新建...