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.
1532 lines
70 KiB
1532 lines
70 KiB
8 years ago
|
/**
|
||
|
* Ashita - Copyright (c) 2014 - 2016 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_ADK_H_INCLUDED__
|
||
|
#define __ASHITA_ADK_H_INCLUDED__
|
||
|
|
||
|
#if defined (_MSC_VER) && (_MSC_VER >= 1020)
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// ReSharper Specific Disables (Please do not edit these!)
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// ReSharper disable CppUnusedIncludeDirective
|
||
|
// ReSharper disable CppPolymorphicClassWithNonVirtualPublicDestructor
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita Interface Version
|
||
|
//
|
||
|
// Defines the current interface version that Ashita is compiled against. This version must match
|
||
|
// when a plugin is loaded for it to work properly. Invalid versions will result in the plugin
|
||
|
// not loading and printing an error.
|
||
|
//
|
||
|
// DO NOT EDIT THIS!
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
#define ASHITA_INTERFACE_VERSION 3.0
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Direct Input SDK Version Definition
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
#ifndef DIRECTINPUT_VERSION
|
||
|
#define DIRECTINPUT_VERSION 0x0800
|
||
|
#endif
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// General Includes
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
#include <Windows.h>
|
||
|
#include <functional>
|
||
|
#include "d3d8/includes/d3d8.h"
|
||
|
#include "d3d8/includes/d3dx8.h"
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita SDK Includes
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
#include "newIDirectInputDevice8A.h"
|
||
|
#include "AS_BinaryData.h"
|
||
|
#include "AS_CommandParser.h"
|
||
|
#include "AS_Event.h"
|
||
|
#include "AS_Exception.h"
|
||
|
#include "AS_LockableObject.h"
|
||
|
#include "AS_Memory.h"
|
||
|
#include "AS_Objects.h"
|
||
|
#include "AS_Registry.h"
|
||
|
#include "AS_Thread.h"
|
||
|
#include "ffxi/entity.h"
|
||
|
#include "ffxi/enums.h"
|
||
|
#include "ffxi/inventory.h"
|
||
|
#include "ffxi/party.h"
|
||
|
#include "ffxi/player.h"
|
||
|
#include "ffxi/target.h"
|
||
|
#include "imgui.h"
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Forward Declarations
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struct IEntity; // IEntity forward-declaration.
|
||
|
struct IInventory; // IInventory forward-declaration.
|
||
|
struct IParty; // IParty forward-declaration.
|
||
|
struct IPlayer; // IPlayer forward-declaration.
|
||
|
struct ITarget; // ITarget forward-declaration.
|
||
|
struct IFontObject; // IFontObject forward declaration.
|
||
|
struct IPrimitiveObject; // IPrimitiveObject forward declaration.
|
||
|
struct IKeyboard; // IKeyboard forward declaration.
|
||
|
struct IMouse; // IMouse forward declaration.
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita Version Return Object
|
||
|
//
|
||
|
// Used with the GetVersion export of the Ashita.dll file, this can be used to read the
|
||
|
// current version of Ashita from the file properly.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
#pragma warning(disable : 4201)
|
||
|
union ashitaversion_t
|
||
|
{
|
||
|
// The raw version value.
|
||
|
uint64_t Version;
|
||
|
|
||
|
// Union based data parts of Version.
|
||
|
struct {
|
||
|
uint16_t Major;
|
||
|
uint16_t Minor;
|
||
|
uint16_t Build;
|
||
|
uint16_t Revision;
|
||
|
};
|
||
|
};
|
||
|
#pragma warning(default : 4201)
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita Install Parameters
|
||
|
//
|
||
|
// Used with the Install export of Ashita.dll file. These are the parameters Ashita expects
|
||
|
// to be passed to the install call when it is first being prepared for usage.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
struct ashitainstallparams_t
|
||
|
{
|
||
|
HMODULE ModuleInstance; // The module instance of Ashita.dll.
|
||
|
uint32_t LanguageId; // The language id to use.
|
||
|
char BootScript[MAX_PATH]; // The boot script to load for the boot configurations.
|
||
|
};
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Forward Declarations
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
struct lua_State { };
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita Enumerations
|
||
|
//
|
||
|
// Enumerations used within Ashita's various interfaces and functions.
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
namespace Ashita
|
||
|
{
|
||
|
/**
|
||
|
* Command Input Type Enumeration
|
||
|
*
|
||
|
* Used with the Ashita ChatManager command functions.
|
||
|
*/
|
||
|
enum class CommandInputType : int32_t {
|
||
|
ForceHandle = -3, // Informs Ashita to handle the command by force.
|
||
|
Script = -2, // Informs Ashita to handle the command as an Ashita based script command.
|
||
|
Parse = -1, // Informs Ashita to handle the command as an Ashita based command.
|
||
|
Menu = 0, // Informs Ashita to handle the command as if it were input via an in-game menu.
|
||
|
Typed = 1, // Informs Ashita to handle the command as if it were typed into the chat window by the player.
|
||
|
Macro = 2 // Informs Ashita to handle the command as if it were invoked from a macro.
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Frame Anchor Enumeration
|
||
|
*
|
||
|
* Used with Ashita's custom font objects.
|
||
|
*/
|
||
|
enum class FrameAnchor : uint32_t {
|
||
|
TopLeft = 0, // Anchors the font object to the top-left.
|
||
|
TopRight = 1, // Anchors the font object to the top-right.
|
||
|
BottomLeft = 2, // Anchors the font object to the bottom-left.
|
||
|
BottomRight = 3, // Anchors the font object to the bottom-right.
|
||
|
Right = 1, // Anchors the font object to the right.
|
||
|
Bottom = 2 // Anchors the font object to the bottom.
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* FrameAnchor bitwise AND operator override.
|
||
|
*
|
||
|
* @param {FrameAnchor} a - The first frame anchor value.
|
||
|
* @param {FrameAnchor} b - The second frame anchor value.
|
||
|
* @returns {uint32_t} The AND value of a and b.
|
||
|
*/
|
||
|
inline uint32_t operator& (const FrameAnchor& a, const FrameAnchor& b)
|
||
|
{
|
||
|
return (uint32_t)((uint32_t)a & (uint32_t)b);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Mouse Input Enumeration
|
||
|
*
|
||
|
* Used with Ashita's custom font objects mouse event callback.
|
||
|
*/
|
||
|
enum class MouseInput : uint32_t {
|
||
|
LeftClick = 0, // Left mouse button was clicked.
|
||
|
RightClick = 1, // Right mouse button was clicked.
|
||
|
MiddleClick = 2, // Middle mouse button was clicked.
|
||
|
X1Click = 3, // X1 mouse button was clicked.
|
||
|
X2Click = 4, // X2 mouse button was clicked.
|
||
|
MouseWheelUp = 5, // Mouse wheel was scrolled up.
|
||
|
MouseWheelDown = 6, // Mouse wheel was scrolled down.
|
||
|
MouseMove = 7 // Mouse was moved over the object.
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Log Level Enumeration
|
||
|
*
|
||
|
* Used with Ashita's logging manager.
|
||
|
*/
|
||
|
enum class LogLevel : uint32_t {
|
||
|
None = 0,
|
||
|
Information = 1,
|
||
|
Warning = 2,
|
||
|
Error = 3,
|
||
|
Debug = 4
|
||
|
};
|
||
|
}; // namespace Ashita
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Input Defines
|
||
|
//
|
||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
typedef HRESULT /**/(__stdcall *getdatacallback_t)(DWORD, LPDIDEVICEOBJECTDATA, DWORD, LPDWORD, DWORD);
|
||
|
typedef HRESULT /**/(__stdcall *getstatecallback_t)(DWORD, LPVOID);
|
||
|
typedef BOOL /**/(__stdcall *keyboardcallback_t)(WPARAM, LPARAM);
|
||
|
typedef BOOL /**/(__stdcall *mousecallback_t)(WPARAM, LPARAM);
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Font Object Defines
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
typedef std::function<void(int32_t, void*, int32_t, int32_t)> MOUSEEVENT;
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Resource File Definitions
|
||
|
//
|
||
|
// IAbility
|
||
|
//
|
||
|
// An ability entry parsed from the games data files. Contatins information on how the
|
||
|
// ability works, requirements, and other useful information.
|
||
|
//
|
||
|
// ISpell
|
||
|
//
|
||
|
// A spell entry parsed from the games data files. Contains information on how the spell
|
||
|
// works, requirements, and other useful information.
|
||
|
//
|
||
|
// IMonstrosityAbility
|
||
|
//
|
||
|
// A monstrosity ability entry. Contains info on the abilities requirements. (Used for items.)
|
||
|
//
|
||
|
// IItem
|
||
|
//
|
||
|
// An item entry parsed from the games data files. Contains information on how the item
|
||
|
// works, can be used, requirements, and other useful information. Also contains the items
|
||
|
// bitmap icon used and displayed in-game.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struct IAbility
|
||
|
{
|
||
|
uint16_t Id; // The abilities id. (Not the same as its recast id!)
|
||
|
uint8_t Type; // The abilities type. (Type & 7)
|
||
|
uint8_t Element; // The abilities element.
|
||
|
uint16_t ListIconId; // The abilities list icon id.
|
||
|
uint16_t ManaCost; // The abilities mana cost.
|
||
|
uint16_t TimerId; // The abilities timer id.
|
||
|
uint16_t ValidTargets; // The abilities valid targets.
|
||
|
int16_t TP; // The abilities TP cost.
|
||
|
uint8_t Unknown0000; // Unknown.
|
||
|
uint8_t MonsterLevel; // The abilities monster level.
|
||
|
int8_t Range; // The abilities usage range. (Range % 0x0F)
|
||
|
uint8_t Unknown0001[30]; // Unknown.
|
||
|
uint8_t EOE; // EOE (End of entry. 0xFF)
|
||
|
|
||
|
const char* Name[3]; // The abilities name. (0 = Default, 1 = Japanese, 2 = English)
|
||
|
const char* Description[3]; // The abilities description. (0 = Default, 1 = Japanese, 2 = English)
|
||
|
};
|
||
|
|
||
|
struct ISpell
|
||
|
{
|
||
|
uint16_t Index; // The spells index. (Used with recast.)
|
||
|
uint16_t Type; // The spells magic type.
|
||
|
uint16_t Element; // The spells element type.
|
||
|
uint16_t ValidTargets; // The spells valid targets.
|
||
|
uint16_t Skill; // The spells magic skill type.
|
||
|
uint16_t ManaCost; // The spells mana coast.
|
||
|
uint8_t CastTime; // The spells cast time. (CastTime / 4.0)
|
||
|
uint8_t RecastDelay; // The spells recast delay. (RecastDelay / 4.0)
|
||
|
int16_t LevelRequired[24]; // The spells level requirements. (Per-job, if 0xFF, cannot be learned.)
|
||
|
uint16_t Id; // The spells id.
|
||
|
uint16_t ListIcon1; // The spells icon id (1).
|
||
|
uint16_t ListIcon2; // The spells icon id (2).
|
||
|
uint8_t Requirements; // The spells requirements.
|
||
|
int8_t Range; // The spells casting range. (Range % 0x0F)
|
||
|
uint8_t Unknown0000[29]; // Unknown.
|
||
|
uint8_t EOE; // EOE (End of entry. 0xFF)
|
||
|
|
||
|
const char* Name[3]; // The spells name. (0 = Default, 1 = Japanese, 2 = English)
|
||
|
const char* Description[3]; // The spells description. (0 = Default, 1 = Japanese, 2 = English)
|
||
|
};
|
||
|
|
||
|
struct IMonstrosityAbility
|
||
|
{
|
||
|
uint16_t MoveId; // The monster move id of the ability.
|
||
|
int8_t Level; // The monster level of the ability.
|
||
|
uint8_t Unknown0000; // Unknown.
|
||
|
};
|
||
|
|
||
|
struct IItem
|
||
|
{
|
||
|
uint32_t ItemId; // The items id.
|
||
|
uint16_t Flags; // The items flags.
|
||
|
uint16_t StackSize; // The items stack size.
|
||
|
uint16_t ItemType; // The items type.
|
||
|
uint16_t ResourceId; // The items resource id. (Mainly used for AH sorting.)
|
||
|
uint16_t ValidTargets; // The items valid targets for use.
|
||
|
|
||
|
uint16_t Level; // The items level requirement to use.
|
||
|
uint16_t Slots; // The items equipment slots where the item can be equipped to.
|
||
|
uint16_t Races; // The items races that can use the item.
|
||
|
uint32_t Jobs; // The items jobs that can use the item.
|
||
|
uint8_t SuperiorLevel; // The items superior level.
|
||
|
uint16_t ShieldSize; // The items shield size.
|
||
|
uint8_t MaxCharges; // The items max charges.
|
||
|
uint16_t CastTime; // The items cast time.
|
||
|
uint16_t CastDelay; // The items cast delay.
|
||
|
uint32_t RecastDelay; // The items recast delay.
|
||
|
uint16_t BaseItemId; // The items base item id used for upgrades.
|
||
|
uint16_t ItemLevel; // The items item level.
|
||
|
uint16_t Damage; // The items damage.
|
||
|
uint16_t Delay; // The items delay.
|
||
|
uint16_t DPS; // The items damae per second.
|
||
|
uint8_t Skill; // The items skill type.
|
||
|
uint8_t JugSize; // The items jug size.
|
||
|
|
||
|
uint16_t InstinctCost; // The items instinct cost.
|
||
|
|
||
|
uint16_t MonstrosityId; // The items monstrosity id.
|
||
|
char MonstrosityName[32]; // The items monstrosity name.
|
||
|
IMonstrosityAbility MonstrosityAbilities[16]; // The items monstrosity abilities.
|
||
|
|
||
|
uint16_t PuppetSlotId; // The items slot id (for PUP).
|
||
|
uint32_t PuppetElements; // The items elements (for PUP).
|
||
|
|
||
|
const char* Name[3]; // The items name.
|
||
|
const char* Description[3]; // The items description.
|
||
|
const char* LogNameSingular[3]; // The items log name (singular).
|
||
|
const char* LogNamePlural[3]; // The items log name (plural).
|
||
|
|
||
|
uint32_t ImageSize; // The items image size.
|
||
|
uint8_t ImageType; // The items image type.
|
||
|
uint8_t ImageName[0x10]; // The items image name.
|
||
|
uint8_t Bitmap[0x980]; // The items bitmap data.
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Chat Manager
|
||
|
//
|
||
|
// Ashita chat manager that interacts with the games chat and command systems.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IChatManager
|
||
|
{
|
||
|
// Command Functions
|
||
|
virtual void ParseCommand(const char* command, int32_t type) = 0;
|
||
|
virtual void QueueCommand(const char* command, int32_t type) = 0;
|
||
|
|
||
|
// Chat Functions
|
||
|
virtual void AddChatMessage(int32_t mode, const char* message) = 0;
|
||
|
virtual int32_t ParseAutoTranslate(const char* message, char* buffer, int32_t bufferSize, bool useBrackets) = 0;
|
||
|
|
||
|
// Script Functions
|
||
|
virtual void RunScript(bool useTaskQueue, const char* file) = 0;
|
||
|
|
||
|
// Input Text Functions
|
||
|
virtual const char* GetInputText(void) const = 0;
|
||
|
virtual void SetInputText(const char* message) = 0;
|
||
|
virtual bool IsInputOpen(void) = 0;
|
||
|
|
||
|
// Chat Functions (Helpers)
|
||
|
virtual void Write(const char* msg) = 0;
|
||
|
virtual void Writef(const char* format, ...) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Configuration Manager
|
||
|
//
|
||
|
// Ashita configuration manager that interacts with simple XML based configuration files.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IConfigurationManager
|
||
|
{
|
||
|
// Configuration File Functions
|
||
|
virtual bool Load(const char* alias, const char* file) = 0;
|
||
|
virtual bool Save(const char* alias, const char* file) = 0;
|
||
|
virtual void Remove(const char* alias) = 0;
|
||
|
|
||
|
// Value Related Functions
|
||
|
virtual void set_value(const char* alias, const char* name, const char* value) = 0;
|
||
|
virtual const char* get_string(const char* alias, const char* name) = 0;
|
||
|
virtual bool get_bool(const char* alias, const char* name, bool defaultValue) = 0;
|
||
|
virtual uint8_t get_uint8(const char* alias, const char* name, uint8_t defaultValue) = 0;
|
||
|
virtual uint16_t get_uint16(const char* alias, const char* name, uint16_t defaultValue) = 0;
|
||
|
virtual uint32_t get_uint32(const char* alias, const char* name, uint32_t defaultValue) = 0;
|
||
|
virtual uint64_t get_uint64(const char* alias, const char* name, uint64_t defaultValue) = 0;
|
||
|
virtual int8_t get_int8(const char* alias, const char* name, int8_t defaultValue) = 0;
|
||
|
virtual int16_t get_int16(const char* alias, const char* name, int16_t defaultValue) = 0;
|
||
|
virtual int32_t get_int32(const char* alias, const char* name, int32_t defaultValue) = 0;
|
||
|
virtual int64_t get_int64(const char* alias, const char* name, int64_t defaultValue) = 0;
|
||
|
virtual float get_float(const char* alias, const char* name, float defaultValue) = 0;
|
||
|
virtual double get_double(const char* alias, const char* name, double defaultValue) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Data Manager
|
||
|
//
|
||
|
// Ashita data manager that interacts with various in-game memory structures such as
|
||
|
// inventory, player, party, target, etc.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IDataManager
|
||
|
{
|
||
|
virtual IEntity* GetEntity(void) = 0;
|
||
|
virtual IInventory* GetInventory(void) = 0;
|
||
|
virtual IParty* GetParty(void) = 0;
|
||
|
virtual IPlayer* GetPlayer(void) = 0;
|
||
|
virtual ITarget* GetTarget(void) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Font Manager
|
||
|
//
|
||
|
// Ashita font manager that interacts with Ashitas built-in highly customizable font objects.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IFontManager
|
||
|
{
|
||
|
virtual IFontObject* Create(const char* alias) = 0;
|
||
|
virtual IFontObject* Get(const char* alias) = 0;
|
||
|
virtual void Delete(const char* alias) = 0;
|
||
|
virtual bool GetHideObjects(void) const = 0;
|
||
|
virtual void SetHideObjects(bool hide) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Font Object
|
||
|
//
|
||
|
// Ashita font object interface that allows interaction with the highly customizable font objects.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IFontObject
|
||
|
{
|
||
|
// Helper Functions
|
||
|
virtual bool HitTest(int32_t x, int32_t y) = 0;
|
||
|
|
||
|
// Property Getters
|
||
|
virtual const char* GetAlias(void) const = 0;
|
||
|
virtual bool GetVisibility(void) const = 0;
|
||
|
virtual const char* GetFontFamily(void) const = 0;
|
||
|
virtual int32_t GetFontHeight(void) const = 0;
|
||
|
virtual float GetPositionX(void) const = 0;
|
||
|
virtual float GetPositionY(void) const = 0;
|
||
|
virtual bool GetLocked(void) const = 0;
|
||
|
virtual float GetPadding(void) const = 0;
|
||
|
virtual uint32_t GetAnchor(void) const = 0;
|
||
|
virtual uint32_t GetAnchorParent(void) const = 0;
|
||
|
virtual D3DCOLOR GetColor(void) const = 0;
|
||
|
virtual uint32_t GetCreateFlags(void) const = 0;
|
||
|
virtual uint32_t GetDrawFlags(void) const = 0;
|
||
|
virtual bool GetBold(void) const = 0;
|
||
|
virtual bool GetItalic(void) const = 0;
|
||
|
virtual bool GetRightJustified(void) const = 0;
|
||
|
virtual const char* GetText(void) const = 0;
|
||
|
virtual bool GetDirtyFlag(void) const = 0;
|
||
|
virtual bool GetAutoResize(void) const = 0;
|
||
|
virtual float GetWindowWidth(void) const = 0;
|
||
|
virtual float GetWindowHeight(void) const = 0;
|
||
|
virtual float GetRealPositionX(void) const = 0;
|
||
|
virtual float GetRealPositionY(void) const = 0;
|
||
|
virtual MOUSEEVENT GetMouseEventFunction(void) const = 0;
|
||
|
virtual void GetTextSize(SIZE* size) const = 0;
|
||
|
virtual IFontObject* GetParent(void) const = 0;
|
||
|
|
||
|
virtual IPrimitiveObject* GetBackground(void) const = 0;
|
||
|
|
||
|
// Property Setters
|
||
|
virtual void SetAlias(const char* alias) = 0;
|
||
|
virtual void SetVisibility(bool visible) = 0;
|
||
|
virtual void SetFontFamily(const char* family) = 0;
|
||
|
virtual void SetFontHeight(int32_t height) = 0;
|
||
|
virtual void SetPositionX(float x) = 0;
|
||
|
virtual void SetPositionY(float y) = 0;
|
||
|
virtual void SetLocked(bool locked) = 0;
|
||
|
virtual void SetPadding(float size) = 0;
|
||
|
virtual void SetAnchor(uint32_t anchor) = 0;
|
||
|
virtual void SetAnchorParent(uint32_t anchor) = 0;
|
||
|
virtual void SetColor(D3DCOLOR color) = 0;
|
||
|
virtual void SetCreateFlags(uint32_t flags) = 0;
|
||
|
virtual void SetDrawFlags(uint32_t flags) = 0;
|
||
|
virtual void SetBold(bool bold) = 0;
|
||
|
virtual void SetItalic(bool italic) = 0;
|
||
|
virtual void SetRightJustified(bool justified) = 0;
|
||
|
virtual void SetText(const char* text) = 0;
|
||
|
virtual void SetDirtyFlag(bool dirty) = 0;
|
||
|
virtual void SetAutoResize(bool resize) = 0;
|
||
|
virtual void SetWindowWidth(float width) = 0;
|
||
|
virtual void SetWindowHeight(float height) = 0;
|
||
|
virtual void SetMouseEventFunction(MOUSEEVENT func) = 0;
|
||
|
virtual void SetParent(IFontObject* parent) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Input Manager
|
||
|
//
|
||
|
// Ashita input manager that interacts with the hooked keyboard and mouse devices.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IInputManager
|
||
|
{
|
||
|
virtual IKeyboard* GetKeyboard(void) const = 0;
|
||
|
virtual IMouse* GetMouse(void) const = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Log Manager
|
||
|
//
|
||
|
// Ashita log manager that interacts with the per-instance created log file that Ashita uses to
|
||
|
// record various information about its operation. This file can be used to help debug issues
|
||
|
// with addons and plugins.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface ILogManager
|
||
|
{
|
||
|
virtual bool Log(uint32_t level, const char* source, const char* msg) = 0;
|
||
|
virtual bool Logf(uint32_t level, const char* source, const char* fmt, ...) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Packet Manager
|
||
|
//
|
||
|
// Ashita packet manager that interacts with the games packet system.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IPacketManager
|
||
|
{
|
||
|
virtual void AddIncomingPacket(uint16_t id, uint32_t len, void* data) = 0;
|
||
|
virtual void AddOutgoingPacket(uint16_t id, uint32_t len, void* data) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Plugin Manager
|
||
|
//
|
||
|
// Ashita plugin manager that interacts with Ashitas internal plugin system.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IPluginManager
|
||
|
{
|
||
|
virtual bool Load(const char* name) = 0;
|
||
|
virtual bool Unload(const char* name) = 0;
|
||
|
virtual void UnloadAll(void) = 0;
|
||
|
virtual void* GetPlugin(const char* name) = 0;
|
||
|
virtual void* GetPlugin(uint32_t index) = 0;
|
||
|
virtual uint32_t GetPluginCount(void) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Pointer Manager
|
||
|
//
|
||
|
// Ashita pointer manager that interacts with Ashitas internal pointer system.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IPointerManager
|
||
|
{
|
||
|
virtual uintptr_t GetPointer(const char* name) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Primitive Object
|
||
|
//
|
||
|
// Ashita primitive object interface that allows interaction with the primitive objects created
|
||
|
// within Ashita via the Font Manager.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IPrimitiveObject
|
||
|
{
|
||
|
// Helper Functions
|
||
|
virtual void SetTextureFromFile(const char* file) = 0;
|
||
|
virtual void SetTextureFromResource(const char* moduleName, const char* resource) = 0;
|
||
|
virtual bool HitTest(int32_t x, int32_t y) = 0;
|
||
|
|
||
|
// Property Getters
|
||
|
virtual bool GetVisibility(void) const = 0;
|
||
|
virtual float GetPositionX(void) const = 0;
|
||
|
virtual float GetPositionY(void) const = 0;
|
||
|
virtual float GetWidth(void) const = 0;
|
||
|
virtual float GetHeight(void) const = 0;
|
||
|
virtual D3DCOLOR GetColor(void) const = 0;
|
||
|
virtual bool GetBorderVisibility(void) const = 0;
|
||
|
virtual D3DCOLOR GetBorderColor(void) const = 0;
|
||
|
virtual uint32_t GetBorderFlags(void) const = 0;
|
||
|
virtual Ashita::asrect_t GetBorderSizes(void) const = 0;
|
||
|
|
||
|
// Property Setters
|
||
|
virtual void SetVisibility(bool isVisible) = 0;
|
||
|
virtual void SetPositionX(float x) = 0;
|
||
|
virtual void SetPositionY(float y) = 0;
|
||
|
virtual void SetWidth(float width) = 0;
|
||
|
virtual void SetHeight(float height) = 0;
|
||
|
virtual void SetColor(D3DCOLOR color) = 0;
|
||
|
virtual void SetBorderVisibility(bool isVisible) = 0;
|
||
|
virtual void SetBorderColor(D3DCOLOR color) = 0;
|
||
|
virtual void SetBorderFlags(uint32_t flags) = 0;
|
||
|
virtual void SetBorderSizes(uint32_t top, uint32_t right, uint32_t bottom, uint32_t left) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Resource Manager
|
||
|
//
|
||
|
// Ashita resource manager interface that interacts with the internal DAT file parser to obtain
|
||
|
// various information about the games content. (Abilities, Spells, Items, Various Strings, etc.)
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IResourceManager
|
||
|
{
|
||
|
// Ability Functions
|
||
|
virtual IAbility* GetAbilityById(uint32_t id) = 0;
|
||
|
virtual IAbility* GetAbilityByName(const char* name, uint32_t languageId) = 0;
|
||
|
virtual IAbility* GetAbilityByTimerId(uint32_t id) = 0;
|
||
|
|
||
|
// Spell Functions
|
||
|
virtual ISpell* GetSpellById(uint32_t id) = 0;
|
||
|
virtual ISpell* GetSpellByName(const char* name, uint32_t languageId) = 0;
|
||
|
|
||
|
// Item Functions
|
||
|
virtual IItem* GetItemById(uint32_t id) = 0;
|
||
|
virtual IItem* GetItemByName(const char* name, uint32_t languageId) = 0;
|
||
|
|
||
|
// String Functions
|
||
|
virtual const char* GetString(const char* table, uint32_t index) = 0;
|
||
|
virtual const char* GetString(const char* table, uint32_t index, uint32_t languageId) = 0;
|
||
|
virtual int32_t GetString(const char* table, const char* name) = 0;
|
||
|
virtual int32_t GetString(const char* table, const char* name, uint32_t languageId) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Data Related Interfaces
|
||
|
//
|
||
|
// IEntity
|
||
|
//
|
||
|
// Exposes functions to interact with the games various entities. (Players, Monsters, NPCs, etc.)
|
||
|
//
|
||
|
// IInventory
|
||
|
//
|
||
|
// Exposes functions to interact with the inventory block of the games data. This includes the
|
||
|
// players inventory and storage, the players equipment, and the treasure pool.
|
||
|
//
|
||
|
// IParty
|
||
|
//
|
||
|
// Exposes functions to interact with the games party data.
|
||
|
//
|
||
|
// IPlayer
|
||
|
//
|
||
|
// Exposes functions to interact with the local players information. (Level, job, skills, etc.)
|
||
|
//
|
||
|
// ITarget
|
||
|
//
|
||
|
// Exposes functions to interact with the current target information.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IEntity
|
||
|
{
|
||
|
// WARNING: Plugins should not use this function!
|
||
|
//
|
||
|
// Use the Get/Set functions instead to help ensure your plugin does not
|
||
|
// break between updates of Ashita!
|
||
|
virtual Ashita::FFXI::ffxi_entity_t* GetEntity(uint32_t index) const = 0;
|
||
|
|
||
|
// Property Getters
|
||
|
virtual float GetLocalX(uint32_t index) const = 0;
|
||
|
virtual float GetLocalY(uint32_t index) const = 0;
|
||
|
virtual float GetLocalZ(uint32_t index) const = 0;
|
||
|
virtual float GetLocalRoll(uint32_t index) const = 0;
|
||
|
virtual float GetLocalYaw(uint32_t index) const = 0;
|
||
|
virtual float GetLocalPitch(uint32_t index) const = 0;
|
||
|
virtual float GetLastX(uint32_t index) const = 0;
|
||
|
virtual float GetLastY(uint32_t index) const = 0;
|
||
|
virtual float GetLastZ(uint32_t index) const = 0;
|
||
|
virtual float GetLastRoll(uint32_t index) const = 0;
|
||
|
virtual float GetLastYaw(uint32_t index) const = 0;
|
||
|
virtual float GetLastPitch(uint32_t index) const = 0;
|
||
|
virtual float GetMoveX(uint32_t index) const = 0;
|
||
|
virtual float GetMoveY(uint32_t index) const = 0;
|
||
|
virtual float GetMoveZ(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetTargetIndex(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetServerId(uint32_t index) const = 0;
|
||
|
virtual const char* GetName(uint32_t index) const = 0;
|
||
|
virtual float GetSpeed(uint32_t index) const = 0;
|
||
|
virtual float GetAnimationSpeed(uint32_t index) const = 0;
|
||
|
virtual uintptr_t GetWarpPointer(uint32_t index) const = 0;
|
||
|
virtual float GetDistance(uint32_t index) const = 0;
|
||
|
virtual float GetHeading(uint32_t index) const = 0;
|
||
|
virtual uintptr_t GetPetOwnerId(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetHealthPercent(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetManaPercent(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetEntityType(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetRace(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetModelFade(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookHair(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookHead(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookBody(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookHands(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookLegs(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookFeet(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookMain(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookSub(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLookRanged(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetActionTimer1(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetActionTimer2(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetRenderFlags0(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetRenderFlags1(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetRenderFlags2(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetRenderFlags3(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetRenderFlags4(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetNpcSpeechLoop(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetNpcSpeechFrame(uint32_t index) const = 0;
|
||
|
virtual float GetSpeed2(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetNpcWalkPosition1(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetNpcWalkPosition2(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetNpcWalkMode(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetCostumeId(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetStatus(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetStatusServer(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetStatusNpcChat(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetClaimServerId(uint32_t index) const = 0;
|
||
|
virtual uint8_t* GetAnimations(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetAnimationTick(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetAnimationStep(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetAnimationPlay(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetEmoteTargetIndex(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetEmoteId(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetEmoteIdString(uint32_t index) const = 0;
|
||
|
virtual uintptr_t GetEmoteTargetWarpPointer(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetSpawnFlags(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetLinkshellColor(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetNameColor(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetCampaignNameFlag(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetFishingTimer(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetFishingCastTimer(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetFishingUnknown0000(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetFishingUnknown0001(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetFishingUnknown0002(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetTargetedIndex(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetPetTargetIndex(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetBallistaScoreFlag(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetPankrationEnabled(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetPankrationFlagFlip(uint32_t index) const = 0;
|
||
|
virtual float GetModelSize(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetMonstrosityFlag(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetMonstrosityNameId(uint32_t index) const = 0;
|
||
|
virtual const char* GetMonstrosityName(uint32_t index) const = 0;
|
||
|
|
||
|
// Property Setters
|
||
|
virtual void SetLocalX(uint32_t index, float x) const = 0;
|
||
|
virtual void SetLocalY(uint32_t index, float y) const = 0;
|
||
|
virtual void SetLocalZ(uint32_t index, float z) const = 0;
|
||
|
virtual void SetLocalRoll(uint32_t index, float roll) const = 0;
|
||
|
virtual void SetLocalYaw(uint32_t index, float yaw) const = 0;
|
||
|
virtual void SetLocalPitch(uint32_t index, float pitch) const = 0;
|
||
|
virtual void SetLastX(uint32_t index, float x) const = 0;
|
||
|
virtual void SetLastY(uint32_t index, float y) const = 0;
|
||
|
virtual void SetLastZ(uint32_t index, float z) const = 0;
|
||
|
virtual void SetLastRoll(uint32_t index, float roll) const = 0;
|
||
|
virtual void SetLastYaw(uint32_t index, float yaw) const = 0;
|
||
|
virtual void SetLastPitch(uint32_t index, float pitch) const = 0;
|
||
|
virtual void SetMoveX(uint32_t index, float x) const = 0;
|
||
|
virtual void SetMoveY(uint32_t index, float y) const = 0;
|
||
|
virtual void SetMoveZ(uint32_t index, float z) const = 0;
|
||
|
virtual void SetTargetIndex(uint32_t index, uint32_t targetIndex) const = 0;
|
||
|
virtual void SetServerId(uint32_t index, uint32_t serverId) const = 0;
|
||
|
virtual void SetName(uint32_t index, const char* name) const = 0;
|
||
|
virtual void SetSpeed(uint32_t index, float speed) const = 0;
|
||
|
virtual void SetAnimationSpeed(uint32_t index, float speed) const = 0;
|
||
|
virtual void SetWarpPointer(uint32_t index, uintptr_t ptr) const = 0;
|
||
|
virtual void SetDistance(uint32_t index, float distance) const = 0;
|
||
|
virtual void SetHeading(uint32_t index, float heading) const = 0;
|
||
|
virtual void SetPetOwnerId(uint32_t index, uintptr_t petOwnerId) const = 0;
|
||
|
virtual void SetHealthPercent(uint32_t index, uint8_t hpp) const = 0;
|
||
|
virtual void SetManaPercent(uint32_t index, uint8_t mpp) const = 0;
|
||
|
virtual void SetEntityType(uint32_t index, uint8_t type) const = 0;
|
||
|
virtual void SetRace(uint32_t index, uint8_t race) const = 0;
|
||
|
virtual void SetModelFade(uint32_t index, uint16_t fade) const = 0;
|
||
|
virtual void SetLookHair(uint32_t index, uint16_t hair) const = 0;
|
||
|
virtual void SetLookHead(uint32_t index, uint16_t head) const = 0;
|
||
|
virtual void SetLookBody(uint32_t index, uint16_t body) const = 0;
|
||
|
virtual void SetLookHands(uint32_t index, uint16_t hands) const = 0;
|
||
|
virtual void SetLookLegs(uint32_t index, uint16_t legs) const = 0;
|
||
|
virtual void SetLookFeet(uint32_t index, uint16_t feet) const = 0;
|
||
|
virtual void SetLookMain(uint32_t index, uint16_t main) const = 0;
|
||
|
virtual void SetLookSub(uint32_t index, uint16_t sub) const = 0;
|
||
|
virtual void SetLookRanged(uint32_t index, uint16_t ranged) const = 0;
|
||
|
virtual void SetActionTimer1(uint32_t index, uint16_t time) const = 0;
|
||
|
virtual void SetActionTimer2(uint32_t index, uint16_t time) const = 0;
|
||
|
virtual void SetRenderFlags0(uint32_t index, uint32_t flags) const = 0;
|
||
|
virtual void SetRenderFlags1(uint32_t index, uint32_t flags) const = 0;
|
||
|
virtual void SetRenderFlags2(uint32_t index, uint32_t flags) const = 0;
|
||
|
virtual void SetRenderFlags3(uint32_t index, uint32_t flags) const = 0;
|
||
|
virtual void SetRenderFlags4(uint32_t index, uint32_t flags) const = 0;
|
||
|
virtual void SetNpcSpeechLoop(uint32_t index, uint16_t loop) const = 0;
|
||
|
virtual void SetNpcSpeechFrame(uint32_t index, uint16_t frame) const = 0;
|
||
|
virtual void SetSpeed2(uint32_t index, float speed) const = 0;
|
||
|
virtual void SetNpcWalkPosition1(uint32_t index, uint16_t pos) const = 0;
|
||
|
virtual void SetNpcWalkPosition2(uint32_t index, uint16_t pos) const = 0;
|
||
|
virtual void SetNpcWalkMode(uint32_t index, uint16_t mode) const = 0;
|
||
|
virtual void SetCostumeId(uint32_t index, uint16_t costume) const = 0;
|
||
|
virtual void SetStatus(uint32_t index, uint32_t status) const = 0;
|
||
|
virtual void SetStatusServer(uint32_t index, uint32_t status) const = 0;
|
||
|
virtual void SetStatusNpcChat(uint32_t index, uint32_t status) const = 0;
|
||
|
virtual void SetClaimServerId(uint32_t index, uint32_t claimid) const = 0;
|
||
|
virtual void SetAnimations(uint32_t index, uint8_t* data) const = 0;
|
||
|
virtual void SetAnimationTick(uint32_t index, uint16_t tick) const = 0;
|
||
|
virtual void SetAnimationStep(uint32_t index, uint16_t step) const = 0;
|
||
|
virtual void SetAnimationPlay(uint32_t index, uint8_t play) const = 0;
|
||
|
virtual void SetEmoteTargetIndex(uint32_t index, uint16_t targetIndex) const = 0;
|
||
|
virtual void SetEmoteId(uint32_t index, uint16_t emoteid) const = 0;
|
||
|
virtual void SetEmoteIdString(uint32_t index, uint32_t emoteid) const = 0;
|
||
|
virtual void SetEmoteTargetWarpPointer(uint32_t index, uintptr_t warpPointer) const = 0;
|
||
|
virtual void SetSpawnFlags(uint32_t index, uint32_t flags) const = 0;
|
||
|
virtual void SetLinkshellColor(uint32_t index, uint32_t color) const = 0;
|
||
|
virtual void SetNameColor(uint32_t index, uint16_t color) const = 0;
|
||
|
virtual void SetCampaignNameFlag(uint32_t index, uint16_t flags) const = 0;
|
||
|
virtual void SetFishingTimer(uint32_t index, uint16_t timer) const = 0;
|
||
|
virtual void SetFishingCastTimer(uint32_t index, uint16_t timer) const = 0;
|
||
|
virtual void SetFishingUnknown0000(uint32_t index, uint32_t unk) const = 0;
|
||
|
virtual void SetFishingUnknown0001(uint32_t index, uint32_t unk) const = 0;
|
||
|
virtual void SetFishingUnknown0002(uint32_t index, uint16_t unk) const = 0;
|
||
|
virtual void SetTargetedIndex(uint32_t index, uint16_t targetedIndex) const = 0;
|
||
|
virtual void SetPetTargetIndex(uint32_t index, uint16_t petIndex) const = 0;
|
||
|
virtual void SetBallistaScoreFlag(uint32_t index, uint8_t flag) const = 0;
|
||
|
virtual void SetPankrationEnabled(uint32_t index, uint8_t enabled) const = 0;
|
||
|
virtual void SetPankrationFlagFlip(uint32_t index, uint8_t flagflip) const = 0;
|
||
|
virtual void SetModelSize(uint32_t index, float size) const = 0;
|
||
|
virtual void SetMonstrosityFlag(uint32_t index, uint16_t flag) const = 0;
|
||
|
virtual void SetMonstrosityNameId(uint32_t index, uint16_t nameid) const = 0;
|
||
|
virtual void SetMonstrosityName(uint32_t index, const char* name) const = 0;
|
||
|
};
|
||
|
|
||
|
interface IInventory
|
||
|
{
|
||
|
virtual Ashita::FFXI::item_t* GetItem(int32_t containerId, int32_t slotId) const = 0;
|
||
|
virtual uint16_t GetContainerMax(int32_t containerId) const = 0;
|
||
|
virtual Ashita::FFXI::treasureitem_t* GetTreasureItem(int32_t slotId) const = 0;
|
||
|
virtual Ashita::FFXI::equipment_t* GetEquippedItem(int32_t equipSlotId) const = 0;
|
||
|
virtual uint32_t GetCraftWait(void) const = 0;
|
||
|
};
|
||
|
|
||
|
interface IParty
|
||
|
{
|
||
|
// Alliance Property Getters
|
||
|
virtual uint32_t GetAllianceLeaderServerId(void) const = 0;
|
||
|
virtual uint32_t GetAllianceParty0LeaderServerId(void) const = 0;
|
||
|
virtual uint32_t GetAllianceParty1LeaderServerId(void) const = 0;
|
||
|
virtual uint32_t GetAllianceParty2LeaderServerId(void) const = 0;
|
||
|
virtual int8_t GetAllianceParty0Visible(void) const = 0;
|
||
|
virtual int8_t GetAllianceParty1Visible(void) const = 0;
|
||
|
virtual int8_t GetAllianceParty2Visible(void) const = 0;
|
||
|
virtual int8_t GetAllianceParty0MemberCount(void) const = 0;
|
||
|
virtual int8_t GetAllianceParty1MemberCount(void) const = 0;
|
||
|
virtual int8_t GetAllianceParty2MemberCount(void) const = 0;
|
||
|
virtual int8_t GetAllianceInvited(void) const = 0;
|
||
|
|
||
|
// Party Member Property Getters
|
||
|
virtual uint8_t GetMemberIndex(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberNumber(uint32_t index) const = 0;
|
||
|
virtual const char* GetMemberName(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberServerId(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberTargetIndex(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberCurrentHP(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberCurrentMP(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberCurrentTP(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberCurrentHPP(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberCurrentMPP(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetMemberZone(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberFlagMask(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberMainJob(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberMainJobLevel(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberSubJob(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberSubJobLvl(uint32_t index) const = 0;
|
||
|
virtual uint32_t GetMemberServerId2(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberCurrentHPP2(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberCurrentMPP2(uint32_t index) const = 0;
|
||
|
virtual uint8_t GetMemberActive(uint32_t index) const = 0;
|
||
|
};
|
||
|
|
||
|
interface IPlayer
|
||
|
{
|
||
|
// Property Getters
|
||
|
virtual uint32_t GetHealthMax(void) const = 0;
|
||
|
virtual uint32_t GetManaMax(void) const = 0;
|
||
|
virtual uint8_t GetMainJob(void) const = 0;
|
||
|
virtual uint8_t GetMainJobLevel(void) const = 0;
|
||
|
virtual uint8_t GetSubJob(void) const = 0;
|
||
|
virtual uint8_t GetSubJobLevel(void) const = 0;
|
||
|
virtual uint16_t GetExpCurrent(void) const = 0;
|
||
|
virtual uint16_t GetExpNeeded(void) const = 0;
|
||
|
virtual int16_t GetStat(uint32_t stat) const = 0;
|
||
|
virtual int16_t GetStatsModifiers(uint32_t stat) const = 0;
|
||
|
virtual int16_t GetAttack(void) const = 0;
|
||
|
virtual int16_t GetDefense(void) const = 0;
|
||
|
virtual int16_t GetResist(uint32_t stat) const = 0;
|
||
|
virtual uint16_t GetTitle(void) const = 0;
|
||
|
virtual uint16_t GetRank(void) const = 0;
|
||
|
virtual uint16_t GetRankPoints(void) const = 0;
|
||
|
virtual uint8_t GetNation(void) const = 0;
|
||
|
virtual uint8_t GetResidence(void) const = 0;
|
||
|
virtual uint32_t GetHomepoint(void) const = 0;
|
||
|
virtual Ashita::FFXI::combatskill_t GetCombatSkill(uint32_t skill) const = 0;
|
||
|
virtual Ashita::FFXI::craftskill_t GetCraftSkill(uint32_t skill) const = 0;
|
||
|
virtual uint16_t GetAbilityRecast(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetAbilityRecastTimerId(uint32_t index) const = 0;
|
||
|
virtual uint16_t GetLimitPoints(void) const = 0;
|
||
|
virtual uint8_t GetMeritPoints(void) const = 0;
|
||
|
virtual uint8_t GetLimitMode(void) const = 0;
|
||
|
virtual uint32_t GetMeritPointsMax(void) const = 0;
|
||
|
virtual int16_t* GetStatusIcons(void) const = 0;
|
||
|
virtual int32_t* GetStatusTimers(void) const = 0;
|
||
|
virtual int16_t* GetBuffs(void) const = 0;
|
||
|
|
||
|
// Helper Functions
|
||
|
virtual bool HasAbility(uint32_t id) const = 0;
|
||
|
virtual bool HasKeyItem(uint32_t id) const = 0;
|
||
|
virtual bool HasPetCommand(uint32_t id) const = 0;
|
||
|
virtual bool HasSpell(uint32_t id) const = 0;
|
||
|
virtual bool HasTrait(uint32_t id) const = 0;
|
||
|
virtual bool HasWeaponSkill(uint32_t id) const = 0;
|
||
|
|
||
|
// Pet Functions
|
||
|
virtual uint32_t GetPetTP(void) const = 0;
|
||
|
virtual uint32_t GetPetMP(void) const = 0;
|
||
|
};
|
||
|
|
||
|
interface ITarget
|
||
|
{
|
||
|
// Property Getters
|
||
|
virtual uint32_t GetTargetIndex(void) const = 0;
|
||
|
virtual uint32_t GetTargetServerId(void) const = 0;
|
||
|
virtual uintptr_t GetTargetEntityPointer(void) const = 0;
|
||
|
virtual uintptr_t GetTargetWarpPointer(void) const = 0;
|
||
|
virtual uint8_t GetTargetVisible(void) const = 0;
|
||
|
virtual uint16_t GetTargetMask(void) const = 0;
|
||
|
virtual uint16_t GetTargetCalculatedId(void) const = 0;
|
||
|
virtual uint32_t GetSubTargetIndex(void) const = 0;
|
||
|
virtual uint32_t GetSubTargetServerId(void) const = 0;
|
||
|
virtual uintptr_t GetSubTargetEntityPointer(void) const = 0;
|
||
|
virtual uintptr_t GetSubTargetWarpPointer(void) const = 0;
|
||
|
virtual uint8_t GetSubTargetVisible(void) const = 0;
|
||
|
virtual uint16_t GetSubTargetMask(void) const = 0;
|
||
|
virtual uint8_t GetSubTargetActive(void) const = 0;
|
||
|
virtual uint8_t GetTargetDeactivate(void) const = 0;
|
||
|
virtual uint8_t GetIsLockedOn(void) const = 0;
|
||
|
virtual uint32_t GetTargetSelectionMask(void) const = 0;
|
||
|
virtual uint8_t GetIsMenuOpen(void) const = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Input Related Interfaces
|
||
|
//
|
||
|
// IKeyboard
|
||
|
//
|
||
|
// Exposes functions to interact with the hooked and wrapped keyboard device.
|
||
|
//
|
||
|
// IMouse
|
||
|
//
|
||
|
// Exposes functions to interact with the hooked and wrapped mouse device.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IKeyboard : newIDirectInputDevice8A
|
||
|
{
|
||
|
// Keybind Related Functions
|
||
|
virtual void BindKey(uint32_t key, bool down, bool alt, bool ctrl, bool win, bool apps, bool shift, const char* command) = 0;
|
||
|
virtual void UnbindKey(uint32_t key, bool down, bool alt, bool ctrl, bool win, bool apps, bool shift) = 0;
|
||
|
virtual void UnbindAll(void) = 0;
|
||
|
virtual bool IsKeyBound(uint32_t key, bool alt, bool ctrl, bool win, bool apps, bool shift) = 0;
|
||
|
virtual void ListBinds(void) = 0;
|
||
|
|
||
|
// Callback Related Functions
|
||
|
virtual void AddCallback(const char* alias, LPVOID lpGetDataCallback, LPVOID lpGetStateCallback, LPVOID lpKeyboardCallack, LPVOID lpMouseCallback) = 0;
|
||
|
virtual void RemoveCallback(const char* alias) = 0;
|
||
|
|
||
|
// Key Related Helper Functions
|
||
|
virtual uint32_t V2D(uint32_t key) const = 0;
|
||
|
virtual uint32_t D2V(uint32_t key) const = 0;
|
||
|
virtual uint32_t S2D(const char* key) const = 0;
|
||
|
virtual const char* D2S(uint32_t key) const = 0;
|
||
|
|
||
|
virtual HWND GetParentWindow(void) const = 0;
|
||
|
virtual bool GetBlocked(void) const = 0;
|
||
|
virtual void SetBlocked(bool blocked) = 0;
|
||
|
};
|
||
|
|
||
|
interface IMouse : newIDirectInputDevice8A
|
||
|
{
|
||
|
virtual HWND GetParentWindow(void) const = 0;
|
||
|
virtual bool GetBlocked(void) const = 0;
|
||
|
virtual void SetBlocked(bool blocked) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita Core
|
||
|
//
|
||
|
// The main Ashita interface passed to plugins when they are loaded that includes the ability
|
||
|
// to obtain and interact with the other various objects defined in this header.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IAshitaCore
|
||
|
{
|
||
|
// Manager Exposure Functions
|
||
|
virtual IChatManager* GetChatManager(void) const = 0;
|
||
|
virtual IConfigurationManager* GetConfigurationManager(void) const = 0;
|
||
|
virtual IDataManager* GetDataManager(void) const = 0;
|
||
|
virtual IFontManager* GetFontManager(void) const = 0;
|
||
|
virtual IGuiManager* GetGuiManager(void) const = 0;
|
||
|
virtual IInputManager* GetInputManager(void) const = 0;
|
||
|
virtual IPacketManager* GetPacketManager(void) const = 0;
|
||
|
virtual IPluginManager* GetPluginManager(void) const = 0;
|
||
|
virtual IPointerManager* GetPointerManager(void) const = 0;
|
||
|
virtual IResourceManager* GetResourceManager(void) const = 0;
|
||
|
|
||
|
// Ashita Property Functions
|
||
|
virtual HMODULE GetHandle(void) const = 0;
|
||
|
virtual const char* GetAshitaInstallPathA(void) const = 0;
|
||
|
virtual const wchar_t* GetAshitaInstallPathW(void) const = 0;
|
||
|
virtual Ashita::aswindowinfo_t* GetPlayOnlineWindowInfo(void) const = 0;
|
||
|
virtual Ashita::aswindowinfo_t* GetMaskWindowInfo(void) const = 0;
|
||
|
virtual Ashita::aswindowinfo_t* GetFFXiWindowInfo(void) const = 0;
|
||
|
virtual bool GetMouseUnhooked(void) const = 0;
|
||
|
virtual void SetMouseUnhooked(bool hooked) = 0;
|
||
|
|
||
|
// Direct3D Property Functions
|
||
|
virtual uint32_t GetD3DFillMode(void) const = 0;
|
||
|
virtual bool GetD3DAmbientEnabled(void) const = 0;
|
||
|
virtual D3DCOLOR GetD3DAmbientColor(void) const = 0;
|
||
|
virtual void SetD3DFillMode(uint32_t fillmode) = 0;
|
||
|
virtual void SetD3DAmbientEnabled(bool enabled) = 0;
|
||
|
virtual void SetD3DAmbientColor(D3DCOLOR color) = 0;
|
||
|
|
||
|
// DirectInput Property Functions
|
||
|
virtual bool GetAllowGamepadInBackground(void) const = 0;
|
||
|
virtual void SetAllowGamepadInBackground(bool enabled) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Plugin Information
|
||
|
//
|
||
|
// Plugin information that is shared back to the Ashita plugin manager while a plugin is being
|
||
|
// loaded. Plugins must populate this data in order to be considered valid.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
struct plugininfo_t
|
||
|
{
|
||
|
char Name[512]; // The plugins name.
|
||
|
char Author[512]; // The plugins author.
|
||
|
double InterfaceVersion; // The plugins ADK interface version that it was compiled with.
|
||
|
double PluginVersion; // The plugins version.
|
||
|
int32_t Priority; // The plugins execution priority.
|
||
|
|
||
|
/**
|
||
|
* Default Constructor
|
||
|
*/
|
||
|
plugininfo_t(void)
|
||
|
{
|
||
|
strcpy_s(this->Name, 512, "Unknown");
|
||
|
strcpy_s(this->Author, 512, "Ashita Development Team");
|
||
|
|
||
|
this->InterfaceVersion = ASHITA_INTERFACE_VERSION;
|
||
|
this->PluginVersion = 1.0f;
|
||
|
this->Priority = 0;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Default Constructor
|
||
|
*/
|
||
|
plugininfo_t(const char* name, const char* author, double interfaceVersion, double pluginVersion, int32_t priority)
|
||
|
{
|
||
|
strcpy_s(this->Name, 512, name);
|
||
|
strcpy_s(this->Author, 512, author);
|
||
|
|
||
|
this->InterfaceVersion = interfaceVersion;
|
||
|
this->PluginVersion = pluginVersion;
|
||
|
this->Priority = priority;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Plugin Base
|
||
|
//
|
||
|
// The main plugin interface that exposes the proper implementation of a plugins base class.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
interface IPluginBase
|
||
|
{
|
||
|
/**
|
||
|
* Returns the plugins information structure.
|
||
|
*
|
||
|
* @returns {plugininfo_t} The plugin information structure of the plugin.
|
||
|
*/
|
||
|
virtual plugininfo_t GetPluginInfo(void) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the plugin is loaded, allowing it to prepare for usage.
|
||
|
*
|
||
|
* @param {IAshitaCore*} core - The Ashita core object to interact with the various Ashita managers.
|
||
|
* @param {ILogManager*} log - The log manager used to interact with the current log file.
|
||
|
* @param {uint32_t} id - The plugins id, or its module base, that identifies it other than its name.
|
||
|
* @returns {bool} True on success, false otherwise. (If false, the plugin will not be loaded.)
|
||
|
*/
|
||
|
virtual bool Initialize(IAshitaCore* core, ILogManager* log, uint32_t id) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the plugin is being unloaded, allowing it to cleanup its resources.
|
||
|
*/
|
||
|
virtual void Release(void) = 0;
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
// Chat Manager Callbacks
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
/**
|
||
|
* Invoked when a command is being processed by the game client.
|
||
|
*
|
||
|
* Note:
|
||
|
* Please note, this handles all things done via the game in terms of commands
|
||
|
* and chat. All / commands as well as normal chat you type, macros, etc. will
|
||
|
* be processed through here. You should only use this to handle / commands.
|
||
|
*
|
||
|
* If you wish to handle other bits of outgoing text before the client sees it,
|
||
|
* then use the HandleOutgoingText callback instead.
|
||
|
*
|
||
|
* @param {const char*} command - The raw command string being processed.
|
||
|
* @param {uint32_t} type - The type of the command being processed. (See Ashita::CommandInputType enumeration.)
|
||
|
* @returns {bool} True if handled and should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool HandleCommand(const char* command, int32_t type) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when incoming text being sent to the chat log is being processed.
|
||
|
*
|
||
|
* @param {int16_t} mode - The mode of the message being added to the chatlog.
|
||
|
* @param {const char*} message - The raw message being added to the chat log.
|
||
|
* @param {int16_t*} modifiedMode - The modified mode, if any, that has been altered by other plugins/addons.
|
||
|
* @param {char*} modifiedMessage - The modified message, if any, that has been altered by other plugins/addons.
|
||
|
* @param {bool} blocked - Flag if this message has been blocked already by another plugin. (Once blocked, other plugins cannot restore it.)
|
||
|
* @returns {bool} True if handled and should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool HandleIncomingText(int16_t mode, const char* message, int16_t* modifiedMode, char* modifiedMessage, bool blocked) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when outgoing text has not been handled by other plugins/addons.
|
||
|
* Invoked after HandleCommand if nothing else processed the data.
|
||
|
*
|
||
|
* @param {int16_t} mode - The type of the text that is being sent. (See Ashita::CommandInputType enumeration.)
|
||
|
* @param {const char*} message - The raw message being sent.
|
||
|
* @param {int16_t*} modifiedMode - The modified mode, if any, that has been altered by other plugins/addons.
|
||
|
* @param {char*} modifiedMessage - The modified message, if any, that has been altered by other plugins/addons.
|
||
|
* @param {bool} blocked - Flag if this message has been blocked already by another plugin. (Once blocked, other plugins cannot restore it.)
|
||
|
* @returns {bool} True if handled and should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool HandleOutgoingText(int32_t type, const char* message, int32_t* modifiedType, char* modifiedMessage, bool blocked) = 0;
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
// Packet Manager Callbacks
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
/**
|
||
|
* Invoked when an incoming packet is being handled.
|
||
|
*
|
||
|
* @param {uint16_t} id - The id of the packet.
|
||
|
* @param {uint32_t} size - The size of the packet data.
|
||
|
* @param {void*} data - The raw data of the packet.
|
||
|
* @param {void*} modified - The modified data, if any, that has been altered by other plugins/addons.
|
||
|
* @param {bool} blocked - Flag if this message has been blocked already by another plugin. (Once blocked, other plugins cannot restore it.)
|
||
|
* @returns {bool} True if handled and should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool HandleIncomingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when an outgoing packet is being handled.
|
||
|
*
|
||
|
* @param {uint16_t} id - The id of the packet.
|
||
|
* @param {uint32_t} size - The size of the packet data.
|
||
|
* @param {void*} data - The raw data of the packet.
|
||
|
* @param {void*} modified - The modified data, if any, that has been altered by other plugins/addons.
|
||
|
* @param {bool} blocked - Flag if this message has been blocked already by another plugin. (Once blocked, other plugins cannot restore it.)
|
||
|
* @returns {bool} True if handled and should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool HandleOutgoingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked) = 0;
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
// Direct3D Callbacks
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
/**
|
||
|
* Invoked when the plugin is being initialized for Direct3D rendering.
|
||
|
*
|
||
|
* Note:
|
||
|
* Plugins must return true with this function in order to have the other Direct3D
|
||
|
* functions invoked. Returning false is ideal here if you do not need to use the
|
||
|
* Direct3D functions within your plugin. This can help with overall performance.
|
||
|
*
|
||
|
* @param {IDirect3DDevice8*} device - The Direct3D device pointer currently being used by the game.
|
||
|
* @return {bool} True if the plugin should handle the other Direct3D messages, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DInitialize(IDirect3DDevice8* device) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the plugin is being unloaded and is able to cleanup its Direct3D related resources.
|
||
|
*/
|
||
|
virtual void Direct3DRelease(void) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is beginning to render. (BeginScene)
|
||
|
*/
|
||
|
virtual void Direct3DPreRender(void) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is ending its rendering. (EndScene)
|
||
|
*/
|
||
|
virtual void Direct3DRender(void) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is presenting the scene. (Present)
|
||
|
*
|
||
|
* @param {RECT*} pSourceRect - The source rect being rendered into.
|
||
|
* @param {RECT*} pDestRect - The destination rect being rendered from.
|
||
|
* @param {HWND} hDestWindowOverride - The window handle, if any, to override the rendering into.
|
||
|
* @param {RGNDATA*} pDirtyRegion - The dirty region data.
|
||
|
* @returns {bool} True if the call should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DPresent(const RECT* pSourceRect, const RECT* pDestRect, HWND hDestWindowOverride, const RGNDATA* pDirtyRegion) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is drawing a primitive to the scene. (DrawPrimitive)
|
||
|
*
|
||
|
* @param {D3DPRIMITIVETYPE} PrimitiveType - The type of primitive being rendered.
|
||
|
* @param {UINT} StartVertex - Index of the first vertex to load.
|
||
|
* @param {UINT} PrimitiveCount - Number of primitives to render.
|
||
|
* @returns {bool} True if the call should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DDrawPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is drawing a primitive to the scene. (DrawIndexedPrimitive)
|
||
|
*
|
||
|
* @param {D3DPRIMITIVETYPE} PrimitiveType - The type of primitive being rendered.
|
||
|
* @param {UINT} minIndex - Minimum vertex index for vertices used during this call.
|
||
|
* @param {UINT} numVertices - Number of vertices used during this call
|
||
|
* @param {UINT} startIndex - Index of the first index to use when accesssing the vertex buffer.
|
||
|
* @param {UINT} primCount - Number of primitives to render.
|
||
|
* @returns {bool} True if the call should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DDrawIndexedPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT minIndex, UINT NumVertices, UINT startIndex, UINT primCount) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is drawing a primitive to the scene. (DrawPrimitiveUP)
|
||
|
*
|
||
|
* @param {D3DPRIMITIVETYPE} PrimitiveType - The type of primitive being rendered.
|
||
|
* @param {UINT} PrimitiveCount - Number of primitives to render.
|
||
|
* @param {void*} pVertexStreamZeroData - User memory pointer to the vertex data.
|
||
|
* @param {UINT} VertexStreamZeroStride - The number of bytes of data for each vertex.
|
||
|
* @returns {bool} True if the call should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DDrawPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is drawing a primitive to the scene. (DrawIndexedPrimitiveUP)
|
||
|
*
|
||
|
* @param {D3DPRIMITIVETYPE} PrimitiveType - The type of primitive being rendered.
|
||
|
* @param {UINT} MinVertexIndex - Minimum vertex index.
|
||
|
* @param {UINT} NumVertexIndices - Number of vertices used during this call.
|
||
|
* @param {UINT} PrimitiveCount - Number of primitives to render.
|
||
|
* @param {void*} pIndexData - User memory pointer to the index data.
|
||
|
* @param {D3DFORMAT} IndexDataFormat - The format of the index data.
|
||
|
* @param {void*} pVertexStreamZeroData - User memory pointer to the vertex data.
|
||
|
* @param {UINT} VertexStreamZeroStride - The number of bytes of data for each vertex.
|
||
|
* @returns {bool} True if the call should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DDrawIndexedPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertexIndices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) = 0;
|
||
|
|
||
|
/**
|
||
|
* Invoked when the Direct3D device is setting a render state. (SetRenderState)
|
||
|
*
|
||
|
* @param {D3DRENDERSTATETYPE} state - The render state to alter.
|
||
|
* @param {DWORD} value - The new value for the render state.
|
||
|
* @returns {bool} True if the call should be blocked, false otherwise.
|
||
|
*/
|
||
|
virtual bool Direct3DSetRenderState(D3DRENDERSTATETYPE State, DWORD Value) = 0;
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Plugin
|
||
|
//
|
||
|
// The main base class that plugins should inherit from. Defaults the function handlers that are
|
||
|
// not overriden to ensure that the plugin does not interfere with calls that it does not use.
|
||
|
//
|
||
|
// Note:
|
||
|
// Plugins should inherit from this base class to ensure they meet the standards of being
|
||
|
// a valid Ashita plugin. Failure to export a class that inherits from this base can lead
|
||
|
// to crashes and potential loss of data / settings.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
class IPlugin : public IPluginBase
|
||
|
{
|
||
|
protected:
|
||
|
IAshitaCore* m_AshitaCore;
|
||
|
ILogManager* m_LogManager;
|
||
|
uint32_t m_PluginId;
|
||
|
IDirect3DDevice8* m_Direct3DDevice;
|
||
|
|
||
|
public:
|
||
|
IPlugin(void) { }
|
||
|
virtual ~IPlugin(void) { }
|
||
|
|
||
|
public:
|
||
|
plugininfo_t GetPluginInfo(void) override
|
||
|
{
|
||
|
return plugininfo_t("IPlugin", "Ashita Development Team", ASHITA_INTERFACE_VERSION, 1.0f, 0);
|
||
|
}
|
||
|
|
||
|
public:
|
||
|
bool Initialize(IAshitaCore* core, ILogManager* log, uint32_t id) override
|
||
|
{
|
||
|
this->m_AshitaCore = core;
|
||
|
this->m_LogManager = log;
|
||
|
this->m_Direct3DDevice = nullptr;
|
||
|
this->m_PluginId = id;
|
||
|
return false;
|
||
|
}
|
||
|
void Release(void) override
|
||
|
{ }
|
||
|
bool HandleCommand(const char* command, int32_t type) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(command);
|
||
|
UNREFERENCED_PARAMETER(type);
|
||
|
return false;
|
||
|
}
|
||
|
bool HandleIncomingText(int16_t mode, const char* message, int16_t* modifiedMode, char* modifiedMessage, bool blocked) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(mode);
|
||
|
UNREFERENCED_PARAMETER(message);
|
||
|
UNREFERENCED_PARAMETER(modifiedMode);
|
||
|
UNREFERENCED_PARAMETER(modifiedMessage);
|
||
|
UNREFERENCED_PARAMETER(blocked);
|
||
|
return false;
|
||
|
}
|
||
|
bool HandleOutgoingText(int32_t type, const char* message, int32_t* modifiedType, char* modifiedMessage, bool blocked) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(type);
|
||
|
UNREFERENCED_PARAMETER(message);
|
||
|
UNREFERENCED_PARAMETER(modifiedType);
|
||
|
UNREFERENCED_PARAMETER(modifiedMessage);
|
||
|
UNREFERENCED_PARAMETER(blocked);
|
||
|
return false;
|
||
|
}
|
||
|
bool HandleIncomingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(id);
|
||
|
UNREFERENCED_PARAMETER(size);
|
||
|
UNREFERENCED_PARAMETER(data);
|
||
|
UNREFERENCED_PARAMETER(modified);
|
||
|
UNREFERENCED_PARAMETER(blocked);
|
||
|
return false;
|
||
|
}
|
||
|
bool HandleOutgoingPacket(uint16_t id, uint32_t size, void* data, void* modified, bool blocked) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(id);
|
||
|
UNREFERENCED_PARAMETER(size);
|
||
|
UNREFERENCED_PARAMETER(data);
|
||
|
UNREFERENCED_PARAMETER(modified);
|
||
|
UNREFERENCED_PARAMETER(blocked);
|
||
|
return false;
|
||
|
}
|
||
|
bool Direct3DInitialize(IDirect3DDevice8* device) override
|
||
|
{
|
||
|
this->m_Direct3DDevice = device;
|
||
|
return false;
|
||
|
}
|
||
|
void Direct3DRelease(void) override
|
||
|
{ }
|
||
|
void Direct3DPreRender(void) override
|
||
|
{ }
|
||
|
void Direct3DRender(void) override
|
||
|
{ }
|
||
|
bool Direct3DPresent(const RECT* pSourceRect, const RECT* pDestRect, HWND hDestWindowOverride, const RGNDATA* pDirtyRegion) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(pSourceRect);
|
||
|
UNREFERENCED_PARAMETER(pDestRect);
|
||
|
UNREFERENCED_PARAMETER(hDestWindowOverride);
|
||
|
UNREFERENCED_PARAMETER(pDirtyRegion);
|
||
|
return false;
|
||
|
}
|
||
|
bool Direct3DDrawPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT StartVertex, UINT PrimitiveCount) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(PrimitiveType);
|
||
|
UNREFERENCED_PARAMETER(StartVertex);
|
||
|
UNREFERENCED_PARAMETER(PrimitiveCount);
|
||
|
return false;
|
||
|
}
|
||
|
bool Direct3DDrawIndexedPrimitive(D3DPRIMITIVETYPE PrimitiveType, UINT minIndex, UINT NumVertices, UINT startIndex, UINT primCount) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(PrimitiveType);
|
||
|
UNREFERENCED_PARAMETER(minIndex);
|
||
|
UNREFERENCED_PARAMETER(NumVertices);
|
||
|
UNREFERENCED_PARAMETER(startIndex);
|
||
|
UNREFERENCED_PARAMETER(primCount);
|
||
|
return false;
|
||
|
}
|
||
|
bool Direct3DDrawPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT PrimitiveCount, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(PrimitiveType);
|
||
|
UNREFERENCED_PARAMETER(PrimitiveCount);
|
||
|
UNREFERENCED_PARAMETER(pVertexStreamZeroData);
|
||
|
UNREFERENCED_PARAMETER(VertexStreamZeroStride);
|
||
|
return false;
|
||
|
}
|
||
|
bool Direct3DDrawIndexedPrimitiveUP(D3DPRIMITIVETYPE PrimitiveType, UINT MinVertexIndex, UINT NumVertexIndices, UINT PrimitiveCount, CONST void* pIndexData, D3DFORMAT IndexDataFormat, CONST void* pVertexStreamZeroData, UINT VertexStreamZeroStride) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(PrimitiveType);
|
||
|
UNREFERENCED_PARAMETER(MinVertexIndex);
|
||
|
UNREFERENCED_PARAMETER(NumVertexIndices);
|
||
|
UNREFERENCED_PARAMETER(PrimitiveCount);
|
||
|
UNREFERENCED_PARAMETER(pIndexData);
|
||
|
UNREFERENCED_PARAMETER(IndexDataFormat);
|
||
|
UNREFERENCED_PARAMETER(pVertexStreamZeroData);
|
||
|
UNREFERENCED_PARAMETER(VertexStreamZeroStride);
|
||
|
return false;
|
||
|
}
|
||
|
bool Direct3DSetRenderState(D3DRENDERSTATETYPE State, DWORD Value) override
|
||
|
{
|
||
|
UNREFERENCED_PARAMETER(State);
|
||
|
UNREFERENCED_PARAMETER(Value);
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Ashita Plugin Exports
|
||
|
//
|
||
|
// These functions are required to be exported by all plugins in order to be validated
|
||
|
// for loading. Failure to export these functions will result in your plugin not being
|
||
|
// loaded. Plugins must return proper data for the plugin information and plugin creation
|
||
|
// otherwise it can lead to crashes!
|
||
|
//
|
||
|
// getinterfaceversion_f
|
||
|
// Exported function to return the plugins interface version it was compiled with.
|
||
|
//
|
||
|
// createplugininfo_f
|
||
|
// Exported function to return information about the given plugin back to Ashita.
|
||
|
// This info is used to validate the plugin as well as used when the plugin list is printed.
|
||
|
//
|
||
|
// createplugin_f
|
||
|
// Exported function to return a new instance of the plugins base class. This class must
|
||
|
// inherit from IPlugin as the returned value will be the inherited base object.
|
||
|
//
|
||
|
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
typedef double /**/(__stdcall *getinterfaceversion_f)(void);
|
||
|
typedef void /**/(__stdcall *createplugininfo_f)(plugininfo_t* info);
|
||
|
typedef IPlugin* /**/(__stdcall *createplugin_f)(void);
|
||
|
|
||
|
#endif // __ASHITA_ADK_H_INCLUDED__
|