The main release package of Ashita v3. Contains all the needed files for users to get up and running. Used by the launcher/injector to auto-update as well. https://ashitaxi.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

205 lines
9.3 KiB

/**
* Ashita - Copyright (c) 2014 - 2021 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
* Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
*
* By using Ashita, you agree to the above license and its terms.
*
* Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were
* made. You must do so in any reasonable manner, but not in any way that suggests the licensor
* endorses you or your use.
*
* Non-Commercial - You may not use the material (Ashita) for commercial purposes.
*
* No-Derivatives - If you remix, transform, or build upon the material (Ashita), you may not distribute the
* modified material. You are, however, allowed to submit the modified works back to the original
* Ashita project in attempt to have it added to the original project.
*
* You may not apply legal terms or technological measures that legally restrict others
* from doing anything the license permits.
*
* No warranties are given.
*/
#ifndef __ASHITA_AS_FFXI_ENTITY_H_INCLUDED__
#define __ASHITA_AS_FFXI_ENTITY_H_INCLUDED__
#if defined (_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
namespace Ashita
{
namespace FFXI
{
struct position_t
{
float X;
float Y;
float Z;
float Unknown0000;
float Roll;
float Yaw; // Heading
float Pitch;
bool operator==(const position_t &pos) const
{
return ((this->X == pos.X) && (this->Y == pos.Y) && (this->Z == pos.Z));
}
bool operator!=(const position_t &pos) const
{
return !(this == &pos);
}
};
struct move_t
{
float X;
float Y;
float Z;
float Unknown0000;
bool operator==(const move_t &pos) const
{
return ((this->X == pos.X) && (this->Y == pos.Y) && (this->Z == pos.Z));
}
bool operator!=(const move_t &pos) const
{
return !(this == &pos);
}
};
struct movement_t
{
position_t LocalPosition;
float Unknown0000;
position_t LastPosition;
uint32_t Unknown0001;
move_t Move;
};
struct look_t
{
uint16_t Hair; // Hair Style
uint16_t Head; // Head Armor (Starts at 0x1000)
uint16_t Body; // Body Armor (Starts at 0x2000)
uint16_t Hands; // Hands Armor (Starts at 0x3000)
uint16_t Legs; // Legs Armor (Starts at 0x4000)
uint16_t Feet; // Feet Armor (Starts at 0x5000)
uint16_t Main; // Main Weapon (Starts at 0x6000)
uint16_t Sub; // Sub Weapon (Starts at 0x7000)
uint16_t Ranged; // Ranged Weapon (Starts at 0x8000)
};
struct render_t
{
uint32_t Flags0; // Main Render Flags
uint32_t Flags1; // Name Flags (Party, Away, Anon)
uint32_t Flags2; // Name Flags (Bazaar, GM Icon, etc.)
uint32_t Flags3; // Entity Flags (Shadow)
uint32_t Flags4; // Name Flags (Name Visibility)
};
struct animation_t
{
uint8_t Animations[0x28];
};
#pragma pack(push, 1)
struct ffxi_entity_t
{
uintptr_t CYyObjectVtable; // CYyObject
movement_t Movement;
uint8_t Unknown0000[28];
uintptr_t Unknown0001; // Unknown Vtable pointer.
uint32_t TargetIndex;
uint32_t ServerId;
int8_t Name[28];
float Speed;
float AnimationSpeed;
uintptr_t WarpPointer; // Pointer to the entities editable movement information.
uint32_t Unknown0002[13];
float Distance;
uint32_t Unknown0003; // Usually 0x64.
uint32_t Unknown0004; // Usually 0x64.
float Heading; // Yaw
uintptr_t PetOwnerId;
uint8_t HealthPercent;
uint8_t ManaPercent; // Pet only.
uint8_t EntityType;
uint8_t Race;
uint32_t Unknown0005;
uint16_t ModelFade; // Used to force-refresh the entity model.
uint8_t Unknown0006[6];
look_t Look;
uint8_t Unknown0007[14];
uint16_t ActionTimer1;
uint16_t ActionTimer2;
render_t Render;
uint32_t Padding0000;
float Unknown0008; // Fishing related.
uint32_t Unknown0009; // Fade-in effect. (Valid values: 3 / 6)
uint16_t Unknown0010; // Fade-in misc. (-1 gets reset to 0)
uint32_t Unknown0011;
uint16_t NpcSpeechLoop;
uint16_t NpcSpeechFrame;
uint8_t Unknown0012[18];
float Speed2; // Editable movement speed.
uint16_t NpcWalkPosition1;
uint16_t NpcWalkPosition2;
uint16_t NpcWalkMode;
uint16_t CostumeId;
uint8_t mou4[4]; // Always 'mou4'.
uint32_t Status;
uint32_t StatusServer;
uint32_t StatusNpcChat; // Used while talking with an npc.
uint32_t Unknown0013;
uint32_t Unknown0014;
uint32_t Unknown0015;
uint32_t Unknown0016;
uint32_t ClaimServerId; // The entities server id that has claim (or last claimed) the entity.
uint32_t Unknown0017; // Inventory related.
animation_t Animations; // The entities animation strings. (idl, sil, wlk, etc.)
uint16_t AnimationTick; // Current ticks of the active animation.
uint16_t AnimationStep; // Current step of the active animation.
uint8_t AnimationPlay; // Current animation playing. (6 = Stand>Sit, 12 = Play current emote.)
uint8_t Unknown0018; // Animation related.
uint16_t EmoteTargetIndex; // The target index the emote is being performed on.
uint16_t EmoteId; // The id of the emote.
uint16_t Unknown0019;
uint32_t EmoteIdString; // The string id of emote.
uintptr_t EmoteTargetWarpPointer; // The emote target entities warp pointer.
uint32_t Unknown0020;
uint32_t SpawnFlags; // 0x01 = PC, 0x02 = NPC, 0x10 = Mob, 0x0D = Self
uint32_t LinkshellColor; // ARGB style color code.
uint16_t NameColor; // Numerical code to pre-defined colors.
uint16_t CampaignNameFlag; // Normally 0x4000, low-byte sets the flag.
uint16_t FishingTimer; // Counts down from when you click 'fish' til you either make a catch or reel-in.
uint16_t FishingCastTimer; // Counts down from when you click 'fish' til your bait hits the water.
uint32_t FishingUnknown0000; // Fishing related.
uint32_t FishingUnknown0001; // Fishing related.
uint16_t FishingUnknown0002; // Fishing related.
uint8_t Unknown0021[14];
uint16_t TargetedIndex; // The entities targeted index. (Does not always populate. Does not populate for local player.)
uint16_t PetTargetIndex; // The entities pet target index.
uint16_t Unknown0022; // Npc talking countdown timer. (After done talking with npc.)
uint8_t Unknown0023; // Flag set after talking with an npc.
uint8_t BallistaScoreFlag; // Ballista / PvP related.
uint8_t PankrationEnabled;
uint8_t PankrationFlagFlip;
uint16_t Unknown0024;
float ModelSize;
uint8_t Unknown0025[8];
uint16_t MonstrosityFlag; // The entities monstrosity flags.
uint16_t MonstrosityNameId; // The entities monstrosity name id.
int8_t MonstrosityName[36]; // The entities monstrosity name.
};
#pragma pack(pop)
}; // namespace FFXI
}; // namespace Ashita
#endif // __ASHITA_AS_FFXI_ENTITY_H_INCLUDED__