예제 #1
0
        private async void HideActor(Dalamud.Game.ClientState.Actors.Types.Actor a)
        {
            await Task.Run(async() => {
                try
                {
                    var addrEntityType   = a.Address + 0x8C;
                    var addrRenderToggle = a.Address + 0x104;



                    if (a is Dalamud.Game.ClientState.Actors.Types.PlayerCharacter)
                    {
                        Marshal.WriteByte(addrEntityType, 2);
                        Marshal.WriteInt32(addrRenderToggle, 2050);
                        //await Task.Delay(100);
                        //Marshal.WriteInt32(addrRenderToggle, 0);
                        await Task.Delay(100);
                        Marshal.WriteByte(addrEntityType, 1);
                    }

                    else
                    {
                        Marshal.WriteInt32(addrRenderToggle, 2050);
                        //await Task.Delay(10);
                        //Marshal.WriteInt32(addrRenderToggle, 0);
                    }
                }
                catch (Exception ex)
                {
                    PluginLog.LogError(ex.ToString());
                }
            });
        }
예제 #2
0
 public Void(Dalamud.Game.ClientState.Actors.Types.Actor actor, string reason)
 {
     Name    = actor.Name;
     Time    = DateTime.Now;
     ActorId = actor.ActorId;
     Reason  = reason;
 }
예제 #3
0
파일: Main.cs 프로젝트: ez1tap/PixelPerfect
        public void DrawRingWorld(Dalamud.Game.ClientState.Actors.Types.Actor actor, float radius, int num_segments, float thicc, uint colour)
        {
            int seg = num_segments / 2;

            for (int i = 0; i <= num_segments; i++)
            {
                pluginInterface.Framework.Gui.WorldToScreen(new SharpDX.Vector3(actor.Position.X + (radius * (float)Math.Sin((Math.PI / seg) * i)), actor.Position.Z, actor.Position.Y + (radius * (float)Math.Cos((Math.PI / seg) * i))), out SharpDX.Vector2 pos);
                ImGui.GetWindowDrawList().PathLineTo(new Num.Vector2(pos.X, pos.Y));
            }
            ImGui.GetWindowDrawList().PathStroke(colour, true, thicc);
        }
예제 #4
0
        private async void RerenderActor(Dalamud.Game.ClientState.Actors.Types.Actor actor)
        {
            try {
                var addrRenderToggle = actor.Address + OFFSET_RENDER_TOGGLE;

                // Trigger a rerender
                Marshal.WriteInt32(addrRenderToggle, 2);
                await Task.Delay(100);

                Marshal.WriteInt32(addrRenderToggle, 0);
            } catch (Exception ex) {
                PluginLog.LogError(ex.ToString());
            }
        }
예제 #5
0
        private static byte GetStatus(Dalamud.Game.ClientState.Actors.Types.Actor actor)
        {
            IntPtr statusPtr = actor.Address + 0x1906;

            return(Marshal.ReadByte(statusPtr));
        }
예제 #6
0
 private bool InParty(Dalamud.Game.ClientState.Actors.Types.Actor actor)
 {
     return((GetStatus(actor) & 16) > 0);
 }