コード例 #1
0
        /// <summary>
        /// Starts displaying a timing bar.
        /// Will run a script at the end of the timing bar, if specified.
        /// </summary>
        /// <param name="creature">The creature who will see the timing bar.</param>
        /// <param name="seconds">How long the timing bar should come on screen.</param>
        /// <param name="script">The script to run at the end of the timing bar.</param>
        public static void StartGuiTimingBar(NWGameObject creature, float seconds, string script)
        {
            // only one timing bar at a time!
            if (_.GetLocalInt(creature, "NWNX_PLAYER_GUI_TIMING_ACTIVE") == 1)
            {
                return;
            }

            string sFunc = "StartGuiTimingBar";

            NWNXCore.NWNX_PushArgumentFloat(NWNX_Player, sFunc, seconds);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Player, sFunc, creature);

            NWNXCore.NWNX_CallFunction(NWNX_Player, sFunc);

            int id = _.GetLocalInt(creature, "NWNX_PLAYER_GUI_TIMING_ID") + 1;

            _.SetLocalInt(creature, "NWNX_PLAYER_GUI_TIMING_ACTIVE", id);
            _.SetLocalInt(creature, "NWNX_PLAYER_GUI_TIMING_ID", id);

            _.DelayCommand(seconds, () =>
            {
                StopGuiTimingBar(creature, script, -1);
            });
        }
コード例 #2
0
        /// <summary>
        /// Set the fog clip distance in area
        /// </summary>
        /// <param name="area"></param>
        /// <param name="distance"></param>
        public static void SetFogClipDistance(NWGameObject area, float distance)
        {
            string sFunc = "SetFogClipDistance";

            NWNXCore.NWNX_PushArgumentFloat(NWNX_Area, sFunc, distance);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Area, sFunc, area);
            NWNXCore.NWNX_CallFunction(NWNX_Area, sFunc);
        }
コード例 #3
0
        /// <summary>
        /// Override a visual transform on the given object that only oPlayer will see.
        /// - oObject can be any valid Creature, Placeable, Item or Door.
        /// - nTransform is one of OBJECT_VISUAL_TRANSFORM_* or -1 to remove the override
        /// - fValue depends on the transformation to apply.
        /// </summary>
        /// <param name="oPlayer">The player object</param>
        /// <param name="oObject">The object to transform</param>
        /// <param name="nTransform">The transformation type</param>
        /// <param name="fValue">The amount to transform by</param>
        public static void SetObjectVisualTransformOverride(NWGameObject oPlayer, NWGameObject oObject, int nTransform, float fValue)
        {
            string sFunc = "SetObjectVisualTransformOverride";

            NWNXCore.NWNX_PushArgumentFloat(NWNX_Player, sFunc, fValue);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Player, sFunc, nTransform);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Player, sFunc, oObject);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Player, sFunc, oPlayer);

            NWNXCore.NWNX_CallFunction(NWNX_Player, sFunc);
        }
コード例 #4
0
        /// <summary>
        /// Plays the VFX at the target position in current area for the given player only
        /// </summary>
        /// <param name="player"></param>
        /// <param name="effectId"></param>
        /// <param name="position"></param>
        public static void ShowVisualEffect(NWGameObject player, int effectId, Vector position)
        {
            string sFunc = "ShowVisualEffect";

            NWNXCore.NWNX_PushArgumentFloat(NWNX_Player, sFunc, position.X);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Player, sFunc, position.Y);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Player, sFunc, position.Z);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Player, sFunc, effectId);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Player, sFunc, player);

            NWNXCore.NWNX_CallFunction(NWNX_Player, sFunc);
        }
コード例 #5
0
        /// <summary>
        /// Convert unpacked effect structure to native type
        /// </summary>
        /// <param name="effect"></param>
        /// <returns></returns>
        public static Effect PackEffect(EffectUnpacked effect)
        {
            string sFunc = "PackEffect";

            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.EffectID);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.Type);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.SubType);

            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.Duration);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.ExpiryCalendarDay);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.ExpiryTimeOfDay);

            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.Creator);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.SpellID);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.Expose);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.ShowIcon);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.CasterLevel);

            NWNXCore.NWNX_PushArgumentEffect(NWNX_Effect, sFunc, effect.LinkLeft);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.LinkLeftValid);
            NWNXCore.NWNX_PushArgumentEffect(NWNX_Effect, sFunc, effect.LinkRight);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.LinkRightValid);

            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.NumIntegers);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam0);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam1);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam2);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam3);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam4);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam5);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam6);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam7);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam0);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam1);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam2);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam3);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam0);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam1);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam2);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam3);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam4);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam5);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam0);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam1);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam2);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam3);

            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.Tag);

            NWNXCore.NWNX_CallFunction(NWNX_Effect, sFunc);
            return(NWNXCore.NWNX_GetReturnValueEffect(NWNX_Effect, sFunc));
        }
コード例 #6
0
        /// <summary>
        /// Create and returns a transition (square shaped of specified size) at a location
        /// Valid object types for the target are DOOR or WAYPOINT.
        /// If a tag is specified the returning object will have that tag
        /// </summary>
        /// <param name="area"></param>
        /// <param name="target"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <param name="z"></param>
        /// <param name="size"></param>
        /// <param name="tag"></param>
        /// <returns></returns>
        public static NWGameObject CreateTransition(NWGameObject area, NWGameObject target, float x, float y, float z, float size = 2.0f, string tag = "")
        {
            string sFunc = "CreateTransition";

            NWNXCore.NWNX_PushArgumentString(NWNX_Area, sFunc, tag);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Area, sFunc, size);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Area, sFunc, z);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Area, sFunc, y);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Area, sFunc, x);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Area, sFunc, target);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Area, sFunc, area);
            NWNXCore.NWNX_CallFunction(NWNX_Area, sFunc);

            return(NWNXCore.NWNX_GetReturnValueObject(NWNX_Area, sFunc));
        }