wolfzhu 2009-1-24 15:21
关于坐骑的召唤
觉得只有圣骑士才能召唤坐骑有点不爽,所以研究了一下能不能召唤通用的坐骑,结果如下。附件里有现成的东西,如果想自己做的话,请接着往下看。我们的目的是建一个可以召唤梦魇兽的戒指,当使用这个戒指吟唱1级生物召唤的时候,召唤出一头梦魇兽。
首先确认你安装的是NWN1.69的版本,支持骑乘系统(废话)。
1、随便新建一个模组,在里面建一个名叫“Ring of Nightmare”的戒指,在其属性里面添加“召唤1级生物”魔法。当然,把这个戒指放到地上或者箱子里,让玩家进入地图的时候可以得到。
2、用脚本编辑器打开nw_s0_summon脚本,把main()函数的内容替换成:
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
int nSpellID = GetSpellId();
if(nSpellID == SPELL_SUMMON_CREATURE_I && GetResRef(GetSpellCastItem()) == "ringofnightmare")
{
HorseCreateHorse("X3_NIGHTMARE001", GetSpellTargetLocation(), GetItemPossessor(GetSpellCastItem()));
}
else
{
int nDuration = GetCasterLevel(OBJECT_SELF);
nDuration = 24;
if(nDuration == 1)
{
nDuration = 2;
}
effect eSummon = SetSummonEffect(nSpellID);
//Make metamagic check for extend
int nMetaMagic = GetMetaMagicFeat();
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration = nDuration *2; //Duration is +100%
}
//Apply the VFX impact and summon effect
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration));
}
其实这个脚本只改了一点点东西,自己对比一下就知道怎么实现的了。
3、保存这个模组后就可以用它开局试一下了。进入后取得这个戒指,装备,然后用它施放召唤1级生物魔法。看看是不是成功了?
4、现在我们已经做到了在单个模组中实现。要在其他模组中实现召唤,只需要保存你装备了戒指的人物,然后导出nw_s0_summon脚本到erf,接着解压该erf中的两个文件到override中即可。
现在用保存的人物开局,看看效果吧:
yin518720 2009-1-24 15:24
不知道为何,我的圣骑一上马之后马就隐身了,而我的圣骑骑马蹲裆式悬在空中
ufa31415 2009-1-27 18:11
这个东西不错,我可以学下甘道夫了,谢谢楼主了。新年快乐。
我试了好久,还是没能弄好,总说我编译错误,能发几个操作的图说明一下吗?
---想学习的小白敬上
171733 2009-1-31 13:34
我的NWN只能在飞龙里才有骑乘........
太可悲了
黑骑士001 2009-2-3 16:23
那么我现在有个疑问
是不是替换之后
所有的1级召唤术都是召唤模型为梦魇属性为1级召唤生物的宠物出来
wolfzhu 2009-2-5 21:45
[quote]原帖由 [i]黑骑士001[/i] 于 2009-2-3 16:23 发表 [url=http://www.odyguild.net/bbs/redirect.php?goto=findpost&pid=142269&ptid=17243][img]http://www.odyguild.net/bbs/images/common/back.gif[/img][/url]
那么我现在有个疑问
是不是替换之后
所有的1级召唤术都是召唤模型为梦魇属性为1级召唤生物的宠物出来 [/quote]
注意这句
if(nSpellID == SPELL_SUMMON_CREATURE_I && [color=Red]GetResRef(GetSpellCastItem()) == "ringofnightmare"[/color])
红色部分说明只用使用梦魇之戒所召唤出来的1级生物才会是nightmare
wolfzhu 2009-2-5 21:53
[quote]原帖由 [i]ufa31415[/i] 于 2009-1-27 18:11 发表 [url=http://www.odyguild.net/bbs/redirect.php?goto=findpost&pid=141488&ptid=17243][img]http://www.odyguild.net/bbs/images/common/back.gif[/img][/url]
这个东西不错,我可以学下甘道夫了,谢谢楼主了。新年快乐
我试了好久,还是没能弄好,总说我编译错误,能发几个操作的图说明一下吗?
... [/quote]
附件里面有现成的erf文件,用nwviewer解包出来,拷贝到override文件夹中就可以实现需要的召唤功能。另外一个erf文件直接用模组编辑器导入就有梦魇之戒的模板了。放一个在地上,然后开局捡起来就行。
ash_shadowalker 2009-3-8 00:08
都说了用nwviewer解包erf,下载地址在这里[url]http://nwvault.ign.com/View.php?view=Other.Detail&id=340[/url]……搜百度没用的[s:3]
LS的,你都没奥币了还怎么下载,下载一次耗2奥币
ash_shadowalker 2009-3-8 00:19
好东西,但是招出来不能反召唤……可以重复招,这个似乎把召唤生物的属性给改了吧,有时候用不着这玩意,而且有可能会卡住……只能暴力解决,菜刀……[s:13]
wolfzhu 2009-3-11 10:13
[quote]原帖由 [i]ash_shadowalker[/i] 于 2009-3-8 00:19 发表 [url=http://www.odyguild.net/bbs/redirect.php?goto=findpost&pid=146168&ptid=17243][img]http://www.odyguild.net/bbs/images/common/back.gif[/img][/url]
好东西,但是招出来不能反召唤……可以重复招,这个似乎把召唤生物的属性给改了吧,有时候用不着这玩意,而且有可能会卡住……只能暴力解决,菜刀……[s:13] [/quote]
HorseCreateHorse产生的是一个实体而非召唤物,因此不能被反召唤。如果需要反召唤效果,可以尝试修改并使用MD_HorseSummonPaladinMount这个函数。但是请注意,如果没有圣骑士等级5以上,这个函数是不会成功调用的,所以需要修改它本身的实现。这个函数我也没有做多少测试,能不能用只是猜测。
另外我在顶楼的代码里修正了一个BUG,就是Horse召唤出来不一定缺省从属于召唤者的问题。请大家还是照着自己改吧,下载里面的东西我就不更新了。与其浪费奥币不如自己动手做一做,还会更有意思一些。对吧?[s:1]
pk24621789 2009-4-19 18:35
謝謝啦,因為我不想為了坐騎去練5等圣骑士
pk24621789 2009-4-19 18:49
請問如何用nwnviewer 解那個erf文件?[s:3]