/// <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); }); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }
/// <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)); }