注册 | 登录

游侠NETSHOW论坛





查看: 3069|回复: 18
打印 上一主题 下一主题

[求助] 拜请懂脚本的大大指点 [复制链接]

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2009-12-11 18:26:54 |只看该作者 |倒序浏览
最近研究脚本,想制作出一个油腻术的类法术专长,目前遇到的难关是不知道怎样将原本同职业施法属性挂钩的豁免DC修改为直接与角色智力挂钩,正常情况下法术的脚本里都会调用GetSpellSaveDC函数获得DC,但我在油腻术的脚本里完全找不到这个函数因此感觉无从下手,所以恳请高人指点……

使用道具 举报

白金会员勋章活跃勋章荣誉勋章

帖子
10161
精华
2
积分
6883
金钱
23671
荣誉
139
人气
114
评议
0
沙发
发表于 2009-12-11 19:02:32 |只看该作者
哇!技术帖,留名观看,准备学习一下!    

使用道具 举报

帖子
724
精华
1
积分
742
金钱
913
荣誉
18
人气
2
评议
0
板凳
发表于 2009-12-11 22:06:48 |只看该作者
因為油腻术只是將一個效果放在地上,所以法術本身的代碼里面不會有DC的check。
你查看下nw_s0_greasea, nw_s0_greaseb, nw_s0_greasec就可以看到相關的東西了。

你可以修改這三個腳本,添加check,通過GetAreaOfEffectCreator和GetEffectSpellId兩個函數來判斷下是否你的類法術能力。這三個文件分別是進入,離開,心跳的處理。不怎方便就是了。
已有 1 人评分金钱 收起 理由
bdaabc + 5 + 1 助人为乐,品格高尚!

总评分: 金钱 + 5  + 1   查看全部评分

使用道具 举报

白金会员勋章活跃勋章荣誉勋章

帖子
10161
精华
2
积分
6883
金钱
23671
荣誉
139
人气
114
评议
0
地板
发表于 2009-12-12 07:37:34 |只看该作者
支持下技术帖!    
学习了…虽然看不懂…

使用道具 举报

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
5#
发表于 2009-12-12 16:19:00 |只看该作者
谢谢懂了
还有个火星的问题就是怎么才能将NSS文件编译成NCS代码呢,toolset里要是自带该功能的话那么在哪里…… 我尝试下了个nssclc,放齐了它所要的dll和脚本包但仍然遭遇非法关闭,不知道有没有其他的办法啊

使用道具 举报

帖子
57
精华
0
积分
29
金钱
461
荣誉
0
人气
0
评议
0
6#
发表于 2009-12-12 16:33:14 |只看该作者
羡慕LZ啊 我是小白 留名学习~

使用道具 举报

帖子
724
精华
1
积分
742
金钱
913
荣誉
18
人气
2
评议
0
7#
发表于 2009-12-12 18:05:04 |只看该作者
你打开Toolset的时候,会默认打开一个名为temp0的module。打开某个脚本修改后,点击Save and Compile(F7),它会问你是否保存到你的module里面,选择是。注意Compile Results里面,会显示
Compilation successful. The compiled script has been placed in C:\Users\XXXX\Documents\Neverwinter Nights 2\modules\temp0.

这时你到这个文件夹去寻找就是了,ncs, nss两个文件都在里面,将它们拷贝到override文件夹就可以了。注意这之前不要关闭Toolset,不然这个文件夹会被删掉,只是临时文件夹。

使用道具 举报

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
8#
发表于 2009-12-12 22:16:43 |只看该作者
……好像不行啊,我按LS的方法试了,一切正常所有LS提到的提示都出现了,但是temp0中还是只有nss文件,并且由于缺少nsc文件,实际测试中这个脚本根本不能发挥作用

使用道具 举报

帖子
724
精华
1
积分
742
金钱
913
荣誉
18
人气
2
评议
0
9#
发表于 2009-12-12 23:17:31 |只看该作者
ncs是编译生成的文件,实际上起作用的就是ncs文件,nss文件是不会有效果的,如果只有nss,那么你的Compile应该是没有通过。Compile Results里面应该有提示的。

另外,有些文件是头文件型的,也不会生成ncs文件,这时候要去编译引用它的脚本文件才行。

使用道具 举报

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
10#
发表于 2009-12-13 00:14:00 |只看该作者
没错啊,一开始我也以为编译的是类似头文件如nw_io_spells.nss的东西,但是反复检查后确认正常情况下该NSS文件肯定会生成NCS代码,但是编译通过之后却没有ncs文件所以才奇怪,至于编译是否通过Compile Results里面就是如下消息应该是通过了呀。
Compilation successful. The compiled script has been placed in C:\Users\XXXX\Documents\Neverwinter Nights 2\modules\temp0

使用道具 举报

帖子
724
精华
1
积分
742
金钱
913
荣誉
18
人气
2
评议
0
11#
发表于 2009-12-13 00:39:12 |只看该作者
你发下nss文件上来看看吧。。。

使用道具 举报

白金会员勋章活跃勋章荣誉勋章

帖子
10161
精华
2
积分
6883
金钱
23671
荣誉
139
人气
114
评议
0
12#
发表于 2009-12-13 06:44:02 |只看该作者
编程小白留名学习…           

使用道具 举报

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
13#
发表于 2009-12-13 09:20:03 |只看该作者
//::///////////////////////////////////////////////
//:: Grease: Heartbeat
//:: NW_S0_GreaseC.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Creatures entering the zone of grease must make
    a reflex save or fall down.  Those that make
    their save have their movement reduced by 1/2.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Aug 1, 2001
//:://////////////////////////////////////////////
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"

void main()
{
        int nDC = 11+ GetAbilityModifier(ABILITY_INTELLIGENCE);

    //Declare major variables
    object oTarget;
    effect eFall = EffectKnockdown();
        effect eHit = EffectVisualEffect(VFX_HIT_SPELL_ENCHANTMENT);
        effect eLink = EffectLinkEffects(eFall, eHit);
    float fDelay;
    //Get first target in spell area
    oTarget = GetFirstInPersistentObject();
    while(GetIsObjectValid(oTarget))
    {
       // if(!GetHasFeat(FEAT_WOODLAND_STRIDE, oTarget) &&(GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE) )
       if( (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) != TRUE) )        // AFW-OEI 05/01/2006: Woodland Stride no longer protects from spells.
       {
            if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
            {
                fDelay = GetRandomDelay(0.0, 2.0);
                if(!MySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_NONE, OBJECT_SELF, fDelay))
                {
                    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 4.0));
                }
            }
        }
        //Get next target in spell area
        oTarget = GetNextInPersistentObject();
    }
}
我就算把脚本削减到仅仅修改红字部分,编译通过但还是无法生成ncs文件

使用道具 举报

帖子
724
精华
1
积分
742
金钱
913
荣誉
18
人气
2
评议
0
14#
发表于 2009-12-13 10:35:51 |只看该作者
生成了...见附件

不明白你的是什么原因了。
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
15#
发表于 2009-12-13 11:45:17 |只看该作者
啊啊……抓狂了,为什么悲剧发生在我的身上……
我重新研究了nssclc这个工具,控制台运行后提示非法关闭原因为dll版本不匹配,不知道无法编译是否与这个有关,提示的dll是安装目录下的OEILocalization.dll文件,要求版本为1.0.1765.0但是我的版本较低,只好拜托哪位上传这个文件的正确版本让我测试一下。

使用道具 举报

我叼根烟 该用户已被删除
16#
发表于 2009-12-13 20:54:01 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

使用道具 举报

帖子
724
精华
1
积分
742
金钱
913
荣誉
18
人气
2
评议
0
17#
发表于 2009-12-13 22:25:25 |只看该作者
你的游戏版本有没有升到最高?这问题太奇怪了。有点注意,如果你修改的文件是在Document里面,而不是原来的zip文件里面的,那么编译生成的文件会直接在修改的脚本旁边,而不是在temp0里面。。最好看输出信息确认下。

摊手,你说的东西没用过俄。。

使用道具 举报

帖子
102
精华
0
积分
51
金钱
944
荣誉
0
人气
0
评议
0
18#
发表于 2009-12-20 11:26:32 |只看该作者
泪流满面的终于找出原因了,原来toolset编译环境不支持中文路径|||当我把脚本放在全英文路径目录下时,就可以生成相应的ncs文件了

使用道具 举报

Memento Mori
大马士革领主
绝对中立 高等精灵 预言大师

活跃勋章大头像勋章白金会员勋章

帖子
11309
精华
5
积分
7628
金钱
17707
荣誉
96
人气
5
评议
0

19#
发表于 2009-12-20 13:19:55 |只看该作者
原来如此啊,召唤大菠萝收录。。。。。。

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2026-5-2 02:55 , Processed in 0.396523 second(s), 13 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到