mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-24 21:57:44 +00:00
Code style adjusted for 2 spaces and various other small things, checkout CodeStyle.xml for details
This commit is contained in:
parent
2a74f6908e
commit
e745bd0329
546 changed files with 51735 additions and 45827 deletions
103
CodeStyle.xml
Normal file
103
CodeStyle.xml
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
<code_scheme name="Default" version="173">
|
||||||
|
<option name="AUTODETECT_INDENTS" value="false" />
|
||||||
|
<Objective-C>
|
||||||
|
<option name="INDENT_NAMESPACE_MEMBERS" value="0" />
|
||||||
|
<option name="INDENT_C_STRUCT_MEMBERS" value="2" />
|
||||||
|
<option name="INDENT_CLASS_MEMBERS" value="2" />
|
||||||
|
<option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
|
||||||
|
<option name="FUNCTION_BRACE_PLACEMENT" value="2" />
|
||||||
|
<option name="BLOCK_BRACE_PLACEMENT" value="2" />
|
||||||
|
<option name="CLASS_CONSTRUCTOR_INIT_LIST_NEW_LINE_BEFORE_COLON" value="0" />
|
||||||
|
<option name="CLASS_CONSTRUCTOR_INIT_LIST_NEW_LINE_AFTER_COLON" value="1" />
|
||||||
|
<option name="SUPERCLASS_LIST_ALIGN_MULTILINE" value="false" />
|
||||||
|
<option name="SUPERCLASS_LIST_BEFORE_COLON" value="0" />
|
||||||
|
<option name="SUPERCLASS_LIST_AFTER_COLON" value="1" />
|
||||||
|
<option name="SPACE_WITHIN_TEMPLATE_DECLARATION_LTGT" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_TEMPLATE_CALL_LTGT" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_FUNCTION_DECLARATION_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_FUNCTION_CALL_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_LAMBDA_CAPTURE_LIST_BRACKET" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_POINTER_IN_DECLARATION" value="false" />
|
||||||
|
<option name="SPACE_AFTER_POINTER_IN_DECLARATION" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_REFERENCE_IN_DECLARATION" value="false" />
|
||||||
|
<option name="SPACE_AFTER_REFERENCE_IN_DECLARATION" value="true" />
|
||||||
|
<option name="SPACE_BETWEEN_ADJACENT_BRACKETS" value="true" />
|
||||||
|
<option name="DISCHARGED_SHORT_TERNARY_OPERATOR" value="true" />
|
||||||
|
</Objective-C>
|
||||||
|
<Objective-C-extensions>
|
||||||
|
<file>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
|
||||||
|
</file>
|
||||||
|
<class>
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
|
||||||
|
<option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
|
||||||
|
</class>
|
||||||
|
<extensions>
|
||||||
|
<pair source="cpp" header="h" fileNamingConvention="NONE" />
|
||||||
|
<pair source="c" header="h" fileNamingConvention="NONE" />
|
||||||
|
</extensions>
|
||||||
|
</Objective-C-extensions>
|
||||||
|
<DBN-PSQL>
|
||||||
|
<case-options enabled="false">
|
||||||
|
<option name="KEYWORD_CASE" value="lower" />
|
||||||
|
<option name="FUNCTION_CASE" value="lower" />
|
||||||
|
<option name="PARAMETER_CASE" value="lower" />
|
||||||
|
<option name="DATATYPE_CASE" value="lower" />
|
||||||
|
<option name="OBJECT_CASE" value="preserve" />
|
||||||
|
</case-options>
|
||||||
|
<formatting-settings enabled="false" />
|
||||||
|
</DBN-PSQL>
|
||||||
|
<DBN-SQL>
|
||||||
|
<case-options enabled="false">
|
||||||
|
<option name="KEYWORD_CASE" value="lower" />
|
||||||
|
<option name="FUNCTION_CASE" value="lower" />
|
||||||
|
<option name="PARAMETER_CASE" value="lower" />
|
||||||
|
<option name="DATATYPE_CASE" value="lower" />
|
||||||
|
<option name="OBJECT_CASE" value="preserve" />
|
||||||
|
</case-options>
|
||||||
|
<formatting-settings enabled="false">
|
||||||
|
<option name="STATEMENT_SPACING" value="one_line" />
|
||||||
|
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
|
||||||
|
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
|
||||||
|
</formatting-settings>
|
||||||
|
</DBN-SQL>
|
||||||
|
<codeStyleSettings language="ObjectiveC">
|
||||||
|
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
||||||
|
<option name="BRACE_STYLE" value="2" />
|
||||||
|
<option name="CLASS_BRACE_STYLE" value="2" />
|
||||||
|
<option name="ELSE_ON_NEW_LINE" value="true" />
|
||||||
|
<option name="SPACE_AROUND_LAMBDA_ARROW" value="false" />
|
||||||
|
<option name="SPACE_WITHIN_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_IF_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_WHILE_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_FOR_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_CATCH_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_SWITCH_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_CAST_PARENTHESES" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_BRACKETS" value="true" />
|
||||||
|
<option name="SPACE_WITHIN_ARRAY_INITIALIZER_BRACES" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_IF_PARENTHESES" value="false" />
|
||||||
|
<option name="SPACE_BEFORE_WHILE_PARENTHESES" value="false" />
|
||||||
|
<option name="SPACE_BEFORE_FOR_PARENTHESES" value="false" />
|
||||||
|
<option name="SPACE_BEFORE_CATCH_PARENTHESES" value="false" />
|
||||||
|
<option name="SPACE_BEFORE_SWITCH_PARENTHESES" value="false" />
|
||||||
|
<option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="false" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
|
@ -14,38 +14,41 @@
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
|
||||||
// 99 is the last spawn id that seems to spawn any actor
|
// 99 is the last spawn id that seems to spawn any actor
|
||||||
const uint8_t MAX_DISPLAYED_ACTORS = 99;
|
const uint8_t MAX_DISPLAYED_ACTORS = 99;
|
||||||
const uint8_t MAX_DISPLAYED_EOBJS = 40;
|
const uint8_t MAX_DISPLAYED_EOBJS = 40;
|
||||||
|
|
||||||
const int32_t INVALID_GAME_OBJECT_ID = 0xE0000000;
|
const int32_t INVALID_GAME_OBJECT_ID = 0xE0000000;
|
||||||
|
|
||||||
struct FFXIVARR_POSITION3
|
struct FFXIVARR_POSITION3
|
||||||
{
|
{
|
||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
float z;
|
float z;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum InventoryOperation : uint8_t
|
enum InventoryOperation :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Discard = 0x07,
|
Discard = 0x07,
|
||||||
Move = 0x08,
|
Move = 0x08,
|
||||||
Swap = 0x09,
|
Swap = 0x09,
|
||||||
Merge = 0x0C,
|
Merge = 0x0C,
|
||||||
Split = 0x0A
|
Split = 0x0A
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ClientLanguage : uint8_t
|
enum ClientLanguage :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Japanese = 1,
|
Japanese = 1,
|
||||||
English = 2,
|
English = 2,
|
||||||
German = 4,
|
German = 4,
|
||||||
French = 8
|
French = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ObjKind : uint8_t
|
enum ObjKind :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 0x00,
|
None = 0x00,
|
||||||
Player = 0x01,
|
Player = 0x01,
|
||||||
BattleNpc = 0x02,
|
BattleNpc = 0x02,
|
||||||
|
@ -61,26 +64,29 @@ namespace Common {
|
||||||
Housing = 0x0C,
|
Housing = 0x0C,
|
||||||
Cutscene = 0x0D,
|
Cutscene = 0x0D,
|
||||||
CardStand = 0x0E,
|
CardStand = 0x0E,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Stance : uint8_t
|
enum Stance :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Passive = 0,
|
Passive = 0,
|
||||||
Active = 1,
|
Active = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class DisplayFlags : uint16_t
|
enum class DisplayFlags :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
ActiveStance = 0x001,
|
ActiveStance = 0x001,
|
||||||
Invisible = 0x020,
|
Invisible = 0x020,
|
||||||
HideHead = 0x040,
|
HideHead = 0x040,
|
||||||
HideWeapon = 0x080,
|
HideWeapon = 0x080,
|
||||||
Faded = 0x100,
|
Faded = 0x100,
|
||||||
Visor = 0x800,
|
Visor = 0x800,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum struct ActorStatus : uint8_t
|
enum struct ActorStatus :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Idle = 0x01,
|
Idle = 0x01,
|
||||||
Dead = 0x02,
|
Dead = 0x02,
|
||||||
Sitting = 0x03,
|
Sitting = 0x03,
|
||||||
|
@ -91,10 +97,11 @@ namespace Common {
|
||||||
SMachine = 0x08,
|
SMachine = 0x08,
|
||||||
Carry = 0x09,
|
Carry = 0x09,
|
||||||
EmoteMode = 0x0B
|
EmoteMode = 0x0B
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GearSetSlot : uint8_t
|
enum GearSetSlot :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
MainHand = 0,
|
MainHand = 0,
|
||||||
OffHand = 1,
|
OffHand = 1,
|
||||||
Head = 2,
|
Head = 2,
|
||||||
|
@ -109,10 +116,11 @@ namespace Common {
|
||||||
Ring1 = 11,
|
Ring1 = 11,
|
||||||
Ring2 = 12,
|
Ring2 = 12,
|
||||||
SoulCrystal = 13,
|
SoulCrystal = 13,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EquipSlotCategory : uint8_t
|
enum EquipSlotCategory :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Unequippable = 0,
|
Unequippable = 0,
|
||||||
|
|
||||||
// main slots
|
// main slots
|
||||||
|
@ -149,10 +157,11 @@ namespace Common {
|
||||||
BodyDisallowHands = 20,
|
BodyDisallowHands = 20,
|
||||||
/*! Cannot equip gear to legs & feet slots */
|
/*! Cannot equip gear to legs & feet slots */
|
||||||
BodyDisallowLegsFeet = 21,
|
BodyDisallowLegsFeet = 21,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum InventoryType : uint16_t
|
enum InventoryType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
Bag0 = 0,
|
Bag0 = 0,
|
||||||
Bag1 = 1,
|
Bag1 = 1,
|
||||||
Bag2 = 2,
|
Bag2 = 2,
|
||||||
|
@ -201,20 +210,22 @@ namespace Common {
|
||||||
FreeCompanyBag2 = 20002,
|
FreeCompanyBag2 = 20002,
|
||||||
FreeCompanyGil = 22000,
|
FreeCompanyGil = 22000,
|
||||||
FreeCompanyCrystal = 22001
|
FreeCompanyCrystal = 22001
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ContainerType : uint16_t
|
enum ContainerType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
Unknown = 0,
|
Unknown = 0,
|
||||||
Bag = 1,
|
Bag = 1,
|
||||||
GearSet = 2,
|
GearSet = 2,
|
||||||
CurrencyCrystal = 3,
|
CurrencyCrystal = 3,
|
||||||
Armory = 4
|
Armory = 4
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
enum CurrencyType : uint8_t
|
enum CurrencyType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Gil = 0x01,
|
Gil = 0x01,
|
||||||
StormSeal = 0x02,
|
StormSeal = 0x02,
|
||||||
SerpentSeal = 0x03,
|
SerpentSeal = 0x03,
|
||||||
|
@ -229,10 +240,11 @@ namespace Common {
|
||||||
TomestoneLaw = 0x0C,
|
TomestoneLaw = 0x0C,
|
||||||
TomestoneEso = 0x0D,
|
TomestoneEso = 0x0D,
|
||||||
TomestoneLore = 0x0E
|
TomestoneLore = 0x0E
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CrystalType : uint8_t
|
enum CrystalType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
FireShard = 0x01,
|
FireShard = 0x01,
|
||||||
IceShard = 0x02,
|
IceShard = 0x02,
|
||||||
WindShard = 0x03,
|
WindShard = 0x03,
|
||||||
|
@ -253,34 +265,37 @@ namespace Common {
|
||||||
EarthCluster = 0x10,
|
EarthCluster = 0x10,
|
||||||
LightningCluster = 0x11,
|
LightningCluster = 0x11,
|
||||||
WaterCluster = 0x12
|
WaterCluster = 0x12
|
||||||
};
|
};
|
||||||
|
|
||||||
enum struct ZoneingType : uint8_t
|
enum struct ZoneingType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 1,
|
None = 1,
|
||||||
Teleport = 2,
|
Teleport = 2,
|
||||||
Return = 3,
|
Return = 3,
|
||||||
ReturnDead = 4,
|
ReturnDead = 4,
|
||||||
FadeIn = 5,
|
FadeIn = 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum struct ResurrectType : uint8_t
|
enum struct ResurrectType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
RaiseSpell = 5,
|
RaiseSpell = 5,
|
||||||
Return = 8
|
Return = 8
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Gender : uint8_t
|
enum Gender :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Male = 0,
|
Male = 0,
|
||||||
Female = 1,
|
Female = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum struct GCRank :
|
||||||
enum struct GCRank : uint8_t
|
uint8_t
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
PrivateThirdClass = 1,
|
PrivateThirdClass = 1,
|
||||||
PrivateSecondClass = 2,
|
PrivateSecondClass = 2,
|
||||||
|
@ -301,22 +316,23 @@ namespace Common {
|
||||||
Marshal = 17,
|
Marshal = 17,
|
||||||
GrandMarshal = 18,
|
GrandMarshal = 18,
|
||||||
Champion = 19,
|
Champion = 19,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* Send the entire StatusEffect list
|
* Send the entire StatusEffect list
|
||||||
*/
|
*/
|
||||||
struct StatusEffect
|
struct StatusEffect
|
||||||
{
|
{
|
||||||
uint16_t effect_id;
|
uint16_t effect_id;
|
||||||
uint16_t unknown1;
|
uint16_t unknown1;
|
||||||
float duration;
|
float duration;
|
||||||
uint32_t sourceActorId;
|
uint32_t sourceActorId;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CharaLook : uint8_t
|
enum CharaLook :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Race = 0x00,
|
Race = 0x00,
|
||||||
Gender = 0x01,
|
Gender = 0x01,
|
||||||
Tribe = 0x04,
|
Tribe = 0x04,
|
||||||
|
@ -344,26 +360,28 @@ namespace Common {
|
||||||
Facepaint = 0x18,
|
Facepaint = 0x18,
|
||||||
FacepaintColor = 0x19,
|
FacepaintColor = 0x19,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MoveType : uint8_t
|
enum MoveType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Running = 0x00,
|
Running = 0x00,
|
||||||
Walking = 0x02,
|
Walking = 0x02,
|
||||||
Strafing = 0x04,
|
Strafing = 0x04,
|
||||||
Jumping = 0x10,
|
Jumping = 0x10,
|
||||||
BackWalk = 0x06,
|
BackWalk = 0x06,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum MoveState : uint8_t
|
enum MoveState :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
No = 0x00,
|
No = 0x00,
|
||||||
Land = 0x02,
|
Land = 0x02,
|
||||||
Fall = 0x04,
|
Fall = 0x04,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QuestActive
|
struct QuestActive
|
||||||
{
|
{
|
||||||
QuestActive()
|
QuestActive()
|
||||||
{
|
{
|
||||||
c.questId = 0;
|
c.questId = 0;
|
||||||
|
@ -453,10 +471,11 @@ namespace Common {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum struct ActionAspect : uint8_t
|
enum struct ActionAspect :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 0, // Doesn't imply unaspected
|
None = 0, // Doesn't imply unaspected
|
||||||
Fire = 1,
|
Fire = 1,
|
||||||
Ice = 2,
|
Ice = 2,
|
||||||
|
@ -465,10 +484,11 @@ namespace Common {
|
||||||
Lightning = 5,
|
Lightning = 5,
|
||||||
Water = 6,
|
Water = 6,
|
||||||
Unaspected = 7 // Doesn't imply magical unaspected damage - could be unaspected physical
|
Unaspected = 7 // Doesn't imply magical unaspected damage - could be unaspected physical
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ActionType : int8_t
|
enum class ActionType :
|
||||||
{
|
int8_t
|
||||||
|
{
|
||||||
WeaponOverride = -1, // Needs more investigation (takes the damage type of the equipped weapon)?
|
WeaponOverride = -1, // Needs more investigation (takes the damage type of the equipped weapon)?
|
||||||
Unknown_0 = 0,
|
Unknown_0 = 0,
|
||||||
Slashing = 1,
|
Slashing = 1,
|
||||||
|
@ -479,10 +499,11 @@ namespace Common {
|
||||||
Darkness = 6,
|
Darkness = 6,
|
||||||
Unknown_7 = 7,
|
Unknown_7 = 7,
|
||||||
LimitBreak = 8,
|
LimitBreak = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ActionEffectType : uint8_t
|
enum ActionEffectType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Nothing = 0,
|
Nothing = 0,
|
||||||
Miss = 1,
|
Miss = 1,
|
||||||
FullResist = 2,
|
FullResist = 2,
|
||||||
|
@ -500,27 +521,30 @@ namespace Common {
|
||||||
GpGain = 14,
|
GpGain = 14,
|
||||||
Knockback = 33,
|
Knockback = 33,
|
||||||
Mount = 38
|
Mount = 38
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ActionHitSeverityType : uint8_t
|
enum class ActionHitSeverityType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
NormalDamage = 0,
|
NormalDamage = 0,
|
||||||
CritHeal = 0,
|
CritHeal = 0,
|
||||||
CritDamage = 1,
|
CritDamage = 1,
|
||||||
NormalHeal = 1,
|
NormalHeal = 1,
|
||||||
DirectHitDamage = 2,
|
DirectHitDamage = 2,
|
||||||
CritDirectHitDamage = 3
|
CritDirectHitDamage = 3
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ActionEffectDisplayType : uint8_t
|
enum ActionEffectDisplayType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
HideActionName = 0,
|
HideActionName = 0,
|
||||||
ShowActionName = 1,
|
ShowActionName = 1,
|
||||||
ShowItemName = 2,
|
ShowItemName = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class ActionCollisionType : uint8_t
|
enum class ActionCollisionType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None,
|
None,
|
||||||
SingleTarget,
|
SingleTarget,
|
||||||
Circle,
|
Circle,
|
||||||
|
@ -530,31 +554,35 @@ namespace Common {
|
||||||
Unknown2,
|
Unknown2,
|
||||||
PersistentArea, // for when you set aoe like asylum
|
PersistentArea, // for when you set aoe like asylum
|
||||||
Unknown3
|
Unknown3
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HandleActionType : uint8_t
|
enum HandleActionType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Event,
|
Event,
|
||||||
Spell,
|
Spell,
|
||||||
Teleport
|
Teleport
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HandleSkillType : uint8_t
|
enum HandleSkillType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
StdDamage,
|
StdDamage,
|
||||||
StdHeal,
|
StdHeal,
|
||||||
StdDot,
|
StdDot,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum InvincibilityType : uint8_t
|
enum InvincibilityType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
InvincibilityNone,
|
InvincibilityNone,
|
||||||
InvincibilityRefill,
|
InvincibilityRefill,
|
||||||
InvincibilityStayAlive,
|
InvincibilityStayAlive,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PlayerStateFlag : uint8_t
|
enum PlayerStateFlag :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
HideUILockChar = 0, // as the name suggests, hides the ui and logs the char...
|
HideUILockChar = 0, // as the name suggests, hides the ui and logs the char...
|
||||||
InCombat = 1, // in Combat, locks gearchange/return/teleport
|
InCombat = 1, // in Combat, locks gearchange/return/teleport
|
||||||
Casting = 2,
|
Casting = 2,
|
||||||
|
@ -567,18 +595,20 @@ namespace Common {
|
||||||
WatchingCutscene = 50, // this is actually just a dummy, this id is different
|
WatchingCutscene = 50, // this is actually just a dummy, this id is different
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum struct FateStatus : uint8_t
|
enum struct FateStatus :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Active = 2,
|
Active = 2,
|
||||||
Inactive = 4,
|
Inactive = 4,
|
||||||
Preparing = 7,
|
Preparing = 7,
|
||||||
Completed = 8,
|
Completed = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum struct ChatType : uint16_t
|
enum struct ChatType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
LogKindError,
|
LogKindError,
|
||||||
ServerDebug,
|
ServerDebug,
|
||||||
ServerUrgent,
|
ServerUrgent,
|
||||||
|
@ -680,10 +710,11 @@ namespace Common {
|
||||||
Unused98,
|
Unused98,
|
||||||
Unused99,
|
Unused99,
|
||||||
Unused100
|
Unused100
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EquipDisplayFlags : uint8_t
|
enum EquipDisplayFlags :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
HideNothing = 0x0,
|
HideNothing = 0x0,
|
||||||
HideHead = 0x1,
|
HideHead = 0x1,
|
||||||
HideWeapon = 0x2,
|
HideWeapon = 0x2,
|
||||||
|
@ -693,15 +724,16 @@ namespace Common {
|
||||||
StoreCraftedItemsInInventory = 0x20,
|
StoreCraftedItemsInInventory = 0x20,
|
||||||
|
|
||||||
Visor = 0x40,
|
Visor = 0x40,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum SkillType : uint8_t
|
enum SkillType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Normal = 0x1,
|
Normal = 0x1,
|
||||||
MountSkill = 0xD,
|
MountSkill = 0xD,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::vector< PlayerStateFlag > PlayerStateFlagList;
|
typedef std::vector< PlayerStateFlag > PlayerStateFlagList;
|
||||||
|
|
||||||
} /* Common */
|
} /* Common */
|
||||||
} /* Core */
|
} /* Core */
|
||||||
|
|
|
@ -5,37 +5,164 @@
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
|
||||||
bool operator==( const ActionCategory& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const ActionCategory& t, const uint8_t& g )
|
||||||
bool operator==( const uint8_t& g, const ActionCategory& t ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
bool operator==( const BeastReputationRank& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
return static_cast< uint8_t >( t ) == g;
|
||||||
bool operator==( const uint8_t& g, const BeastReputationRank& t ) { return static_cast< uint8_t >( t ) == g; }
|
}
|
||||||
bool operator==( const BeastTribe& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
|
||||||
bool operator==( const uint8_t& g, const BeastTribe& t ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const uint8_t& g, const ActionCategory& t )
|
||||||
bool operator==( const ClassJob& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
bool operator==( const uint8_t& g, const ClassJob& t ) { return static_cast< uint8_t >( t ) == g; }
|
return static_cast< uint8_t >( t ) == g;
|
||||||
bool operator==( const ContentType& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
}
|
||||||
bool operator==( const uint8_t& g, const ContentType& t ) { return static_cast< uint8_t >( t ) == g; }
|
|
||||||
bool operator==( const EmoteCategory& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const BeastReputationRank& t, const uint8_t& g )
|
||||||
bool operator==( const uint8_t& g, const EmoteCategory& t ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
bool operator==( const ExVersion& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
return static_cast< uint8_t >( t ) == g;
|
||||||
bool operator==( const uint8_t& g, const ExVersion& t ) { return static_cast< uint8_t >( t ) == g; }
|
}
|
||||||
bool operator==( const GrandCompany& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
|
||||||
bool operator==( const uint8_t& g, const GrandCompany& t ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const uint8_t& g, const BeastReputationRank& t )
|
||||||
bool operator==( const GuardianDeity& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
bool operator==( const uint8_t& g, const GuardianDeity& t ) { return static_cast< uint8_t >( t ) == g; }
|
return static_cast< uint8_t >( t ) == g;
|
||||||
bool operator==( const ItemUICategory& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
}
|
||||||
bool operator==( const uint8_t& g, const ItemUICategory& t ) { return static_cast< uint8_t >( t ) == g; }
|
|
||||||
bool operator==( const ItemSearchCategory& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const BeastTribe& t, const uint8_t& g )
|
||||||
bool operator==( const uint8_t& g, const ItemSearchCategory& t ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
bool operator==( const OnlineStatus& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
return static_cast< uint8_t >( t ) == g;
|
||||||
bool operator==( const uint8_t& g, const OnlineStatus& t ) { return static_cast< uint8_t >( t ) == g; }
|
}
|
||||||
bool operator==( const Race& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
|
||||||
bool operator==( const uint8_t& g, const Race& t ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const uint8_t& g, const BeastTribe& t )
|
||||||
bool operator==( const Tribe& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
bool operator==( const uint8_t& g, const Tribe& t ) { return static_cast< uint8_t >( t ) == g; }
|
return static_cast< uint8_t >( t ) == g;
|
||||||
bool operator==( const Town& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
}
|
||||||
bool operator==( const uint8_t& g, const Town& t ) { return static_cast< uint8_t >( t ) == g; }
|
|
||||||
bool operator==( const Weather& t, const uint8_t& g ) { return static_cast< uint8_t >( t ) == g; }
|
bool operator==( const ClassJob& t, const uint8_t& g )
|
||||||
bool operator==( const uint8_t& g, const Weather& t ) { return static_cast< uint8_t >( t ) == g; }
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const ClassJob& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const ContentType& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const ContentType& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const EmoteCategory& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const EmoteCategory& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const ExVersion& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const ExVersion& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const GrandCompany& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const GrandCompany& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const GuardianDeity& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const GuardianDeity& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const ItemUICategory& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const ItemUICategory& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const ItemSearchCategory& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const ItemSearchCategory& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const OnlineStatus& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const OnlineStatus& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const Race& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const Race& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const Tribe& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const Tribe& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const Town& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const Town& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const Weather& t, const uint8_t& g )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator==( const uint8_t& g, const Weather& t )
|
||||||
|
{
|
||||||
|
return static_cast< uint8_t >( t ) == g;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,10 +9,11 @@
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Common {
|
namespace Common {
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//ActionCategory.exd
|
//ActionCategory.exd
|
||||||
enum class ActionCategory : uint8_t
|
enum class ActionCategory :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Autoattack = 1,
|
Autoattack = 1,
|
||||||
Spell = 2,
|
Spell = 2,
|
||||||
Weaponskill = 3,
|
Weaponskill = 3,
|
||||||
|
@ -28,12 +29,13 @@ namespace Common {
|
||||||
Glamour = 13,
|
Glamour = 13,
|
||||||
ItemManipulation = 14,
|
ItemManipulation = 14,
|
||||||
AdrenalineRush = 15,
|
AdrenalineRush = 15,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//BeastReputationRank.exd
|
//BeastReputationRank.exd
|
||||||
enum class BeastReputationRank : uint8_t
|
enum class BeastReputationRank :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
Neutral = 1,
|
Neutral = 1,
|
||||||
Recognized = 2,
|
Recognized = 2,
|
||||||
|
@ -43,18 +45,20 @@ namespace Common {
|
||||||
Honored = 6,
|
Honored = 6,
|
||||||
Sworn = 7,
|
Sworn = 7,
|
||||||
Allied = 8,
|
Allied = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//BeastTribe.exd
|
//BeastTribe.exd
|
||||||
enum class BeastTribe : uint8_t
|
enum class BeastTribe :
|
||||||
{
|
uint8_t
|
||||||
};
|
{
|
||||||
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//ClassJob.exd
|
//ClassJob.exd
|
||||||
enum class ClassJob : uint8_t
|
enum class ClassJob :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Adventurer = 0,
|
Adventurer = 0,
|
||||||
Gladiator = 1,
|
Gladiator = 1,
|
||||||
Pugilist = 2,
|
Pugilist = 2,
|
||||||
|
@ -91,12 +95,13 @@ namespace Common {
|
||||||
Astrologian = 33,
|
Astrologian = 33,
|
||||||
Samurai = 34,
|
Samurai = 34,
|
||||||
Redmage = 35,
|
Redmage = 35,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//ContentType.exd
|
//ContentType.exd
|
||||||
enum class ContentType : uint8_t
|
enum class ContentType :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
DutyRoulette = 1,
|
DutyRoulette = 1,
|
||||||
Dungeons = 2,
|
Dungeons = 2,
|
||||||
Guildhests = 3,
|
Guildhests = 3,
|
||||||
|
@ -119,40 +124,44 @@ namespace Common {
|
||||||
DeepDungeons = 21,
|
DeepDungeons = 21,
|
||||||
WondrousTails = 24,
|
WondrousTails = 24,
|
||||||
CustomDeliveries = 25,
|
CustomDeliveries = 25,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//EmoteCategory.exd
|
//EmoteCategory.exd
|
||||||
enum class EmoteCategory : uint8_t
|
enum class EmoteCategory :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
General = 1,
|
General = 1,
|
||||||
Persistent = 2,
|
Persistent = 2,
|
||||||
Expressions = 3,
|
Expressions = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//ExVersion.exd
|
//ExVersion.exd
|
||||||
enum class ExVersion : uint8_t
|
enum class ExVersion :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
ARealmReborn = 0,
|
ARealmReborn = 0,
|
||||||
Heavensward = 1,
|
Heavensward = 1,
|
||||||
Stormblood = 2,
|
Stormblood = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//GrandCompany.exd
|
//GrandCompany.exd
|
||||||
enum class GrandCompany : uint8_t
|
enum class GrandCompany :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
Maelstrom = 1,
|
Maelstrom = 1,
|
||||||
OrderoftheTwinAdder = 2,
|
OrderoftheTwinAdder = 2,
|
||||||
ImmortalFlames = 3,
|
ImmortalFlames = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//GuardianDeity.exd
|
//GuardianDeity.exd
|
||||||
enum class GuardianDeity : uint8_t
|
enum class GuardianDeity :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
HalonetheFury = 1,
|
HalonetheFury = 1,
|
||||||
MenphinatheLover = 2,
|
MenphinatheLover = 2,
|
||||||
ThaliaktheScholar = 3,
|
ThaliaktheScholar = 3,
|
||||||
|
@ -165,12 +174,13 @@ namespace Common {
|
||||||
NaldthaltheTraders = 10,
|
NaldthaltheTraders = 10,
|
||||||
NophicatheMatron = 11,
|
NophicatheMatron = 11,
|
||||||
AlthyktheKeeper = 12,
|
AlthyktheKeeper = 12,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//ItemUICategory.exd
|
//ItemUICategory.exd
|
||||||
enum class ItemUICategory : uint8_t
|
enum class ItemUICategory :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
PugilistsArm = 1,
|
PugilistsArm = 1,
|
||||||
GladiatorsArm = 2,
|
GladiatorsArm = 2,
|
||||||
MaraudersArm = 3,
|
MaraudersArm = 3,
|
||||||
|
@ -271,12 +281,13 @@ namespace Common {
|
||||||
ScholarsArm = 98,
|
ScholarsArm = 98,
|
||||||
FishersSecondaryTool = 99,
|
FishersSecondaryTool = 99,
|
||||||
Currency = 100,
|
Currency = 100,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//ItemSearchCategory.exd
|
//ItemSearchCategory.exd
|
||||||
enum class ItemSearchCategory : uint8_t
|
enum class ItemSearchCategory :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
PrimaryArms = 1,
|
PrimaryArms = 1,
|
||||||
PrimaryTools = 2,
|
PrimaryTools = 2,
|
||||||
PrimaryTools1 = 3,
|
PrimaryTools1 = 3,
|
||||||
|
@ -362,12 +373,13 @@ namespace Common {
|
||||||
SamuraisArms = 83,
|
SamuraisArms = 83,
|
||||||
RedMagesArms = 84,
|
RedMagesArms = 84,
|
||||||
ScholarsArms = 85,
|
ScholarsArms = 85,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//OnlineStatus.exd
|
//OnlineStatus.exd
|
||||||
enum class OnlineStatus : uint8_t
|
enum class OnlineStatus :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Producer = 1,
|
Producer = 1,
|
||||||
GameMaster = 2,
|
GameMaster = 2,
|
||||||
GameMaster1 = 3,
|
GameMaster1 = 3,
|
||||||
|
@ -415,24 +427,26 @@ namespace Common {
|
||||||
FreeCompany = 45,
|
FreeCompany = 45,
|
||||||
GrandCompany = 46,
|
GrandCompany = 46,
|
||||||
Online = 47,
|
Online = 47,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//Race.exd
|
//Race.exd
|
||||||
enum class Race : uint8_t
|
enum class Race :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Hyur = 1,
|
Hyur = 1,
|
||||||
Elezen = 2,
|
Elezen = 2,
|
||||||
Lalafell = 3,
|
Lalafell = 3,
|
||||||
Miqote = 4,
|
Miqote = 4,
|
||||||
Roegadyn = 5,
|
Roegadyn = 5,
|
||||||
AuRa = 6,
|
AuRa = 6,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//Tribe.exd
|
//Tribe.exd
|
||||||
enum class Tribe : uint8_t
|
enum class Tribe :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Midlander = 1,
|
Midlander = 1,
|
||||||
Highlander = 2,
|
Highlander = 2,
|
||||||
Wildwood = 3,
|
Wildwood = 3,
|
||||||
|
@ -445,24 +459,26 @@ namespace Common {
|
||||||
Hellsguard = 10,
|
Hellsguard = 10,
|
||||||
Raen = 11,
|
Raen = 11,
|
||||||
Xaela = 12,
|
Xaela = 12,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//Town.exd
|
//Town.exd
|
||||||
enum class Town : uint8_t
|
enum class Town :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
Nowheresville = 0,
|
Nowheresville = 0,
|
||||||
LimsaLominsa = 1,
|
LimsaLominsa = 1,
|
||||||
Gridania = 2,
|
Gridania = 2,
|
||||||
Uldah = 3,
|
Uldah = 3,
|
||||||
Ishgard = 4,
|
Ishgard = 4,
|
||||||
Kugane = 7,
|
Kugane = 7,
|
||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
//Weather.exd
|
//Weather.exd
|
||||||
enum class Weather : uint8_t
|
enum class Weather :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
ClearSkies = 1,
|
ClearSkies = 1,
|
||||||
FairSkies = 2,
|
FairSkies = 2,
|
||||||
|
@ -554,7 +570,7 @@ namespace Common {
|
||||||
Thunder3 = 88,
|
Thunder3 = 88,
|
||||||
DimensionalDisruption3 = 89,
|
DimensionalDisruption3 = 89,
|
||||||
FairSkies9 = 90,
|
FairSkies9 = 90,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
|
|
||||||
#include <boost/property_tree/ptree.hpp>
|
#include <boost/property_tree/ptree.hpp>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
|
class ConfigMgr
|
||||||
{
|
{
|
||||||
class ConfigMgr
|
public:
|
||||||
{
|
|
||||||
public:
|
|
||||||
ConfigMgr() = default;
|
ConfigMgr() = default;
|
||||||
|
|
||||||
~ConfigMgr() = default;
|
~ConfigMgr() = default;
|
||||||
|
|
||||||
bool loadConfig( const std::string& configName );
|
bool loadConfig( const std::string& configName );
|
||||||
|
@ -32,14 +32,14 @@ namespace Core
|
||||||
m_propTree.put( name, defaultValue );
|
m_propTree.put( name, defaultValue );
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool copyDefaultConfig( const std::string& configName );
|
bool copyDefaultConfig( const std::string& configName );
|
||||||
|
|
||||||
boost::property_tree::ptree m_propTree;
|
boost::property_tree::ptree m_propTree;
|
||||||
const std::string m_globalConfigFile = "global.ini";
|
const std::string m_globalConfigFile = "global.ini";
|
||||||
const std::string m_configFolderRoot = "./config/";
|
const std::string m_configFolderRoot = "./config/";
|
||||||
const std::string m_configDefaultSuffix = ".default";
|
const std::string m_configDefaultSuffix = ".default";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //SAPPHIRE_CONFIGMGR_H
|
#endif //SAPPHIRE_CONFIGMGR_H
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
base64.cpp and base64.h
|
base64.cpp and base64.h
|
||||||
|
|
||||||
Copyright (C) 2004-2008 René Nyffenegger
|
Copyright (C) 2004-2008 Ren<EFBFBD> Nyffenegger
|
||||||
|
|
||||||
This source code is provided 'as-is', without any express or implied
|
This source code is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the author be held liable for any damages
|
warranty. In no event will the author be held liable for any damages
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
|
|
||||||
René Nyffenegger rene.nyffenegger@adp-gmbh.ch
|
Ren<EFBFBD> Nyffenegger rene.nyffenegger@adp-gmbh.ch
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -29,32 +29,36 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
static const std::string base64_chars =
|
static const std::string base64_chars =
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
"abcdefghijklmnopqrstuvwxyz"
|
"abcdefghijklmnopqrstuvwxyz"
|
||||||
"0123456789+/";
|
"0123456789+/";
|
||||||
|
|
||||||
|
|
||||||
static inline bool is_base64( uint8_t c ) {
|
static inline bool is_base64( uint8_t c )
|
||||||
|
{
|
||||||
return ( isalnum( c ) || ( c == '+' ) || ( c == '/' ) );
|
return ( isalnum( c ) || ( c == '+' ) || ( c == '/' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Core::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t in_len ) {
|
std::string Core::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t in_len )
|
||||||
|
{
|
||||||
std::string ret;
|
std::string ret;
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
int32_t j = 0;
|
int32_t j = 0;
|
||||||
uint8_t char_array_3[3];
|
uint8_t char_array_3[3];
|
||||||
uint8_t char_array_4[4];
|
uint8_t char_array_4[4];
|
||||||
|
|
||||||
while( in_len-- ) {
|
while( in_len-- )
|
||||||
char_array_3[i++] = *( bytes_to_encode++ );
|
{
|
||||||
if( i == 3 ) {
|
char_array_3[ i++ ] = *( bytes_to_encode++ );
|
||||||
char_array_4[0] = ( char_array_3[0] & 0xfc ) >> 2;
|
if( i == 3 )
|
||||||
char_array_4[1] = ( ( char_array_3[0] & 0x03 ) << 4 ) + ( ( char_array_3[1] & 0xf0 ) >> 4 );
|
{
|
||||||
char_array_4[2] = ( ( char_array_3[1] & 0x0f ) << 2 ) + ( ( char_array_3[2] & 0xc0 ) >> 6 );
|
char_array_4[ 0 ] = ( char_array_3[ 0 ] & 0xfc ) >> 2;
|
||||||
char_array_4[3] = char_array_3[2] & 0x3f;
|
char_array_4[ 1 ] = ( ( char_array_3[ 0 ] & 0x03 ) << 4 ) + ( ( char_array_3[ 1 ] & 0xf0 ) >> 4 );
|
||||||
|
char_array_4[ 2 ] = ( ( char_array_3[ 1 ] & 0x0f ) << 2 ) + ( ( char_array_3[ 2 ] & 0xc0 ) >> 6 );
|
||||||
|
char_array_4[ 3 ] = char_array_3[ 2 ] & 0x3f;
|
||||||
|
|
||||||
for( i = 0; ( i < 4 ); i++ )
|
for( i = 0; ( i < 4 ); i++ )
|
||||||
ret += base64_chars[char_array_4[i]];
|
ret += base64_chars[ char_array_4[ i ] ];
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,15 +66,15 @@ std::string Core::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t
|
||||||
if( i )
|
if( i )
|
||||||
{
|
{
|
||||||
for( j = i; j < 3; j++ )
|
for( j = i; j < 3; j++ )
|
||||||
char_array_3[j] = '\0';
|
char_array_3[ j ] = '\0';
|
||||||
|
|
||||||
char_array_4[0] = ( char_array_3[0] & 0xfc ) >> 2;
|
char_array_4[ 0 ] = ( char_array_3[ 0 ] & 0xfc ) >> 2;
|
||||||
char_array_4[1] = ( ( char_array_3[0] & 0x03 ) << 4 ) + ( ( char_array_3[1] & 0xf0 ) >> 4 );
|
char_array_4[ 1 ] = ( ( char_array_3[ 0 ] & 0x03 ) << 4 ) + ( ( char_array_3[ 1 ] & 0xf0 ) >> 4 );
|
||||||
char_array_4[2] = ( ( char_array_3[1] & 0x0f ) << 2 ) + ( ( char_array_3[2] & 0xc0 ) >> 6 );
|
char_array_4[ 2 ] = ( ( char_array_3[ 1 ] & 0x0f ) << 2 ) + ( ( char_array_3[ 2 ] & 0xc0 ) >> 6 );
|
||||||
char_array_4[3] = char_array_3[2] & 0x3f;
|
char_array_4[ 3 ] = char_array_3[ 2 ] & 0x3f;
|
||||||
|
|
||||||
for( j = 0; ( j < i + 1 ); j++ )
|
for( j = 0; ( j < i + 1 ); j++ )
|
||||||
ret += base64_chars[char_array_4[j]];
|
ret += base64_chars[ char_array_4[ j ] ];
|
||||||
|
|
||||||
while( ( i++ < 3 ) )
|
while( ( i++ < 3 ) )
|
||||||
ret += '=';
|
ret += '=';
|
||||||
|
@ -81,7 +85,8 @@ std::string Core::Util::base64_encode( uint8_t const* bytes_to_encode, uint32_t
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Core::Util::base64_decode( std::string const& encoded_string ) {
|
std::string Core::Util::base64_decode( std::string const& encoded_string )
|
||||||
|
{
|
||||||
int32_t in_len = encoded_string.size();
|
int32_t in_len = encoded_string.size();
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
int32_t j = 0;
|
int32_t j = 0;
|
||||||
|
@ -89,34 +94,39 @@ std::string Core::Util::base64_decode( std::string const& encoded_string ) {
|
||||||
uint8_t char_array_4[4], char_array_3[3];
|
uint8_t char_array_4[4], char_array_3[3];
|
||||||
std::string ret;
|
std::string ret;
|
||||||
|
|
||||||
while( in_len-- && ( encoded_string[in_] != '=' ) && is_base64( encoded_string[in_] ) ) {
|
while( in_len-- && ( encoded_string[ in_ ] != '=' ) && is_base64( encoded_string[ in_ ] ) )
|
||||||
char_array_4[i++] = encoded_string[in_]; in_++;
|
{
|
||||||
if( i == 4 ) {
|
char_array_4[ i++ ] = encoded_string[ in_ ];
|
||||||
|
in_++;
|
||||||
|
if( i == 4 )
|
||||||
|
{
|
||||||
for( i = 0; i < 4; i++ )
|
for( i = 0; i < 4; i++ )
|
||||||
char_array_4[i] = static_cast< uint8_t >( base64_chars.find( char_array_4[i] ) );
|
char_array_4[ i ] = static_cast< uint8_t >( base64_chars.find( char_array_4[ i ] ) );
|
||||||
|
|
||||||
char_array_3[0] = ( char_array_4[0] << 2 ) + ( ( char_array_4[1] & 0x30 ) >> 4 );
|
char_array_3[ 0 ] = ( char_array_4[ 0 ] << 2 ) + ( ( char_array_4[ 1 ] & 0x30 ) >> 4 );
|
||||||
char_array_3[1] = ( ( char_array_4[1] & 0xf ) << 4 ) + ( ( char_array_4[2] & 0x3c ) >> 2 );
|
char_array_3[ 1 ] = ( ( char_array_4[ 1 ] & 0xf ) << 4 ) + ( ( char_array_4[ 2 ] & 0x3c ) >> 2 );
|
||||||
char_array_3[2] = ( ( char_array_4[2] & 0x3 ) << 6 ) + char_array_4[3];
|
char_array_3[ 2 ] = ( ( char_array_4[ 2 ] & 0x3 ) << 6 ) + char_array_4[ 3 ];
|
||||||
|
|
||||||
for( i = 0; ( i < 3 ); i++ )
|
for( i = 0; ( i < 3 ); i++ )
|
||||||
ret += char_array_3[i];
|
ret += char_array_3[ i ];
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( i ) {
|
if( i )
|
||||||
|
{
|
||||||
for( j = i; j < 4; j++ )
|
for( j = i; j < 4; j++ )
|
||||||
char_array_4[j] = 0;
|
char_array_4[ j ] = 0;
|
||||||
|
|
||||||
for( j = 0; j < 4; j++ )
|
for( j = 0; j < 4; j++ )
|
||||||
char_array_4[j] = static_cast< uint8_t >( base64_chars.find( char_array_4[j] ) );
|
char_array_4[ j ] = static_cast< uint8_t >( base64_chars.find( char_array_4[ j ] ) );
|
||||||
|
|
||||||
char_array_3[0] = ( char_array_4[0] << 2 ) + ( ( char_array_4[1] & 0x30 ) >> 4 );
|
char_array_3[ 0 ] = ( char_array_4[ 0 ] << 2 ) + ( ( char_array_4[ 1 ] & 0x30 ) >> 4 );
|
||||||
char_array_3[1] = ( ( char_array_4[1] & 0xf ) << 4 ) + ( ( char_array_4[2] & 0x3c ) >> 2 );
|
char_array_3[ 1 ] = ( ( char_array_4[ 1 ] & 0xf ) << 4 ) + ( ( char_array_4[ 2 ] & 0x3c ) >> 2 );
|
||||||
char_array_3[2] = ( ( char_array_4[2] & 0x3 ) << 6 ) + char_array_4[3];
|
char_array_3[ 2 ] = ( ( char_array_4[ 2 ] & 0x3 ) << 6 ) + char_array_4[ 3 ];
|
||||||
|
|
||||||
for( j = 0; ( j < i - 1 ); j++ ) ret += char_array_3[j];
|
for( j = 0; ( j < i - 1 ); j++ )
|
||||||
|
ret += char_array_3[ j ];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Util {
|
||||||
namespace Util
|
std::string base64_encode( uint8_t const*, uint32_t len );
|
||||||
{
|
|
||||||
std::string base64_encode( uint8_t const*, uint32_t len );
|
std::string base64_decode( std::string const& s );
|
||||||
std::string base64_decode( std::string const& s );
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,86 +8,102 @@
|
||||||
#include "blowfish.h"
|
#include "blowfish.h"
|
||||||
#include "blowfish.h2" // holds the random digit tables
|
#include "blowfish.h2" // holds the random digit tables
|
||||||
|
|
||||||
#define S(x,i) (SBoxes[i][x.w.byte##i])
|
#define S( x, i ) (SBoxes[i][x.w.byte##i])
|
||||||
#define bf_F(x) (((S(x,0) + S(x,1)) ^ S(x,2)) + S(x,3))
|
#define bf_F( x ) (((S(x,0) + S(x,1)) ^ S(x,2)) + S(x,3))
|
||||||
#define ROUND(a,b,n) (a.dword ^= bf_F(b) ^ PArray[n])
|
#define ROUND( a, b, n ) (a.dword ^= bf_F(b) ^ PArray[n])
|
||||||
|
|
||||||
|
|
||||||
BlowFish::BlowFish ()
|
BlowFish::BlowFish()
|
||||||
{
|
{
|
||||||
PArray = new DWORD [18] ;
|
PArray = new DWORD[18];
|
||||||
SBoxes = new DWORD [4][256] ;
|
SBoxes = new DWORD[4][256];
|
||||||
}
|
}
|
||||||
|
|
||||||
BlowFish::~BlowFish ()
|
BlowFish::~BlowFish()
|
||||||
{
|
{
|
||||||
delete PArray ;
|
delete PArray;
|
||||||
delete [] SBoxes ;
|
delete[] SBoxes;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the low level (private) encryption function
|
// the low level (private) encryption function
|
||||||
void BlowFish::Blowfish_encipher (DWORD *xl, DWORD *xr)
|
void BlowFish::Blowfish_encipher( DWORD* xl, DWORD* xr )
|
||||||
{
|
{
|
||||||
union aword Xl, Xr ;
|
union aword Xl, Xr;
|
||||||
|
|
||||||
Xl.dword = *xl ;
|
Xl.dword = *xl;
|
||||||
Xr.dword = *xr ;
|
Xr.dword = *xr;
|
||||||
|
|
||||||
Xl.dword ^= PArray [0];
|
Xl.dword ^= PArray[ 0 ];
|
||||||
ROUND (Xr, Xl, 1) ; ROUND (Xl, Xr, 2) ;
|
ROUND ( Xr, Xl, 1 );
|
||||||
ROUND (Xr, Xl, 3) ; ROUND (Xl, Xr, 4) ;
|
ROUND ( Xl, Xr, 2 );
|
||||||
ROUND (Xr, Xl, 5) ; ROUND (Xl, Xr, 6) ;
|
ROUND ( Xr, Xl, 3 );
|
||||||
ROUND (Xr, Xl, 7) ; ROUND (Xl, Xr, 8) ;
|
ROUND ( Xl, Xr, 4 );
|
||||||
ROUND (Xr, Xl, 9) ; ROUND (Xl, Xr, 10) ;
|
ROUND ( Xr, Xl, 5 );
|
||||||
ROUND (Xr, Xl, 11) ; ROUND (Xl, Xr, 12) ;
|
ROUND ( Xl, Xr, 6 );
|
||||||
ROUND (Xr, Xl, 13) ; ROUND (Xl, Xr, 14) ;
|
ROUND ( Xr, Xl, 7 );
|
||||||
ROUND (Xr, Xl, 15) ; ROUND (Xl, Xr, 16) ;
|
ROUND ( Xl, Xr, 8 );
|
||||||
Xr.dword ^= PArray [17] ;
|
ROUND ( Xr, Xl, 9 );
|
||||||
|
ROUND ( Xl, Xr, 10 );
|
||||||
|
ROUND ( Xr, Xl, 11 );
|
||||||
|
ROUND ( Xl, Xr, 12 );
|
||||||
|
ROUND ( Xr, Xl, 13 );
|
||||||
|
ROUND ( Xl, Xr, 14 );
|
||||||
|
ROUND ( Xr, Xl, 15 );
|
||||||
|
ROUND ( Xl, Xr, 16 );
|
||||||
|
Xr.dword ^= PArray[ 17 ];
|
||||||
|
|
||||||
*xr = Xl.dword ;
|
*xr = Xl.dword;
|
||||||
*xl = Xr.dword ;
|
*xl = Xr.dword;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the low level (private) decryption function
|
// the low level (private) decryption function
|
||||||
void BlowFish::Blowfish_decipher (DWORD *xl, DWORD *xr)
|
void BlowFish::Blowfish_decipher( DWORD* xl, DWORD* xr )
|
||||||
{
|
{
|
||||||
union aword Xl ;
|
union aword Xl;
|
||||||
union aword Xr ;
|
union aword Xr;
|
||||||
|
|
||||||
Xl.dword = *xl ;
|
Xl.dword = *xl;
|
||||||
Xr.dword = *xr ;
|
Xr.dword = *xr;
|
||||||
|
|
||||||
Xl.dword ^= PArray [17] ;
|
Xl.dword ^= PArray[ 17 ];
|
||||||
ROUND (Xr, Xl, 16) ; ROUND (Xl, Xr, 15) ;
|
ROUND ( Xr, Xl, 16 );
|
||||||
ROUND (Xr, Xl, 14) ; ROUND (Xl, Xr, 13) ;
|
ROUND ( Xl, Xr, 15 );
|
||||||
ROUND (Xr, Xl, 12) ; ROUND (Xl, Xr, 11) ;
|
ROUND ( Xr, Xl, 14 );
|
||||||
ROUND (Xr, Xl, 10) ; ROUND (Xl, Xr, 9) ;
|
ROUND ( Xl, Xr, 13 );
|
||||||
ROUND (Xr, Xl, 8) ; ROUND (Xl, Xr, 7) ;
|
ROUND ( Xr, Xl, 12 );
|
||||||
ROUND (Xr, Xl, 6) ; ROUND (Xl, Xr, 5) ;
|
ROUND ( Xl, Xr, 11 );
|
||||||
ROUND (Xr, Xl, 4) ; ROUND (Xl, Xr, 3) ;
|
ROUND ( Xr, Xl, 10 );
|
||||||
ROUND (Xr, Xl, 2) ; ROUND (Xl, Xr, 1) ;
|
ROUND ( Xl, Xr, 9 );
|
||||||
Xr.dword ^= PArray[0];
|
ROUND ( Xr, Xl, 8 );
|
||||||
|
ROUND ( Xl, Xr, 7 );
|
||||||
|
ROUND ( Xr, Xl, 6 );
|
||||||
|
ROUND ( Xl, Xr, 5 );
|
||||||
|
ROUND ( Xr, Xl, 4 );
|
||||||
|
ROUND ( Xl, Xr, 3 );
|
||||||
|
ROUND ( Xr, Xl, 2 );
|
||||||
|
ROUND ( Xl, Xr, 1 );
|
||||||
|
Xr.dword ^= PArray[ 0 ];
|
||||||
|
|
||||||
*xl = Xr.dword;
|
*xl = Xr.dword;
|
||||||
*xr = Xl.dword;
|
*xr = Xl.dword;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// constructs the enctryption sieve
|
// constructs the enctryption sieve
|
||||||
void BlowFish::initialize (BYTE key[], int32_t keybytes)
|
void BlowFish::initialize( BYTE key[], int32_t keybytes )
|
||||||
{
|
{
|
||||||
int i, j ;
|
int i, j;
|
||||||
DWORD datal, datar ;
|
DWORD datal, datar;
|
||||||
|
|
||||||
|
|
||||||
// first fill arrays from data tables
|
// first fill arrays from data tables
|
||||||
for (i = 0 ; i < 18 ; i++)
|
for( i = 0; i < 18; i++ )
|
||||||
PArray [i] = bf_P [i] ;
|
PArray[ i ] = bf_P[ i ];
|
||||||
|
|
||||||
for (i = 0 ; i < 4 ; i++)
|
for( i = 0; i < 4; i++ )
|
||||||
{
|
{
|
||||||
for (j = 0 ; j < 256 ; j++)
|
for( j = 0; j < 256; j++ )
|
||||||
SBoxes [i][j] = bf_S [i][j] ;
|
SBoxes[ i ][ j ] = bf_S[ i ][ j ];
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t v12; // eax@6
|
int32_t v12; // eax@6
|
||||||
|
@ -104,155 +120,155 @@ void BlowFish::initialize (BYTE key[], int32_t keybytes)
|
||||||
|
|
||||||
|
|
||||||
int32_t v10 = keybytes;
|
int32_t v10 = keybytes;
|
||||||
uintptr_t v9 = (uintptr_t)key;
|
uintptr_t v9 = ( uintptr_t ) key;
|
||||||
int32_t v8 = 0;
|
int32_t v8 = 0;
|
||||||
int32_t v11 = 0;
|
int32_t v11 = 0;
|
||||||
do {
|
do
|
||||||
v13 = (char)(*(BYTE *)(v8 + v9));
|
{
|
||||||
|
v13 = ( char ) ( *( BYTE* ) ( v8 + v9 ) );
|
||||||
v12 = v8 + 1;
|
v12 = v8 + 1;
|
||||||
if ( v12 >= v10 )
|
if( v12 >= v10 )
|
||||||
v12 = 0;
|
v12 = 0;
|
||||||
v16 = (char)*(BYTE *)(v12 + v9);
|
v16 = ( char ) *( BYTE* ) ( v12 + v9 );
|
||||||
v14 = v12 + 1;
|
v14 = v12 + 1;
|
||||||
v15 = (v13 << 8) | v16;
|
v15 = ( v13 << 8 ) | v16;
|
||||||
if ( v14 >= v10 )
|
if( v14 >= v10 )
|
||||||
v14 = 0;
|
v14 = 0;
|
||||||
v19 = (char)*(BYTE *)(v14 + v9);
|
v19 = ( char ) *( BYTE* ) ( v14 + v9 );
|
||||||
v17 = v14 + 1;
|
v17 = v14 + 1;
|
||||||
v18 = (v15 << 8) | v19;
|
v18 = ( v15 << 8 ) | v19;
|
||||||
if ( v17 >= v10 )
|
if( v17 >= v10 )
|
||||||
v17 = 0;
|
v17 = 0;
|
||||||
v21 = (char)*(BYTE *)(v17 + v9);
|
v21 = ( char ) *( BYTE* ) ( v17 + v9 );
|
||||||
v8 = v17 + 1;
|
v8 = v17 + 1;
|
||||||
v20 = (v18 << 8) | v21;
|
v20 = ( v18 << 8 ) | v21;
|
||||||
if ( v8 >= v10 )
|
if( v8 >= v10 )
|
||||||
v8 = 0;
|
v8 = 0;
|
||||||
*((DWORD *)PArray + v11++) ^= v20;
|
*( ( DWORD* ) PArray + v11++ ) ^= v20;
|
||||||
} while ( v11 < 18 );
|
} while( v11 < 18 );
|
||||||
|
|
||||||
|
|
||||||
|
datal = 0;
|
||||||
|
datar = 0;
|
||||||
|
|
||||||
datal = 0 ;
|
for( i = 0; i < NPASS + 2; i += 2 )
|
||||||
datar = 0 ;
|
|
||||||
|
|
||||||
for (i = 0 ; i < NPASS + 2 ; i += 2)
|
|
||||||
{
|
{
|
||||||
Blowfish_encipher (&datal, &datar) ;
|
Blowfish_encipher( &datal, &datar );
|
||||||
PArray [i] = datal ;
|
PArray[ i ] = datal;
|
||||||
PArray [i + 1] = datar ;
|
PArray[ i + 1 ] = datar;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0 ; i < 4 ; ++i)
|
for( i = 0; i < 4; ++i )
|
||||||
{
|
{
|
||||||
for (j = 0 ; j < 256 ; j += 2)
|
for( j = 0; j < 256; j += 2 )
|
||||||
{
|
{
|
||||||
Blowfish_encipher (&datal, &datar) ;
|
Blowfish_encipher( &datal, &datar );
|
||||||
SBoxes [i][j] = datal ;
|
SBoxes[ i ][ j ] = datal;
|
||||||
SBoxes [i][j + 1] = datar ;
|
SBoxes[ i ][ j + 1 ] = datar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// get output length, which must be even MOD 8
|
// get output length, which must be even MOD 8
|
||||||
DWORD BlowFish::GetOutputLength (DWORD lInputLong)
|
DWORD BlowFish::GetOutputLength( DWORD lInputLong )
|
||||||
{
|
{
|
||||||
DWORD lVal ;
|
DWORD lVal;
|
||||||
|
|
||||||
lVal = lInputLong % 8 ; // find out if uneven number of bytes at the end
|
lVal = lInputLong % 8; // find out if uneven number of bytes at the end
|
||||||
if (lVal != 0)
|
if( lVal != 0 )
|
||||||
return lInputLong + 8 - lVal ;
|
return lInputLong + 8 - lVal;
|
||||||
else
|
else
|
||||||
return lInputLong ;
|
return lInputLong;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Encode pIntput into pOutput. Input length in lSize. Returned value
|
// Encode pIntput into pOutput. Input length in lSize. Returned value
|
||||||
// is length of output which will be even MOD 8 bytes. Input buffer and
|
// is length of output which will be even MOD 8 bytes. Input buffer and
|
||||||
// output buffer can be the same, but be sure buffer length is even MOD 8.
|
// output buffer can be the same, but be sure buffer length is even MOD 8.
|
||||||
DWORD BlowFish::Encode (BYTE * pInput, BYTE * pOutput, DWORD lSize)
|
DWORD BlowFish::Encode( BYTE* pInput, BYTE* pOutput, DWORD lSize )
|
||||||
{
|
{
|
||||||
DWORD lCount, lOutSize, lGoodBytes ;
|
DWORD lCount, lOutSize, lGoodBytes;
|
||||||
BYTE *pi, *po ;
|
BYTE* pi, * po;
|
||||||
int i, j ;
|
int i, j;
|
||||||
int SameDest = (pInput == pOutput ? 1 : 0) ;
|
int SameDest = ( pInput == pOutput ? 1 : 0 );
|
||||||
|
|
||||||
lOutSize = GetOutputLength (lSize) ;
|
lOutSize = GetOutputLength( lSize );
|
||||||
for (lCount = 0 ; lCount < lOutSize ; lCount += 8)
|
for( lCount = 0; lCount < lOutSize; lCount += 8 )
|
||||||
{
|
{
|
||||||
if (SameDest) // if encoded data is being written into input buffer
|
if( SameDest ) // if encoded data is being written into input buffer
|
||||||
{
|
{
|
||||||
if (lCount < lSize - 7) // if not dealing with uneven bytes at end
|
if( lCount < lSize - 7 ) // if not dealing with uneven bytes at end
|
||||||
{
|
{
|
||||||
Blowfish_encipher ((DWORD *) pInput,
|
Blowfish_encipher( ( DWORD* ) pInput,
|
||||||
(DWORD *) (pInput + 4)) ;
|
( DWORD* ) ( pInput + 4 ) );
|
||||||
}
|
}
|
||||||
else // pad end of data with null bytes to complete encryption
|
else // pad end of data with null bytes to complete encryption
|
||||||
{
|
{
|
||||||
po = pInput + lSize ; // point at byte past the end of actual data
|
po = pInput + lSize; // point at byte past the end of actual data
|
||||||
j = (int) (lOutSize - lSize) ; // number of bytes to set to null
|
j = ( int ) ( lOutSize - lSize ); // number of bytes to set to null
|
||||||
for (i = 0 ; i < j ; i++)
|
for( i = 0; i < j; i++ )
|
||||||
*po++ = 0 ;
|
*po++ = 0;
|
||||||
Blowfish_encipher ((DWORD *) pInput,
|
Blowfish_encipher( ( DWORD* ) pInput,
|
||||||
(DWORD *) (pInput + 4)) ;
|
( DWORD* ) ( pInput + 4 ) );
|
||||||
}
|
}
|
||||||
pInput += 8 ;
|
pInput += 8;
|
||||||
}
|
}
|
||||||
else // output buffer not equal to input buffer, so must copy
|
else // output buffer not equal to input buffer, so must copy
|
||||||
{ // input to output buffer prior to encrypting
|
{ // input to output buffer prior to encrypting
|
||||||
if (lCount < lSize - 7) // if not dealing with uneven bytes at end
|
if( lCount < lSize - 7 ) // if not dealing with uneven bytes at end
|
||||||
{
|
{
|
||||||
pi = pInput ;
|
pi = pInput;
|
||||||
po = pOutput ;
|
po = pOutput;
|
||||||
for (i = 0 ; i < 8 ; i++)
|
for( i = 0; i < 8; i++ )
|
||||||
// copy bytes to output
|
// copy bytes to output
|
||||||
*po++ = *pi++ ;
|
*po++ = *pi++;
|
||||||
Blowfish_encipher ((DWORD *) pOutput, // now encrypt them
|
Blowfish_encipher( ( DWORD* ) pOutput, // now encrypt them
|
||||||
(DWORD *) (pOutput + 4)) ;
|
( DWORD* ) ( pOutput + 4 ) );
|
||||||
}
|
}
|
||||||
else // pad end of data with null bytes to complete encryption
|
else // pad end of data with null bytes to complete encryption
|
||||||
{
|
{
|
||||||
lGoodBytes = lSize - lCount ; // number of remaining data bytes
|
lGoodBytes = lSize - lCount; // number of remaining data bytes
|
||||||
po = pOutput ;
|
po = pOutput;
|
||||||
for (i = 0 ; i < (int) lGoodBytes ; i++)
|
for( i = 0; i < ( int ) lGoodBytes; i++ )
|
||||||
*po++ = *pInput++ ;
|
*po++ = *pInput++;
|
||||||
for (j = i ; j < 8 ; j++)
|
for( j = i; j < 8; j++ )
|
||||||
*po++ = 0 ;
|
*po++ = 0;
|
||||||
Blowfish_encipher ((DWORD *) pOutput,
|
Blowfish_encipher( ( DWORD* ) pOutput,
|
||||||
(DWORD *) (pOutput + 4)) ;
|
( DWORD* ) ( pOutput + 4 ) );
|
||||||
}
|
}
|
||||||
pInput += 8 ;
|
pInput += 8;
|
||||||
pOutput += 8 ;
|
pOutput += 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return lOutSize ;
|
return lOutSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decode pIntput into pOutput. Input length in lSize. Input buffer and
|
// Decode pIntput into pOutput. Input length in lSize. Input buffer and
|
||||||
// output buffer can be the same, but be sure buffer length is even MOD 8.
|
// output buffer can be the same, but be sure buffer length is even MOD 8.
|
||||||
void BlowFish::Decode (BYTE * pInput, BYTE * pOutput, DWORD lSize)
|
void BlowFish::Decode( BYTE* pInput, BYTE* pOutput, DWORD lSize )
|
||||||
{
|
{
|
||||||
DWORD lCount ;
|
DWORD lCount;
|
||||||
BYTE *pi, *po ;
|
BYTE* pi, * po;
|
||||||
int i ;
|
int i;
|
||||||
int SameDest = (pInput == pOutput ? 1 : 0) ;
|
int SameDest = ( pInput == pOutput ? 1 : 0 );
|
||||||
|
|
||||||
for (lCount = 0 ; lCount < lSize ; lCount += 8)
|
for( lCount = 0; lCount < lSize; lCount += 8 )
|
||||||
{
|
{
|
||||||
if (SameDest) // if encoded data is being written into input buffer
|
if( SameDest ) // if encoded data is being written into input buffer
|
||||||
{
|
{
|
||||||
Blowfish_decipher ((DWORD *) pInput,
|
Blowfish_decipher( ( DWORD* ) pInput,
|
||||||
(DWORD *) (pInput + 4)) ;
|
( DWORD* ) ( pInput + 4 ) );
|
||||||
pInput += 8 ;
|
pInput += 8;
|
||||||
}
|
}
|
||||||
else // output buffer not equal to input buffer
|
else // output buffer not equal to input buffer
|
||||||
{ // so copy input to output before decoding
|
{ // so copy input to output before decoding
|
||||||
pi = pInput ;
|
pi = pInput;
|
||||||
po = pOutput ;
|
po = pOutput;
|
||||||
for (i = 0 ; i < 8 ; i++)
|
for( i = 0; i < 8; i++ )
|
||||||
*po++ = *pi++ ;
|
*po++ = *pi++;
|
||||||
Blowfish_decipher ((DWORD *) pOutput,
|
Blowfish_decipher( ( DWORD* ) pOutput,
|
||||||
(DWORD *) (pOutput + 4)) ;
|
( DWORD* ) ( pOutput + 4 ) );
|
||||||
pInput += 8 ;
|
pInput += 8;
|
||||||
pOutput += 8 ;
|
pOutput += 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,39 +16,48 @@
|
||||||
class BlowFish
|
class BlowFish
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
DWORD * PArray ;
|
DWORD* PArray;
|
||||||
DWORD (* SBoxes)[256];
|
DWORD (* SBoxes)[256];
|
||||||
void Blowfish_encipher (DWORD *xl, DWORD *xr) ;
|
|
||||||
void Blowfish_decipher (DWORD *xl, DWORD *xr) ;
|
void Blowfish_encipher( DWORD* xl, DWORD* xr );
|
||||||
|
|
||||||
|
void Blowfish_decipher( DWORD* xl, DWORD* xr );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BlowFish () ;
|
BlowFish();
|
||||||
~BlowFish () ;
|
|
||||||
void initialize (BYTE key[], int32_t keybytes) ;
|
|
||||||
DWORD GetOutputLength (DWORD lInputLong) ;
|
|
||||||
DWORD Encode (BYTE * pInput, BYTE * pOutput, DWORD lSize) ;
|
|
||||||
void Decode (BYTE * pInput, BYTE * pOutput, DWORD lSize) ;
|
|
||||||
|
|
||||||
} ;
|
~BlowFish();
|
||||||
|
|
||||||
|
void initialize( BYTE key[], int32_t keybytes );
|
||||||
|
|
||||||
|
DWORD GetOutputLength( DWORD lInputLong );
|
||||||
|
|
||||||
|
DWORD Encode( BYTE* pInput, BYTE* pOutput, DWORD lSize );
|
||||||
|
|
||||||
|
void Decode( BYTE* pInput, BYTE* pOutput, DWORD lSize );
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
// choose a byte order for your hardware
|
// choose a byte order for your hardware
|
||||||
#define ORDER_DCBA // chosing Intel in this case
|
#define ORDER_DCBA // chosing Intel in this case
|
||||||
|
|
||||||
#ifdef ORDER_DCBA // DCBA - little endian - intel
|
#ifdef ORDER_DCBA // DCBA - little endian - intel
|
||||||
union aword {
|
union aword
|
||||||
|
{
|
||||||
DWORD dword;
|
DWORD dword;
|
||||||
BYTE byte [4];
|
BYTE byte[4];
|
||||||
struct {
|
struct
|
||||||
|
{
|
||||||
uint32_t byte3:8;
|
uint32_t byte3:8;
|
||||||
uint32_t byte2:8;
|
uint32_t byte2:8;
|
||||||
uint32_t byte1:8;
|
uint32_t byte1:8;
|
||||||
uint32_t byte0:8;
|
uint32_t byte0:8;
|
||||||
} w;
|
} w;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ORDER_ABCD // ABCD - big endian - motorola
|
#ifdef ORDER_ABCD // ABCD - big endian - motorola
|
||||||
union aword {
|
union aword {
|
||||||
DWORD dword;
|
DWORD dword;
|
||||||
BYTE byte [4];
|
BYTE byte [4];
|
||||||
struct {
|
struct {
|
||||||
|
@ -57,11 +66,11 @@ public:
|
||||||
uint32_t byte2:8;
|
uint32_t byte2:8;
|
||||||
uint32_t byte3:8;
|
uint32_t byte3:8;
|
||||||
} w;
|
} w;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ORDER_BADC // BADC - vax
|
#ifdef ORDER_BADC // BADC - vax
|
||||||
union aword {
|
union aword {
|
||||||
DWORD dword;
|
DWORD dword;
|
||||||
BYTE byte [4];
|
BYTE byte [4];
|
||||||
struct {
|
struct {
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "md5.h"
|
#include "md5.h"
|
||||||
|
|
||||||
#define GET_UINT32(n,b,i) \
|
#define GET_UINT32( n, b, i ) \
|
||||||
{ \
|
{ \
|
||||||
(n) = ( (uint32_t) (b)[(i) ] ) \
|
(n) = ( (uint32_t) (b)[(i) ] ) \
|
||||||
| ( (uint32_t) (b)[(i) + 1] << 8 ) \
|
| ( (uint32_t) (b)[(i) + 1] << 8 ) \
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
| ( (uint32_t) (b)[(i) + 3] << 24 ); \
|
| ( (uint32_t) (b)[(i) + 3] << 24 ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PUT_UINT32(n,b,i) \
|
#define PUT_UINT32( n, b, i ) \
|
||||||
{ \
|
{ \
|
||||||
(b)[(i) ] = (uint8_t) ( (n) ); \
|
(b)[(i) ] = (uint8_t) ( (n) ); \
|
||||||
(b)[(i) + 1] = (uint8_t) ( (n) >> 8 ); \
|
(b)[(i) + 1] = (uint8_t) ( (n) >> 8 ); \
|
||||||
|
@ -37,51 +37,51 @@
|
||||||
(b)[(i) + 3] = (uint8_t) ( (n) >> 24 ); \
|
(b)[(i) + 3] = (uint8_t) ( (n) >> 24 ); \
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Util::md5_starts( md5_context *ctx )
|
void Core::Util::md5_starts( md5_context* ctx )
|
||||||
{
|
{
|
||||||
ctx->total[0] = 0;
|
ctx->total[ 0 ] = 0;
|
||||||
ctx->total[1] = 0;
|
ctx->total[ 1 ] = 0;
|
||||||
|
|
||||||
ctx->state[0] = 0x67452301;
|
ctx->state[ 0 ] = 0x67452301;
|
||||||
ctx->state[1] = 0xEFCDAB89;
|
ctx->state[ 1 ] = 0xEFCDAB89;
|
||||||
ctx->state[2] = 0x98BADCFE;
|
ctx->state[ 2 ] = 0x98BADCFE;
|
||||||
ctx->state[3] = 0x10325476;
|
ctx->state[ 3 ] = 0x10325476;
|
||||||
}
|
}
|
||||||
|
|
||||||
void md5_process( Core::Util::md5_context *ctx, uint8_t data[64] )
|
void md5_process( Core::Util::md5_context* ctx, uint8_t data[64] )
|
||||||
{
|
{
|
||||||
uint32_t X[16], A, B, C, D;
|
uint32_t X[16], A, B, C, D;
|
||||||
|
|
||||||
GET_UINT32( X[0], data, 0 );
|
GET_UINT32( X[ 0 ], data, 0 );
|
||||||
GET_UINT32( X[1], data, 4 );
|
GET_UINT32( X[ 1 ], data, 4 );
|
||||||
GET_UINT32( X[2], data, 8 );
|
GET_UINT32( X[ 2 ], data, 8 );
|
||||||
GET_UINT32( X[3], data, 12 );
|
GET_UINT32( X[ 3 ], data, 12 );
|
||||||
GET_UINT32( X[4], data, 16 );
|
GET_UINT32( X[ 4 ], data, 16 );
|
||||||
GET_UINT32( X[5], data, 20 );
|
GET_UINT32( X[ 5 ], data, 20 );
|
||||||
GET_UINT32( X[6], data, 24 );
|
GET_UINT32( X[ 6 ], data, 24 );
|
||||||
GET_UINT32( X[7], data, 28 );
|
GET_UINT32( X[ 7 ], data, 28 );
|
||||||
GET_UINT32( X[8], data, 32 );
|
GET_UINT32( X[ 8 ], data, 32 );
|
||||||
GET_UINT32( X[9], data, 36 );
|
GET_UINT32( X[ 9 ], data, 36 );
|
||||||
GET_UINT32( X[10], data, 40 );
|
GET_UINT32( X[ 10 ], data, 40 );
|
||||||
GET_UINT32( X[11], data, 44 );
|
GET_UINT32( X[ 11 ], data, 44 );
|
||||||
GET_UINT32( X[12], data, 48 );
|
GET_UINT32( X[ 12 ], data, 48 );
|
||||||
GET_UINT32( X[13], data, 52 );
|
GET_UINT32( X[ 13 ], data, 52 );
|
||||||
GET_UINT32( X[14], data, 56 );
|
GET_UINT32( X[ 14 ], data, 56 );
|
||||||
GET_UINT32( X[15], data, 60 );
|
GET_UINT32( X[ 15 ], data, 60 );
|
||||||
|
|
||||||
#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
|
#define S( x, n ) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
|
||||||
|
|
||||||
#define P(a,b,c,d,k,s,t) \
|
#define P( a, b, c, d, k, s, t ) \
|
||||||
{ \
|
{ \
|
||||||
a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
|
a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
|
||||||
}
|
}
|
||||||
|
|
||||||
A = ctx->state[0];
|
A = ctx->state[ 0 ];
|
||||||
B = ctx->state[1];
|
B = ctx->state[ 1 ];
|
||||||
C = ctx->state[2];
|
C = ctx->state[ 2 ];
|
||||||
D = ctx->state[3];
|
D = ctx->state[ 3 ];
|
||||||
|
|
||||||
#define F(x,y,z) (z ^ (x & (y ^ z)))
|
#define F( x, y, z ) (z ^ (x & (y ^ z)))
|
||||||
|
|
||||||
P( A, B, C, D, 0, 7, 0xD76AA478 );
|
P( A, B, C, D, 0, 7, 0xD76AA478 );
|
||||||
P( D, A, B, C, 1, 12, 0xE8C7B756 );
|
P( D, A, B, C, 1, 12, 0xE8C7B756 );
|
||||||
|
@ -102,7 +102,7 @@ void md5_process( Core::Util::md5_context *ctx, uint8_t data[64] )
|
||||||
|
|
||||||
#undef F
|
#undef F
|
||||||
|
|
||||||
#define F(x,y,z) (y ^ (z & (x ^ y)))
|
#define F( x, y, z ) (y ^ (z & (x ^ y)))
|
||||||
|
|
||||||
P( A, B, C, D, 1, 5, 0xF61E2562 );
|
P( A, B, C, D, 1, 5, 0xF61E2562 );
|
||||||
P( D, A, B, C, 6, 9, 0xC040B340 );
|
P( D, A, B, C, 6, 9, 0xC040B340 );
|
||||||
|
@ -123,7 +123,7 @@ void md5_process( Core::Util::md5_context *ctx, uint8_t data[64] )
|
||||||
|
|
||||||
#undef F
|
#undef F
|
||||||
|
|
||||||
#define F(x,y,z) (x ^ y ^ z)
|
#define F( x, y, z ) (x ^ y ^ z)
|
||||||
|
|
||||||
P( A, B, C, D, 5, 4, 0xFFFA3942 );
|
P( A, B, C, D, 5, 4, 0xFFFA3942 );
|
||||||
P( D, A, B, C, 8, 11, 0x8771F681 );
|
P( D, A, B, C, 8, 11, 0x8771F681 );
|
||||||
|
@ -144,7 +144,7 @@ void md5_process( Core::Util::md5_context *ctx, uint8_t data[64] )
|
||||||
|
|
||||||
#undef F
|
#undef F
|
||||||
|
|
||||||
#define F(x,y,z) (y ^ (x | ~z))
|
#define F( x, y, z ) (y ^ (x | ~z))
|
||||||
|
|
||||||
P( A, B, C, D, 0, 6, 0xF4292244 );
|
P( A, B, C, D, 0, 6, 0xF4292244 );
|
||||||
P( D, A, B, C, 7, 10, 0x432AFF97 );
|
P( D, A, B, C, 7, 10, 0x432AFF97 );
|
||||||
|
@ -165,31 +165,32 @@ void md5_process( Core::Util::md5_context *ctx, uint8_t data[64] )
|
||||||
|
|
||||||
#undef F
|
#undef F
|
||||||
|
|
||||||
ctx->state[0] += A;
|
ctx->state[ 0 ] += A;
|
||||||
ctx->state[1] += B;
|
ctx->state[ 1 ] += B;
|
||||||
ctx->state[2] += C;
|
ctx->state[ 2 ] += C;
|
||||||
ctx->state[3] += D;
|
ctx->state[ 3 ] += D;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Util::md5_update( md5_context *ctx, uint8_t *input, uint32_t length )
|
void Core::Util::md5_update( md5_context* ctx, uint8_t* input, uint32_t length )
|
||||||
{
|
{
|
||||||
uint32_t left, fill;
|
uint32_t left, fill;
|
||||||
|
|
||||||
if( !length ) return;
|
if( !length )
|
||||||
|
return;
|
||||||
|
|
||||||
left = ctx->total[0] & 0x3F;
|
left = ctx->total[ 0 ] & 0x3F;
|
||||||
fill = 64 - left;
|
fill = 64 - left;
|
||||||
|
|
||||||
ctx->total[0] += length;
|
ctx->total[ 0 ] += length;
|
||||||
ctx->total[0] &= 0xFFFFFFFF;
|
ctx->total[ 0 ] &= 0xFFFFFFFF;
|
||||||
|
|
||||||
if( ctx->total[0] < length )
|
if( ctx->total[ 0 ] < length )
|
||||||
ctx->total[1]++;
|
ctx->total[ 1 ]++;
|
||||||
|
|
||||||
if( left && length >= fill )
|
if( left && length >= fill )
|
||||||
{
|
{
|
||||||
memcpy( ( void * )( ctx->buffer + left ),
|
memcpy( ( void* ) ( ctx->buffer + left ),
|
||||||
( void * )input, fill );
|
( void* ) input, fill );
|
||||||
md5_process( ctx, ctx->buffer );
|
md5_process( ctx, ctx->buffer );
|
||||||
length -= fill;
|
length -= fill;
|
||||||
input += fill;
|
input += fill;
|
||||||
|
@ -205,52 +206,52 @@ void Core::Util::md5_update( md5_context *ctx, uint8_t *input, uint32_t length )
|
||||||
|
|
||||||
if( length )
|
if( length )
|
||||||
{
|
{
|
||||||
memcpy( ( void * )( ctx->buffer + left ),
|
memcpy( ( void* ) ( ctx->buffer + left ),
|
||||||
( void * )input, length );
|
( void* ) input, length );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t md5_padding[64] =
|
static uint8_t md5_padding[64] =
|
||||||
{
|
{
|
||||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
void Core::Util::md5_finish( md5_context *ctx, uint8_t digest[16] )
|
void Core::Util::md5_finish( md5_context* ctx, uint8_t digest[16] )
|
||||||
{
|
{
|
||||||
uint32_t last, padn;
|
uint32_t last, padn;
|
||||||
uint32_t high, low;
|
uint32_t high, low;
|
||||||
uint8_t msglen[8];
|
uint8_t msglen[8];
|
||||||
|
|
||||||
high = ( ctx->total[0] >> 29 )
|
high = ( ctx->total[ 0 ] >> 29 )
|
||||||
| ( ctx->total[1] << 3 );
|
| ( ctx->total[ 1 ] << 3 );
|
||||||
low = ( ctx->total[0] << 3 );
|
low = ( ctx->total[ 0 ] << 3 );
|
||||||
|
|
||||||
PUT_UINT32( low, msglen, 0 );
|
PUT_UINT32( low, msglen, 0 );
|
||||||
PUT_UINT32( high, msglen, 4 );
|
PUT_UINT32( high, msglen, 4 );
|
||||||
|
|
||||||
last = ctx->total[0] & 0x3F;
|
last = ctx->total[ 0 ] & 0x3F;
|
||||||
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
|
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
|
||||||
|
|
||||||
md5_update( ctx, md5_padding, padn );
|
md5_update( ctx, md5_padding, padn );
|
||||||
md5_update( ctx, msglen, 8 );
|
md5_update( ctx, msglen, 8 );
|
||||||
|
|
||||||
PUT_UINT32( ctx->state[0], digest, 0 );
|
PUT_UINT32( ctx->state[ 0 ], digest, 0 );
|
||||||
PUT_UINT32( ctx->state[1], digest, 4 );
|
PUT_UINT32( ctx->state[ 1 ], digest, 4 );
|
||||||
PUT_UINT32( ctx->state[2], digest, 8 );
|
PUT_UINT32( ctx->state[ 2 ], digest, 8 );
|
||||||
PUT_UINT32( ctx->state[3], digest, 12 );
|
PUT_UINT32( ctx->state[ 3 ], digest, 12 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* those are the standard RFC 1321 test vectors
|
* those are the standard RFC 1321 test vectors
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void Core::Util::md5( uint8_t *text, uint8_t *hash, int32_t size )
|
void Core::Util::md5( uint8_t* text, uint8_t* hash, int32_t size )
|
||||||
{
|
{
|
||||||
md5_context ctx;
|
md5_context ctx;
|
||||||
md5_starts( &ctx );
|
md5_starts( &ctx );
|
||||||
md5_update( &ctx, ( uint8_t * )text, size );
|
md5_update( &ctx, ( uint8_t* ) text, size );
|
||||||
md5_finish( &ctx, hash );
|
md5_finish( &ctx, hash );
|
||||||
}
|
}
|
|
@ -1,25 +1,27 @@
|
||||||
#ifndef _MD52_H
|
#ifndef _MD52_H
|
||||||
#define _MD52_H
|
#define _MD52_H
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
|
namespace Util {
|
||||||
|
using md5_context = struct
|
||||||
{
|
{
|
||||||
namespace Util
|
|
||||||
{
|
|
||||||
using md5_context = struct
|
|
||||||
{
|
|
||||||
uint32_t total[2];
|
uint32_t total[2];
|
||||||
uint32_t state[4];
|
uint32_t state[4];
|
||||||
uint8_t buffer[64];
|
uint8_t buffer[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void md5( uint8_t *text, uint8_t *hash, int32_t size );
|
void md5( uint8_t* text, uint8_t* hash, int32_t size );
|
||||||
void md5_starts( md5_context *ctx );
|
|
||||||
void md5_update( md5_context *ctx, uint8_t *input, uint32_t length );
|
|
||||||
void md5_finish( md5_context *ctx, uint8_t digest[16] );
|
|
||||||
|
|
||||||
static const char *msg[] =
|
void md5_starts( md5_context* ctx );
|
||||||
|
|
||||||
|
void md5_update( md5_context* ctx, uint8_t* input, uint32_t length );
|
||||||
|
|
||||||
|
void md5_finish( md5_context* ctx, uint8_t digest[16] );
|
||||||
|
|
||||||
|
static const char* msg[] =
|
||||||
{
|
{
|
||||||
"",
|
"",
|
||||||
"a",
|
"a",
|
||||||
|
@ -31,7 +33,7 @@ namespace Core
|
||||||
"345678901234567890"
|
"345678901234567890"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *val[] =
|
static const char* val[] =
|
||||||
{
|
{
|
||||||
"d41d8cd98f00b204e9800998ecf8427e",
|
"d41d8cd98f00b204e9800998ecf8427e",
|
||||||
"0cc175b9c0f1b6a831c399e269772661",
|
"0cc175b9c0f1b6a831c399e269772661",
|
||||||
|
@ -42,7 +44,7 @@ namespace Core
|
||||||
"57edf4a22be3c955ac49da2e2107b67a"
|
"57edf4a22be3c955ac49da2e2107b67a"
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
#include "CharaDbConnection.h"
|
#include "CharaDbConnection.h"
|
||||||
#include <MySqlConnector.h>
|
#include <MySqlConnector.h>
|
||||||
|
|
||||||
Core::Db::CharaDbConnection::CharaDbConnection( ConnectionInfo& connInfo ) : DbConnection( connInfo )
|
Core::Db::CharaDbConnection::CharaDbConnection( ConnectionInfo& connInfo ) :
|
||||||
|
DbConnection( connInfo )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Db::CharaDbConnection::CharaDbConnection( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* q,
|
Core::Db::CharaDbConnection::CharaDbConnection( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* q,
|
||||||
ConnectionInfo& connInfo) : DbConnection( q, connInfo )
|
ConnectionInfo& connInfo ) :
|
||||||
|
DbConnection( q, connInfo )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,56 +63,86 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
|
||||||
CONNECTION_SYNC );
|
CONNECTION_SYNC );
|
||||||
|
|
||||||
prepareStatement( CHARA_UP_NAME, "UPDATE charainfo SET Name = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_NAME, "UPDATE charainfo SET Name = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_HPMP, "UPDATE charainfo SET Hp = ?, Mp = ?, Tp = ?, Gp = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_HPMP, "UPDATE charainfo SET Hp = ?, Mp = ?, Tp = ?, Gp = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_MODE, "UPDATE charainfo SET Mode = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MODE, "UPDATE charainfo SET Mode = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_MOUNT, "UPDATE charainfo SET Mount = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MOUNT, "UPDATE charainfo SET Mount = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_INVINCIBLE, "UPDATE charainfo SET InvincibleGM = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_INVINCIBLE, "UPDATE charainfo SET InvincibleGM = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_CUSTOMIZE, "UPDATE charainfo SET Customize = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_CUSTOMIZE, "UPDATE charainfo SET Customize = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_MODELMAINWEAP, "UPDATE charainfo SET ModelMainWeapon = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MODELMAINWEAP, "UPDATE charainfo SET ModelMainWeapon = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_MODELSUBWEAP, "UPDATE charainfo SET ModelSubWeapon = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_MODELSYSWEAP, "UPDATE charainfo SET ModelSystemWeapon = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MODELSUBWEAP, "UPDATE charainfo SET ModelSubWeapon = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_MODELEQUIP, "UPDATE charainfo SET ModelEquip = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_EMOTEMODETYPE, "UPDATE charainfo SET EmoteModeType = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MODELSYSWEAP, "UPDATE charainfo SET ModelSystemWeapon = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_FIRSTLOGINTIME, "UPDATE charainfo SET FirstLoginTime = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_MODELEQUIP, "UPDATE charainfo SET ModelEquip = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_EMOTEMODETYPE, "UPDATE charainfo SET EmoteModeType = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_FIRSTLOGINTIME, "UPDATE charainfo SET FirstLoginTime = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_LANGUAGE, "UPDATE charainfo SET Language = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_LANGUAGE, "UPDATE charainfo SET Language = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_ISNEWGAME, "UPDATE charainfo SET IsNewGame = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_ISNEWGAME, "UPDATE charainfo SET IsNewGame = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_ISNEWADV, "UPDATE charainfo SET IsNewAdventurer = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_ISNEWADV, "UPDATE charainfo SET IsNewAdventurer = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_TERRITORY, "UPDATE charainfo SET TerritoryType = ?, TerritoryId = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_POS, "UPDATE charainfo SET OPosX = ?, OPosY = ?, OPosZ = ?, OPosR = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_TERRITORY,
|
||||||
|
"UPDATE charainfo SET TerritoryType = ?, TerritoryId = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_POS,
|
||||||
|
"UPDATE charainfo SET OPosX = ?, OPosY = ?, OPosZ = ?, OPosR = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_CLASS, "UPDATE charainfo SET Class = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_CLASS, "UPDATE charainfo SET Class = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_STATUS, "UPDATE charainfo SET Status = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_STATUS, "UPDATE charainfo SET Status = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_TOTALPLAYTIME, "UPDATE charainfo SET TotalPlayTime = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_TOTALPLAYTIME, "UPDATE charainfo SET TotalPlayTime = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_HOMEPOINT, "UPDATE charainfo SET Homepoint = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_HOMEPOINT, "UPDATE charainfo SET Homepoint = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_FAVOPOINT, "UPDATE charainfo SET FavoritePoint = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_FAVOPOINT, "UPDATE charainfo SET FavoritePoint = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_TITLE, "UPDATE charainfo SET ActiveTitle = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_TITLE, "UPDATE charainfo SET ActiveTitle = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_TITLELIST, "UPDATE charainfo SET TitleList = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_TITLELIST, "UPDATE charainfo SET TitleList = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_ACHIEVEMENTS, "UPDATE charainfo SET Achievement = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_ACHIEVEMENTS, "UPDATE charainfo SET Achievement = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_AETHERYTE, "UPDATE charainfo SET Aetheryte = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_AETHERYTE, "UPDATE charainfo SET Aetheryte = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_HOWTO, "UPDATE charainfo SET HowTo = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_HOWTO, "UPDATE charainfo SET HowTo = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_MINIONS, "UPDATE charainfo SET Minions = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MINIONS, "UPDATE charainfo SET Minions = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_MOUNTS, "UPDATE charainfo SET Mounts = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_MOUNTS, "UPDATE charainfo SET Mounts = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_GEARSET, "UPDATE charainfo SET EquippedMannequin = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_GEARSET, "UPDATE charainfo SET EquippedMannequin = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_CONFIGFLAGS, "UPDATE charainfo SET ConfigFlags = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_QUESTCOMPLETE, "UPDATE charainfo SET QuestCompleteFlags = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_CONFIGFLAGS, "UPDATE charainfo SET ConfigFlags = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_OPENINGSEQ, "UPDATE charainfo SET OpeningSequence = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_QUESTTRACKING, "UPDATE charainfo SET QuestTracking = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_QUESTCOMPLETE, "UPDATE charainfo SET QuestCompleteFlags = ? WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_UP_GRANDCOMPANY, "UPDATE charainfo SET GrandCompany = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_GRANDCOMPANYRANKS, "UPDATE charainfo SET GrandCompanyRank = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_OPENINGSEQ, "UPDATE charainfo SET OpeningSequence = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_QUESTTRACKING, "UPDATE charainfo SET QuestTracking = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_GRANDCOMPANY, "UPDATE charainfo SET GrandCompany = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_UP_GRANDCOMPANYRANKS, "UPDATE charainfo SET GrandCompanyRank = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_DISCOVERY, "UPDATE charainfo SET Discovery = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_DISCOVERY, "UPDATE charainfo SET Discovery = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_GMRANK, "UPDATE charainfo SET GMRank = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_GMRANK, "UPDATE charainfo SET GMRank = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_EQUIPDISPLAYFLAGS, "UPDATE charainfo SET EquipDisplayFlags = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_EQUIPDISPLAYFLAGS, "UPDATE charainfo SET EquipDisplayFlags = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_UNLOCKS, "UPDATE charainfo SET Unlocks = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_UNLOCKS, "UPDATE charainfo SET Unlocks = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_UP_CFPENATLY, "UPDATE charainfo SET CFPenaltyUntil = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_UP_CFPENATLY, "UPDATE charainfo SET CFPenaltyUntil = ? WHERE CharacterId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
|
||||||
/// SEARCH INFO
|
/// SEARCH INFO
|
||||||
prepareStatement( CHARA_SEARCHINFO_INS, "INSERT INTO charainfosearch (CharacterId, UPDATE_DATE ) VALUES ( ?, NOW() );", CONNECTION_BOTH );
|
prepareStatement( CHARA_SEARCHINFO_INS,
|
||||||
prepareStatement( CHARA_SEARCHINFO_UP_SELECTCLASS, "UPDATE charainfosearch SET SelectClassId = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
"INSERT INTO charainfosearch (CharacterId, UPDATE_DATE ) VALUES ( ?, NOW() );", CONNECTION_BOTH );
|
||||||
prepareStatement( CHARA_SEARCHINFO_UP_SELECTREGION, "UPDATE charainfosearch SET SelectRegion = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_SEARCHINFO_UP_SELECTCLASS,
|
||||||
prepareStatement( CHARA_SEARCHINFO_UP_SEARCHCOMMENT, "UPDATE charainfosearch SET SearchComment = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
"UPDATE charainfosearch SET SelectClassId = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_SEARCHINFO_UP_SELECTREGION,
|
||||||
|
"UPDATE charainfosearch SET SelectRegion = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
|
prepareStatement( CHARA_SEARCHINFO_UP_SEARCHCOMMENT,
|
||||||
|
"UPDATE charainfosearch SET SearchComment = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_SEARCHINFO_SEL, "SELECT * FROM charainfosearch WHERE CharacterId = ?;", CONNECTION_SYNC );
|
prepareStatement( CHARA_SEARCHINFO_SEL, "SELECT * FROM charainfosearch WHERE CharacterId = ?;", CONNECTION_SYNC );
|
||||||
|
|
||||||
/// QUEST INFO
|
/// QUEST INFO
|
||||||
prepareStatement( CHARA_QUEST_INS, "INSERT INTO charaquestnew ( CharacterId, SlotId, QuestId, Sequence, Flags, Variables_0, "
|
prepareStatement( CHARA_QUEST_INS,
|
||||||
|
"INSERT INTO charaquestnew ( CharacterId, SlotId, QuestId, Sequence, Flags, Variables_0, "
|
||||||
"Variables_1, Variables_2, Variables_3, Variables_4, "
|
"Variables_1, Variables_2, Variables_3, Variables_4, "
|
||||||
"Variables_5, Variables_6 ) VALUES( ?,?,?,?,?,?,?,?,?,?,?,? );", CONNECTION_ASYNC );
|
"Variables_5, Variables_6 ) VALUES( ?,?,?,?,?,?,?,?,?,?,?,? );", CONNECTION_ASYNC );
|
||||||
|
|
||||||
|
@ -119,23 +151,29 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
|
||||||
"Variables_4 = ?, Variables_5 = ?, Variables_6 = ? "
|
"Variables_4 = ?, Variables_5 = ?, Variables_6 = ? "
|
||||||
"WHERE CharacterId = ? AND QuestId = ?;", CONNECTION_ASYNC );
|
"WHERE CharacterId = ? AND QuestId = ?;", CONNECTION_ASYNC );
|
||||||
|
|
||||||
prepareStatement( CHARA_QUEST_DEL, "DELETE FROM charaquestnew WHERE CharacterId = ? AND QuestId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_QUEST_DEL, "DELETE FROM charaquestnew WHERE CharacterId = ? AND QuestId = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
|
|
||||||
prepareStatement( CHARA_QUEST_SEL, "SELECT * FROM charaquestnew WHERE CharacterId = ?;", CONNECTION_SYNC );
|
prepareStatement( CHARA_QUEST_SEL, "SELECT * FROM charaquestnew WHERE CharacterId = ?;", CONNECTION_SYNC );
|
||||||
|
|
||||||
/// CLASS INFO
|
/// CLASS INFO
|
||||||
prepareStatement( CHARA_CLASS_SEL, "SELECT ClassIdx, Exp, Lvl FROM characlass WHERE CharacterId = ?;", CONNECTION_SYNC );
|
prepareStatement( CHARA_CLASS_SEL, "SELECT ClassIdx, Exp, Lvl FROM characlass WHERE CharacterId = ?;",
|
||||||
prepareStatement( CHARA_CLASS_INS, "INSERT INTO characlass ( CharacterId, ClassIdx, Exp, Lvl ) VALUES( ?,?,?,? );", CONNECTION_BOTH );
|
CONNECTION_SYNC );
|
||||||
prepareStatement( CHARA_CLASS_UP, "UPDATE characlass SET Exp = ?, Lvl = ? WHERE CharacterId = ? AND ClassIdx = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_CLASS_INS, "INSERT INTO characlass ( CharacterId, ClassIdx, Exp, Lvl ) VALUES( ?,?,?,? );",
|
||||||
|
CONNECTION_BOTH );
|
||||||
|
prepareStatement( CHARA_CLASS_UP, "UPDATE characlass SET Exp = ?, Lvl = ? WHERE CharacterId = ? AND ClassIdx = ?;",
|
||||||
|
CONNECTION_ASYNC );
|
||||||
prepareStatement( CHARA_CLASS_DEL, "DELETE FROM characlass WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
prepareStatement( CHARA_CLASS_DEL, "DELETE FROM characlass WHERE CharacterId = ?;", CONNECTION_ASYNC );
|
||||||
|
|
||||||
/// INVENTORY INFO
|
/// INVENTORY INFO
|
||||||
prepareStatement( CHARA_ITEMINV_INS, "INSERT INTO charaiteminventory ( CharacterId, storageId, UPDATE_DATE ) VALUES ( ?, ?, NOW() );", CONNECTION_BOTH );
|
prepareStatement( CHARA_ITEMINV_INS,
|
||||||
|
"INSERT INTO charaiteminventory ( CharacterId, storageId, UPDATE_DATE ) VALUES ( ?, ?, NOW() );",
|
||||||
|
CONNECTION_BOTH );
|
||||||
|
|
||||||
/// ITEM GLOBAL
|
/// ITEM GLOBAL
|
||||||
prepareStatement( CHARA_ITEMGLOBAL_INS, "INSERT INTO charaglobalitem ( CharacterId, ItemId, catalogId, UPDATE_DATE ) VALUES ( ?, ?, ?, NOW() );", CONNECTION_BOTH );
|
prepareStatement( CHARA_ITEMGLOBAL_INS,
|
||||||
|
"INSERT INTO charaglobalitem ( CharacterId, ItemId, catalogId, UPDATE_DATE ) VALUES ( ?, ?, ?, NOW() );",
|
||||||
|
CONNECTION_BOTH );
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,12 @@
|
||||||
|
|
||||||
#include "DbConnection.h"
|
#include "DbConnection.h"
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Db {
|
||||||
namespace Db
|
|
||||||
{
|
|
||||||
class DbConnectionInfo;
|
class DbConnectionInfo;
|
||||||
|
|
||||||
enum CharaDbStatements : uint32_t
|
enum CharaDbStatements :
|
||||||
|
uint32_t
|
||||||
{
|
{
|
||||||
CHARA_SEL,
|
CHARA_SEL,
|
||||||
CHARA_SEL_MINIMAL,
|
CHARA_SEL_MINIMAL,
|
||||||
|
@ -79,13 +78,15 @@ enum CharaDbStatements : uint32_t
|
||||||
MAX_STATEMENTS
|
MAX_STATEMENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
class CharaDbConnection : public DbConnection
|
class CharaDbConnection :
|
||||||
|
public DbConnection
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using Statements = CharaDbStatements;
|
using Statements = CharaDbStatements;
|
||||||
|
|
||||||
CharaDbConnection( ConnectionInfo& connInfo );
|
CharaDbConnection( ConnectionInfo& connInfo );
|
||||||
CharaDbConnection( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* q, ConnectionInfo &connInfo );
|
|
||||||
|
CharaDbConnection( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* q, ConnectionInfo& connInfo );
|
||||||
|
|
||||||
~CharaDbConnection();
|
~CharaDbConnection();
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
extern Core::Framework g_fw;
|
extern Core::Framework g_fw;
|
||||||
|
|
||||||
Core::Db::DbConnection::DbConnection( ConnectionInfo &connInfo ) :
|
Core::Db::DbConnection::DbConnection( ConnectionInfo& connInfo ) :
|
||||||
m_reconnecting( false ),
|
m_reconnecting( false ),
|
||||||
m_prepareError( false ),
|
m_prepareError( false ),
|
||||||
m_queue( nullptr ),
|
m_queue( nullptr ),
|
||||||
|
@ -140,7 +140,8 @@ boost::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( const std::
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boost::shared_ptr< Mysql::ResultSet > Core::Db::DbConnection::query( boost::shared_ptr< Core::Db::PreparedStatement > stmt )
|
boost::shared_ptr< Mysql::ResultSet >
|
||||||
|
Core::Db::DbConnection::query( boost::shared_ptr< Core::Db::PreparedStatement > stmt )
|
||||||
{
|
{
|
||||||
boost::shared_ptr< Mysql::ResultSet > res( nullptr );
|
boost::shared_ptr< Mysql::ResultSet > res( nullptr );
|
||||||
if( !stmt )
|
if( !stmt )
|
||||||
|
@ -204,14 +205,14 @@ bool Core::Db::DbConnection::execute( boost::shared_ptr< Core::Db::PreparedState
|
||||||
boost::shared_ptr< Mysql::PreparedStatement > Core::Db::DbConnection::getPreparedStatement( uint32_t index )
|
boost::shared_ptr< Mysql::PreparedStatement > Core::Db::DbConnection::getPreparedStatement( uint32_t index )
|
||||||
{
|
{
|
||||||
assert( index < m_stmts.size() );
|
assert( index < m_stmts.size() );
|
||||||
auto ret = m_stmts[index];
|
auto ret = m_stmts[ index ];
|
||||||
if( !ret )
|
if( !ret )
|
||||||
nullptr;
|
nullptr;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string &sql, Core::Db::ConnectionFlags flags )
|
void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string& sql, Core::Db::ConnectionFlags flags )
|
||||||
{
|
{
|
||||||
m_queries.insert( PreparedStatementMap::value_type( index, std::make_pair( sql, flags ) ) );
|
m_queries.insert( PreparedStatementMap::value_type( index, std::make_pair( sql, flags ) ) );
|
||||||
|
|
||||||
|
@ -220,7 +221,7 @@ void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string
|
||||||
// to save memory that will not be used.
|
// to save memory that will not be used.
|
||||||
if( !( m_connectionFlags & flags ) )
|
if( !( m_connectionFlags & flags ) )
|
||||||
{
|
{
|
||||||
m_stmts[index].reset();
|
m_stmts[ index ].reset();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,7 +237,7 @@ void Core::Db::DbConnection::prepareStatement( uint32_t index, const std::string
|
||||||
m_prepareError = true;
|
m_prepareError = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_stmts[index] = boost::shared_ptr< Mysql::PreparedStatement >( pStmt );
|
m_stmts[ index ] = boost::shared_ptr< Mysql::PreparedStatement >( pStmt );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,34 +10,37 @@
|
||||||
#include <boost/scoped_ptr.hpp>
|
#include <boost/scoped_ptr.hpp>
|
||||||
#include <boost/enable_shared_from_this.hpp>
|
#include <boost/enable_shared_from_this.hpp>
|
||||||
|
|
||||||
namespace Mysql
|
namespace Mysql {
|
||||||
{
|
class Connection;
|
||||||
class Connection;
|
|
||||||
class ResultSet;
|
class ResultSet;
|
||||||
class PreparedResultSet;
|
|
||||||
class PreparedStatement;
|
class PreparedResultSet;
|
||||||
|
|
||||||
|
class PreparedStatement;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Db {
|
||||||
namespace Db
|
class DatabaseWorker;
|
||||||
{
|
|
||||||
class DatabaseWorker;
|
|
||||||
class PreparedStatement;
|
|
||||||
class Operation;
|
|
||||||
class DbWorker;
|
|
||||||
|
|
||||||
using PreparedStmtScopedPtr = boost::scoped_ptr< PreparedStatement >;
|
class PreparedStatement;
|
||||||
|
|
||||||
enum ConnectionFlags
|
class Operation;
|
||||||
{
|
|
||||||
|
class DbWorker;
|
||||||
|
|
||||||
|
using PreparedStmtScopedPtr = boost::scoped_ptr< PreparedStatement >;
|
||||||
|
|
||||||
|
enum ConnectionFlags
|
||||||
|
{
|
||||||
CONNECTION_ASYNC = 0x1,
|
CONNECTION_ASYNC = 0x1,
|
||||||
CONNECTION_SYNC = 0x2,
|
CONNECTION_SYNC = 0x2,
|
||||||
CONNECTION_BOTH = CONNECTION_ASYNC | CONNECTION_SYNC
|
CONNECTION_BOTH = CONNECTION_ASYNC | CONNECTION_SYNC
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ConnectionInfo
|
struct ConnectionInfo
|
||||||
{
|
{
|
||||||
std::string user;
|
std::string user;
|
||||||
std::string password;
|
std::string password;
|
||||||
std::string database;
|
std::string database;
|
||||||
|
@ -45,53 +48,68 @@ namespace Db
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
uint8_t syncThreads;
|
uint8_t syncThreads;
|
||||||
uint8_t asyncThreads;
|
uint8_t asyncThreads;
|
||||||
};
|
};
|
||||||
|
|
||||||
using PreparedStatementMap = std::map< uint32_t, std::pair< std::string, ConnectionFlags > >;
|
using PreparedStatementMap = std::map< uint32_t, std::pair< std::string, ConnectionFlags > >;
|
||||||
|
|
||||||
class DbConnection : public boost::enable_shared_from_this< DbConnection >
|
class DbConnection :
|
||||||
{
|
public boost::enable_shared_from_this< DbConnection >
|
||||||
public:
|
{
|
||||||
|
public:
|
||||||
// Constructor for synchronous connections.
|
// Constructor for synchronous connections.
|
||||||
DbConnection( ConnectionInfo& connInfo );
|
DbConnection( ConnectionInfo& connInfo );
|
||||||
|
|
||||||
// Constructor for asynchronous connections.
|
// Constructor for asynchronous connections.
|
||||||
DbConnection( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* queue, ConnectionInfo& connInfo );
|
DbConnection( Core::LockedWaitQueue< boost::shared_ptr< Operation > >* queue, ConnectionInfo& connInfo );
|
||||||
|
|
||||||
virtual ~DbConnection();
|
virtual ~DbConnection();
|
||||||
|
|
||||||
virtual uint32_t open();
|
virtual uint32_t open();
|
||||||
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
bool prepareStatements();
|
bool prepareStatements();
|
||||||
|
|
||||||
bool execute( const std::string& sql );
|
bool execute( const std::string& sql );
|
||||||
|
|
||||||
bool execute( boost::shared_ptr< PreparedStatement > stmt );
|
bool execute( boost::shared_ptr< PreparedStatement > stmt );
|
||||||
|
|
||||||
boost::shared_ptr< Mysql::ResultSet > query( const std::string& sql );
|
boost::shared_ptr< Mysql::ResultSet > query( const std::string& sql );
|
||||||
|
|
||||||
boost::shared_ptr< Mysql::ResultSet > query( boost::shared_ptr< PreparedStatement > stmt );
|
boost::shared_ptr< Mysql::ResultSet > query( boost::shared_ptr< PreparedStatement > stmt );
|
||||||
|
|
||||||
void beginTransaction();
|
void beginTransaction();
|
||||||
|
|
||||||
void rollbackTransaction();
|
void rollbackTransaction();
|
||||||
|
|
||||||
void commitTransaction();
|
void commitTransaction();
|
||||||
|
|
||||||
bool ping();
|
bool ping();
|
||||||
|
|
||||||
uint32_t getLastError();
|
uint32_t getLastError();
|
||||||
|
|
||||||
bool lockIfReady();
|
bool lockIfReady();
|
||||||
|
|
||||||
void unlock();
|
void unlock();
|
||||||
|
|
||||||
boost::shared_ptr< Mysql::Connection > getConnection() { return m_pConnection; }
|
boost::shared_ptr< Mysql::Connection > getConnection()
|
||||||
|
{
|
||||||
|
return m_pConnection;
|
||||||
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Mysql::PreparedStatement > getPreparedStatement( uint32_t index );
|
boost::shared_ptr< Mysql::PreparedStatement > getPreparedStatement( uint32_t index );
|
||||||
|
|
||||||
void prepareStatement( uint32_t index, const std::string& sql, ConnectionFlags flags );
|
void prepareStatement( uint32_t index, const std::string& sql, ConnectionFlags flags );
|
||||||
|
|
||||||
virtual void doPrepareStatements() = 0;
|
virtual void doPrepareStatements() = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::vector< boost::shared_ptr< Mysql::PreparedStatement > > m_stmts;
|
std::vector< boost::shared_ptr< Mysql::PreparedStatement > > m_stmts;
|
||||||
PreparedStatementMap m_queries;
|
PreparedStatementMap m_queries;
|
||||||
bool m_reconnecting;
|
bool m_reconnecting;
|
||||||
bool m_prepareError;
|
bool m_prepareError;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LockedWaitQueue< boost::shared_ptr< Operation > >* m_queue;
|
LockedWaitQueue< boost::shared_ptr< Operation > >* m_queue;
|
||||||
boost::shared_ptr< DbWorker > m_worker;
|
boost::shared_ptr< DbWorker > m_worker;
|
||||||
boost::shared_ptr< Mysql::Connection > m_pConnection;
|
boost::shared_ptr< Mysql::Connection > m_pConnection;
|
||||||
|
@ -100,8 +118,9 @@ namespace Db
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
|
|
||||||
DbConnection( DbConnection const& right ) = delete;
|
DbConnection( DbConnection const& right ) = delete;
|
||||||
|
|
||||||
DbConnection& operator=( DbConnection const& right ) = delete;
|
DbConnection& operator=( DbConnection const& right ) = delete;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,11 +11,11 @@ Core::Db::DbLoader::DbLoader()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool, const ConnectionInfo& info )
|
Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool, const ConnectionInfo& info )
|
||||||
{
|
{
|
||||||
|
|
||||||
m_open.push([this, info, &pool]() -> bool
|
m_open.push( [ this, info, &pool ]()->bool
|
||||||
{
|
{
|
||||||
|
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
|
@ -24,7 +24,8 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool
|
||||||
|
|
||||||
if( asyncThreads < 1 || asyncThreads > 32 )
|
if( asyncThreads < 1 || asyncThreads > 32 )
|
||||||
{
|
{
|
||||||
pLog->error( "database: invalid number of worker threads specified. Please pick a value between 1 and 32." );
|
pLog->error(
|
||||||
|
"database: invalid number of worker threads specified. Please pick a value between 1 and 32." );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,12 +45,13 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_close.push( [&pool] { pool.close(); } );
|
m_close.push( [ &pool ]
|
||||||
|
{ pool.close(); } );
|
||||||
return true;
|
return true;
|
||||||
});
|
} );
|
||||||
|
|
||||||
|
|
||||||
m_prepare.push([this, info, &pool]() -> bool
|
m_prepare.push( [ this, info, &pool ]()->bool
|
||||||
{
|
{
|
||||||
if( !pool.prepareStatements() )
|
if( !pool.prepareStatements() )
|
||||||
{
|
{
|
||||||
|
@ -58,7 +60,7 @@ Core::Db::DbLoader& Core::Db::DbLoader::addDb( Core::Db::DbWorkerPool< T >& pool
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
} );
|
||||||
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -107,6 +109,6 @@ bool Core::Db::DbLoader::process( std::queue< Predicate >& queue )
|
||||||
|
|
||||||
template
|
template
|
||||||
Core::Db::DbLoader&
|
Core::Db::DbLoader&
|
||||||
Core::Db::DbLoader::addDb< Core::Db::CharaDbConnection >( Core::Db::DbWorkerPool< Core::Db::CharaDbConnection >&,
|
Core::Db::DbLoader::addDb< Core::Db::CharaDbConnection >( Core::Db::DbWorkerPool< Core::Db::CharaDbConnection >&,
|
||||||
const ConnectionInfo& );
|
const ConnectionInfo& );
|
||||||
|
|
||||||
|
|
|
@ -8,17 +8,15 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "DbConnection.h"
|
#include "DbConnection.h"
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
|
namespace Db {
|
||||||
|
|
||||||
|
template< class T >
|
||||||
|
class DbWorkerPool;
|
||||||
|
|
||||||
|
class DbLoader
|
||||||
{
|
{
|
||||||
namespace Db
|
public:
|
||||||
{
|
|
||||||
|
|
||||||
template< class T >
|
|
||||||
class DbWorkerPool;
|
|
||||||
|
|
||||||
class DbLoader
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
DbLoader();
|
DbLoader();
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
|
@ -33,8 +31,9 @@ namespace Core
|
||||||
DATABASE_MASK_ALL = DATABASE_CHARACTER
|
DATABASE_MASK_ALL = DATABASE_CHARACTER
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool openDatabases();
|
bool openDatabases();
|
||||||
|
|
||||||
bool prepareStatements();
|
bool prepareStatements();
|
||||||
|
|
||||||
using Predicate = std::function< bool() >;
|
using Predicate = std::function< bool() >;
|
||||||
|
@ -45,7 +44,7 @@ namespace Core
|
||||||
std::queue< Predicate > m_open;
|
std::queue< Predicate > m_open;
|
||||||
std::queue< Predicate > m_prepare;
|
std::queue< Predicate > m_prepare;
|
||||||
std::stack< Closer > m_close;
|
std::stack< Closer > m_close;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,34 +6,35 @@
|
||||||
#include "Util/LockedWaitQueue.h"
|
#include "Util/LockedWaitQueue.h"
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Db {
|
||||||
namespace Db
|
class DbConnection;
|
||||||
{
|
|
||||||
class DbConnection;
|
|
||||||
class Operation;
|
|
||||||
|
|
||||||
class DbWorker
|
class Operation;
|
||||||
{
|
|
||||||
public:
|
class DbWorker
|
||||||
|
{
|
||||||
|
public:
|
||||||
DbWorker( LockedWaitQueue< boost::shared_ptr< Operation > >* newQueue, DbConnection* connection );
|
DbWorker( LockedWaitQueue< boost::shared_ptr< Operation > >* newQueue, DbConnection* connection );
|
||||||
|
|
||||||
~DbWorker();
|
~DbWorker();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
LockedWaitQueue< boost::shared_ptr< Operation > >* m_queue;
|
LockedWaitQueue< boost::shared_ptr< Operation > >* m_queue;
|
||||||
DbConnection* m_pConn;
|
DbConnection* m_pConn;
|
||||||
|
|
||||||
void workerThread();
|
void workerThread();
|
||||||
|
|
||||||
std::thread m_workerThread;
|
std::thread m_workerThread;
|
||||||
|
|
||||||
std::atomic< bool > m_cancelationToken;
|
std::atomic< bool > m_cancelationToken;
|
||||||
|
|
||||||
DbWorker( DbWorker const& right ) = delete;
|
DbWorker( DbWorker const& right ) = delete;
|
||||||
DbWorker& operator=( DbWorker const& right ) = delete;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
DbWorker& operator=( DbWorker const& right ) = delete;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif //SAPPHIRE_DBWORKER_H
|
#endif //SAPPHIRE_DBWORKER_H
|
||||||
|
|
|
@ -12,7 +12,8 @@
|
||||||
|
|
||||||
extern Core::Framework g_fw;
|
extern Core::Framework g_fw;
|
||||||
|
|
||||||
class PingOperation : public Core::Db::Operation
|
class PingOperation :
|
||||||
|
public Core::Db::Operation
|
||||||
{
|
{
|
||||||
bool execute() override
|
bool execute() override
|
||||||
{
|
{
|
||||||
|
@ -22,8 +23,9 @@ class PingOperation : public Core::Db::Operation
|
||||||
};
|
};
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
Core::Db::DbWorkerPool<T>::DbWorkerPool()
|
Core::Db::DbWorkerPool< T >::DbWorkerPool()
|
||||||
: m_queue( new Core::LockedWaitQueue< boost::shared_ptr< Operation > >() ),
|
:
|
||||||
|
m_queue( new Core::LockedWaitQueue< boost::shared_ptr< Operation > >() ),
|
||||||
m_asyncThreads( 0 ),
|
m_asyncThreads( 0 ),
|
||||||
m_synchThreads( 0 )
|
m_synchThreads( 0 )
|
||||||
{
|
{
|
||||||
|
@ -38,7 +40,7 @@ Core::Db::DbWorkerPool< T >::~DbWorkerPool()
|
||||||
template< class T >
|
template< class T >
|
||||||
void Core::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info,
|
void Core::Db::DbWorkerPool< T >::setConnectionInfo( const ConnectionInfo& info,
|
||||||
uint8_t asyncThreads,
|
uint8_t asyncThreads,
|
||||||
uint8_t synchThreads)
|
uint8_t synchThreads )
|
||||||
{
|
{
|
||||||
m_connectionInfo = info;
|
m_connectionInfo = info;
|
||||||
m_asyncThreads = asyncThreads;
|
m_asyncThreads = asyncThreads;
|
||||||
|
@ -63,7 +65,7 @@ uint32_t Core::Db::DbWorkerPool< T >::open()
|
||||||
if( !error )
|
if( !error )
|
||||||
{
|
{
|
||||||
pLog->info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " +
|
pLog->info( "[DbPool] DatabasePool " + getDatabaseName() + " opened successfully. " +
|
||||||
std::to_string( ( m_connections[IDX_SYNCH].size() + m_connections[IDX_ASYNC].size() ) ) +
|
std::to_string( ( m_connections[ IDX_SYNCH ].size() + m_connections[ IDX_ASYNC ].size() ) ) +
|
||||||
" total connections running." );
|
" total connections running." );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,14 +76,14 @@ template< class T >
|
||||||
void Core::Db::DbWorkerPool< T >::close()
|
void Core::Db::DbWorkerPool< T >::close()
|
||||||
{
|
{
|
||||||
auto pLog = g_fw.get< Logger >();
|
auto pLog = g_fw.get< Logger >();
|
||||||
pLog->info("[DbPool] Closing down DatabasePool " + getDatabaseName() );
|
pLog->info( "[DbPool] Closing down DatabasePool " + getDatabaseName() );
|
||||||
m_connections[IDX_ASYNC].clear();
|
m_connections[ IDX_ASYNC ].clear();
|
||||||
m_connections[IDX_SYNCH].clear();
|
m_connections[ IDX_SYNCH ].clear();
|
||||||
pLog->info("[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." );
|
pLog->info( "[DbPool] All connections on DatabasePool " + getDatabaseName() + "closed." );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
bool Core::Db::DbWorkerPool<T>::prepareStatements()
|
bool Core::Db::DbWorkerPool< T >::prepareStatements()
|
||||||
{
|
{
|
||||||
for( auto& connections : m_connections )
|
for( auto& connections : m_connections )
|
||||||
for( auto& connection : connections )
|
for( auto& connection : connections )
|
||||||
|
@ -101,7 +103,8 @@ bool Core::Db::DbWorkerPool<T>::prepareStatements()
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
boost::shared_ptr< Mysql::ResultSet > Core::Db::DbWorkerPool< T >::query( const std::string& sql, boost::shared_ptr< T > connection )
|
boost::shared_ptr< Mysql::ResultSet >
|
||||||
|
Core::Db::DbWorkerPool< T >::query( const std::string& sql, boost::shared_ptr< T > connection )
|
||||||
{
|
{
|
||||||
if( !connection )
|
if( !connection )
|
||||||
connection = getFreeConnection();
|
connection = getFreeConnection();
|
||||||
|
@ -113,7 +116,8 @@ boost::shared_ptr< Mysql::ResultSet > Core::Db::DbWorkerPool< T >::query( const
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
boost::shared_ptr< Mysql::PreparedResultSet > Core::Db::DbWorkerPool< T >::query( boost::shared_ptr< PreparedStatement > stmt )
|
boost::shared_ptr< Mysql::PreparedResultSet >
|
||||||
|
Core::Db::DbWorkerPool< T >::query( boost::shared_ptr< PreparedStatement > stmt )
|
||||||
{
|
{
|
||||||
auto connection = getFreeConnection();
|
auto connection = getFreeConnection();
|
||||||
auto ret = boost::static_pointer_cast< Mysql::PreparedResultSet >( connection->query( stmt ) );
|
auto ret = boost::static_pointer_cast< Mysql::PreparedResultSet >( connection->query( stmt ) );
|
||||||
|
@ -123,7 +127,8 @@ boost::shared_ptr< Mysql::PreparedResultSet > Core::Db::DbWorkerPool< T >::query
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
boost::shared_ptr< Core::Db::PreparedStatement > Core::Db::DbWorkerPool< T >::getPreparedStatement( PreparedStatementIndex index )
|
boost::shared_ptr< Core::Db::PreparedStatement >
|
||||||
|
Core::Db::DbWorkerPool< T >::getPreparedStatement( PreparedStatementIndex index )
|
||||||
{
|
{
|
||||||
return boost::make_shared< PreparedStatement >( index );
|
return boost::make_shared< PreparedStatement >( index );
|
||||||
}
|
}
|
||||||
|
@ -143,7 +148,7 @@ void Core::Db::DbWorkerPool< T >::escapeString( std::string& str )
|
||||||
template< class T >
|
template< class T >
|
||||||
void Core::Db::DbWorkerPool< T >::keepAlive()
|
void Core::Db::DbWorkerPool< T >::keepAlive()
|
||||||
{
|
{
|
||||||
for( auto& connection : m_connections[IDX_SYNCH] )
|
for( auto& connection : m_connections[ IDX_SYNCH ] )
|
||||||
{
|
{
|
||||||
if( connection->lockIfReady() )
|
if( connection->lockIfReady() )
|
||||||
{
|
{
|
||||||
|
@ -152,7 +157,7 @@ void Core::Db::DbWorkerPool< T >::keepAlive()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto count = m_connections[IDX_ASYNC].size();
|
const auto count = m_connections[ IDX_ASYNC ].size();
|
||||||
for( uint8_t i = 0; i < count; ++i )
|
for( uint8_t i = 0; i < count; ++i )
|
||||||
enqueue( boost::make_shared< PingOperation >() );
|
enqueue( boost::make_shared< PingOperation >() );
|
||||||
}
|
}
|
||||||
|
@ -163,8 +168,9 @@ uint32_t Core::Db::DbWorkerPool< T >::openConnections( InternalIndex type, uint8
|
||||||
for( uint8_t i = 0; i < numConnections; ++i )
|
for( uint8_t i = 0; i < numConnections; ++i )
|
||||||
{
|
{
|
||||||
// Create the connection
|
// Create the connection
|
||||||
auto connection = [&] {
|
auto connection = [ & ]
|
||||||
switch (type)
|
{
|
||||||
|
switch( type )
|
||||||
{
|
{
|
||||||
case IDX_ASYNC:
|
case IDX_ASYNC:
|
||||||
return boost::make_shared< T >( m_queue.get(), m_connectionInfo );
|
return boost::make_shared< T >( m_queue.get(), m_connectionInfo );
|
||||||
|
@ -178,23 +184,23 @@ uint32_t Core::Db::DbWorkerPool< T >::openConnections( InternalIndex type, uint8
|
||||||
if( uint32_t error = connection->open() )
|
if( uint32_t error = connection->open() )
|
||||||
{
|
{
|
||||||
// Failed to open a connection or invalid version, abort and cleanup
|
// Failed to open a connection or invalid version, abort and cleanup
|
||||||
m_connections[type].clear();
|
m_connections[ type ].clear();
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
m_connections[type].push_back( connection );
|
m_connections[ type ].push_back( connection );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
unsigned long Core::Db::DbWorkerPool< T >::escapeString( char *to, const char *from, unsigned long length )
|
unsigned long Core::Db::DbWorkerPool< T >::escapeString( char* to, const char* from, unsigned long length )
|
||||||
{
|
{
|
||||||
if( !to || !from || !length )
|
if( !to || !from || !length )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return mysql_real_escape_string(
|
return mysql_real_escape_string(
|
||||||
m_connections[IDX_SYNCH].front()->getConnection()->getRawCon(), to, from, length );
|
m_connections[ IDX_SYNCH ].front()->getConnection()->getRawCon(), to, from, length );
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
|
@ -207,12 +213,12 @@ template< class T >
|
||||||
boost::shared_ptr< T > Core::Db::DbWorkerPool< T >::getFreeConnection()
|
boost::shared_ptr< T > Core::Db::DbWorkerPool< T >::getFreeConnection()
|
||||||
{
|
{
|
||||||
uint8_t i = 0;
|
uint8_t i = 0;
|
||||||
const auto numCons = m_connections[IDX_SYNCH].size();
|
const auto numCons = m_connections[ IDX_SYNCH ].size();
|
||||||
boost::shared_ptr< T > connection = nullptr;
|
boost::shared_ptr< T > connection = nullptr;
|
||||||
|
|
||||||
while( true )
|
while( true )
|
||||||
{
|
{
|
||||||
connection = m_connections[IDX_SYNCH][i++ % numCons];
|
connection = m_connections[ IDX_SYNCH ][ i++ % numCons ];
|
||||||
|
|
||||||
if( connection->lockIfReady() )
|
if( connection->lockIfReady() )
|
||||||
break;
|
break;
|
||||||
|
@ -277,4 +283,5 @@ void DatabaseWorkerPool<T>::ExecuteOrAppend(SQLTransaction& trans, PreparedState
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template class Core::Db::DbWorkerPool< Core::Db::CharaDbConnection >;
|
template
|
||||||
|
class Core::Db::DbWorkerPool< Core::Db::CharaDbConnection >;
|
||||||
|
|
|
@ -7,15 +7,17 @@
|
||||||
#include <ResultSet.h>
|
#include <ResultSet.h>
|
||||||
#include "Util/LockedWaitQueue.h"
|
#include "Util/LockedWaitQueue.h"
|
||||||
#include "DbConnection.h"
|
#include "DbConnection.h"
|
||||||
namespace Core
|
|
||||||
{
|
namespace Core {
|
||||||
namespace Db
|
namespace Db {
|
||||||
{
|
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
class LockedWaitQueue;
|
class LockedWaitQueue;
|
||||||
|
|
||||||
class Operation;
|
class Operation;
|
||||||
|
|
||||||
class PreparedStatement;
|
class PreparedStatement;
|
||||||
|
|
||||||
struct ConnectionInfo;
|
struct ConnectionInfo;
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
|
@ -34,7 +36,7 @@ public:
|
||||||
|
|
||||||
~DbWorkerPool();
|
~DbWorkerPool();
|
||||||
|
|
||||||
void setConnectionInfo( const ConnectionInfo& info, uint8_t asyncThreads, uint8_t synchThreads);
|
void setConnectionInfo( const ConnectionInfo& info, uint8_t asyncThreads, uint8_t synchThreads );
|
||||||
|
|
||||||
uint32_t open();
|
uint32_t open();
|
||||||
|
|
||||||
|
@ -49,12 +51,17 @@ public:
|
||||||
|
|
||||||
// Async execution
|
// Async execution
|
||||||
void execute( const std::string& sql );
|
void execute( const std::string& sql );
|
||||||
|
|
||||||
void execute( boost::shared_ptr< PreparedStatement > stmt );
|
void execute( boost::shared_ptr< PreparedStatement > stmt );
|
||||||
|
|
||||||
// Sync execution
|
// Sync execution
|
||||||
void directExecute( const std::string& sql );
|
void directExecute( const std::string& sql );
|
||||||
|
|
||||||
void directExecute( boost::shared_ptr< PreparedStatement > stmt );
|
void directExecute( boost::shared_ptr< PreparedStatement > stmt );
|
||||||
boost::shared_ptr< Mysql::ResultSet > query( const std::string& sql, boost::shared_ptr< T > connection = nullptr );
|
|
||||||
|
boost::shared_ptr< Mysql::ResultSet >
|
||||||
|
query( const std::string& sql, boost::shared_ptr< T > connection = nullptr );
|
||||||
|
|
||||||
boost::shared_ptr< Mysql::PreparedResultSet > query( boost::shared_ptr< PreparedStatement > stmt );
|
boost::shared_ptr< Mysql::PreparedResultSet > query( boost::shared_ptr< PreparedStatement > stmt );
|
||||||
|
|
||||||
using PreparedStatementIndex = typename T::Statements;
|
using PreparedStatementIndex = typename T::Statements;
|
||||||
|
@ -68,7 +75,7 @@ public:
|
||||||
private:
|
private:
|
||||||
uint32_t openConnections( InternalIndex type, uint8_t numConnections );
|
uint32_t openConnections( InternalIndex type, uint8_t numConnections );
|
||||||
|
|
||||||
unsigned long escapeString( char *to, const char *from, unsigned long length );
|
unsigned long escapeString( char* to, const char* from, unsigned long length );
|
||||||
|
|
||||||
void enqueue( boost::shared_ptr< Operation > op );
|
void enqueue( boost::shared_ptr< Operation > op );
|
||||||
|
|
||||||
|
|
|
@ -1,38 +1,48 @@
|
||||||
#ifndef SAPPHIRE_OPERATION_H
|
#ifndef SAPPHIRE_OPERATION_H
|
||||||
#define SAPPHIRE_OPERATION_H
|
#define SAPPHIRE_OPERATION_H
|
||||||
|
|
||||||
namespace Mysql
|
namespace Mysql {
|
||||||
{
|
class Connection;
|
||||||
class Connection;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Db {
|
||||||
namespace Db
|
class DbConnection;
|
||||||
{
|
|
||||||
class DbConnection;
|
|
||||||
class PreparedStatement;
|
|
||||||
|
|
||||||
class Operation
|
class PreparedStatement;
|
||||||
|
|
||||||
|
class Operation
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Operation() :
|
||||||
|
m_pConn( nullptr )
|
||||||
{
|
{
|
||||||
public:
|
}
|
||||||
Operation() : m_pConn( nullptr ) { }
|
|
||||||
virtual ~Operation() { }
|
virtual ~Operation()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
virtual int call()
|
virtual int call()
|
||||||
{
|
{
|
||||||
execute();
|
execute();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool execute() = 0;
|
virtual bool execute() = 0;
|
||||||
virtual void setConnection( DbConnection* pCon ) { m_pConn = pCon; }
|
|
||||||
|
virtual void setConnection( DbConnection* pCon )
|
||||||
|
{
|
||||||
|
m_pConn = pCon;
|
||||||
|
}
|
||||||
|
|
||||||
DbConnection* m_pConn;
|
DbConnection* m_pConn;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Operation( Operation const& right ) = delete;
|
Operation( Operation const& right ) = delete;
|
||||||
|
|
||||||
Operation& operator=( Operation const& right ) = delete;
|
Operation& operator=( Operation const& right ) = delete;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,9 +8,13 @@
|
||||||
|
|
||||||
Core::Db::PreparedStatement::PreparedStatement( uint32_t index ) :
|
Core::Db::PreparedStatement::PreparedStatement( uint32_t index ) :
|
||||||
m_stmt( nullptr ),
|
m_stmt( nullptr ),
|
||||||
m_index( index ) { }
|
m_index( index )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Core::Db::PreparedStatement::~PreparedStatement() { }
|
Core::Db::PreparedStatement::~PreparedStatement()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::bindParameters()
|
void Core::Db::PreparedStatement::bindParameters()
|
||||||
{
|
{
|
||||||
|
@ -19,34 +23,34 @@ void Core::Db::PreparedStatement::bindParameters()
|
||||||
uint8_t i = 1;
|
uint8_t i = 1;
|
||||||
for( ; i < m_statementData.size(); i++ )
|
for( ; i < m_statementData.size(); i++ )
|
||||||
{
|
{
|
||||||
switch( m_statementData[i].type)
|
switch( m_statementData[ i ].type )
|
||||||
{
|
{
|
||||||
case TYPE_BOOL:
|
case TYPE_BOOL:
|
||||||
m_stmt->setBoolean( i, m_statementData[i].data.boolean );
|
m_stmt->setBoolean( i, m_statementData[ i ].data.boolean );
|
||||||
break;
|
break;
|
||||||
case TYPE_UI:
|
case TYPE_UI:
|
||||||
m_stmt->setUInt( i, m_statementData[i].data.ui32 );
|
m_stmt->setUInt( i, m_statementData[ i ].data.ui32 );
|
||||||
break;
|
break;
|
||||||
case TYPE_I:
|
case TYPE_I:
|
||||||
m_stmt->setInt( i, m_statementData[i].data.i32 );
|
m_stmt->setInt( i, m_statementData[ i ].data.i32 );
|
||||||
break;
|
break;
|
||||||
case TYPE_UI64:
|
case TYPE_UI64:
|
||||||
m_stmt->setUInt64( i, m_statementData[i].data.ui64 );
|
m_stmt->setUInt64( i, m_statementData[ i ].data.ui64 );
|
||||||
break;
|
break;
|
||||||
case TYPE_I64:
|
case TYPE_I64:
|
||||||
m_stmt->setInt64( i, m_statementData[i].data.i64 );
|
m_stmt->setInt64( i, m_statementData[ i ].data.i64 );
|
||||||
break;
|
break;
|
||||||
case TYPE_DOUBLE:
|
case TYPE_DOUBLE:
|
||||||
m_stmt->setDouble( i, m_statementData[i].data.d );
|
m_stmt->setDouble( i, m_statementData[ i ].data.d );
|
||||||
break;
|
break;
|
||||||
case TYPE_STRING:
|
case TYPE_STRING:
|
||||||
m_stmt->setString( i, std::string( reinterpret_cast< char* >( m_statementData[i].binary.data() ) ) );
|
m_stmt->setString( i, std::string( reinterpret_cast< char* >( m_statementData[ i ].binary.data() ) ) );
|
||||||
break;
|
break;
|
||||||
case TYPE_BINARY:
|
case TYPE_BINARY:
|
||||||
{
|
{
|
||||||
std::stringstream *is = new std::stringstream;
|
std::stringstream* is = new std::stringstream;
|
||||||
|
|
||||||
for( auto entry : m_statementData[i].binary )
|
for( auto entry : m_statementData[ i ].binary )
|
||||||
is->rdbuf()->sputc( static_cast< char > ( entry ) );
|
is->rdbuf()->sputc( static_cast< char > ( entry ) );
|
||||||
|
|
||||||
m_stmt->setBlob( i, is );
|
m_stmt->setBlob( i, is );
|
||||||
|
@ -65,17 +69,17 @@ void Core::Db::PreparedStatement::setBool( uint8_t index, const bool value )
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].data.boolean = value;
|
m_statementData[ index ].data.boolean = value;
|
||||||
m_statementData[index].type = TYPE_BOOL;
|
m_statementData[ index ].type = TYPE_BOOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setUInt( uint8_t index, uint32_t value )
|
void Core::Db::PreparedStatement::setUInt( uint8_t index, uint32_t value )
|
||||||
{
|
{
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize(index+1);
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].data.ui32 = value;
|
m_statementData[ index ].data.ui32 = value;
|
||||||
m_statementData[index].type = TYPE_UI;
|
m_statementData[ index ].type = TYPE_UI;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setUInt64( uint8_t index, uint64_t value )
|
void Core::Db::PreparedStatement::setUInt64( uint8_t index, uint64_t value )
|
||||||
|
@ -83,8 +87,8 @@ void Core::Db::PreparedStatement::setUInt64( uint8_t index, uint64_t value )
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].data.ui64 = value;
|
m_statementData[ index ].data.ui64 = value;
|
||||||
m_statementData[index].type = TYPE_UI64;
|
m_statementData[ index ].type = TYPE_UI64;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setInt( uint8_t index, int32_t value )
|
void Core::Db::PreparedStatement::setInt( uint8_t index, int32_t value )
|
||||||
|
@ -92,17 +96,17 @@ void Core::Db::PreparedStatement::setInt( uint8_t index, int32_t value )
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].data.i32 = value;
|
m_statementData[ index ].data.i32 = value;
|
||||||
m_statementData[index].type = TYPE_I;
|
m_statementData[ index ].type = TYPE_I;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setInt64( uint8_t index, int64_t value )
|
void Core::Db::PreparedStatement::setInt64( uint8_t index, int64_t value )
|
||||||
{
|
{
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1);
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].data.i64 = value;
|
m_statementData[ index ].data.i64 = value;
|
||||||
m_statementData[index].type = TYPE_I64;
|
m_statementData[ index ].type = TYPE_I64;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setDouble( uint8_t index, double value )
|
void Core::Db::PreparedStatement::setDouble( uint8_t index, double value )
|
||||||
|
@ -110,8 +114,8 @@ void Core::Db::PreparedStatement::setDouble( uint8_t index, double value )
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].data.d = value;
|
m_statementData[ index ].data.d = value;
|
||||||
m_statementData[index].type = TYPE_DOUBLE;
|
m_statementData[ index ].type = TYPE_DOUBLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setString( uint8_t index, const std::string& value )
|
void Core::Db::PreparedStatement::setString( uint8_t index, const std::string& value )
|
||||||
|
@ -119,9 +123,9 @@ void Core::Db::PreparedStatement::setString( uint8_t index, const std::string& v
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].binary.resize( value.length() + 1 );
|
m_statementData[ index ].binary.resize( value.length() + 1 );
|
||||||
memcpy( m_statementData[index].binary.data(), value.c_str(), value.length() + 1 );
|
memcpy( m_statementData[ index ].binary.data(), value.c_str(), value.length() + 1 );
|
||||||
m_statementData[index].type = TYPE_STRING;
|
m_statementData[ index ].type = TYPE_STRING;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setBinary( uint8_t index, const std::vector< uint8_t >& value )
|
void Core::Db::PreparedStatement::setBinary( uint8_t index, const std::vector< uint8_t >& value )
|
||||||
|
@ -129,8 +133,8 @@ void Core::Db::PreparedStatement::setBinary( uint8_t index, const std::vector< u
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].binary = value;
|
m_statementData[ index ].binary = value;
|
||||||
m_statementData[index].type = TYPE_BINARY;
|
m_statementData[ index ].type = TYPE_BINARY;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setNull( uint8_t index )
|
void Core::Db::PreparedStatement::setNull( uint8_t index )
|
||||||
|
@ -138,7 +142,7 @@ void Core::Db::PreparedStatement::setNull( uint8_t index )
|
||||||
if( index >= m_statementData.size() )
|
if( index >= m_statementData.size() )
|
||||||
m_statementData.resize( index + 1 );
|
m_statementData.resize( index + 1 );
|
||||||
|
|
||||||
m_statementData[index].type = TYPE_NULL;
|
m_statementData[ index ].type = TYPE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t Core::Db::PreparedStatement::getIndex() const
|
uint32_t Core::Db::PreparedStatement::getIndex() const
|
||||||
|
@ -146,7 +150,7 @@ uint32_t Core::Db::PreparedStatement::getIndex() const
|
||||||
return m_index;
|
return m_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::Db::PreparedStatement::setMysqlPS( boost::shared_ptr< Mysql::PreparedStatement> pStmt )
|
void Core::Db::PreparedStatement::setMysqlPS( boost::shared_ptr< Mysql::PreparedStatement > pStmt )
|
||||||
{
|
{
|
||||||
m_stmt = pStmt;
|
m_stmt = pStmt;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +1,30 @@
|
||||||
#ifndef SAPPHIRE_PREPAREDSTATEMENT_H
|
#ifndef SAPPHIRE_PREPAREDSTATEMENT_H
|
||||||
#define SAPPHIRE_PREPAREDSTATEMENT_H
|
#define SAPPHIRE_PREPAREDSTATEMENT_H
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include "Operation.h"
|
#include "Operation.h"
|
||||||
|
|
||||||
namespace Mysql
|
namespace Mysql {
|
||||||
{
|
class PreparedStatement;
|
||||||
class PreparedStatement;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
|
namespace Db {
|
||||||
|
union PreparedStatementDataUnion
|
||||||
{
|
{
|
||||||
namespace Db
|
|
||||||
{
|
|
||||||
union PreparedStatementDataUnion
|
|
||||||
{
|
|
||||||
bool boolean;
|
bool boolean;
|
||||||
uint32_t ui32;
|
uint32_t ui32;
|
||||||
int32_t i32;
|
int32_t i32;
|
||||||
uint64_t ui64;
|
uint64_t ui64;
|
||||||
int64_t i64;
|
int64_t i64;
|
||||||
double d;
|
double d;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PreparedStatementValueType
|
enum PreparedStatementValueType
|
||||||
{
|
{
|
||||||
TYPE_BOOL,
|
TYPE_BOOL,
|
||||||
TYPE_UI,
|
TYPE_UI,
|
||||||
TYPE_UI64,
|
TYPE_UI64,
|
||||||
|
@ -36,49 +34,59 @@ namespace Db
|
||||||
TYPE_STRING,
|
TYPE_STRING,
|
||||||
TYPE_BINARY,
|
TYPE_BINARY,
|
||||||
TYPE_NULL
|
TYPE_NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PreparedStatementData
|
struct PreparedStatementData
|
||||||
{
|
{
|
||||||
PreparedStatementDataUnion data;
|
PreparedStatementDataUnion data;
|
||||||
PreparedStatementValueType type;
|
PreparedStatementValueType type;
|
||||||
std::vector< uint8_t > binary;
|
std::vector< uint8_t > binary;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PreparedStatement
|
class PreparedStatement
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit PreparedStatement( uint32_t index );
|
explicit PreparedStatement( uint32_t index );
|
||||||
|
|
||||||
~PreparedStatement();
|
~PreparedStatement();
|
||||||
|
|
||||||
void setBool( uint8_t index, bool value );
|
void setBool( uint8_t index, bool value );
|
||||||
|
|
||||||
void setUInt( uint8_t index, uint32_t value );
|
void setUInt( uint8_t index, uint32_t value );
|
||||||
|
|
||||||
void setUInt64( uint8_t index, uint64_t value );
|
void setUInt64( uint8_t index, uint64_t value );
|
||||||
|
|
||||||
void setInt( uint8_t index, int32_t value );
|
void setInt( uint8_t index, int32_t value );
|
||||||
|
|
||||||
void setInt64( uint8_t index, int64_t value );
|
void setInt64( uint8_t index, int64_t value );
|
||||||
|
|
||||||
void setDouble( uint8_t index, double value );
|
void setDouble( uint8_t index, double value );
|
||||||
|
|
||||||
void setString( uint8_t index, const std::string& value );
|
void setString( uint8_t index, const std::string& value );
|
||||||
|
|
||||||
void setBinary( uint8_t index, const std::vector< uint8_t >& value );
|
void setBinary( uint8_t index, const std::vector< uint8_t >& value );
|
||||||
|
|
||||||
void setNull( uint8_t index );
|
void setNull( uint8_t index );
|
||||||
|
|
||||||
uint32_t getIndex() const;
|
uint32_t getIndex() const;
|
||||||
|
|
||||||
void setMysqlPS( boost::shared_ptr< Mysql::PreparedStatement > pStmt );
|
void setMysqlPS( boost::shared_ptr< Mysql::PreparedStatement > pStmt );
|
||||||
|
|
||||||
void bindParameters();
|
void bindParameters();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
boost::shared_ptr< Mysql::PreparedStatement > m_stmt;
|
boost::shared_ptr< Mysql::PreparedStatement > m_stmt;
|
||||||
uint32_t m_index;
|
uint32_t m_index;
|
||||||
std::vector< PreparedStatementData > m_statementData;
|
std::vector< PreparedStatementData > m_statementData;
|
||||||
|
|
||||||
PreparedStatement( PreparedStatement const& right ) = delete;
|
PreparedStatement( PreparedStatement const& right ) = delete;
|
||||||
|
|
||||||
PreparedStatement& operator=( PreparedStatement const& right ) = delete;
|
PreparedStatement& operator=( PreparedStatement const& right ) = delete;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //SAPPHIRE_PREPAREDSTATEMENT_H
|
#endif //SAPPHIRE_PREPAREDSTATEMENT_H
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "DbConnection.h"
|
#include "DbConnection.h"
|
||||||
#include "PreparedStatement.h"
|
#include "PreparedStatement.h"
|
||||||
|
|
||||||
Core::Db::StatementTask::StatementTask( const std::string &sql, bool async )
|
Core::Db::StatementTask::StatementTask( const std::string& sql, bool async )
|
||||||
{
|
{
|
||||||
m_sql = sql;
|
m_sql = sql;
|
||||||
m_hasResult = async; // If the operation is async, then there's a result
|
m_hasResult = async; // If the operation is async, then there's a result
|
||||||
|
@ -38,10 +38,10 @@ bool Core::Db::StatementTask::execute()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Core::Db::PreparedStatementTask::PreparedStatementTask( boost::shared_ptr< Core::Db::PreparedStatement > stmt,
|
||||||
Core::Db::PreparedStatementTask::PreparedStatementTask( boost::shared_ptr< Core::Db::PreparedStatement > stmt, bool async ) :
|
bool async ) :
|
||||||
m_stmt(stmt)
|
m_stmt( stmt )
|
||||||
//, m_result(nullptr)
|
//, m_result(nullptr)
|
||||||
{
|
{
|
||||||
m_hasResult = async; // If the operation is async, then there's a result
|
m_hasResult = async; // If the operation is async, then there's a result
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,15 +5,14 @@
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include "Operation.h"
|
#include "Operation.h"
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Db {
|
||||||
namespace Db
|
class PreparedStatement;
|
||||||
{
|
|
||||||
class PreparedStatement;
|
|
||||||
|
|
||||||
class StatementTask : public Operation
|
class StatementTask :
|
||||||
{
|
public Operation
|
||||||
public:
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
StatementTask( const std::string& sql, bool async = false );
|
StatementTask( const std::string& sql, bool async = false );
|
||||||
|
|
||||||
|
@ -26,26 +25,28 @@ namespace Db
|
||||||
// return m_result->get_future();
|
// return m_result->get_future();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_sql;
|
std::string m_sql;
|
||||||
bool m_hasResult;
|
bool m_hasResult;
|
||||||
// QueryResultPromise *m_result;
|
// QueryResultPromise *m_result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PreparedStatementTask :
|
||||||
|
public Operation
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PreparedStatementTask( boost::shared_ptr< PreparedStatement > stmt, bool async = false );
|
||||||
|
|
||||||
class PreparedStatementTask : public Operation
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
PreparedStatementTask( boost::shared_ptr< PreparedStatement > stmt, bool async = false);
|
|
||||||
~PreparedStatementTask();
|
~PreparedStatementTask();
|
||||||
|
|
||||||
bool execute() override;
|
bool execute() override;
|
||||||
//PreparedQueryResultFuture getFuture() { return m_result->get_future(); }
|
//PreparedQueryResultFuture getFuture() { return m_result->get_future(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
boost::shared_ptr< PreparedStatement > m_stmt;
|
boost::shared_ptr< PreparedStatement > m_stmt;
|
||||||
bool m_hasResult;
|
bool m_hasResult;
|
||||||
//PreparedQueryResultPromise* m_result;
|
//PreparedQueryResultPromise* m_result;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,12 +114,12 @@ bool Core::Data::ExdData::loadZoneInfo()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
sumPc += getField< uint8_t >( weatherRateFields, i + 1 );
|
sumPc += getField< uint8_t >( weatherRateFields, i + 1 );
|
||||||
info.weather_rate_map[sumPc] = weatherId;
|
info.weather_rate_map[ sumPc ] = weatherId;
|
||||||
|
|
||||||
i += 2;
|
i += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_zoneInfoMap[id] = info;
|
m_zoneInfoMap[ id ] = info;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ bool Core::Data::ExdData::loadStatusEffectInfo()
|
||||||
auto& fields = row.second;
|
auto& fields = row.second;
|
||||||
uint32_t id = row.first;
|
uint32_t id = row.first;
|
||||||
|
|
||||||
StatusEffectInfo info { 0 };
|
StatusEffectInfo info{ 0 };
|
||||||
info.id = id;
|
info.id = id;
|
||||||
info.name = getField< std::string >( fields, 0 );
|
info.name = getField< std::string >( fields, 0 );
|
||||||
info.lock_movement = getField< bool >( fields, 7 ); // 7
|
info.lock_movement = getField< bool >( fields, 7 ); // 7
|
||||||
|
@ -149,7 +149,7 @@ bool Core::Data::ExdData::loadStatusEffectInfo()
|
||||||
info.is_fc_buff = getField< bool >( fields, 21 ); // 21
|
info.is_fc_buff = getField< bool >( fields, 21 ); // 21
|
||||||
info.invisibility = getField< bool >( fields, 22 ); // 22
|
info.invisibility = getField< bool >( fields, 22 ); // 22
|
||||||
|
|
||||||
m_statusEffectInfoMap[id] = info;
|
m_statusEffectInfoMap[ id ] = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -204,7 +204,7 @@ bool Core::Data::ExdData::loadClassJobInfo()
|
||||||
for( auto row : rows )
|
for( auto row : rows )
|
||||||
{
|
{
|
||||||
auto& fields = row.second;
|
auto& fields = row.second;
|
||||||
ClassJobInfo info { 0 };
|
ClassJobInfo info{ 0 };
|
||||||
|
|
||||||
uint32_t id = row.first;
|
uint32_t id = row.first;
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ bool Core::Data::ExdData::loadClassJobInfo()
|
||||||
info.mod_mnd = getField< uint16_t >( fields, 15 );
|
info.mod_mnd = getField< uint16_t >( fields, 15 );
|
||||||
info.mod_pie = getField< uint16_t >( fields, 16 );
|
info.mod_pie = getField< uint16_t >( fields, 16 );
|
||||||
|
|
||||||
m_classJobInfoMap[id] = info;
|
m_classJobInfoMap[ id ] = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -245,7 +245,7 @@ bool Core::Data::ExdData::loadParamGrowInfo()
|
||||||
{
|
{
|
||||||
auto& fields = row.second;
|
auto& fields = row.second;
|
||||||
|
|
||||||
ParamGrowthInfo info { 0 };
|
ParamGrowthInfo info{ 0 };
|
||||||
uint32_t id = row.first;
|
uint32_t id = row.first;
|
||||||
info.level = id;
|
info.level = id;
|
||||||
info.needed_exp = getField< int32_t >( fields, 0 );
|
info.needed_exp = getField< int32_t >( fields, 0 );
|
||||||
|
@ -253,10 +253,10 @@ bool Core::Data::ExdData::loadParamGrowInfo()
|
||||||
info.mp_const = getField< int32_t >( fields, 4 ); // 4
|
info.mp_const = getField< int32_t >( fields, 4 ); // 4
|
||||||
info.base_secondary = getField< int32_t >( fields, 5 );// 5
|
info.base_secondary = getField< int32_t >( fields, 5 );// 5
|
||||||
info.quest_exp_mod = getField< uint8_t >( fields, 7 ); // 7
|
info.quest_exp_mod = getField< uint8_t >( fields, 7 ); // 7
|
||||||
info.hp_mod = getField< uint16_t >(fields, 8); // 8
|
info.hp_mod = getField< uint16_t >( fields, 8 ); // 8
|
||||||
|
|
||||||
|
|
||||||
m_paramGrowthInfoMap[id] = info;
|
m_paramGrowthInfoMap[ id ] = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -271,7 +271,7 @@ bool Core::Data::ExdData::loadTribeInfo()
|
||||||
{
|
{
|
||||||
auto& fields = row.second;
|
auto& fields = row.second;
|
||||||
|
|
||||||
TribeInfo info { 0 };
|
TribeInfo info{ 0 };
|
||||||
uint32_t id = row.first;
|
uint32_t id = row.first;
|
||||||
info.id = id;
|
info.id = id;
|
||||||
info.name = getField< std::string >( fields, 0 );
|
info.name = getField< std::string >( fields, 0 );
|
||||||
|
@ -282,7 +282,7 @@ bool Core::Data::ExdData::loadTribeInfo()
|
||||||
info.mod_mnd = getField< int8_t >( fields, 8 );
|
info.mod_mnd = getField< int8_t >( fields, 8 );
|
||||||
info.mod_pie = getField< int8_t >( fields, 9 );
|
info.mod_pie = getField< int8_t >( fields, 9 );
|
||||||
|
|
||||||
m_tribeInfoMap[id] = info;
|
m_tribeInfoMap[ id ] = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -297,7 +297,7 @@ bool Core::Data::ExdData::loadEventActionInfo()
|
||||||
{
|
{
|
||||||
auto& fields = row.second;
|
auto& fields = row.second;
|
||||||
|
|
||||||
EventActionInfo info { 0 };
|
EventActionInfo info{ 0 };
|
||||||
|
|
||||||
uint32_t id = row.first;
|
uint32_t id = row.first;
|
||||||
|
|
||||||
|
@ -313,7 +313,7 @@ bool Core::Data::ExdData::loadEventActionInfo()
|
||||||
info.name = name;
|
info.name = name;
|
||||||
info.castTime = time * 1000;
|
info.castTime = time * 1000;
|
||||||
|
|
||||||
m_EventActionInfoMap[id] = info;
|
m_EventActionInfoMap[ id ] = info;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ bool Core::Data::ExdData::loadActionInfo()
|
||||||
uint8_t unlock_level = getField< uint8_t >( fields, 11 ); // 11
|
uint8_t unlock_level = getField< uint8_t >( fields, 11 ); // 11
|
||||||
int8_t range = getField< int8_t >( fields, 14 ); // 13
|
int8_t range = getField< int8_t >( fields, 14 ); // 13
|
||||||
bool can_target_self = getField< bool >( fields, 15 ); // 14
|
bool can_target_self = getField< bool >( fields, 15 ); // 14
|
||||||
bool can_target_party = getField< bool>( fields, 16 ); // 15
|
bool can_target_party = getField< bool >( fields, 16 ); // 15
|
||||||
bool can_target_friendly = getField< bool >( fields, 17 ); // 16
|
bool can_target_friendly = getField< bool >( fields, 17 ); // 16
|
||||||
bool can_target_enemy = getField< bool >( fields, 18 ); // 17
|
bool can_target_enemy = getField< bool >( fields, 18 ); // 17
|
||||||
|
|
||||||
|
@ -418,7 +418,7 @@ bool Core::Data::ExdData::loadActionInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::PlaceNameInfo >
|
boost::shared_ptr< Core::Data::PlaceNameInfo >
|
||||||
Core::Data::ExdData::getPlaceNameInfo( uint32_t placeNameId )
|
Core::Data::ExdData::getPlaceNameInfo( uint32_t placeNameId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -438,7 +438,7 @@ boost::shared_ptr< Core::Data::PlaceNameInfo >
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::ItemInfo >
|
boost::shared_ptr< Core::Data::ItemInfo >
|
||||||
Core::Data::ExdData::getItemInfo( uint32_t catalogId )
|
Core::Data::ExdData::getItemInfo( uint32_t catalogId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -470,11 +470,11 @@ boost::shared_ptr< Core::Data::ItemInfo >
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::AetheryteInfo >
|
boost::shared_ptr< Core::Data::AetheryteInfo >
|
||||||
Core::Data::ExdData::getAetheryteInfo( uint32_t aetheryteId )
|
Core::Data::ExdData::getAetheryteInfo( uint32_t aetheryteId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return m_aetheryteInfoMap[aetheryteId];
|
return m_aetheryteInfoMap[ aetheryteId ];
|
||||||
}
|
}
|
||||||
catch( ... )
|
catch( ... )
|
||||||
{
|
{
|
||||||
|
@ -490,9 +490,9 @@ Core::Data::ExdData::getActionInfo( uint32_t actionId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return m_actionInfoMap[actionId];
|
return m_actionInfoMap[ actionId ];
|
||||||
}
|
}
|
||||||
catch ( ... )
|
catch( ... )
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -502,7 +502,7 @@ Core::Data::ExdData::getActionInfo( uint32_t actionId )
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::CustomTalkInfo >
|
boost::shared_ptr< Core::Data::CustomTalkInfo >
|
||||||
Core::Data::ExdData::getCustomTalkInfo( uint32_t customTalkId )
|
Core::Data::ExdData::getCustomTalkInfo( uint32_t customTalkId )
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -524,7 +524,7 @@ boost::shared_ptr< Core::Data::CustomTalkInfo >
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::QuestInfo >
|
boost::shared_ptr< Core::Data::QuestInfo >
|
||||||
Core::Data::ExdData::getQuestInfo( uint32_t questId )
|
Core::Data::ExdData::getQuestInfo( uint32_t questId )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
@ -614,7 +614,7 @@ boost::shared_ptr< Core::Data::QuestInfo >
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::EventItemInfo >
|
boost::shared_ptr< Core::Data::EventItemInfo >
|
||||||
Core::Data::ExdData::getEventItemInfo( uint32_t eventItemId )
|
Core::Data::ExdData::getEventItemInfo( uint32_t eventItemId )
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -637,7 +637,7 @@ boost::shared_ptr< Core::Data::EventItemInfo >
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::LevelInfo >
|
boost::shared_ptr< Core::Data::LevelInfo >
|
||||||
Core::Data::ExdData::getLevelInfo( uint32_t levelId )
|
Core::Data::ExdData::getLevelInfo( uint32_t levelId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -660,7 +660,8 @@ boost::shared_ptr< Core::Data::LevelInfo >
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<boost::shared_ptr< Core::Data::AetheryteInfo > > Core::Data::ExdData::getAetheryteInfoForZone( uint16_t zoneId )
|
const std::vector< boost::shared_ptr< Core::Data::AetheryteInfo > >
|
||||||
|
Core::Data::ExdData::getAetheryteInfoForZone( uint16_t zoneId )
|
||||||
{
|
{
|
||||||
std::vector< boost::shared_ptr< AetheryteInfo > > aetheryteList;
|
std::vector< boost::shared_ptr< AetheryteInfo > > aetheryteList;
|
||||||
|
|
||||||
|
@ -676,7 +677,7 @@ const std::vector<boost::shared_ptr< Core::Data::AetheryteInfo > > Core::Data::E
|
||||||
|
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::OpeningInfo >
|
boost::shared_ptr< Core::Data::OpeningInfo >
|
||||||
Core::Data::ExdData::getOpeningInfo( uint32_t openingId )
|
Core::Data::ExdData::getOpeningInfo( uint32_t openingId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -696,7 +697,7 @@ boost::shared_ptr< Core::Data::OpeningInfo >
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr< Core::Data::RaceInfo >
|
boost::shared_ptr< Core::Data::RaceInfo >
|
||||||
Core::Data::ExdData::getRaceInfo( uint32_t raceId )
|
Core::Data::ExdData::getRaceInfo( uint32_t raceId )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,10 +22,10 @@ case DataType::uint64: 9
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
|
|
||||||
struct ZoneInfo
|
struct ZoneInfo
|
||||||
{
|
{
|
||||||
uint16_t id;
|
uint16_t id;
|
||||||
std::string zone_str;
|
std::string zone_str;
|
||||||
std::string zone_name;
|
std::string zone_name;
|
||||||
|
@ -34,14 +34,14 @@ namespace Core {
|
||||||
int16_t discovery_index;
|
int16_t discovery_index;
|
||||||
bool is_two_byte;
|
bool is_two_byte;
|
||||||
uint16_t weather_rate;
|
uint16_t weather_rate;
|
||||||
std::map< uint8_t, int32_t> weather_rate_map;
|
std::map< uint8_t, int32_t > weather_rate_map;
|
||||||
|
|
||||||
int32_t aetheryte_index;
|
int32_t aetheryte_index;
|
||||||
uint8_t zone_type;
|
uint8_t zone_type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ClassJobInfo
|
struct ClassJobInfo
|
||||||
{
|
{
|
||||||
uint8_t id;
|
uint8_t id;
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string name_short;
|
std::string name_short;
|
||||||
|
@ -55,10 +55,10 @@ namespace Core {
|
||||||
uint16_t mod_int;
|
uint16_t mod_int;
|
||||||
uint16_t mod_mnd;
|
uint16_t mod_mnd;
|
||||||
uint16_t mod_pie;
|
uint16_t mod_pie;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct QuestInfo
|
struct QuestInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string name_intern;
|
std::string name_intern;
|
||||||
|
@ -93,26 +93,25 @@ namespace Core {
|
||||||
uint8_t reward_reputation;
|
uint8_t reward_reputation;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::vector< std::string > script_entity;
|
std::vector< std::string > script_entity;
|
||||||
std::vector< uint32_t > script_value;
|
std::vector< uint32_t > script_value;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct EventActionInfo
|
struct EventActionInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name;
|
std::string name;
|
||||||
uint32_t castTime;
|
uint32_t castTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct OpeningInfo
|
struct OpeningInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name;
|
std::string name;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ParamGrowthInfo
|
struct ParamGrowthInfo
|
||||||
{
|
{
|
||||||
uint32_t level;
|
uint32_t level;
|
||||||
uint32_t needed_exp;
|
uint32_t needed_exp;
|
||||||
int16_t hp_mod;
|
int16_t hp_mod;
|
||||||
|
@ -120,22 +119,22 @@ namespace Core {
|
||||||
int16_t mp_mod;
|
int16_t mp_mod;
|
||||||
int32_t base_secondary;
|
int32_t base_secondary;
|
||||||
uint16_t quest_exp_mod;
|
uint16_t quest_exp_mod;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CustomTalkInfo
|
struct CustomTalkInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name_intern;
|
std::string name_intern;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PlaceNameInfo
|
struct PlaceNameInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string placename;
|
std::string placename;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AetheryteInfo
|
struct AetheryteInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string placename;
|
std::string placename;
|
||||||
std::string placename_aethernet;
|
std::string placename_aethernet;
|
||||||
|
@ -145,10 +144,10 @@ namespace Core {
|
||||||
|
|
||||||
int16_t map_coord_x;
|
int16_t map_coord_x;
|
||||||
int16_t map_coord_y;
|
int16_t map_coord_y;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RaceInfo
|
struct RaceInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name;
|
std::string name;
|
||||||
uint32_t male_body;
|
uint32_t male_body;
|
||||||
|
@ -166,10 +165,10 @@ namespace Core {
|
||||||
int8_t mod_int;
|
int8_t mod_int;
|
||||||
int8_t mod_mnd;
|
int8_t mod_mnd;
|
||||||
int8_t mod_pie;
|
int8_t mod_pie;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TribeInfo
|
struct TribeInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name;
|
std::string name;
|
||||||
|
|
||||||
|
@ -179,10 +178,10 @@ namespace Core {
|
||||||
int8_t mod_int;
|
int8_t mod_int;
|
||||||
int8_t mod_mnd;
|
int8_t mod_mnd;
|
||||||
int8_t mod_pie;
|
int8_t mod_pie;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct LevelInfo
|
struct LevelInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
|
@ -190,17 +189,17 @@ namespace Core {
|
||||||
float r;
|
float r;
|
||||||
uint32_t actor_id;
|
uint32_t actor_id;
|
||||||
uint32_t zone_id;
|
uint32_t zone_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ClassJobCategoryInfo
|
struct ClassJobCategoryInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
// should they add new jobs, this needs to be changed
|
// should they add new jobs, this needs to be changed
|
||||||
bool can_equip[0x33];
|
bool can_equip[0x33];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ItemInfo
|
struct ItemInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name; //0
|
std::string name; //0
|
||||||
uint16_t item_level; //11
|
uint16_t item_level; //11
|
||||||
|
@ -218,10 +217,10 @@ namespace Core {
|
||||||
bool is_unique; //72
|
bool is_unique; //72
|
||||||
bool is_untradeable; //73
|
bool is_untradeable; //73
|
||||||
uint32_t class_job_index; //86
|
uint32_t class_job_index; //86
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ActionInfo
|
struct ActionInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name; // 0
|
std::string name; // 0
|
||||||
uint16_t category; // 3
|
uint16_t category; // 3
|
||||||
|
@ -261,18 +260,18 @@ namespace Core {
|
||||||
|
|
||||||
bool is_aoe; // Internal only
|
bool is_aoe; // Internal only
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct EventItemInfo
|
struct EventItemInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name; //0
|
std::string name; //0
|
||||||
uint32_t eventId;
|
uint32_t eventId;
|
||||||
uint32_t castTime;
|
uint32_t castTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StatusEffectInfo
|
struct StatusEffectInfo
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
std::string name; // 0
|
std::string name; // 0
|
||||||
bool lock_movement; // 7
|
bool lock_movement; // 7
|
||||||
|
@ -284,13 +283,14 @@ namespace Core {
|
||||||
bool inflicted_by_actor; // 17
|
bool inflicted_by_actor; // 17
|
||||||
bool is_fc_buff; // 21
|
bool is_fc_buff; // 21
|
||||||
bool invisibility; // 22
|
bool invisibility; // 22
|
||||||
};
|
};
|
||||||
|
|
||||||
class ExdData
|
class ExdData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ExdData();
|
ExdData();
|
||||||
~ExdData(void);
|
|
||||||
|
~ExdData( void );
|
||||||
|
|
||||||
bool init( const std::string& path );
|
bool init( const std::string& path );
|
||||||
|
|
||||||
|
@ -302,8 +302,8 @@ namespace Core {
|
||||||
return *boost::get< T >( &fields.at( index ) );
|
return *boost::get< T >( &fields.at( index ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<xiv::dat::GameData> m_data;
|
boost::shared_ptr< xiv::dat::GameData > m_data;
|
||||||
boost::shared_ptr<xiv::exd::ExdData> m_exd_data;
|
boost::shared_ptr< xiv::exd::ExdData > m_exd_data;
|
||||||
|
|
||||||
xiv::exd::Exd m_questDat;
|
xiv::exd::Exd m_questDat;
|
||||||
xiv::exd::Exd m_openingDat;
|
xiv::exd::Exd m_openingDat;
|
||||||
|
@ -316,40 +316,56 @@ namespace Core {
|
||||||
xiv::exd::Exd m_raceDat;
|
xiv::exd::Exd m_raceDat;
|
||||||
xiv::exd::Exd m_eventItemDat;
|
xiv::exd::Exd m_eventItemDat;
|
||||||
|
|
||||||
std::map<uint32_t, ZoneInfo> m_zoneInfoMap;
|
std::map< uint32_t, ZoneInfo > m_zoneInfoMap;
|
||||||
std::map<uint8_t, ClassJobInfo> m_classJobInfoMap;
|
std::map< uint8_t, ClassJobInfo > m_classJobInfoMap;
|
||||||
std::map<uint32_t, ParamGrowthInfo> m_paramGrowthInfoMap;
|
std::map< uint32_t, ParamGrowthInfo > m_paramGrowthInfoMap;
|
||||||
std::map<uint16_t, EventActionInfo> m_EventActionInfoMap;
|
std::map< uint16_t, EventActionInfo > m_EventActionInfoMap;
|
||||||
std::map<uint16_t, boost::shared_ptr< ActionInfo > > m_actionInfoMap;
|
std::map< uint16_t, boost::shared_ptr< ActionInfo > > m_actionInfoMap;
|
||||||
std::map<uint16_t, StatusEffectInfo> m_statusEffectInfoMap;
|
std::map< uint16_t, StatusEffectInfo > m_statusEffectInfoMap;
|
||||||
std::map<uint32_t, boost::shared_ptr< AetheryteInfo > > m_aetheryteInfoMap;
|
std::map< uint32_t, boost::shared_ptr< AetheryteInfo > > m_aetheryteInfoMap;
|
||||||
std::map<uint32_t, TribeInfo > m_tribeInfoMap;
|
std::map< uint32_t, TribeInfo > m_tribeInfoMap;
|
||||||
|
|
||||||
bool loadZoneInfo();
|
bool loadZoneInfo();
|
||||||
|
|
||||||
bool loadClassJobInfo();
|
bool loadClassJobInfo();
|
||||||
|
|
||||||
bool loadParamGrowInfo();
|
bool loadParamGrowInfo();
|
||||||
|
|
||||||
bool loadEventActionInfo();
|
bool loadEventActionInfo();
|
||||||
|
|
||||||
bool loadActionInfo();
|
bool loadActionInfo();
|
||||||
|
|
||||||
bool loadStatusEffectInfo();
|
bool loadStatusEffectInfo();
|
||||||
|
|
||||||
bool loadAetheryteInfo();
|
bool loadAetheryteInfo();
|
||||||
|
|
||||||
bool loadTribeInfo();
|
bool loadTribeInfo();
|
||||||
|
|
||||||
boost::shared_ptr< QuestInfo > getQuestInfo( uint32_t questId );
|
boost::shared_ptr< QuestInfo > getQuestInfo( uint32_t questId );
|
||||||
|
|
||||||
boost::shared_ptr< OpeningInfo > getOpeningInfo( uint32_t openingId );
|
boost::shared_ptr< OpeningInfo > getOpeningInfo( uint32_t openingId );
|
||||||
|
|
||||||
boost::shared_ptr< CustomTalkInfo > getCustomTalkInfo( uint32_t customTalkId );
|
boost::shared_ptr< CustomTalkInfo > getCustomTalkInfo( uint32_t customTalkId );
|
||||||
|
|
||||||
boost::shared_ptr< AetheryteInfo > getAetheryteInfo( uint32_t aetheryteId );
|
boost::shared_ptr< AetheryteInfo > getAetheryteInfo( uint32_t aetheryteId );
|
||||||
|
|
||||||
boost::shared_ptr< ActionInfo > getActionInfo( uint32_t actionId );
|
boost::shared_ptr< ActionInfo > getActionInfo( uint32_t actionId );
|
||||||
|
|
||||||
boost::shared_ptr< PlaceNameInfo > getPlaceNameInfo( uint32_t placeNameId );
|
boost::shared_ptr< PlaceNameInfo > getPlaceNameInfo( uint32_t placeNameId );
|
||||||
|
|
||||||
boost::shared_ptr< ItemInfo > getItemInfo( uint32_t catalogId );
|
boost::shared_ptr< ItemInfo > getItemInfo( uint32_t catalogId );
|
||||||
|
|
||||||
boost::shared_ptr< RaceInfo > getRaceInfo( uint32_t raceId );
|
boost::shared_ptr< RaceInfo > getRaceInfo( uint32_t raceId );
|
||||||
|
|
||||||
boost::shared_ptr< EventItemInfo > getEventItemInfo( uint32_t eventItemId );
|
boost::shared_ptr< EventItemInfo > getEventItemInfo( uint32_t eventItemId );
|
||||||
|
|
||||||
boost::shared_ptr< LevelInfo > getLevelInfo( uint32_t levelId );
|
boost::shared_ptr< LevelInfo > getLevelInfo( uint32_t levelId );
|
||||||
|
|
||||||
const std::vector< boost::shared_ptr< AetheryteInfo > > getAetheryteInfoForZone( uint16_t zoneId );
|
const std::vector< boost::shared_ptr< AetheryteInfo > > getAetheryteInfoForZone( uint16_t zoneId );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
#include <boost/variant.hpp>
|
#include <boost/variant.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Core::Data::Achievement::Achievement( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::Achievement::Achievement( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_AchievementDat.get_row( row_id );
|
auto row = exdData->m_AchievementDat.get_row( row_id );
|
||||||
|
@ -244,7 +243,8 @@ Core::Data::AirshipExplorationLog::AirshipExplorationLog( uint32_t row_id, Core:
|
||||||
text = exdData->getField< std::string >( row, 0 );
|
text = exdData->getField< std::string >( row, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::AirshipExplorationParamType::AirshipExplorationParamType( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::AirshipExplorationParamType::AirshipExplorationParamType( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_AirshipExplorationParamTypeDat.get_row( row_id );
|
auto row = exdData->m_AirshipExplorationParamTypeDat.get_row( row_id );
|
||||||
name = exdData->getField< std::string >( row, 0 );
|
name = exdData->getField< std::string >( row, 0 );
|
||||||
|
@ -306,7 +306,8 @@ Core::Data::AnimaWeapon5SpiritTalk::AnimaWeapon5SpiritTalk( uint32_t row_id, Cor
|
||||||
dialogue = exdData->getField< int32_t >( row, 0 );
|
dialogue = exdData->getField< int32_t >( row, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::AnimaWeapon5SpiritTalkParam::AnimaWeapon5SpiritTalkParam( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::AnimaWeapon5SpiritTalkParam::AnimaWeapon5SpiritTalkParam( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_AnimaWeapon5SpiritTalkParamDat.get_row( row_id );
|
auto row = exdData->m_AnimaWeapon5SpiritTalkParamDat.get_row( row_id );
|
||||||
prologue = exdData->getField< std::string >( row, 0 );
|
prologue = exdData->getField< std::string >( row, 0 );
|
||||||
|
@ -959,13 +960,15 @@ Core::Data::CompanyCraftDraft::CompanyCraftDraft( uint32_t row_id, Core::Data::E
|
||||||
order = exdData->getField< uint32_t >( row, 8 );
|
order = exdData->getField< uint32_t >( row, 8 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::CompanyCraftDraftCategory::CompanyCraftDraftCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::CompanyCraftDraftCategory::CompanyCraftDraftCategory( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_CompanyCraftDraftCategoryDat.get_row( row_id );
|
auto row = exdData->m_CompanyCraftDraftCategoryDat.get_row( row_id );
|
||||||
name = exdData->getField< std::string >( row, 0 );
|
name = exdData->getField< std::string >( row, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::CompanyCraftManufactoryState::CompanyCraftManufactoryState( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::CompanyCraftManufactoryState::CompanyCraftManufactoryState( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_CompanyCraftManufactoryStateDat.get_row( row_id );
|
auto row = exdData->m_CompanyCraftManufactoryStateDat.get_row( row_id );
|
||||||
name = exdData->getField< std::string >( row, 0 );
|
name = exdData->getField< std::string >( row, 0 );
|
||||||
|
@ -1072,7 +1075,8 @@ Core::Data::ContentFinderCondition::ContentFinderCondition( uint32_t row_id, Cor
|
||||||
icon = exdData->getField< uint32_t >( row, 37 );
|
icon = exdData->getField< uint32_t >( row, 37 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::ContentFinderConditionTransient::ContentFinderConditionTransient( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::ContentFinderConditionTransient::ContentFinderConditionTransient( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_ContentFinderConditionTransientDat.get_row( row_id );
|
auto row = exdData->m_ContentFinderConditionTransientDat.get_row( row_id );
|
||||||
description = exdData->getField< std::string >( row, 0 );
|
description = exdData->getField< std::string >( row, 0 );
|
||||||
|
@ -1602,7 +1606,8 @@ Core::Data::EurekaGrowData::EurekaGrowData( uint32_t row_id, Core::Data::ExdData
|
||||||
baseResistance = exdData->getField< uint16_t >( row, 0 );
|
baseResistance = exdData->getField< uint16_t >( row, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::EurekaSphereElementAdjust::EurekaSphereElementAdjust( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::EurekaSphereElementAdjust::EurekaSphereElementAdjust( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_EurekaSphereElementAdjustDat.get_row( row_id );
|
auto row = exdData->m_EurekaSphereElementAdjustDat.get_row( row_id );
|
||||||
powerModifier = exdData->getField< uint16_t >( row, 0 );
|
powerModifier = exdData->getField< uint16_t >( row, 0 );
|
||||||
|
@ -1828,7 +1833,8 @@ Core::Data::GatheringItem::GatheringItem( uint32_t row_id, Core::Data::ExdDataGe
|
||||||
isHidden = exdData->getField< bool >( row, 2 );
|
isHidden = exdData->getField< bool >( row, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::GatheringItemLevelConvertTable::GatheringItemLevelConvertTable( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::GatheringItemLevelConvertTable::GatheringItemLevelConvertTable( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_GatheringItemLevelConvertTableDat.get_row( row_id );
|
auto row = exdData->m_GatheringItemLevelConvertTableDat.get_row( row_id );
|
||||||
gatheringItemLevel = exdData->getField< uint8_t >( row, 0 );
|
gatheringItemLevel = exdData->getField< uint8_t >( row, 0 );
|
||||||
|
@ -2024,7 +2030,8 @@ Core::Data::GcArmyExpedition::GcArmyExpedition( uint32_t row_id, Core::Data::Exd
|
||||||
description = exdData->getField< std::string >( row, 9 );
|
description = exdData->getField< std::string >( row, 9 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::GcArmyExpeditionMemberBonus::GcArmyExpeditionMemberBonus( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::GcArmyExpeditionMemberBonus::GcArmyExpeditionMemberBonus( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_GcArmyExpeditionMemberBonusDat.get_row( row_id );
|
auto row = exdData->m_GcArmyExpeditionMemberBonusDat.get_row( row_id );
|
||||||
race = exdData->getField< uint8_t >( row, 0 );
|
race = exdData->getField< uint8_t >( row, 0 );
|
||||||
|
@ -2623,7 +2630,8 @@ Core::Data::MasterpieceSupplyDuty::MasterpieceSupplyDuty( uint32_t row_id, Core:
|
||||||
rewardCurrency = exdData->getField< uint16_t >( row, 2 );
|
rewardCurrency = exdData->getField< uint16_t >( row, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::MasterpieceSupplyMultiplier::MasterpieceSupplyMultiplier( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::MasterpieceSupplyMultiplier::MasterpieceSupplyMultiplier( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_MasterpieceSupplyMultiplierDat.get_row( row_id );
|
auto row = exdData->m_MasterpieceSupplyMultiplierDat.get_row( row_id );
|
||||||
xpMultiplier.push_back( exdData->getField< uint16_t >( row, 0 ) );
|
xpMultiplier.push_back( exdData->getField< uint16_t >( row, 0 ) );
|
||||||
|
@ -3370,7 +3378,8 @@ Core::Data::RacingChocoboName::RacingChocoboName( uint32_t row_id, Core::Data::E
|
||||||
name = exdData->getField< std::string >( row, 0 );
|
name = exdData->getField< std::string >( row, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::RacingChocoboNameCategory::RacingChocoboNameCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::RacingChocoboNameCategory::RacingChocoboNameCategory( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_RacingChocoboNameCategoryDat.get_row( row_id );
|
auto row = exdData->m_RacingChocoboNameCategoryDat.get_row( row_id );
|
||||||
sortKey = exdData->getField< uint8_t >( row, 0 );
|
sortKey = exdData->getField< uint8_t >( row, 0 );
|
||||||
|
@ -3768,7 +3777,8 @@ Core::Data::ScenarioTreeTips::ScenarioTreeTips( uint32_t row_id, Core::Data::Exd
|
||||||
tips2 = exdData->getField< uint32_t >( row, 3 );
|
tips2 = exdData->getField< uint32_t >( row, 3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Data::ScenarioTreeTipsClassQuest::ScenarioTreeTipsClassQuest( uint32_t row_id, Core::Data::ExdDataGenerated* exdData )
|
Core::Data::ScenarioTreeTipsClassQuest::ScenarioTreeTipsClassQuest( uint32_t row_id,
|
||||||
|
Core::Data::ExdDataGenerated* exdData )
|
||||||
{
|
{
|
||||||
auto row = exdData->m_ScenarioTreeTipsClassQuestDat.get_row( row_id );
|
auto row = exdData->m_ScenarioTreeTipsClassQuestDat.get_row( row_id );
|
||||||
quest = exdData->getField< uint32_t >( row, 0 );
|
quest = exdData->getField< uint32_t >( row, 0 );
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,35 +3,34 @@
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
|
||||||
|
|
||||||
class ConfigMgr;
|
class ConfigMgr;
|
||||||
|
|
||||||
typedef boost::shared_ptr< ConfigMgr > ConfigMgrPtr;
|
typedef boost::shared_ptr< ConfigMgr > ConfigMgrPtr;
|
||||||
|
|
||||||
|
|
||||||
namespace Network
|
namespace Network {
|
||||||
{
|
class Hive;
|
||||||
class Hive;
|
|
||||||
class Acceptor;
|
|
||||||
class Connection;
|
|
||||||
|
|
||||||
typedef boost::shared_ptr< Hive > HivePtr;
|
class Acceptor;
|
||||||
typedef boost::shared_ptr< Acceptor > AcceptorPtr;
|
|
||||||
typedef boost::shared_ptr< Connection > ConnectionPtr;
|
|
||||||
|
|
||||||
namespace Packets
|
class Connection;
|
||||||
{
|
|
||||||
class GamePacket;
|
|
||||||
class FFXIVPacketBase;
|
|
||||||
|
|
||||||
typedef boost::shared_ptr< GamePacket > GamePacketPtr;
|
typedef boost::shared_ptr< Hive > HivePtr;
|
||||||
typedef boost::shared_ptr< FFXIVPacketBase > FFXIVPacketBasePtr;
|
typedef boost::shared_ptr< Acceptor > AcceptorPtr;
|
||||||
}
|
typedef boost::shared_ptr< Connection > ConnectionPtr;
|
||||||
|
|
||||||
}
|
namespace Packets {
|
||||||
|
class GamePacket;
|
||||||
|
|
||||||
|
class FFXIVPacketBase;
|
||||||
|
|
||||||
|
typedef boost::shared_ptr< GamePacket > GamePacketPtr;
|
||||||
|
typedef boost::shared_ptr< FFXIVPacketBase > FFXIVPacketBasePtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,15 +7,14 @@
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
|
||||||
|
|
||||||
class Framework
|
class Framework
|
||||||
{
|
{
|
||||||
using TypenameToObject = std::map< std::type_index, boost::shared_ptr< void > >;
|
using TypenameToObject = std::map< std::type_index, boost::shared_ptr< void > >;
|
||||||
TypenameToObject ObjectMap;
|
TypenameToObject ObjectMap;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template< typename T >
|
template< typename T >
|
||||||
boost::shared_ptr< T > get()
|
boost::shared_ptr< T > get()
|
||||||
{
|
{
|
||||||
|
@ -28,9 +27,9 @@ namespace Core
|
||||||
void set( boost::shared_ptr< T > value )
|
void set( boost::shared_ptr< T > value )
|
||||||
{
|
{
|
||||||
assert( value ); // why would anyone store nullptrs....
|
assert( value ); // why would anyone store nullptrs....
|
||||||
ObjectMap[typeid( T )] = value;
|
ObjectMap[ typeid( T ) ] = value;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,72 +17,75 @@
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
|
||||||
Logger::Logger()
|
Logger::Logger()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger::~Logger()
|
Logger::~Logger()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::setLogPath(const std::string& logPath)
|
void Logger::setLogPath( const std::string& logPath )
|
||||||
{
|
{
|
||||||
m_logFile = logPath;
|
m_logFile = logPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::init()
|
void Logger::init()
|
||||||
{
|
{
|
||||||
|
|
||||||
auto format = (
|
auto format = (
|
||||||
boost::log::expressions::stream <<
|
boost::log::expressions::stream <<
|
||||||
boost::log::expressions::format_date_time< boost::posix_time::ptime >("TimeStamp", "[%H:%M:%S]") <<
|
boost::log::expressions::format_date_time< boost::posix_time::ptime >(
|
||||||
|
"TimeStamp", "[%H:%M:%S]" ) <<
|
||||||
"[" << boost::log::trivial::severity << "] " <<
|
"[" << boost::log::trivial::severity << "] " <<
|
||||||
boost::log::expressions::smessage
|
boost::log::expressions::smessage
|
||||||
);
|
);
|
||||||
|
|
||||||
boost::log::add_file_log
|
boost::log::add_file_log
|
||||||
(
|
(
|
||||||
boost::log::keywords::file_name = m_logFile + "%Y-%m-%d.log", /*< file name pattern >*/
|
boost::log::keywords::file_name =
|
||||||
boost::log::keywords::rotation_size = 10 * 1024 * 1024, /*< rotate files every 10 MiB... >*/
|
m_logFile + "%Y-%m-%d.log", /*< file name pattern >*/
|
||||||
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0), /*< ...or at midnight >*/
|
boost::log::keywords::rotation_size =
|
||||||
|
10 * 1024 * 1024, /*< rotate files every 10 MiB... >*/
|
||||||
|
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point( 0, 0,
|
||||||
|
0 ), /*< ...or at midnight >*/
|
||||||
boost::log::keywords::open_mode = std::ios::app,
|
boost::log::keywords::open_mode = std::ios::app,
|
||||||
boost::log::keywords::format = format,
|
boost::log::keywords::format = format,
|
||||||
boost::log::keywords::auto_flush = true
|
boost::log::keywords::auto_flush = true
|
||||||
);
|
);
|
||||||
|
|
||||||
boost::log::add_console_log(std::cout, boost::log::keywords::format = format);
|
boost::log::add_console_log( std::cout, boost::log::keywords::format = format );
|
||||||
|
|
||||||
boost::log::add_common_attributes();
|
boost::log::add_common_attributes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Logger::Log(LoggingSeverity logSev, const std::string& text)
|
void Logger::Log( LoggingSeverity logSev, const std::string& text )
|
||||||
{
|
{
|
||||||
BOOST_LOG_SEV(m_lg, (boost::log::trivial::severity_level)logSev) << text;
|
BOOST_LOG_SEV( m_lg, ( boost::log::trivial::severity_level ) logSev ) << text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::error( const std::string& text )
|
void Logger::error( const std::string& text )
|
||||||
{
|
{
|
||||||
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::error ) << text;
|
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::error ) << text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::info( const std::string& text )
|
void Logger::info( const std::string& text )
|
||||||
{
|
{
|
||||||
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::info ) << text;
|
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::info ) << text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::debug( const std::string& text )
|
void Logger::debug( const std::string& text )
|
||||||
{
|
{
|
||||||
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::debug ) << text;
|
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::debug ) << text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logger::fatal( const std::string& text )
|
void Logger::fatal( const std::string& text )
|
||||||
{
|
{
|
||||||
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::fatal ) << text;
|
BOOST_LOG_SEV( m_lg, boost::log::trivial::severity_level::fatal ) << text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -6,46 +6,48 @@
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
|
|
||||||
enum struct LoggingSeverity : uint8_t
|
enum struct LoggingSeverity :
|
||||||
{
|
uint8_t
|
||||||
|
{
|
||||||
trace = 0,
|
trace = 0,
|
||||||
debug = 1,
|
debug = 1,
|
||||||
info = 2,
|
info = 2,
|
||||||
warning = 3,
|
warning = 3,
|
||||||
error = 4,
|
error = 4,
|
||||||
fatal = 5
|
fatal = 5
|
||||||
};
|
};
|
||||||
|
|
||||||
class Logger
|
class Logger
|
||||||
{
|
{
|
||||||
|
|
||||||
private:
|
private:
|
||||||
boost::log::sources::severity_logger_mt< boost::log::trivial::severity_level > m_lg;
|
boost::log::sources::severity_logger_mt< boost::log::trivial::severity_level > m_lg;
|
||||||
|
|
||||||
std::string m_logFile;
|
std::string m_logFile;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Logger();
|
Logger();
|
||||||
|
|
||||||
~Logger();
|
~Logger();
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
void Log(LoggingSeverity logSev, const std::string& text);
|
void Log( LoggingSeverity logSev, const std::string& text );
|
||||||
|
|
||||||
void error( const std::string& text );
|
void error( const std::string& text );
|
||||||
|
|
||||||
void info( const std::string& text );
|
void info( const std::string& text );
|
||||||
|
|
||||||
void debug( const std::string& text );
|
void debug( const std::string& text );
|
||||||
|
|
||||||
void fatal( const std::string& text );
|
void fatal( const std::string& text );
|
||||||
|
|
||||||
void setLogPath(const std::string& logPath);
|
void setLogPath( const std::string& logPath );
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -4,39 +4,38 @@
|
||||||
#include <boost/interprocess/detail/atomic.hpp>
|
#include <boost/interprocess/detail/atomic.hpp>
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
namespace Network {
|
||||||
namespace Network
|
|
||||||
{
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Acceptor::Acceptor( HivePtr hive )
|
Acceptor::Acceptor( HivePtr hive )
|
||||||
: m_hive( hive ),
|
:
|
||||||
|
m_hive( hive ),
|
||||||
m_acceptor( hive->GetService() ),
|
m_acceptor( hive->GetService() ),
|
||||||
m_io_strand( hive->GetService() ),
|
m_io_strand( hive->GetService() ),
|
||||||
m_error_state( 0 )
|
m_error_state( 0 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Acceptor::~Acceptor()
|
Acceptor::~Acceptor()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Acceptor::OnAccept( ConnectionPtr connection, const std::string & host, uint16_t port )
|
bool Acceptor::OnAccept( ConnectionPtr connection, const std::string& host, uint16_t port )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acceptor::OnError( const boost::system::error_code & error )
|
void Acceptor::OnError( const boost::system::error_code& error )
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Acceptor::StartError( const boost::system::error_code & error )
|
void Acceptor::StartError( const boost::system::error_code& error )
|
||||||
{
|
{
|
||||||
if( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 0 ) == 0 )
|
if( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 0 ) == 0 )
|
||||||
{
|
{
|
||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
|
@ -44,19 +43,19 @@ namespace Core
|
||||||
m_acceptor.close( ec );
|
m_acceptor.close( ec );
|
||||||
OnError( error );
|
OnError( error );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acceptor::DispatchAccept( ConnectionPtr connection )
|
void Acceptor::DispatchAccept( ConnectionPtr connection )
|
||||||
{
|
{
|
||||||
m_acceptor.async_accept( connection->GetSocket(),
|
m_acceptor.async_accept( connection->GetSocket(),
|
||||||
connection->GetStrand().wrap( boost::bind( &Acceptor::HandleAccept,
|
connection->GetStrand().wrap( boost::bind( &Acceptor::HandleAccept,
|
||||||
shared_from_this(),
|
shared_from_this(),
|
||||||
_1,
|
_1,
|
||||||
connection ) ) );
|
connection ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acceptor::HandleAccept( const boost::system::error_code & error, ConnectionPtr connection )
|
void Acceptor::HandleAccept( const boost::system::error_code& error, ConnectionPtr connection )
|
||||||
{
|
{
|
||||||
if( error || HasError() || m_hive->HasStopped() )
|
if( error || HasError() || m_hive->HasStopped() )
|
||||||
{
|
{
|
||||||
connection->StartError( error );
|
connection->StartError( error );
|
||||||
|
@ -69,7 +68,8 @@ namespace Core
|
||||||
connection->GetSocket().remote_endpoint().address().to_string(),
|
connection->GetSocket().remote_endpoint().address().to_string(),
|
||||||
connection->GetSocket().remote_endpoint().port() ) )
|
connection->GetSocket().remote_endpoint().port() ) )
|
||||||
{
|
{
|
||||||
connection->OnAccept( m_acceptor.local_endpoint().address().to_string(), m_acceptor.local_endpoint().port() );
|
connection->OnAccept( m_acceptor.local_endpoint().address().to_string(),
|
||||||
|
m_acceptor.local_endpoint().port() );
|
||||||
connection->Recv();
|
connection->Recv();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,20 +78,20 @@ namespace Core
|
||||||
connection->StartError( error );
|
connection->StartError( error );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acceptor::Stop()
|
void Acceptor::Stop()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acceptor::Accept( ConnectionPtr connection )
|
void Acceptor::Accept( ConnectionPtr connection )
|
||||||
{
|
{
|
||||||
m_io_strand.post( boost::bind( &Acceptor::DispatchAccept, shared_from_this(), connection ) );
|
m_io_strand.post( boost::bind( &Acceptor::DispatchAccept, shared_from_this(), connection ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Acceptor::Listen( const std::string & host, const uint16_t & port )
|
void Acceptor::Listen( const std::string& host, const uint16_t& port )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::resolver resolver( m_hive->GetService() );
|
boost::asio::ip::tcp::resolver resolver( m_hive->GetService() );
|
||||||
|
@ -109,22 +109,22 @@ namespace Core
|
||||||
assert( true );
|
assert( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HivePtr Acceptor::GetHive()
|
HivePtr Acceptor::GetHive()
|
||||||
{
|
{
|
||||||
return m_hive;
|
return m_hive;
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::asio::ip::tcp::acceptor & Acceptor::GetAcceptor()
|
boost::asio::ip::tcp::acceptor& Acceptor::GetAcceptor()
|
||||||
{
|
{
|
||||||
return m_acceptor;
|
return m_acceptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Acceptor::HasError()
|
bool Acceptor::HasError()
|
||||||
{
|
{
|
||||||
return ( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 1 ) == 1 );
|
return ( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 1 ) == 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,62 +7,66 @@
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include "Forwards.h"
|
#include "Forwards.h"
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
|
namespace Network {
|
||||||
|
|
||||||
|
class Connection;
|
||||||
|
|
||||||
|
class Acceptor :
|
||||||
|
public boost::enable_shared_from_this< Acceptor >
|
||||||
{
|
{
|
||||||
namespace Network
|
|
||||||
{
|
|
||||||
|
|
||||||
class Connection;
|
|
||||||
|
|
||||||
class Acceptor : public boost::enable_shared_from_this< Acceptor >
|
|
||||||
{
|
|
||||||
friend class Hive;
|
friend class Hive;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HivePtr m_hive;
|
HivePtr m_hive;
|
||||||
boost::asio::ip::tcp::acceptor m_acceptor;
|
boost::asio::ip::tcp::acceptor m_acceptor;
|
||||||
boost::asio::strand m_io_strand;
|
boost::asio::strand m_io_strand;
|
||||||
volatile uint32_t m_error_state;
|
volatile uint32_t m_error_state;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Acceptor( const Acceptor & rhs );
|
Acceptor( const Acceptor& rhs );
|
||||||
Acceptor & operator =( const Acceptor & rhs );
|
|
||||||
void StartError( const boost::system::error_code & error );
|
|
||||||
void DispatchAccept( ConnectionPtr connection );
|
|
||||||
void HandleAccept( const boost::system::error_code & error, ConnectionPtr connection );
|
|
||||||
|
|
||||||
private:
|
Acceptor& operator=( const Acceptor& rhs );
|
||||||
|
|
||||||
|
void StartError( const boost::system::error_code& error );
|
||||||
|
|
||||||
|
void DispatchAccept( ConnectionPtr connection );
|
||||||
|
|
||||||
|
void HandleAccept( const boost::system::error_code& error, ConnectionPtr connection );
|
||||||
|
|
||||||
|
private:
|
||||||
// Called when a connection has connected to the server. This function
|
// Called when a connection has connected to the server. This function
|
||||||
// should return true to invoke the connection's OnAccept function if the
|
// should return true to invoke the connection's OnAccept function if the
|
||||||
// connection will be kept. If the connection will not be kept, the
|
// connection will be kept. If the connection will not be kept, the
|
||||||
// connection's Disconnect function should be called and the function
|
// connection's Disconnect function should be called and the function
|
||||||
// should return false.
|
// should return false.
|
||||||
virtual bool OnAccept( ConnectionPtr connection, const std::string & host, uint16_t port );
|
virtual bool OnAccept( ConnectionPtr connection, const std::string& host, uint16_t port );
|
||||||
|
|
||||||
// Called when an error is encountered. Most typically, this is when the
|
// Called when an error is encountered. Most typically, this is when the
|
||||||
// acceptor is being closed via the Stop function or if the Listen is
|
// acceptor is being closed via the Stop function or if the Listen is
|
||||||
// called on an address that is not available.
|
// called on an address that is not available.
|
||||||
virtual void OnError( const boost::system::error_code & error );
|
virtual void OnError( const boost::system::error_code& error );
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Acceptor( HivePtr hive );
|
Acceptor( HivePtr hive );
|
||||||
|
|
||||||
virtual ~Acceptor();
|
virtual ~Acceptor();
|
||||||
|
|
||||||
// Returns the Hive object.
|
// Returns the Hive object.
|
||||||
HivePtr GetHive();
|
HivePtr GetHive();
|
||||||
|
|
||||||
// Returns the acceptor object.
|
// Returns the acceptor object.
|
||||||
boost::asio::ip::tcp::acceptor & GetAcceptor();
|
boost::asio::ip::tcp::acceptor& GetAcceptor();
|
||||||
|
|
||||||
// Returns the strand object.
|
// Returns the strand object.
|
||||||
boost::asio::strand & GetStrand();
|
boost::asio::strand& GetStrand();
|
||||||
|
|
||||||
// Returns true if this object has an error associated with it.
|
// Returns true if this object has an error associated with it.
|
||||||
bool HasError();
|
bool HasError();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Begin listening on the specific network interface.
|
// Begin listening on the specific network interface.
|
||||||
void Listen( const std::string & host, const uint16_t & port );
|
void Listen( const std::string& host, const uint16_t& port );
|
||||||
|
|
||||||
// Posts the connection to the listening interface. The next client that
|
// Posts the connection to the listening interface. The next client that
|
||||||
// connections will be given this connection. If multiple calls to Accept
|
// connections will be given this connection. If multiple calls to Accept
|
||||||
|
@ -71,8 +75,8 @@ namespace Core
|
||||||
|
|
||||||
// Stop the Acceptor from listening.
|
// Stop the Acceptor from listening.
|
||||||
void Stop();
|
void Stop();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -12,11 +12,12 @@
|
||||||
// They are also defined within the Core::Common namespace to avoid collisions.
|
// They are also defined within the Core::Common namespace to avoid collisions.
|
||||||
// +---------------------------------------------------------------------------
|
// +---------------------------------------------------------------------------
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
namespace ActorControl {
|
namespace ActorControl {
|
||||||
|
|
||||||
enum ActorControlType : uint16_t
|
enum ActorControlType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
/*! Toggles weapon status -> Sheathed/UnSheathed
|
/*! Toggles weapon status -> Sheathed/UnSheathed
|
||||||
\param param1 status 0|1 */
|
\param param1 status 0|1 */
|
||||||
ToggleWeapon = 0x00,
|
ToggleWeapon = 0x00,
|
||||||
|
@ -222,10 +223,10 @@ namespace Core {
|
||||||
SetDutyActionHud = 0x5E9, // disable/enable
|
SetDutyActionHud = 0x5E9, // disable/enable
|
||||||
SetDutyActionActive = 0x5EA,
|
SetDutyActionActive = 0x5EA,
|
||||||
SetDutyActionRemaining = 0x5EB,
|
SetDutyActionRemaining = 0x5EB,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ClientTriggerType
|
enum ClientTriggerType
|
||||||
{
|
{
|
||||||
ToggleSheathe = 0x01,
|
ToggleSheathe = 0x01,
|
||||||
ToggleAutoAttack = 0x02,
|
ToggleAutoAttack = 0x02,
|
||||||
ChangeTarget = 0x03,
|
ChangeTarget = 0x03,
|
||||||
|
@ -291,10 +292,10 @@ namespace Core {
|
||||||
OpenDuelUI = 0x898, // Open a duel ui
|
OpenDuelUI = 0x898, // Open a duel ui
|
||||||
DuelRequestResult = 0x899, // either accept/reject
|
DuelRequestResult = 0x899, // either accept/reject
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* ActorControl */
|
} /* ActorControl */
|
||||||
} /* Common */
|
} /* Common */
|
||||||
} /* Core */
|
} /* Core */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -70,12 +70,12 @@ struct FFXIVARR_PACKET_HEADER
|
||||||
uint32_t unknown_24;
|
uint32_t unknown_24;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline ostream& operator << ( ostream& os, const FFXIVARR_PACKET_HEADER& hdr )
|
inline ostream& operator<<( ostream& os, const FFXIVARR_PACKET_HEADER& hdr )
|
||||||
{
|
{
|
||||||
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
|
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline istream& operator >> ( istream& is, FFXIVARR_PACKET_HEADER& hdr )
|
inline istream& operator>>( istream& is, FFXIVARR_PACKET_HEADER& hdr )
|
||||||
{
|
{
|
||||||
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
|
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
|
||||||
}
|
}
|
||||||
|
@ -108,20 +108,24 @@ struct FFXIVARR_PACKET_SEGMENT_HEADER
|
||||||
uint16_t padding;
|
uint16_t padding;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline ostream& operator << ( ostream& os, const FFXIVARR_PACKET_SEGMENT_HEADER& hdr )
|
inline ostream& operator<<( ostream& os, const FFXIVARR_PACKET_SEGMENT_HEADER& hdr )
|
||||||
{
|
{
|
||||||
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
|
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline istream& operator >> ( istream& is, FFXIVARR_PACKET_SEGMENT_HEADER& hdr )
|
inline istream& operator>>( istream& is, FFXIVARR_PACKET_SEGMENT_HEADER& hdr )
|
||||||
{
|
{
|
||||||
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
|
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
|
||||||
}
|
}
|
||||||
|
|
||||||
template < int T > struct FFXIVIpcBasePacket
|
template< int T >
|
||||||
|
struct FFXIVIpcBasePacket
|
||||||
{
|
{
|
||||||
/** Creates a constant representing the IPC type */
|
/** Creates a constant representing the IPC type */
|
||||||
enum { _ServerIpcType = T };
|
enum
|
||||||
|
{
|
||||||
|
_ServerIpcType = T
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVARR_PACKET_RAW
|
struct FFXIVARR_PACKET_RAW
|
||||||
|
@ -167,12 +171,12 @@ struct FFXIVARR_IPC_HEADER
|
||||||
uint32_t padding1;
|
uint32_t padding1;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline ostream& operator << ( ostream& os, const FFXIVARR_IPC_HEADER& hdr )
|
inline ostream& operator<<( ostream& os, const FFXIVARR_IPC_HEADER& hdr )
|
||||||
{
|
{
|
||||||
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
|
return os.write( reinterpret_cast< const char* >( &hdr ), sizeof hdr );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline istream& operator >> ( istream& is, FFXIVARR_IPC_HEADER& hdr )
|
inline istream& operator>>( istream& is, FFXIVARR_IPC_HEADER& hdr )
|
||||||
{
|
{
|
||||||
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
|
return is.read( reinterpret_cast< char* >( &hdr ), sizeof hdr );
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,32 +4,33 @@
|
||||||
#include <boost/bind.hpp>
|
#include <boost/bind.hpp>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Connection::Connection( HivePtr hive )
|
Connection::Connection( HivePtr hive )
|
||||||
: m_hive( hive ),
|
:
|
||||||
|
m_hive( hive ),
|
||||||
m_socket( hive->GetService() ),
|
m_socket( hive->GetService() ),
|
||||||
m_io_strand( hive->GetService() ),
|
m_io_strand( hive->GetService() ),
|
||||||
m_receive_buffer_size( 32000 ),
|
m_receive_buffer_size( 32000 ),
|
||||||
m_error_state( 0 )
|
m_error_state( 0 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Connection::~Connection()
|
Connection::~Connection()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::Bind( const std::string & ip, uint16_t port )
|
void Connection::Bind( const std::string& ip, uint16_t port )
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::endpoint endpoint( boost::asio::ip::address::from_string( ip ), port );
|
boost::asio::ip::tcp::endpoint endpoint( boost::asio::ip::address::from_string( ip ), port );
|
||||||
m_socket.open( endpoint.protocol() );
|
m_socket.open( endpoint.protocol() );
|
||||||
m_socket.set_option( boost::asio::ip::tcp::acceptor::reuse_address( false ) );
|
m_socket.set_option( boost::asio::ip::tcp::acceptor::reuse_address( false ) );
|
||||||
m_socket.bind( endpoint );
|
m_socket.bind( endpoint );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::StartSend()
|
void Connection::StartSend()
|
||||||
{
|
{
|
||||||
if( !m_pending_sends.empty() )
|
if( !m_pending_sends.empty() )
|
||||||
{
|
{
|
||||||
boost::asio::async_write( m_socket,
|
boost::asio::async_write( m_socket,
|
||||||
|
@ -39,10 +40,10 @@ namespace Core {
|
||||||
boost::asio::placeholders::error,
|
boost::asio::placeholders::error,
|
||||||
m_pending_sends.begin() ) ) );
|
m_pending_sends.begin() ) ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::StartRecv( int32_t total_bytes )
|
void Connection::StartRecv( int32_t total_bytes )
|
||||||
{
|
{
|
||||||
if( total_bytes > 0 )
|
if( total_bytes > 0 )
|
||||||
{
|
{
|
||||||
m_recv_buffer.resize( total_bytes );
|
m_recv_buffer.resize( total_bytes );
|
||||||
|
@ -62,10 +63,10 @@ namespace Core {
|
||||||
_1,
|
_1,
|
||||||
_2 ) ) );
|
_2 ) ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::StartError( const boost::system::error_code & error )
|
void Connection::StartError( const boost::system::error_code& error )
|
||||||
{
|
{
|
||||||
if( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 0 ) == 0 )
|
if( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 0 ) == 0 )
|
||||||
{
|
{
|
||||||
boost::system::error_code ec;
|
boost::system::error_code ec;
|
||||||
|
@ -73,10 +74,10 @@ namespace Core {
|
||||||
m_socket.close( ec );
|
m_socket.close( ec );
|
||||||
OnError( error );
|
OnError( error );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::HandleConnect( const boost::system::error_code & error )
|
void Connection::HandleConnect( const boost::system::error_code& error )
|
||||||
{
|
{
|
||||||
if( error || HasError() || m_hive->HasStopped() )
|
if( error || HasError() || m_hive->HasStopped() )
|
||||||
{
|
{
|
||||||
StartError( error );
|
StartError( error );
|
||||||
|
@ -93,10 +94,11 @@ namespace Core {
|
||||||
StartError( error );
|
StartError( error );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::HandleSend( const boost::system::error_code & error, std::list< std::vector< uint8_t > >::iterator itr )
|
void
|
||||||
{
|
Connection::HandleSend( const boost::system::error_code& error, std::list< std::vector< uint8_t > >::iterator itr )
|
||||||
|
{
|
||||||
if( error || HasError() || m_hive->HasStopped() )
|
if( error || HasError() || m_hive->HasStopped() )
|
||||||
{
|
{
|
||||||
StartError( error );
|
StartError( error );
|
||||||
|
@ -107,10 +109,10 @@ namespace Core {
|
||||||
m_pending_sends.erase( itr );
|
m_pending_sends.erase( itr );
|
||||||
StartSend();
|
StartSend();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::HandleRecv( const boost::system::error_code & error, int32_t actual_bytes )
|
void Connection::HandleRecv( const boost::system::error_code& error, int32_t actual_bytes )
|
||||||
{
|
{
|
||||||
if( error || HasError() || m_hive->HasStopped() )
|
if( error || HasError() || m_hive->HasStopped() )
|
||||||
{
|
{
|
||||||
StartError( error );
|
StartError( error );
|
||||||
|
@ -126,85 +128,86 @@ namespace Core {
|
||||||
StartRecv( m_pending_recvs.front() );
|
StartRecv( m_pending_recvs.front() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::DispatchSend( std::vector< uint8_t > buffer )
|
void Connection::DispatchSend( std::vector< uint8_t > buffer )
|
||||||
{
|
{
|
||||||
bool should_start_send = m_pending_sends.empty();
|
bool should_start_send = m_pending_sends.empty();
|
||||||
m_pending_sends.push_back( buffer );
|
m_pending_sends.push_back( buffer );
|
||||||
if( should_start_send )
|
if( should_start_send )
|
||||||
{
|
{
|
||||||
StartSend();
|
StartSend();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::DispatchRecv( int32_t total_bytes )
|
void Connection::DispatchRecv( int32_t total_bytes )
|
||||||
{
|
{
|
||||||
bool should_start_receive = m_pending_recvs.empty();
|
bool should_start_receive = m_pending_recvs.empty();
|
||||||
m_pending_recvs.push_back( total_bytes );
|
m_pending_recvs.push_back( total_bytes );
|
||||||
if( should_start_receive )
|
if( should_start_receive )
|
||||||
{
|
{
|
||||||
StartRecv( total_bytes );
|
StartRecv( total_bytes );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Connection::Connect( const std::string & host, uint16_t port)
|
void Connection::Connect( const std::string& host, uint16_t port )
|
||||||
{
|
{
|
||||||
boost::asio::ip::tcp::resolver resolver( m_hive->GetService() );
|
boost::asio::ip::tcp::resolver resolver( m_hive->GetService() );
|
||||||
boost::asio::ip::tcp::resolver::query query( host, std::to_string( port ) );
|
boost::asio::ip::tcp::resolver::query query( host, std::to_string( port ) );
|
||||||
boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve( query );
|
boost::asio::ip::tcp::resolver::iterator iterator = resolver.resolve( query );
|
||||||
m_socket.async_connect( *iterator, m_io_strand.wrap( boost::bind( &Connection::HandleConnect, shared_from_this(), _1 ) ) );
|
m_socket.async_connect( *iterator,
|
||||||
|
m_io_strand.wrap( boost::bind( &Connection::HandleConnect, shared_from_this(), _1 ) ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::Disconnect()
|
void Connection::Disconnect()
|
||||||
{
|
{
|
||||||
OnDisconnect();
|
OnDisconnect();
|
||||||
m_socket.close();
|
m_socket.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::Recv( int32_t total_bytes )
|
void Connection::Recv( int32_t total_bytes )
|
||||||
{
|
{
|
||||||
m_io_strand.post( boost::bind( &Connection::DispatchRecv, shared_from_this(), total_bytes ) );
|
m_io_strand.post( boost::bind( &Connection::DispatchRecv, shared_from_this(), total_bytes ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::Send( const std::vector< uint8_t > & buffer )
|
void Connection::Send( const std::vector< uint8_t >& buffer )
|
||||||
{
|
{
|
||||||
m_io_strand.post( boost::bind( &Connection::DispatchSend, shared_from_this(), buffer ) );
|
m_io_strand.post( boost::bind( &Connection::DispatchSend, shared_from_this(), buffer ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::asio::ip::tcp::socket & Connection::GetSocket()
|
boost::asio::ip::tcp::socket& Connection::GetSocket()
|
||||||
{
|
{
|
||||||
return m_socket;
|
return m_socket;
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::asio::strand & Connection::GetStrand()
|
boost::asio::strand& Connection::GetStrand()
|
||||||
{
|
{
|
||||||
return m_io_strand;
|
return m_io_strand;
|
||||||
}
|
}
|
||||||
|
|
||||||
HivePtr Connection::GetHive()
|
HivePtr Connection::GetHive()
|
||||||
{
|
{
|
||||||
return m_hive;
|
return m_hive;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Connection::SetReceiveBufferSize( int32_t size )
|
void Connection::SetReceiveBufferSize( int32_t size )
|
||||||
{
|
{
|
||||||
m_receive_buffer_size = size;
|
m_receive_buffer_size = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Connection::GetReceiveBufferSize() const
|
int32_t Connection::GetReceiveBufferSize() const
|
||||||
{
|
{
|
||||||
return m_receive_buffer_size;
|
return m_receive_buffer_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Connection::HasError()
|
bool Connection::HasError()
|
||||||
{
|
{
|
||||||
return ( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 1 ) == 1 );
|
return ( boost::interprocess::ipcdetail::atomic_cas32( &m_error_state, 1, 1 ) == 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
|
@ -14,21 +14,25 @@
|
||||||
|
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
class Hive;
|
class Hive;
|
||||||
class Acceptor;
|
|
||||||
class Connection;
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
class Acceptor;
|
||||||
|
|
||||||
class Connection : public boost::enable_shared_from_this< Connection >
|
class Connection;
|
||||||
{
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class Connection :
|
||||||
|
public boost::enable_shared_from_this< Connection >
|
||||||
|
{
|
||||||
friend class Acceptor;
|
friend class Acceptor;
|
||||||
|
|
||||||
friend class Hive;
|
friend class Hive;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
HivePtr m_hive;
|
HivePtr m_hive;
|
||||||
boost::asio::ip::tcp::socket m_socket;
|
boost::asio::ip::tcp::socket m_socket;
|
||||||
boost::asio::strand m_io_strand;
|
boost::asio::strand m_io_strand;
|
||||||
|
@ -40,49 +44,71 @@ namespace Core {
|
||||||
|
|
||||||
|
|
||||||
Connection( HivePtr hive );
|
Connection( HivePtr hive );
|
||||||
|
|
||||||
virtual ~Connection();
|
virtual ~Connection();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Connection( const Connection & rhs );
|
Connection( const Connection& rhs );
|
||||||
Connection & operator =( const Connection & rhs );
|
|
||||||
|
Connection& operator=( const Connection& rhs );
|
||||||
|
|
||||||
void StartSend();
|
void StartSend();
|
||||||
|
|
||||||
void StartRecv( int32_t total_bytes );
|
void StartRecv( int32_t total_bytes );
|
||||||
void StartError( const boost::system::error_code & error );
|
|
||||||
|
void StartError( const boost::system::error_code& error );
|
||||||
|
|
||||||
void DispatchSend( std::vector< uint8_t > buffer );
|
void DispatchSend( std::vector< uint8_t > buffer );
|
||||||
|
|
||||||
void DispatchRecv( int32_t total_bytes );
|
void DispatchRecv( int32_t total_bytes );
|
||||||
void HandleConnect( const boost::system::error_code & error );
|
|
||||||
void HandleSend( const boost::system::error_code & error, std::list< std::vector< uint8_t > >::iterator itr );
|
void HandleConnect( const boost::system::error_code& error );
|
||||||
void HandleRecv( const boost::system::error_code & error, int32_t actual_bytes );
|
|
||||||
|
void HandleSend( const boost::system::error_code& error, std::list< std::vector< uint8_t > >::iterator itr );
|
||||||
|
|
||||||
|
void HandleRecv( const boost::system::error_code& error, int32_t actual_bytes );
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Called when the connection has successfully connected to the local host.
|
// Called when the connection has successfully connected to the local host.
|
||||||
virtual void OnAccept( const std::string & host, uint16_t port ) {};
|
virtual void OnAccept( const std::string& host, uint16_t port )
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
// Called when the connection has successfully connected to the remote host.
|
// Called when the connection has successfully connected to the remote host.
|
||||||
virtual void OnConnect( const std::string & host, uint16_t port ) {};
|
virtual void OnConnect( const std::string& host, uint16_t port )
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
// Called when data has been sent by the connection.
|
// Called when data has been sent by the connection.
|
||||||
virtual void OnSend( const std::vector< uint8_t > & buffer ) {};
|
virtual void OnSend( const std::vector< uint8_t >& buffer )
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
// Called when data has been received by the connection.
|
// Called when data has been received by the connection.
|
||||||
virtual void OnRecv( std::vector< uint8_t > & buffer ) {};
|
virtual void OnRecv( std::vector< uint8_t >& buffer )
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
// Called when an error is encountered.
|
// Called when an error is encountered.
|
||||||
virtual void OnError( const boost::system::error_code & error ) {};
|
virtual void OnError( const boost::system::error_code& error )
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
// Called when the connection has been disconnected
|
// Called when the connection has been disconnected
|
||||||
virtual void OnDisconnect() {};
|
virtual void OnDisconnect()
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Returns the Hive object.
|
// Returns the Hive object.
|
||||||
HivePtr GetHive();
|
HivePtr GetHive();
|
||||||
|
|
||||||
// Returns the socket object.
|
// Returns the socket object.
|
||||||
boost::asio::ip::tcp::socket & GetSocket();
|
boost::asio::ip::tcp::socket& GetSocket();
|
||||||
|
|
||||||
// Returns the strand object.
|
// Returns the strand object.
|
||||||
boost::asio::strand & GetStrand();
|
boost::asio::strand& GetStrand();
|
||||||
|
|
||||||
// Sets the application specific receive buffer size used. For stream
|
// Sets the application specific receive buffer size used. For stream
|
||||||
// based protocols such as HTTP, you want this to be pretty large, like
|
// based protocols such as HTTP, you want this to be pretty large, like
|
||||||
|
@ -98,13 +124,13 @@ namespace Core {
|
||||||
bool HasError();
|
bool HasError();
|
||||||
|
|
||||||
// Binds the socket to the specified interface.
|
// Binds the socket to the specified interface.
|
||||||
void Bind( const std::string & ip, uint16_t port );
|
void Bind( const std::string& ip, uint16_t port );
|
||||||
|
|
||||||
// Starts an a/synchronous connect.
|
// Starts an a/synchronous connect.
|
||||||
void Connect( const std::string & host, uint16_t port );
|
void Connect( const std::string& host, uint16_t port );
|
||||||
|
|
||||||
// Posts data to be sent to the connection.
|
// Posts data to be sent to the connection.
|
||||||
void Send( const std::vector< uint8_t > & buffer );
|
void Send( const std::vector< uint8_t >& buffer );
|
||||||
|
|
||||||
// Posts a recv for the connection to process. If total_bytes is 0, then
|
// Posts a recv for the connection to process. If total_bytes is 0, then
|
||||||
// as many bytes as possible up to GetReceiveBufferSize() will be
|
// as many bytes as possible up to GetReceiveBufferSize() will be
|
||||||
|
@ -114,15 +140,15 @@ namespace Core {
|
||||||
|
|
||||||
// Posts an asynchronous disconnect event for the object to process.
|
// Posts an asynchronous disconnect event for the object to process.
|
||||||
void Disconnect();
|
void Disconnect();
|
||||||
};
|
};
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
template<class T>
|
template< class T >
|
||||||
boost::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive )
|
boost::shared_ptr< T > addServerToHive( const std::string& listenIp, uint32_t port, HivePtr pHive )
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AcceptorPtr acceptor( new Acceptor( pHive ) );
|
AcceptorPtr acceptor( new Acceptor( pHive ) );
|
||||||
|
@ -135,9 +161,9 @@ namespace Core {
|
||||||
{
|
{
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace Packets {
|
||||||
// Must forward define these in order to enable the compiler to produce the
|
// Must forward define these in order to enable the compiler to produce the
|
||||||
// correct template functions.
|
// correct template functions.
|
||||||
|
|
||||||
template < typename T, typename T1 >
|
template< typename T, typename T1 >
|
||||||
class FFXIVIpcPacket;
|
class FFXIVIpcPacket;
|
||||||
|
|
||||||
template< class T >
|
template< class T >
|
||||||
|
@ -62,11 +62,12 @@ boost::shared_ptr< LobbyChannelPacket< T > > makeLobbyPacket( Args... args )
|
||||||
/**
|
/**
|
||||||
* The base implementation of a game packet. Needed for parsing packets.
|
* The base implementation of a game packet. Needed for parsing packets.
|
||||||
*/
|
*/
|
||||||
template < typename T1 >
|
template< typename T1 >
|
||||||
class FFXIVIpcPacketBase
|
class FFXIVIpcPacketBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~FFXIVIpcPacketBase() = default;
|
virtual ~FFXIVIpcPacketBase() = default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the IPC type of this packet. (Useful for determining the
|
* @brief Gets the IPC type of this packet. (Useful for determining the
|
||||||
* type of a parsed packet.)
|
* type of a parsed packet.)
|
||||||
|
@ -109,8 +110,15 @@ protected:
|
||||||
uint16_t m_segmentType;
|
uint16_t m_segmentType;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual uint32_t getContentSize() { return 0; };
|
virtual uint32_t getContentSize()
|
||||||
virtual std::vector< uint8_t > getContent() { return{}; };
|
{
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual std::vector< uint8_t > getContent()
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the segment type of this packet.
|
* @brief Gets the segment type of this packet.
|
||||||
|
@ -169,8 +177,9 @@ public:
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template < typename T, typename T1 >
|
template< typename T, typename T1 >
|
||||||
class FFXIVIpcPacket : public FFXIVIpcPacketBase< T1 >, public FFXIVPacketBase
|
class FFXIVIpcPacket :
|
||||||
|
public FFXIVIpcPacketBase< T1 >, public FFXIVPacketBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FFXIVIpcPacket< T, T1 >( uint32_t sourceActorId, uint32_t targetActorId ) :
|
FFXIVIpcPacket< T, T1 >( uint32_t sourceActorId, uint32_t targetActorId ) :
|
||||||
|
@ -191,7 +200,7 @@ public:
|
||||||
auto copySize = std::min< uint32_t >( sizeof( T ), rawPacket.segHdr.size - ipcHdrSize );
|
auto copySize = std::min< uint32_t >( sizeof( T ), rawPacket.segHdr.size - ipcHdrSize );
|
||||||
|
|
||||||
memcpy( &m_segHdr, &rawPacket.segHdr, sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) );
|
memcpy( &m_segHdr, &rawPacket.segHdr, sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) );
|
||||||
memcpy( &m_data, &rawPacket.data[0] + ipcHdrSize, copySize );
|
memcpy( &m_data, &rawPacket.data[ 0 ] + ipcHdrSize, copySize );
|
||||||
|
|
||||||
memset( &m_ipcHdr, 0, ipcHdrSize );
|
memset( &m_ipcHdr, 0, ipcHdrSize );
|
||||||
m_ipcHdr.type = static_cast< ServerZoneIpcType >( m_data._ServerIpcType );
|
m_ipcHdr.type = static_cast< ServerZoneIpcType >( m_data._ServerIpcType );
|
||||||
|
@ -218,9 +227,9 @@ public:
|
||||||
|
|
||||||
std::vector< uint8_t > data( segmentHeaderSize + ipcHeaderSize + dataSize );
|
std::vector< uint8_t > data( segmentHeaderSize + ipcHeaderSize + dataSize );
|
||||||
|
|
||||||
memcpy( &data[0], &m_segHdr, segmentHeaderSize );
|
memcpy( &data[ 0 ], &m_segHdr, segmentHeaderSize );
|
||||||
memcpy( &data[segmentHeaderSize], &m_ipcHdr, ipcHeaderSize );
|
memcpy( &data[ segmentHeaderSize ], &m_ipcHdr, ipcHeaderSize );
|
||||||
memcpy( &data[segmentHeaderSize + ipcHeaderSize], &m_data, dataSize );
|
memcpy( &data[ segmentHeaderSize + ipcHeaderSize ], &m_data, dataSize );
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
@ -231,9 +240,15 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Gets a reference to the underlying IPC data structure. */
|
/** Gets a reference to the underlying IPC data structure. */
|
||||||
T& data() { return m_data; };
|
T& data()
|
||||||
|
{
|
||||||
|
return m_data;
|
||||||
|
};
|
||||||
|
|
||||||
const T& data() const { return m_data; }
|
const T& data() const
|
||||||
|
{
|
||||||
|
return m_data;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Initializes the fields of the header structures */
|
/** Initializes the fields of the header structures */
|
||||||
|
@ -257,7 +272,8 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class FFXIVRawPacket : public FFXIVPacketBase
|
class FFXIVRawPacket :
|
||||||
|
public FFXIVPacketBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FFXIVRawPacket( uint16_t type, uint32_t size, uint32_t sourceActorId, uint32_t targetActorId ) :
|
FFXIVRawPacket( uint16_t type, uint32_t size, uint32_t sourceActorId, uint32_t targetActorId ) :
|
||||||
|
@ -273,7 +289,7 @@ public:
|
||||||
{
|
{
|
||||||
auto segmentHdrSize = sizeof( FFXIVARR_PACKET_SEGMENT_HEADER );
|
auto segmentHdrSize = sizeof( FFXIVARR_PACKET_SEGMENT_HEADER );
|
||||||
|
|
||||||
memcpy( &m_data[0], data + segmentHdrSize, size - segmentHdrSize );
|
memcpy( &m_data[ 0 ], data + segmentHdrSize, size - segmentHdrSize );
|
||||||
memcpy( &m_segHdr, data, segmentHdrSize );
|
memcpy( &m_segHdr, data, segmentHdrSize );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,21 +307,24 @@ public:
|
||||||
{
|
{
|
||||||
std::vector< uint8_t > data( sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) + m_data.size() );
|
std::vector< uint8_t > data( sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) + m_data.size() );
|
||||||
|
|
||||||
memcpy( &data[0], &m_segHdr, sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) );
|
memcpy( &data[ 0 ], &m_segHdr, sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) );
|
||||||
memcpy( &data[sizeof( FFXIVARR_PACKET_SEGMENT_HEADER )], &m_data[0], m_data.size() );
|
memcpy( &data[ sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) ], &m_data[ 0 ], m_data.size() );
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Gets a reference to the underlying IPC data structure. */
|
/** Gets a reference to the underlying IPC data structure. */
|
||||||
std::vector< uint8_t >& data() { return m_data; };
|
std::vector< uint8_t >& data()
|
||||||
|
{
|
||||||
|
return m_data;
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Initializes the fields of the header structures */
|
/** Initializes the fields of the header structures */
|
||||||
virtual void initialize()
|
virtual void initialize()
|
||||||
{
|
{
|
||||||
// Zero out the structures.
|
// Zero out the structures.
|
||||||
memset( &m_data[0], 0, m_data.size() );
|
memset( &m_data[ 0 ], 0, m_data.size() );
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
|
|
||||||
using namespace Core::Network::Packets;
|
using namespace Core::Network::Packets;
|
||||||
|
|
||||||
PacketParseResult Core::Network::Packets::getHeader( const std::vector< uint8_t > &buffer,
|
PacketParseResult Core::Network::Packets::getHeader( const std::vector< uint8_t >& buffer,
|
||||||
const uint32_t offset,
|
const uint32_t offset,
|
||||||
FFXIVARR_PACKET_HEADER &header )
|
FFXIVARR_PACKET_HEADER& header )
|
||||||
{
|
{
|
||||||
const auto headerSize = sizeof( FFXIVARR_PACKET_HEADER );
|
const auto headerSize = sizeof( FFXIVARR_PACKET_HEADER );
|
||||||
|
|
||||||
|
@ -19,15 +19,15 @@ PacketParseResult Core::Network::Packets::getHeader( const std::vector< uint8_t
|
||||||
// Copy packet header.
|
// Copy packet header.
|
||||||
memcpy( &header, buffer.data() + offset, headerSize );
|
memcpy( &header, buffer.data() + offset, headerSize );
|
||||||
|
|
||||||
if( !checkHeader(header) )
|
if( !checkHeader( header ) )
|
||||||
return Malformed;
|
return Malformed;
|
||||||
|
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
PacketParseResult Core::Network::Packets::getSegmentHeader( const std::vector< uint8_t > &buffer,
|
PacketParseResult Core::Network::Packets::getSegmentHeader( const std::vector< uint8_t >& buffer,
|
||||||
const uint32_t offset,
|
const uint32_t offset,
|
||||||
FFXIVARR_PACKET_SEGMENT_HEADER &header )
|
FFXIVARR_PACKET_SEGMENT_HEADER& header )
|
||||||
{
|
{
|
||||||
const auto headerSize = sizeof( FFXIVARR_PACKET_SEGMENT_HEADER );
|
const auto headerSize = sizeof( FFXIVARR_PACKET_SEGMENT_HEADER );
|
||||||
|
|
||||||
|
@ -42,10 +42,10 @@ PacketParseResult Core::Network::Packets::getSegmentHeader( const std::vector< u
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
PacketParseResult Core::Network::Packets::getPackets( const std::vector< uint8_t > &buffer,
|
PacketParseResult Core::Network::Packets::getPackets( const std::vector< uint8_t >& buffer,
|
||||||
const uint32_t offset,
|
const uint32_t offset,
|
||||||
const FFXIVARR_PACKET_HEADER &packetHeader,
|
const FFXIVARR_PACKET_HEADER& packetHeader,
|
||||||
std::vector< FFXIVARR_PACKET_RAW > &packets )
|
std::vector< FFXIVARR_PACKET_RAW >& packets )
|
||||||
{
|
{
|
||||||
// sanity check: check there's enough bytes in the buffer
|
// sanity check: check there's enough bytes in the buffer
|
||||||
const auto bytesExpected = packetHeader.size - sizeof( struct FFXIVARR_PACKET_HEADER );
|
const auto bytesExpected = packetHeader.size - sizeof( struct FFXIVARR_PACKET_HEADER );
|
||||||
|
@ -81,8 +81,8 @@ PacketParseResult Core::Network::Packets::getPackets( const std::vector< uint8_t
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
PacketParseResult Core::Network::Packets::getPacket( const std::vector< uint8_t > &buffer, const uint32_t offset,
|
PacketParseResult Core::Network::Packets::getPacket( const std::vector< uint8_t >& buffer, const uint32_t offset,
|
||||||
FFXIVARR_PACKET_RAW &packet )
|
FFXIVARR_PACKET_RAW& packet )
|
||||||
{
|
{
|
||||||
// Copy segment header
|
// Copy segment header
|
||||||
const auto headerResult = getSegmentHeader( buffer, offset, packet.segHdr );
|
const auto headerResult = getSegmentHeader( buffer, offset, packet.segHdr );
|
||||||
|
@ -103,7 +103,7 @@ PacketParseResult Core::Network::Packets::getPacket( const std::vector< uint8_t
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Core::Network::Packets::checkHeader( const FFXIVARR_PACKET_HEADER &header )
|
bool Core::Network::Packets::checkHeader( const FFXIVARR_PACKET_HEADER& header )
|
||||||
{
|
{
|
||||||
// Max size of the packet is capped at 1MB for now.
|
// Max size of the packet is capped at 1MB for now.
|
||||||
if( header.size > 1 * 1024 * 1024 )
|
if( header.size > 1 * 1024 * 1024 )
|
||||||
|
@ -116,7 +116,7 @@ bool Core::Network::Packets::checkHeader( const FFXIVARR_PACKET_HEADER &header )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Core::Network::Packets::checkSegmentHeader( const FFXIVARR_PACKET_SEGMENT_HEADER &header )
|
bool Core::Network::Packets::checkSegmentHeader( const FFXIVARR_PACKET_SEGMENT_HEADER& header )
|
||||||
{
|
{
|
||||||
// Max size of individual message is capped at 256KB for now.
|
// Max size of individual message is capped at 256KB for now.
|
||||||
if( header.size > 256 * 1024 )
|
if( header.size > 256 * 1024 )
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
#ifndef _GAMEPACKETPARSER_H
|
#ifndef _GAMEPACKETPARSER_H
|
||||||
#define _GAMEPACKETPARSER_H
|
#define _GAMEPACKETPARSER_H
|
||||||
|
|
||||||
#include "CommonNetwork.h"
|
#include "CommonNetwork.h"
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
namespace Packets {
|
namespace Packets {
|
||||||
|
|
||||||
enum PacketParseResult
|
enum PacketParseResult
|
||||||
{
|
{
|
||||||
/// Dissected game packet successfully
|
/// Dissected game packet successfully
|
||||||
Success,
|
Success,
|
||||||
|
|
||||||
|
@ -16,32 +17,33 @@ namespace Packets {
|
||||||
|
|
||||||
/// Invalid data detected.
|
/// Invalid data detected.
|
||||||
Malformed
|
Malformed
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Read packet header from buffer with given offset.
|
/// Read packet header from buffer with given offset.
|
||||||
/// Buffer with given offset must be pointing to start of the new FFXIV packet.
|
/// Buffer with given offset must be pointing to start of the new FFXIV packet.
|
||||||
PacketParseResult getHeader( const std::vector< uint8_t > &buffer, const uint32_t offset,
|
PacketParseResult getHeader( const std::vector< uint8_t >& buffer, const uint32_t offset,
|
||||||
FFXIVARR_PACKET_HEADER &header );
|
FFXIVARR_PACKET_HEADER& header );
|
||||||
|
|
||||||
/// Read packet header from buffer with given offset.
|
/// Read packet header from buffer with given offset.
|
||||||
/// Buffer with given offset must be pointing to start of FFXIVARR_PACKET_SEGMENT_HEADER data.
|
/// Buffer with given offset must be pointing to start of FFXIVARR_PACKET_SEGMENT_HEADER data.
|
||||||
/// Keep in mind that this function does check for data validity. Call checkSegmentHeader() if that's needed.
|
/// Keep in mind that this function does check for data validity. Call checkSegmentHeader() if that's needed.
|
||||||
PacketParseResult getSegmentHeader( const std::vector< uint8_t > &buffer, const uint32_t offset,
|
PacketParseResult getSegmentHeader( const std::vector< uint8_t >& buffer, const uint32_t offset,
|
||||||
FFXIVARR_PACKET_SEGMENT_HEADER &header );
|
FFXIVARR_PACKET_SEGMENT_HEADER& header );
|
||||||
|
|
||||||
/// Read packets from the buffer with given offset.
|
/// Read packets from the buffer with given offset.
|
||||||
/// Buffer with given offset must be pointing to end of FFXIVARR_PACKET_HEADER data.
|
/// Buffer with given offset must be pointing to end of FFXIVARR_PACKET_HEADER data.
|
||||||
PacketParseResult getPackets( const std::vector< uint8_t > &buffer, const uint32_t offset,
|
PacketParseResult getPackets( const std::vector< uint8_t >& buffer, const uint32_t offset,
|
||||||
const FFXIVARR_PACKET_HEADER &header,
|
const FFXIVARR_PACKET_HEADER& header,
|
||||||
std::vector< Packets::FFXIVARR_PACKET_RAW > &packets );
|
std::vector< Packets::FFXIVARR_PACKET_RAW >& packets );
|
||||||
|
|
||||||
/// Read single packet from the buffer with given offset.
|
/// Read single packet from the buffer with given offset.
|
||||||
/// Buffer with an offset must be pointing to start of FFXIVARR_PACKET_SEGMENT_HEADER data.
|
/// Buffer with an offset must be pointing to start of FFXIVARR_PACKET_SEGMENT_HEADER data.
|
||||||
PacketParseResult getPacket( const std::vector< uint8_t > &buffer, const uint32_t offset,
|
PacketParseResult getPacket( const std::vector< uint8_t >& buffer, const uint32_t offset,
|
||||||
FFXIVARR_PACKET_RAW &packet );
|
FFXIVARR_PACKET_RAW& packet );
|
||||||
|
|
||||||
bool checkHeader(const FFXIVARR_PACKET_HEADER &header);
|
bool checkHeader( const FFXIVARR_PACKET_HEADER& header );
|
||||||
bool checkSegmentHeader(const FFXIVARR_PACKET_SEGMENT_HEADER &header);
|
|
||||||
|
bool checkSegmentHeader( const FFXIVARR_PACKET_SEGMENT_HEADER& header );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,58 +4,59 @@
|
||||||
#include "Hive.h"
|
#include "Hive.h"
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
Hive::Hive()
|
Hive::Hive()
|
||||||
: m_work_ptr( new boost::asio::io_service::work( m_io_service ) ),
|
:
|
||||||
|
m_work_ptr( new boost::asio::io_service::work( m_io_service ) ),
|
||||||
m_shutdown( 0 )
|
m_shutdown( 0 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Hive::~Hive()
|
Hive::~Hive()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::asio::io_service & Hive::GetService()
|
boost::asio::io_service& Hive::GetService()
|
||||||
{
|
{
|
||||||
return m_io_service;
|
return m_io_service;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Hive::HasStopped()
|
bool Hive::HasStopped()
|
||||||
{
|
{
|
||||||
return ( boost::interprocess::ipcdetail::atomic_cas32( &m_shutdown, 1, 1 ) == 1 );
|
return ( boost::interprocess::ipcdetail::atomic_cas32( &m_shutdown, 1, 1 ) == 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hive::Poll()
|
void Hive::Poll()
|
||||||
{
|
{
|
||||||
m_io_service.poll();
|
m_io_service.poll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hive::Run()
|
void Hive::Run()
|
||||||
{
|
{
|
||||||
m_io_service.run();
|
m_io_service.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hive::Stop()
|
void Hive::Stop()
|
||||||
{
|
{
|
||||||
if( boost::interprocess::ipcdetail::atomic_cas32( &m_shutdown, 1, 0 ) == 0 )
|
if( boost::interprocess::ipcdetail::atomic_cas32( &m_shutdown, 1, 0 ) == 0 )
|
||||||
{
|
{
|
||||||
m_work_ptr.reset();
|
m_work_ptr.reset();
|
||||||
m_io_service.run();
|
m_io_service.run();
|
||||||
m_io_service.stop();
|
m_io_service.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hive::Reset()
|
void Hive::Reset()
|
||||||
{
|
{
|
||||||
if( boost::interprocess::ipcdetail::atomic_cas32( &m_shutdown, 0, 1 ) == 1 )
|
if( boost::interprocess::ipcdetail::atomic_cas32( &m_shutdown, 0, 1 ) == 1 )
|
||||||
{
|
{
|
||||||
m_io_service.reset();
|
m_io_service.reset();
|
||||||
m_work_ptr.reset( new boost::asio::io_service::work( m_io_service ) );
|
m_work_ptr.reset( new boost::asio::io_service::work( m_io_service ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,25 +6,28 @@
|
||||||
#include <boost/enable_shared_from_this.hpp>
|
#include <boost/enable_shared_from_this.hpp>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
|
|
||||||
class Hive : public boost::enable_shared_from_this< Hive >
|
class Hive :
|
||||||
{
|
public boost::enable_shared_from_this< Hive >
|
||||||
private:
|
{
|
||||||
|
private:
|
||||||
boost::asio::io_service m_io_service;
|
boost::asio::io_service m_io_service;
|
||||||
boost::shared_ptr< boost::asio::io_service::work > m_work_ptr;
|
boost::shared_ptr< boost::asio::io_service::work > m_work_ptr;
|
||||||
volatile uint32_t m_shutdown;
|
volatile uint32_t m_shutdown;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Hive( const Hive & rhs );
|
Hive( const Hive& rhs );
|
||||||
Hive & operator =( const Hive & rhs );
|
|
||||||
|
|
||||||
public:
|
Hive& operator=( const Hive& rhs );
|
||||||
|
|
||||||
|
public:
|
||||||
Hive();
|
Hive();
|
||||||
|
|
||||||
virtual ~Hive();
|
virtual ~Hive();
|
||||||
|
|
||||||
// Returns the io_service of this object.
|
// Returns the io_service of this object.
|
||||||
boost::asio::io_service & GetService();
|
boost::asio::io_service& GetService();
|
||||||
|
|
||||||
// Returns true if the Stop function has been called.
|
// Returns true if the Stop function has been called.
|
||||||
bool HasStopped();
|
bool HasStopped();
|
||||||
|
@ -46,9 +49,9 @@ namespace Core {
|
||||||
// Restarts the networking system after Stop as been called. A new work
|
// Restarts the networking system after Stop as been called. A new work
|
||||||
// object is created ad the shutdown flag is cleared.
|
// object is created ad the shutdown flag is cleared.
|
||||||
void Reset();
|
void Reset();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
#endif
|
#endif
|
|
@ -33,7 +33,7 @@ void Core::Network::Packets::PacketContainer::addPacket( Core::Network::Packets:
|
||||||
void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8_t >& sendBuffer )
|
void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8_t >& sendBuffer )
|
||||||
{
|
{
|
||||||
std::vector< uint8_t > tempBuffer( m_ipcHdr.size );
|
std::vector< uint8_t > tempBuffer( m_ipcHdr.size );
|
||||||
memset( &tempBuffer[0], 0, m_ipcHdr.size );
|
memset( &tempBuffer[ 0 ], 0, m_ipcHdr.size );
|
||||||
|
|
||||||
using namespace std::chrono;
|
using namespace std::chrono;
|
||||||
auto ms = duration_cast< milliseconds >( system_clock::now().time_since_epoch() );
|
auto ms = duration_cast< milliseconds >( system_clock::now().time_since_epoch() );
|
||||||
|
@ -43,7 +43,7 @@ void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8
|
||||||
m_ipcHdr.timestamp = tick;
|
m_ipcHdr.timestamp = tick;
|
||||||
m_ipcHdr.unknown_20 = 1;
|
m_ipcHdr.unknown_20 = 1;
|
||||||
|
|
||||||
memcpy( &tempBuffer[0], &m_ipcHdr, sizeof( FFXIVARR_PACKET_HEADER ) );
|
memcpy( &tempBuffer[ 0 ], &m_ipcHdr, sizeof( FFXIVARR_PACKET_HEADER ) );
|
||||||
|
|
||||||
auto it = m_entryList.begin();
|
auto it = m_entryList.begin();
|
||||||
std::size_t offset = 0;
|
std::size_t offset = 0;
|
||||||
|
@ -53,7 +53,7 @@ void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8
|
||||||
|
|
||||||
for( ; it != m_entryList.end(); ++it )
|
for( ; it != m_entryList.end(); ++it )
|
||||||
{
|
{
|
||||||
auto pPacket = (*it);
|
auto pPacket = ( *it );
|
||||||
|
|
||||||
if( m_segmentTargetOverride != 0 && pPacket->getSegmentType() == SEGMENTTYPE_IPC )
|
if( m_segmentTargetOverride != 0 && pPacket->getSegmentType() == SEGMENTTYPE_IPC )
|
||||||
{
|
{
|
||||||
|
@ -61,11 +61,11 @@ void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
auto data = pPacket->getData();
|
auto data = pPacket->getData();
|
||||||
memcpy( &tempBuffer[0] + sizeof( FFXIVARR_PACKET_HEADER ) + offset, &data[0], pPacket->getSize() );
|
memcpy( &tempBuffer[ 0 ] + sizeof( FFXIVARR_PACKET_HEADER ) + offset, &data[ 0 ], pPacket->getSize() );
|
||||||
offset += pPacket->getSize();
|
offset += pPacket->getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
sendBuffer.assign( &tempBuffer[0], &tempBuffer[0] + m_ipcHdr.size );
|
sendBuffer.assign( &tempBuffer[ 0 ], &tempBuffer[ 0 ] + m_ipcHdr.size );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ std::string Core::Network::Packets::PacketContainer::toString()
|
||||||
std::string str = "\n";
|
std::string str = "\n";
|
||||||
for( uint32_t i = 0; i < m_ipcHdr.size; i++ )
|
for( uint32_t i = 0; i < m_ipcHdr.size; i++ )
|
||||||
{
|
{
|
||||||
str += boost::str( boost::format( "%|02X|" ) % static_cast< int32_t >( tmpBuffer[i] & 0xFF ) ) + " ";
|
str += boost::str( boost::format( "%|02X|" ) % static_cast< int32_t >( tmpBuffer[ i ] & 0xFF ) ) + " ";
|
||||||
|
|
||||||
if( ( i + 1 ) % 16 == 0 )
|
if( ( i + 1 ) % 16 == 0 )
|
||||||
str += "\n";
|
str += "\n";
|
||||||
|
|
|
@ -18,6 +18,7 @@ class PacketContainer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PacketContainer( uint32_t segmentTargetOverride = 0 );
|
PacketContainer( uint32_t segmentTargetOverride = 0 );
|
||||||
|
|
||||||
~PacketContainer();
|
~PacketContainer();
|
||||||
|
|
||||||
void addPacket( FFXIVPacketBasePtr entry );
|
void addPacket( FFXIVPacketBasePtr entry );
|
||||||
|
|
|
@ -13,7 +13,8 @@ namespace Server {
|
||||||
* Structural representation of the packet sent by the server as response
|
* Structural representation of the packet sent by the server as response
|
||||||
* to a tell request
|
* to a tell request
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcTell : FFXIVIpcBasePacket<Tell>
|
struct FFXIVIpcTell :
|
||||||
|
FFXIVIpcBasePacket< Tell >
|
||||||
{
|
{
|
||||||
uint32_t u1;
|
uint32_t u1;
|
||||||
uint16_t u2a;
|
uint16_t u2a;
|
||||||
|
@ -25,11 +26,12 @@ struct FFXIVIpcTell : FFXIVIpcBasePacket<Tell>
|
||||||
char msg[1031];
|
char msg[1031];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structural representation of the packet sent by the server as response
|
* Structural representation of the packet sent by the server as response
|
||||||
* to a failed tell because of unavailable target player
|
* to a failed tell because of unavailable target player
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcTellErrNotFound : FFXIVIpcBasePacket<TellErrNotFound>
|
struct FFXIVIpcTellErrNotFound :
|
||||||
|
FFXIVIpcBasePacket< TellErrNotFound >
|
||||||
{
|
{
|
||||||
char receipientName[32];
|
char receipientName[32];
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,13 +7,14 @@ namespace Core {
|
||||||
namespace Network {
|
namespace Network {
|
||||||
namespace Packets {
|
namespace Packets {
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// Lobby Connection IPC Codes
|
/// Lobby Connection IPC Codes
|
||||||
/**
|
/**
|
||||||
* Server IPC Lobby Type Codes.
|
* Server IPC Lobby Type Codes.
|
||||||
*/
|
*/
|
||||||
enum ServerLobbyIpcType : uint16_t
|
enum ServerLobbyIpcType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
LobbyError = 0x0002,
|
LobbyError = 0x0002,
|
||||||
LobbyServiceAccountList = 0x000C,
|
LobbyServiceAccountList = 0x000C,
|
||||||
LobbyCharList = 0x000D,
|
LobbyCharList = 0x000D,
|
||||||
|
@ -22,28 +23,30 @@ namespace Packets {
|
||||||
LobbyServerList = 0x0015,
|
LobbyServerList = 0x0015,
|
||||||
LobbyRetainerList = 0x0017,
|
LobbyRetainerList = 0x0017,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client IPC Lobby Type Codes.
|
* Client IPC Lobby Type Codes.
|
||||||
*/
|
*/
|
||||||
enum ClientLobbyIpcType : uint16_t
|
enum ClientLobbyIpcType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
ReqCharList = 0x0003,
|
ReqCharList = 0x0003,
|
||||||
ReqEnterWorld = 0x0004,
|
ReqEnterWorld = 0x0004,
|
||||||
ReqServiceAccountList = 0x0005,
|
ReqServiceAccountList = 0x0005,
|
||||||
|
|
||||||
ReqCharDelete = 0x000A,
|
ReqCharDelete = 0x000A,
|
||||||
ReqCharCreate = 0x000B,
|
ReqCharCreate = 0x000B,
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// Zone Connection IPC Codes
|
/// Zone Connection IPC Codes
|
||||||
/**
|
/**
|
||||||
* Server IPC Zone Type Codes.
|
* Server IPC Zone Type Codes.
|
||||||
*/
|
*/
|
||||||
enum ServerZoneIpcType : uint16_t
|
enum ServerZoneIpcType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
|
|
||||||
// static opcode ( the ones that rarely, if ever, change )
|
// static opcode ( the ones that rarely, if ever, change )
|
||||||
Ping = 0x0065,
|
Ping = 0x0065,
|
||||||
|
@ -190,13 +193,14 @@ namespace Packets {
|
||||||
IPCTYPE_UNK_320 = 0x024C, // updated 4.3
|
IPCTYPE_UNK_320 = 0x024C, // updated 4.3
|
||||||
IPCTYPE_UNK_322 = 0x024E, // updated 4.3
|
IPCTYPE_UNK_322 = 0x024E, // updated 4.3
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client IPC Zone Type Codes.
|
* Client IPC Zone Type Codes.
|
||||||
*/
|
*/
|
||||||
enum ClientZoneIpcType : uint16_t
|
enum ClientZoneIpcType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
|
|
||||||
PingHandler = 0x0065, // unchanged 4.3
|
PingHandler = 0x0065, // unchanged 4.3
|
||||||
InitHandler = 0x0066, // unchanged 4.3
|
InitHandler = 0x0066, // unchanged 4.3
|
||||||
|
@ -206,7 +210,6 @@ namespace Packets {
|
||||||
CFCommenceHandler = 0x006F,
|
CFCommenceHandler = 0x006F,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CFRegisterDuty = 0x0071,
|
CFRegisterDuty = 0x0071,
|
||||||
CFRegisterRoulette = 0x0072,
|
CFRegisterRoulette = 0x0072,
|
||||||
PlayTimeHandler = 0x0073, // unchanged 4.3
|
PlayTimeHandler = 0x0073, // unchanged 4.3
|
||||||
|
@ -272,26 +275,28 @@ namespace Packets {
|
||||||
ReqEquipDisplayFlagsChange = 0x0178, // updated 4.3
|
ReqEquipDisplayFlagsChange = 0x0178, // updated 4.3
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
/// Chat Connection IPC Codes
|
/// Chat Connection IPC Codes
|
||||||
/**
|
/**
|
||||||
* Server IPC Chat Type Codes.
|
* Server IPC Chat Type Codes.
|
||||||
*/
|
*/
|
||||||
enum ServerChatIpcType : uint16_t
|
enum ServerChatIpcType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
Tell = 0x0064, // updated for sb
|
Tell = 0x0064, // updated for sb
|
||||||
TellErrNotFound = 0x0066,
|
TellErrNotFound = 0x0066,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Client IPC Chat Type Codes.
|
* Client IPC Chat Type Codes.
|
||||||
*/
|
*/
|
||||||
enum ClientChatIpcType : uint16_t
|
enum ClientChatIpcType :
|
||||||
{
|
uint16_t
|
||||||
|
{
|
||||||
TellReq = 0x0064,
|
TellReq = 0x0064,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} /* Packets */
|
} /* Packets */
|
||||||
|
|
|
@ -9,14 +9,16 @@ namespace Network {
|
||||||
namespace Packets {
|
namespace Packets {
|
||||||
namespace Server {
|
namespace Server {
|
||||||
|
|
||||||
struct FFXIVIpcRetainerList : FFXIVIpcBasePacket<LobbyRetainerList>
|
struct FFXIVIpcRetainerList :
|
||||||
|
FFXIVIpcBasePacket< LobbyRetainerList >
|
||||||
{
|
{
|
||||||
uint8_t padding[0x210];
|
uint8_t padding[0x210];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcServiceIdInfo : FFXIVIpcBasePacket<LobbyServiceAccountList>
|
struct FFXIVIpcServiceIdInfo :
|
||||||
|
FFXIVIpcBasePacket< LobbyServiceAccountList >
|
||||||
{
|
{
|
||||||
uint64_t seq;
|
uint64_t seq;
|
||||||
uint8_t padding;
|
uint8_t padding;
|
||||||
|
@ -35,7 +37,8 @@ struct FFXIVIpcServiceIdInfo : FFXIVIpcBasePacket<LobbyServiceAccountList>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct FFXIVIpcServerList : FFXIVIpcBasePacket<LobbyServerList>
|
struct FFXIVIpcServerList :
|
||||||
|
FFXIVIpcBasePacket< LobbyServerList >
|
||||||
{
|
{
|
||||||
uint64_t seq;
|
uint64_t seq;
|
||||||
uint16_t final;
|
uint16_t final;
|
||||||
|
@ -56,7 +59,8 @@ struct FFXIVIpcServerList : FFXIVIpcBasePacket<LobbyServerList>
|
||||||
} server[6];
|
} server[6];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcCharList : FFXIVIpcBasePacket<LobbyCharList>
|
struct FFXIVIpcCharList :
|
||||||
|
FFXIVIpcBasePacket< LobbyCharList >
|
||||||
{
|
{
|
||||||
uint64_t seq;
|
uint64_t seq;
|
||||||
uint8_t counter; // current packet count * 4, count * 4 +1 on last packet.
|
uint8_t counter; // current packet count * 4, count * 4 +1 on last packet.
|
||||||
|
@ -96,7 +100,8 @@ struct FFXIVIpcCharList : FFXIVIpcBasePacket<LobbyCharList>
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEnterWorld : FFXIVIpcBasePacket<LobbyEnterWorld>
|
struct FFXIVIpcEnterWorld :
|
||||||
|
FFXIVIpcBasePacket< LobbyEnterWorld >
|
||||||
{
|
{
|
||||||
uint64_t seq;
|
uint64_t seq;
|
||||||
uint32_t charId;
|
uint32_t charId;
|
||||||
|
@ -110,7 +115,8 @@ struct FFXIVIpcEnterWorld : FFXIVIpcBasePacket<LobbyEnterWorld>
|
||||||
uint64_t padding4;
|
uint64_t padding4;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcCharCreate : FFXIVIpcBasePacket<LobbyCharCreate>
|
struct FFXIVIpcCharCreate :
|
||||||
|
FFXIVIpcBasePacket< LobbyCharCreate >
|
||||||
{
|
{
|
||||||
uint64_t seq;
|
uint64_t seq;
|
||||||
uint8_t unknown;
|
uint8_t unknown;
|
||||||
|
@ -129,7 +135,8 @@ struct FFXIVIpcCharCreate : FFXIVIpcBasePacket<LobbyCharCreate>
|
||||||
char world[32];
|
char world[32];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcLobbyError : FFXIVIpcBasePacket<LobbyError>
|
struct FFXIVIpcLobbyError :
|
||||||
|
FFXIVIpcBasePacket< LobbyError >
|
||||||
{
|
{
|
||||||
uint64_t seq;
|
uint64_t seq;
|
||||||
uint32_t error_id;
|
uint32_t error_id;
|
||||||
|
|
|
@ -9,7 +9,8 @@ namespace Network {
|
||||||
namespace Packets {
|
namespace Packets {
|
||||||
namespace Client {
|
namespace Client {
|
||||||
|
|
||||||
struct FFXIVIpcGmCommand1 : FFXIVIpcBasePacket< GMCommand1 >
|
struct FFXIVIpcGmCommand1 :
|
||||||
|
FFXIVIpcBasePacket< GMCommand1 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t commandId;
|
/* 0000 */ uint32_t commandId;
|
||||||
/* 0004 */ uint32_t param1;
|
/* 0004 */ uint32_t param1;
|
||||||
|
@ -18,14 +19,16 @@ struct FFXIVIpcGmCommand1 : FFXIVIpcBasePacket< GMCommand1 >
|
||||||
/* 0018 */ uint32_t param3;
|
/* 0018 */ uint32_t param3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcGmCommand2 : FFXIVIpcBasePacket< GMCommand2 >
|
struct FFXIVIpcGmCommand2 :
|
||||||
|
FFXIVIpcBasePacket< GMCommand2 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t commandId;
|
/* 0000 */ uint32_t commandId;
|
||||||
/* 0004 */ char unk_4[0x10];
|
/* 0004 */ char unk_4[0x10];
|
||||||
/* 0014 */ char param1[0x20];
|
/* 0014 */ char param1[0x20];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcClientTrigger : FFXIVIpcBasePacket< ClientTrigger >
|
struct FFXIVIpcClientTrigger :
|
||||||
|
FFXIVIpcBasePacket< ClientTrigger >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint16_t commandId;
|
/* 0000 */ uint16_t commandId;
|
||||||
/* 0002 */ uint8_t unk_2[2];
|
/* 0002 */ uint8_t unk_2[2];
|
||||||
|
@ -36,7 +39,8 @@ struct FFXIVIpcClientTrigger : FFXIVIpcBasePacket< ClientTrigger >
|
||||||
/* 0018 */ uint64_t param3;
|
/* 0018 */ uint64_t param3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcSkillHandler : FFXIVIpcBasePacket< SkillHandler >
|
struct FFXIVIpcSkillHandler :
|
||||||
|
FFXIVIpcBasePacket< SkillHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ char pad_0000[1];
|
/* 0000 */ char pad_0000[1];
|
||||||
/* 0001 */ uint8_t type;
|
/* 0001 */ uint8_t type;
|
||||||
|
@ -47,17 +51,20 @@ struct FFXIVIpcSkillHandler : FFXIVIpcBasePacket< SkillHandler >
|
||||||
/* 0010 */ uint64_t targetId;
|
/* 0010 */ uint64_t targetId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcZoneLineHandler : FFXIVIpcBasePacket< ZoneLineHandler >
|
struct FFXIVIpcZoneLineHandler :
|
||||||
|
FFXIVIpcBasePacket< ZoneLineHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t zoneLineId;
|
/* 0000 */ uint32_t zoneLineId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcDiscoveryHandler : FFXIVIpcBasePacket< DiscoveryHandler >
|
struct FFXIVIpcDiscoveryHandler :
|
||||||
|
FFXIVIpcBasePacket< DiscoveryHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t positionRef;
|
/* 0000 */ uint32_t positionRef;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEventHandlerReturn : FFXIVIpcBasePacket< ReturnEventHandler >
|
struct FFXIVIpcEventHandlerReturn :
|
||||||
|
FFXIVIpcBasePacket< ReturnEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t eventId;
|
/* 0000 */ uint32_t eventId;
|
||||||
/* 0004 */ uint16_t scene;
|
/* 0004 */ uint16_t scene;
|
||||||
|
@ -69,46 +76,53 @@ struct FFXIVIpcEventHandlerReturn : FFXIVIpcBasePacket< ReturnEventHandler >
|
||||||
/* 0010 */ uint16_t param4;
|
/* 0010 */ uint16_t param4;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEnterTerritoryHandler : FFXIVIpcBasePacket< EnterTeriEventHandler >
|
struct FFXIVIpcEnterTerritoryHandler :
|
||||||
|
FFXIVIpcBasePacket< EnterTeriEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t eventId;
|
/* 0000 */ uint32_t eventId;
|
||||||
/* 0004 */ uint16_t param1;
|
/* 0004 */ uint16_t param1;
|
||||||
/* 0006 */ uint16_t param2;
|
/* 0006 */ uint16_t param2;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEventHandlerOutsideRange : FFXIVIpcBasePacket< OutOfRangeEventHandler >
|
struct FFXIVIpcEventHandlerOutsideRange :
|
||||||
|
FFXIVIpcBasePacket< OutOfRangeEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t param1;
|
/* 0000 */ uint32_t param1;
|
||||||
/* 0004 */ uint32_t eventId;
|
/* 0004 */ uint32_t eventId;
|
||||||
/* 0008 */ Common::FFXIVARR_POSITION3 position;
|
/* 0008 */ Common::FFXIVARR_POSITION3 position;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEventHandlerWithinRange : FFXIVIpcBasePacket< WithinRangeEventHandler >
|
struct FFXIVIpcEventHandlerWithinRange :
|
||||||
|
FFXIVIpcBasePacket< WithinRangeEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t param1;
|
/* 0000 */ uint32_t param1;
|
||||||
/* 0004 */ uint32_t eventId;
|
/* 0004 */ uint32_t eventId;
|
||||||
/* 0008 */ Common::FFXIVARR_POSITION3 position;
|
/* 0008 */ Common::FFXIVARR_POSITION3 position;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEventHandlerEmote : FFXIVIpcBasePacket< EmoteEventHandler >
|
struct FFXIVIpcEventHandlerEmote :
|
||||||
|
FFXIVIpcBasePacket< EmoteEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint64_t actorId;
|
/* 0000 */ uint64_t actorId;
|
||||||
/* 0008 */ uint32_t eventId;
|
/* 0008 */ uint32_t eventId;
|
||||||
/* 000C */ uint16_t emoteId;
|
/* 000C */ uint16_t emoteId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEventHandlerTalk : FFXIVIpcBasePacket< TalkEventHandler >
|
struct FFXIVIpcEventHandlerTalk :
|
||||||
|
FFXIVIpcBasePacket< TalkEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint64_t actorId;
|
/* 0000 */ uint64_t actorId;
|
||||||
/* 0008 */ uint32_t eventId;
|
/* 0008 */ uint32_t eventId;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcPingHandler : FFXIVIpcBasePacket< PingHandler >
|
struct FFXIVIpcPingHandler :
|
||||||
|
FFXIVIpcBasePacket< PingHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t timestamp; // maybe lol..
|
/* 0000 */ uint32_t timestamp; // maybe lol..
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcSetSearchInfo : FFXIVIpcBasePacket< SetSearchInfoHandler >
|
struct FFXIVIpcSetSearchInfo :
|
||||||
|
FFXIVIpcBasePacket< SetSearchInfoHandler >
|
||||||
{
|
{
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
|
@ -125,14 +139,16 @@ struct FFXIVIpcSetSearchInfo : FFXIVIpcBasePacket< SetSearchInfoHandler >
|
||||||
/* 0012 */ char searchComment[193];
|
/* 0012 */ char searchComment[193];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcTellHandler : FFXIVIpcBasePacket< TellReq >
|
struct FFXIVIpcTellHandler :
|
||||||
|
FFXIVIpcBasePacket< TellReq >
|
||||||
{
|
{
|
||||||
/* 0000 */ char pad_0000[4];
|
/* 0000 */ char pad_0000[4];
|
||||||
/* 0004 */ char targetPCName[32];
|
/* 0004 */ char targetPCName[32];
|
||||||
/* 0024 */ char message[1012];
|
/* 0024 */ char message[1012];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcChatHandler : FFXIVIpcBasePacket< ChatHandler >
|
struct FFXIVIpcChatHandler :
|
||||||
|
FFXIVIpcBasePacket< ChatHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ char pad_0000[4];
|
/* 0000 */ char pad_0000[4];
|
||||||
/* 0004 */ uint32_t sourceId;
|
/* 0004 */ uint32_t sourceId;
|
||||||
|
@ -141,7 +157,8 @@ struct FFXIVIpcChatHandler : FFXIVIpcBasePacket< ChatHandler >
|
||||||
/* 001A */ char message[1012];
|
/* 001A */ char message[1012];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcLinkshellEventHandler : FFXIVIpcBasePacket< LinkshellEventHandler >
|
struct FFXIVIpcLinkshellEventHandler :
|
||||||
|
FFXIVIpcBasePacket< LinkshellEventHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t eventId;
|
/* 0000 */ uint32_t eventId;
|
||||||
/* 0004 */ uint16_t scene;
|
/* 0004 */ uint16_t scene;
|
||||||
|
@ -149,7 +166,8 @@ struct FFXIVIpcLinkshellEventHandler : FFXIVIpcBasePacket< LinkshellEventHandler
|
||||||
/* 0007 */ char lsName[21];
|
/* 0007 */ char lsName[21];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcInventoryModifyHandler : FFXIVIpcBasePacket< InventoryModifyHandler >
|
struct FFXIVIpcInventoryModifyHandler :
|
||||||
|
FFXIVIpcBasePacket< InventoryModifyHandler >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t seq;
|
/* 0000 */ uint32_t seq;
|
||||||
/* 0004 */ Common::InventoryOperation action;
|
/* 0004 */ Common::InventoryOperation action;
|
||||||
|
|
|
@ -19,7 +19,8 @@ namespace Server {
|
||||||
* Structural representation of the packet sent by the server as response
|
* Structural representation of the packet sent by the server as response
|
||||||
* to a ping packet
|
* to a ping packet
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPing : FFXIVIpcBasePacket<Ping>
|
struct FFXIVIpcPing :
|
||||||
|
FFXIVIpcBasePacket< Ping >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint64_t timeInMilliseconds;
|
/* 0000 */ uint64_t timeInMilliseconds;
|
||||||
/* 0008 */ uint8_t unknown_8[0x38];
|
/* 0008 */ uint8_t unknown_8[0x38];
|
||||||
|
@ -29,7 +30,8 @@ struct FFXIVIpcPing : FFXIVIpcBasePacket<Ping>
|
||||||
* Structural representation of the packet sent by the server as response
|
* Structural representation of the packet sent by the server as response
|
||||||
* to a ping packet
|
* to a ping packet
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcInit : FFXIVIpcBasePacket<Init>
|
struct FFXIVIpcInit :
|
||||||
|
FFXIVIpcBasePacket< Init >
|
||||||
{
|
{
|
||||||
uint64_t unknown;
|
uint64_t unknown;
|
||||||
uint32_t charId;
|
uint32_t charId;
|
||||||
|
@ -40,7 +42,8 @@ struct FFXIVIpcInit : FFXIVIpcBasePacket<Init>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* carrying chat messages
|
* carrying chat messages
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcChat : FFXIVIpcBasePacket<Chat>
|
struct FFXIVIpcChat :
|
||||||
|
FFXIVIpcBasePacket< Chat >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint8_t padding[14]; //Maybe this is SubCode, or some kind of talker ID...
|
/* 0000 */ uint8_t padding[14]; //Maybe this is SubCode, or some kind of talker ID...
|
||||||
Common::ChatType chatType;
|
Common::ChatType chatType;
|
||||||
|
@ -48,7 +51,8 @@ struct FFXIVIpcChat : FFXIVIpcBasePacket<Chat>
|
||||||
char msg[1012];
|
char msg[1012];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcChatBanned : FFXIVIpcBasePacket<ChatBanned>
|
struct FFXIVIpcChatBanned :
|
||||||
|
FFXIVIpcBasePacket< ChatBanned >
|
||||||
{
|
{
|
||||||
uint8_t padding[4]; // I was not sure reinterpreting ZST is valid behavior in C++.
|
uint8_t padding[4]; // I was not sure reinterpreting ZST is valid behavior in C++.
|
||||||
// client doesn't care about the data (zero sized) for this opcode anyway.
|
// client doesn't care about the data (zero sized) for this opcode anyway.
|
||||||
|
@ -58,7 +62,8 @@ struct FFXIVIpcChatBanned : FFXIVIpcBasePacket<ChatBanned>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* carrying chat messages
|
* carrying chat messages
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcLogout : FFXIVIpcBasePacket<Logout>
|
struct FFXIVIpcLogout :
|
||||||
|
FFXIVIpcBasePacket< Logout >
|
||||||
{
|
{
|
||||||
uint32_t flags1;
|
uint32_t flags1;
|
||||||
uint32_t flags2;
|
uint32_t flags2;
|
||||||
|
@ -68,7 +73,8 @@ struct FFXIVIpcLogout : FFXIVIpcBasePacket<Logout>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* sent to show the play time
|
* sent to show the play time
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPlayTime : FFXIVIpcBasePacket<Playtime>
|
struct FFXIVIpcPlayTime :
|
||||||
|
FFXIVIpcBasePacket< Playtime >
|
||||||
{
|
{
|
||||||
uint32_t playTimeInMinutes;
|
uint32_t playTimeInMinutes;
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
|
@ -79,7 +85,8 @@ struct FFXIVIpcPlayTime : FFXIVIpcBasePacket<Playtime>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* with a list of players ( party list | friend list | search results )
|
* with a list of players ( party list | friend list | search results )
|
||||||
*/
|
*/
|
||||||
struct PlayerEntry {
|
struct PlayerEntry
|
||||||
|
{
|
||||||
uint64_t contentId;
|
uint64_t contentId;
|
||||||
uint8_t bytes[12];
|
uint8_t bytes[12];
|
||||||
uint16_t zoneId;
|
uint16_t zoneId;
|
||||||
|
@ -96,7 +103,8 @@ struct PlayerEntry {
|
||||||
char fcTag[9];
|
char fcTag[9];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcSocialList : FFXIVIpcBasePacket<SocialList>
|
struct FFXIVIpcSocialList :
|
||||||
|
FFXIVIpcBasePacket< SocialList >
|
||||||
{
|
{
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
uint32_t padding1;
|
uint32_t padding1;
|
||||||
|
@ -109,7 +117,8 @@ struct FFXIVIpcSocialList : FFXIVIpcBasePacket<SocialList>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct FFXIVIpcSetSearchInfo : FFXIVIpcBasePacket<UpdateSearchInfo>
|
struct FFXIVIpcSetSearchInfo :
|
||||||
|
FFXIVIpcBasePacket< UpdateSearchInfo >
|
||||||
{
|
{
|
||||||
uint64_t onlineStatusFlags;
|
uint64_t onlineStatusFlags;
|
||||||
uint64_t unknown;
|
uint64_t unknown;
|
||||||
|
@ -120,7 +129,8 @@ struct FFXIVIpcSetSearchInfo : FFXIVIpcBasePacket<UpdateSearchInfo>
|
||||||
uint8_t padding2;
|
uint8_t padding2;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcInitSearchInfo : FFXIVIpcBasePacket<InitSearchInfo>
|
struct FFXIVIpcInitSearchInfo :
|
||||||
|
FFXIVIpcBasePacket< InitSearchInfo >
|
||||||
{
|
{
|
||||||
uint64_t onlineStatusFlags;
|
uint64_t onlineStatusFlags;
|
||||||
uint64_t unknown;
|
uint64_t unknown;
|
||||||
|
@ -134,18 +144,21 @@ struct FFXIVIpcInitSearchInfo : FFXIVIpcBasePacket<InitSearchInfo>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to display a server notice message
|
* to display a server notice message
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcServerNotice : FFXIVIpcBasePacket<ServerNotice>
|
struct FFXIVIpcServerNotice :
|
||||||
|
FFXIVIpcBasePacket< ServerNotice >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint8_t padding;
|
/* 0000 */ uint8_t padding;
|
||||||
char message[307];
|
char message[307];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcSetOnlineStatus : FFXIVIpcBasePacket<SetOnlineStatus>
|
struct FFXIVIpcSetOnlineStatus :
|
||||||
|
FFXIVIpcBasePacket< SetOnlineStatus >
|
||||||
{
|
{
|
||||||
uint64_t onlineStatusFlags;
|
uint64_t onlineStatusFlags;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcBlackList : FFXIVIpcBasePacket<BlackList>
|
struct FFXIVIpcBlackList :
|
||||||
|
FFXIVIpcBasePacket< BlackList >
|
||||||
{
|
{
|
||||||
struct BlEntry
|
struct BlEntry
|
||||||
{
|
{
|
||||||
|
@ -158,7 +171,8 @@ struct FFXIVIpcBlackList : FFXIVIpcBasePacket<BlackList>
|
||||||
uint32_t padding2;
|
uint32_t padding2;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcLogMessage : FFXIVIpcBasePacket<LogMessage>
|
struct FFXIVIpcLogMessage :
|
||||||
|
FFXIVIpcBasePacket< LogMessage >
|
||||||
{
|
{
|
||||||
uint32_t field_0;
|
uint32_t field_0;
|
||||||
uint32_t field_4;
|
uint32_t field_4;
|
||||||
|
@ -172,7 +186,8 @@ struct FFXIVIpcLogMessage : FFXIVIpcBasePacket<LogMessage>
|
||||||
uint32_t field_58;
|
uint32_t field_58;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcLinkshellList : FFXIVIpcBasePacket<LinkshellList>
|
struct FFXIVIpcLinkshellList :
|
||||||
|
FFXIVIpcBasePacket< LinkshellList >
|
||||||
{
|
{
|
||||||
struct LsEntry
|
struct LsEntry
|
||||||
{
|
{
|
||||||
|
@ -185,7 +200,8 @@ struct FFXIVIpcLinkshellList : FFXIVIpcBasePacket<LinkshellList>
|
||||||
} entry[8];
|
} entry[8];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcStatusEffectList : FFXIVIpcBasePacket<StatusEffectList>
|
struct FFXIVIpcStatusEffectList :
|
||||||
|
FFXIVIpcBasePacket< StatusEffectList >
|
||||||
{
|
{
|
||||||
uint8_t classId;
|
uint8_t classId;
|
||||||
uint8_t level1;
|
uint8_t level1;
|
||||||
|
@ -200,7 +216,8 @@ struct FFXIVIpcStatusEffectList : FFXIVIpcBasePacket<StatusEffectList>
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVGCAffiliation : FFXIVIpcBasePacket<GCAffiliation>
|
struct FFXIVGCAffiliation :
|
||||||
|
FFXIVIpcBasePacket< GCAffiliation >
|
||||||
{
|
{
|
||||||
uint8_t gcId;
|
uint8_t gcId;
|
||||||
uint8_t gcRank[3];
|
uint8_t gcRank[3];
|
||||||
|
@ -210,7 +227,8 @@ struct FFXIVGCAffiliation : FFXIVIpcBasePacket<GCAffiliation>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* add a status effect
|
* add a status effect
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcAddStatusEffect : FFXIVIpcBasePacket<AddStatusEffect>
|
struct FFXIVIpcAddStatusEffect :
|
||||||
|
FFXIVIpcBasePacket< AddStatusEffect >
|
||||||
{
|
{
|
||||||
uint32_t unknown;
|
uint32_t unknown;
|
||||||
uint32_t actor_id;
|
uint32_t actor_id;
|
||||||
|
@ -237,7 +255,8 @@ struct FFXIVIpcAddStatusEffect : FFXIVIpcBasePacket<AddStatusEffect>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update certain player details / status
|
* to update certain player details / status
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorControl142 : FFXIVIpcBasePacket<ActorControl142>
|
struct FFXIVIpcActorControl142 :
|
||||||
|
FFXIVIpcBasePacket< ActorControl142 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint16_t category;
|
/* 0000 */ uint16_t category;
|
||||||
/* 0002 */ uint16_t padding;
|
/* 0002 */ uint16_t padding;
|
||||||
|
@ -252,7 +271,8 @@ struct FFXIVIpcActorControl142 : FFXIVIpcBasePacket<ActorControl142>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update certain player details / status
|
* to update certain player details / status
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorControl143 : FFXIVIpcBasePacket<ActorControl143>
|
struct FFXIVIpcActorControl143 :
|
||||||
|
FFXIVIpcBasePacket< ActorControl143 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint16_t category;
|
/* 0000 */ uint16_t category;
|
||||||
/* 0002 */ uint16_t padding;
|
/* 0002 */ uint16_t padding;
|
||||||
|
@ -269,7 +289,8 @@ struct FFXIVIpcActorControl143 : FFXIVIpcBasePacket<ActorControl143>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update certain player details / status
|
* to update certain player details / status
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorControl144 : FFXIVIpcBasePacket<ActorControl144>
|
struct FFXIVIpcActorControl144 :
|
||||||
|
FFXIVIpcBasePacket< ActorControl144 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint16_t category;
|
/* 0000 */ uint16_t category;
|
||||||
/* 0002 */ uint16_t padding;
|
/* 0002 */ uint16_t padding;
|
||||||
|
@ -285,7 +306,8 @@ struct FFXIVIpcActorControl144 : FFXIVIpcBasePacket<ActorControl144>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update HP / MP / TP
|
* to update HP / MP / TP
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcUpdateHpMpTp : FFXIVIpcBasePacket<UpdateHpMpTp>
|
struct FFXIVIpcUpdateHpMpTp :
|
||||||
|
FFXIVIpcBasePacket< UpdateHpMpTp >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t hp;
|
/* 0000 */ uint32_t hp;
|
||||||
/* 0004 */ uint16_t mp;
|
/* 0004 */ uint16_t mp;
|
||||||
|
@ -335,7 +357,8 @@ struct EffectHeader
|
||||||
uint32_t padding_22[2];
|
uint32_t padding_22[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEffect : FFXIVIpcBasePacket<Effect>
|
struct FFXIVIpcEffect :
|
||||||
|
FFXIVIpcBasePacket< Effect >
|
||||||
{
|
{
|
||||||
EffectHeader header;
|
EffectHeader header;
|
||||||
|
|
||||||
|
@ -365,17 +388,30 @@ struct FFXIVIpcAoeEffect
|
||||||
uint32_t padding_78;
|
uint32_t padding_78;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcAoeEffect8 : FFXIVIpcBasePacket< AoeEffect8 >, FFXIVIpcAoeEffect< 8 > {};
|
struct FFXIVIpcAoeEffect8 :
|
||||||
struct FFXIVIpcAoeEffect16 : FFXIVIpcBasePacket< AoeEffect16 >, FFXIVIpcAoeEffect< 16 > {};
|
FFXIVIpcBasePacket< AoeEffect8 >, FFXIVIpcAoeEffect< 8 >
|
||||||
struct FFXIVIpcAoeEffect24 : FFXIVIpcBasePacket< AoeEffect24 >, FFXIVIpcAoeEffect< 24 > {};
|
{
|
||||||
struct FFXIVIpcAoeEffect32 : FFXIVIpcBasePacket< AoeEffect32 >, FFXIVIpcAoeEffect< 32 > {};
|
};
|
||||||
|
struct FFXIVIpcAoeEffect16 :
|
||||||
|
FFXIVIpcBasePacket< AoeEffect16 >, FFXIVIpcAoeEffect< 16 >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
struct FFXIVIpcAoeEffect24 :
|
||||||
|
FFXIVIpcBasePacket< AoeEffect24 >, FFXIVIpcAoeEffect< 24 >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
struct FFXIVIpcAoeEffect32 :
|
||||||
|
FFXIVIpcBasePacket< AoeEffect32 >, FFXIVIpcAoeEffect< 32 >
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to spawn an actor
|
* to spawn an actor
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPlayerSpawn : FFXIVIpcBasePacket<PlayerSpawn>
|
struct FFXIVIpcPlayerSpawn :
|
||||||
|
FFXIVIpcBasePacket< PlayerSpawn >
|
||||||
{
|
{
|
||||||
uint16_t title;
|
uint16_t title;
|
||||||
uint16_t u1b;
|
uint16_t u1b;
|
||||||
|
@ -451,7 +487,8 @@ struct FFXIVIpcPlayerSpawn : FFXIVIpcBasePacket<PlayerSpawn>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to spawn an actor
|
* to spawn an actor
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcNpcSpawn : FFXIVIpcBasePacket<NpcSpawn>
|
struct FFXIVIpcNpcSpawn :
|
||||||
|
FFXIVIpcBasePacket< NpcSpawn >
|
||||||
{
|
{
|
||||||
uint32_t gimmickId; // needs to be existing in the map, mob will snap to it
|
uint32_t gimmickId; // needs to be existing in the map, mob will snap to it
|
||||||
uint8_t u2b;
|
uint8_t u2b;
|
||||||
|
@ -531,7 +568,8 @@ struct FFXIVIpcNpcSpawn : FFXIVIpcBasePacket<NpcSpawn>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to show player movement
|
* to show player movement
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorFreeSpawn : FFXIVIpcBasePacket<ActorFreeSpawn>
|
struct FFXIVIpcActorFreeSpawn :
|
||||||
|
FFXIVIpcBasePacket< ActorFreeSpawn >
|
||||||
{
|
{
|
||||||
uint32_t spawnId;
|
uint32_t spawnId;
|
||||||
uint32_t actorId;
|
uint32_t actorId;
|
||||||
|
@ -541,7 +579,8 @@ struct FFXIVIpcActorFreeSpawn : FFXIVIpcBasePacket<ActorFreeSpawn>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to show player movement
|
* to show player movement
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorMove : FFXIVIpcBasePacket<ActorMove>
|
struct FFXIVIpcActorMove :
|
||||||
|
FFXIVIpcBasePacket< ActorMove >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint8_t rotation;
|
/* 0000 */ uint8_t rotation;
|
||||||
/* 0001 */ uint8_t unknown_1;
|
/* 0001 */ uint8_t unknown_1;
|
||||||
|
@ -558,7 +597,8 @@ struct FFXIVIpcActorMove : FFXIVIpcBasePacket<ActorMove>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to set an actors position
|
* to set an actors position
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorSetPos : FFXIVIpcBasePacket<ActorSetPos>
|
struct FFXIVIpcActorSetPos :
|
||||||
|
FFXIVIpcBasePacket< ActorSetPos >
|
||||||
{
|
{
|
||||||
uint16_t r16;
|
uint16_t r16;
|
||||||
uint8_t waitForLoad;
|
uint8_t waitForLoad;
|
||||||
|
@ -572,12 +612,12 @@ struct FFXIVIpcActorSetPos : FFXIVIpcBasePacket<ActorSetPos>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to start an actors casting
|
* to start an actors casting
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorCast : FFXIVIpcBasePacket<ActorCast>
|
struct FFXIVIpcActorCast :
|
||||||
|
FFXIVIpcBasePacket< ActorCast >
|
||||||
{
|
{
|
||||||
uint16_t action_id;
|
uint16_t action_id;
|
||||||
Common::SkillType skillType;
|
Common::SkillType skillType;
|
||||||
|
@ -593,7 +633,8 @@ struct FFXIVIpcActorCast : FFXIVIpcBasePacket<ActorCast>
|
||||||
uint16_t unknown_3;
|
uint16_t unknown_3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcHateList : FFXIVIpcBasePacket<HateList>
|
struct FFXIVIpcHateList :
|
||||||
|
FFXIVIpcBasePacket< HateList >
|
||||||
{
|
{
|
||||||
uint32_t numEntries;
|
uint32_t numEntries;
|
||||||
struct LsEntry
|
struct LsEntry
|
||||||
|
@ -606,7 +647,8 @@ struct FFXIVIpcHateList : FFXIVIpcBasePacket<HateList>
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcUpdateClassInfo : FFXIVIpcBasePacket<UpdateClassInfo>
|
struct FFXIVIpcUpdateClassInfo :
|
||||||
|
FFXIVIpcBasePacket< UpdateClassInfo >
|
||||||
{
|
{
|
||||||
uint8_t classId;
|
uint8_t classId;
|
||||||
uint8_t level1;
|
uint8_t level1;
|
||||||
|
@ -620,7 +662,8 @@ struct FFXIVIpcUpdateClassInfo : FFXIVIpcBasePacket<UpdateClassInfo>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to send the titles available to the player
|
* to send the titles available to the player
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPlayerTitleList : FFXIVIpcBasePacket<PlayerTitleList>
|
struct FFXIVIpcPlayerTitleList :
|
||||||
|
FFXIVIpcBasePacket< PlayerTitleList >
|
||||||
{
|
{
|
||||||
uint8_t titleList[48];
|
uint8_t titleList[48];
|
||||||
};
|
};
|
||||||
|
@ -629,7 +672,8 @@ struct FFXIVIpcPlayerTitleList : FFXIVIpcBasePacket<PlayerTitleList>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to initialize a zone for the player
|
* to initialize a zone for the player
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcInitZone : FFXIVIpcBasePacket<InitZone>
|
struct FFXIVIpcInitZone :
|
||||||
|
FFXIVIpcBasePacket< InitZone >
|
||||||
{
|
{
|
||||||
uint16_t serverId;
|
uint16_t serverId;
|
||||||
uint16_t zoneId;
|
uint16_t zoneId;
|
||||||
|
@ -651,7 +695,8 @@ struct FFXIVIpcInitZone : FFXIVIpcBasePacket<InitZone>
|
||||||
* Structural representation of the packet sent by the server to initialize
|
* Structural representation of the packet sent by the server to initialize
|
||||||
* the client UI upon initial connection.
|
* the client UI upon initial connection.
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcInitUI : FFXIVIpcBasePacket<InitUI>
|
struct FFXIVIpcInitUI :
|
||||||
|
FFXIVIpcBasePacket< InitUI >
|
||||||
{
|
{
|
||||||
// plain C types for a bit until the packet is actually fixed.
|
// plain C types for a bit until the packet is actually fixed.
|
||||||
// makes conversion between different editors easier.
|
// makes conversion between different editors easier.
|
||||||
|
@ -799,7 +844,8 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket<InitUI>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to set a players stats
|
* to set a players stats
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPlayerStats : FFXIVIpcBasePacket<PlayerStats>
|
struct FFXIVIpcPlayerStats :
|
||||||
|
FFXIVIpcBasePacket< PlayerStats >
|
||||||
{
|
{
|
||||||
uint32_t strength;
|
uint32_t strength;
|
||||||
uint32_t dexterity;
|
uint32_t dexterity;
|
||||||
|
@ -855,7 +901,8 @@ struct FFXIVIpcPlayerStats : FFXIVIpcBasePacket<PlayerStats>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to set an actors current owner
|
* to set an actors current owner
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcActorOwner : FFXIVIpcBasePacket<ActorOwner>
|
struct FFXIVIpcActorOwner :
|
||||||
|
FFXIVIpcBasePacket< ActorOwner >
|
||||||
{
|
{
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
uint8_t padding[7];
|
uint8_t padding[7];
|
||||||
|
@ -867,7 +914,8 @@ struct FFXIVIpcActorOwner : FFXIVIpcBasePacket<ActorOwner>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to set a players state
|
* to set a players state
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPlayerStateFlags : FFXIVIpcBasePacket<PlayerStateFlags>
|
struct FFXIVIpcPlayerStateFlags :
|
||||||
|
FFXIVIpcBasePacket< PlayerStateFlags >
|
||||||
{
|
{
|
||||||
uint8_t flags[12];
|
uint8_t flags[12];
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
|
@ -877,7 +925,8 @@ struct FFXIVIpcPlayerStateFlags : FFXIVIpcBasePacket<PlayerStateFlags>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* containing current class information
|
* containing current class information
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPlayerClassInfo : FFXIVIpcBasePacket<PlayerClassInfo>
|
struct FFXIVIpcPlayerClassInfo :
|
||||||
|
FFXIVIpcBasePacket< PlayerClassInfo >
|
||||||
{
|
{
|
||||||
uint16_t classId;
|
uint16_t classId;
|
||||||
uint8_t unknown;
|
uint8_t unknown;
|
||||||
|
@ -891,7 +940,8 @@ struct FFXIVIpcPlayerClassInfo : FFXIVIpcBasePacket<PlayerClassInfo>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update a players appearance
|
* to update a players appearance
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcModelEquip : FFXIVIpcBasePacket<ModelEquip>
|
struct FFXIVIpcModelEquip :
|
||||||
|
FFXIVIpcBasePacket< ModelEquip >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint64_t mainWeapon;
|
/* 0000 */ uint64_t mainWeapon;
|
||||||
/* 0008 */ uint64_t offWeapon;
|
/* 0008 */ uint64_t offWeapon;
|
||||||
|
@ -904,7 +954,8 @@ struct FFXIVIpcModelEquip : FFXIVIpcBasePacket<ModelEquip>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update a players appearance
|
* to update a players appearance
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcItemInfo : FFXIVIpcBasePacket<ItemInfo>
|
struct FFXIVIpcItemInfo :
|
||||||
|
FFXIVIpcBasePacket< ItemInfo >
|
||||||
{
|
{
|
||||||
uint32_t sequence;
|
uint32_t sequence;
|
||||||
uint32_t unknown;
|
uint32_t unknown;
|
||||||
|
@ -938,7 +989,8 @@ struct FFXIVIpcItemInfo : FFXIVIpcBasePacket<ItemInfo>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update a players appearance
|
* to update a players appearance
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcContainerInfo : FFXIVIpcBasePacket<ContainerInfo>
|
struct FFXIVIpcContainerInfo :
|
||||||
|
FFXIVIpcBasePacket< ContainerInfo >
|
||||||
{
|
{
|
||||||
uint32_t sequence;
|
uint32_t sequence;
|
||||||
uint32_t numItems;
|
uint32_t numItems;
|
||||||
|
@ -950,7 +1002,8 @@ struct FFXIVIpcContainerInfo : FFXIVIpcBasePacket<ContainerInfo>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update a players appearance
|
* to update a players appearance
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcCurrencyCrystalInfo : FFXIVIpcBasePacket<CurrencyCrystalInfo>
|
struct FFXIVIpcCurrencyCrystalInfo :
|
||||||
|
FFXIVIpcBasePacket< CurrencyCrystalInfo >
|
||||||
{
|
{
|
||||||
uint32_t sequence;
|
uint32_t sequence;
|
||||||
uint16_t containerId;
|
uint16_t containerId;
|
||||||
|
@ -963,14 +1016,16 @@ struct FFXIVIpcCurrencyCrystalInfo : FFXIVIpcBasePacket<CurrencyCrystalInfo>
|
||||||
uint32_t unknown3;
|
uint32_t unknown3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcInventoryTransactionFinish : FFXIVIpcBasePacket<InventoryTransactionFinish>
|
struct FFXIVIpcInventoryTransactionFinish :
|
||||||
|
FFXIVIpcBasePacket< InventoryTransactionFinish >
|
||||||
{
|
{
|
||||||
uint32_t transactionId;
|
uint32_t transactionId;
|
||||||
uint32_t transactionId1;
|
uint32_t transactionId1;
|
||||||
uint64_t padding;
|
uint64_t padding;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcInventoryTransaction : FFXIVIpcBasePacket<InventoryTransaction>
|
struct FFXIVIpcInventoryTransaction :
|
||||||
|
FFXIVIpcBasePacket< InventoryTransaction >
|
||||||
{
|
{
|
||||||
uint32_t transactionId;
|
uint32_t transactionId;
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
|
@ -988,7 +1043,8 @@ struct FFXIVIpcInventoryTransaction : FFXIVIpcBasePacket<InventoryTransaction>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct FFXIVIpcInventoryActionAck : FFXIVIpcBasePacket<InventoryActionAck>
|
struct FFXIVIpcInventoryActionAck :
|
||||||
|
FFXIVIpcBasePacket< InventoryActionAck >
|
||||||
{
|
{
|
||||||
uint32_t sequence;
|
uint32_t sequence;
|
||||||
uint16_t type;
|
uint16_t type;
|
||||||
|
@ -1002,7 +1058,8 @@ struct FFXIVIpcInventoryActionAck : FFXIVIpcBasePacket<InventoryActionAck>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update a slot in the inventory
|
* to update a slot in the inventory
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcUpdateInventorySlot : FFXIVIpcBasePacket<UpdateInventorySlot>
|
struct FFXIVIpcUpdateInventorySlot :
|
||||||
|
FFXIVIpcBasePacket< UpdateInventorySlot >
|
||||||
{
|
{
|
||||||
uint32_t sequence;
|
uint32_t sequence;
|
||||||
uint32_t unknown;
|
uint32_t unknown;
|
||||||
|
@ -1035,7 +1092,8 @@ struct FFXIVIpcUpdateInventorySlot : FFXIVIpcBasePacket<UpdateInventorySlot>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to start an event, not actually playing it, but registering
|
* to start an event, not actually playing it, but registering
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcEventStart : FFXIVIpcBasePacket<EventStart>
|
struct FFXIVIpcEventStart :
|
||||||
|
FFXIVIpcBasePacket< EventStart >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint64_t actorId;
|
/* 0000 */ uint64_t actorId;
|
||||||
/* 0008 */ uint32_t eventId;
|
/* 0008 */ uint32_t eventId;
|
||||||
|
@ -1051,7 +1109,8 @@ struct FFXIVIpcEventStart : FFXIVIpcBasePacket<EventStart>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to play an event
|
* to play an event
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcEventPlay : FFXIVIpcBasePacket<EventPlay>
|
struct FFXIVIpcEventPlay :
|
||||||
|
FFXIVIpcBasePacket< EventPlay >
|
||||||
{
|
{
|
||||||
uint64_t actorId;
|
uint64_t actorId;
|
||||||
uint32_t eventId;
|
uint32_t eventId;
|
||||||
|
@ -1065,11 +1124,12 @@ struct FFXIVIpcEventPlay : FFXIVIpcBasePacket<EventPlay>
|
||||||
uint8_t unknown[8];
|
uint8_t unknown[8];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to play an event
|
* to play an event
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket<DirectorPlayScene>
|
struct FFXIVIpcDirectorPlayScene :
|
||||||
|
FFXIVIpcBasePacket< DirectorPlayScene >
|
||||||
{
|
{
|
||||||
uint64_t actorId;
|
uint64_t actorId;
|
||||||
uint32_t eventId;
|
uint32_t eventId;
|
||||||
|
@ -1088,7 +1148,8 @@ struct FFXIVIpcDirectorPlayScene : FFXIVIpcBasePacket<DirectorPlayScene>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to finish an event
|
* to finish an event
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcEventFinish : FFXIVIpcBasePacket<EventFinish>
|
struct FFXIVIpcEventFinish :
|
||||||
|
FFXIVIpcBasePacket< EventFinish >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t eventId;
|
/* 0000 */ uint32_t eventId;
|
||||||
/* 0004 */ uint8_t param1;
|
/* 0004 */ uint8_t param1;
|
||||||
|
@ -1098,7 +1159,8 @@ struct FFXIVIpcEventFinish : FFXIVIpcBasePacket<EventFinish>
|
||||||
/* 000C */ uint32_t padding1;
|
/* 000C */ uint32_t padding1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEventOpenGilShop : FFXIVIpcBasePacket<EventOpenGilShop>
|
struct FFXIVIpcEventOpenGilShop :
|
||||||
|
FFXIVIpcBasePacket< EventOpenGilShop >
|
||||||
{
|
{
|
||||||
uint64_t actorId;
|
uint64_t actorId;
|
||||||
uint32_t eventId;
|
uint32_t eventId;
|
||||||
|
@ -1114,7 +1176,8 @@ struct FFXIVIpcEventOpenGilShop : FFXIVIpcBasePacket<EventOpenGilShop>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to respond to a linkshell creation event
|
* to respond to a linkshell creation event
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcEventLinkshell : FFXIVIpcBasePacket<EventLinkshell>
|
struct FFXIVIpcEventLinkshell :
|
||||||
|
FFXIVIpcBasePacket< EventLinkshell >
|
||||||
{
|
{
|
||||||
uint32_t eventId;
|
uint32_t eventId;
|
||||||
uint8_t scene;
|
uint8_t scene;
|
||||||
|
@ -1131,7 +1194,8 @@ struct FFXIVIpcEventLinkshell : FFXIVIpcBasePacket<EventLinkshell>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to send the active quests
|
* to send the active quests
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcQuestActiveList : FFXIVIpcBasePacket<QuestActiveList>
|
struct FFXIVIpcQuestActiveList :
|
||||||
|
FFXIVIpcBasePacket< QuestActiveList >
|
||||||
{
|
{
|
||||||
Common::QuestActive activeQuests[30];
|
Common::QuestActive activeQuests[30];
|
||||||
};
|
};
|
||||||
|
@ -1140,7 +1204,8 @@ struct FFXIVIpcQuestActiveList : FFXIVIpcBasePacket<QuestActiveList>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to send update a quest slot
|
* to send update a quest slot
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcQuestUpdate : FFXIVIpcBasePacket<QuestUpdate>
|
struct FFXIVIpcQuestUpdate :
|
||||||
|
FFXIVIpcBasePacket< QuestUpdate >
|
||||||
{
|
{
|
||||||
uint16_t slot;
|
uint16_t slot;
|
||||||
uint16_t padding;
|
uint16_t padding;
|
||||||
|
@ -1151,7 +1216,8 @@ struct FFXIVIpcQuestUpdate : FFXIVIpcBasePacket<QuestUpdate>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to send the completed quests mask
|
* to send the completed quests mask
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcQuestCompleteList : FFXIVIpcBasePacket<QuestCompleteList>
|
struct FFXIVIpcQuestCompleteList :
|
||||||
|
FFXIVIpcBasePacket< QuestCompleteList >
|
||||||
{
|
{
|
||||||
uint8_t questCompleteMask[396];
|
uint8_t questCompleteMask[396];
|
||||||
uint8_t unknownCompleteMask[32];
|
uint8_t unknownCompleteMask[32];
|
||||||
|
@ -1161,7 +1227,8 @@ struct FFXIVIpcQuestCompleteList : FFXIVIpcBasePacket<QuestCompleteList>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to finish a quest
|
* to finish a quest
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcQuestFinish : FFXIVIpcBasePacket<QuestFinish>
|
struct FFXIVIpcQuestFinish :
|
||||||
|
FFXIVIpcBasePacket< QuestFinish >
|
||||||
{
|
{
|
||||||
uint16_t questId;
|
uint16_t questId;
|
||||||
uint8_t flag1;
|
uint8_t flag1;
|
||||||
|
@ -1176,7 +1243,8 @@ struct FFXIVIpcQuestFinish : FFXIVIpcBasePacket<QuestFinish>
|
||||||
* type 1 icon
|
* type 1 icon
|
||||||
* type 5 status
|
* type 5 status
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcQuestMessage : FFXIVIpcBasePacket<QuestMessage>
|
struct FFXIVIpcQuestMessage :
|
||||||
|
FFXIVIpcBasePacket< QuestMessage >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t questId;
|
/* 0000 */ uint32_t questId;
|
||||||
/* 0000 */ uint8_t msgId;
|
/* 0000 */ uint8_t msgId;
|
||||||
|
@ -1186,7 +1254,8 @@ struct FFXIVIpcQuestMessage : FFXIVIpcBasePacket<QuestMessage>
|
||||||
/* 0000 */ uint32_t var2;
|
/* 0000 */ uint32_t var2;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcQuestTracker : FFXIVIpcBasePacket<QuestTracker>
|
struct FFXIVIpcQuestTracker :
|
||||||
|
FFXIVIpcBasePacket< QuestTracker >
|
||||||
{
|
{
|
||||||
struct TrackerEntry
|
struct TrackerEntry
|
||||||
{
|
{
|
||||||
|
@ -1197,7 +1266,8 @@ struct FFXIVIpcQuestTracker : FFXIVIpcBasePacket<QuestTracker>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct FFXIVIpcWeatherChange : FFXIVIpcBasePacket<WeatherChange>
|
struct FFXIVIpcWeatherChange :
|
||||||
|
FFXIVIpcBasePacket< WeatherChange >
|
||||||
{
|
{
|
||||||
uint32_t weatherId;
|
uint32_t weatherId;
|
||||||
float delay;
|
float delay;
|
||||||
|
@ -1207,7 +1277,8 @@ struct FFXIVIpcWeatherChange : FFXIVIpcBasePacket<WeatherChange>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to send a unviel a map
|
* to send a unviel a map
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcDiscovery : FFXIVIpcBasePacket<Discovery>
|
struct FFXIVIpcDiscovery :
|
||||||
|
FFXIVIpcBasePacket< Discovery >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint32_t map_part_id;
|
/* 0000 */ uint32_t map_part_id;
|
||||||
/* 0004 */ uint32_t map_id;
|
/* 0004 */ uint32_t map_id;
|
||||||
|
@ -1217,7 +1288,8 @@ struct FFXIVIpcDiscovery : FFXIVIpcBasePacket<Discovery>
|
||||||
/**
|
/**
|
||||||
* UNKOWN TYPE
|
* UNKOWN TYPE
|
||||||
*/
|
*/
|
||||||
struct FFXIVARR_IPC_UNK322 : FFXIVIpcBasePacket<IPCTYPE_UNK_322>
|
struct FFXIVARR_IPC_UNK322 :
|
||||||
|
FFXIVIpcBasePacket< IPCTYPE_UNK_322 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint8_t unk[8];
|
/* 0000 */ uint8_t unk[8];
|
||||||
};
|
};
|
||||||
|
@ -1225,7 +1297,8 @@ struct FFXIVARR_IPC_UNK322 : FFXIVIpcBasePacket<IPCTYPE_UNK_322>
|
||||||
/**
|
/**
|
||||||
* UNKOWN TYPE
|
* UNKOWN TYPE
|
||||||
*/
|
*/
|
||||||
struct FFXIVARR_IPC_UNK320 : FFXIVIpcBasePacket<IPCTYPE_UNK_320>
|
struct FFXIVARR_IPC_UNK320 :
|
||||||
|
FFXIVIpcBasePacket< IPCTYPE_UNK_320 >
|
||||||
{
|
{
|
||||||
/* 0000 */ uint8_t unk[0x38];
|
/* 0000 */ uint8_t unk[0x38];
|
||||||
};
|
};
|
||||||
|
@ -1234,7 +1307,8 @@ struct FFXIVARR_IPC_UNK320 : FFXIVIpcBasePacket<IPCTYPE_UNK_320>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* prepare zoning, showing screenmessage
|
* prepare zoning, showing screenmessage
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcPrepareZoning : FFXIVIpcBasePacket<PrepareZoning>
|
struct FFXIVIpcPrepareZoning :
|
||||||
|
FFXIVIpcBasePacket< PrepareZoning >
|
||||||
{
|
{
|
||||||
uint32_t logMessage;
|
uint32_t logMessage;
|
||||||
uint16_t targetZone;
|
uint16_t targetZone;
|
||||||
|
@ -1254,7 +1328,8 @@ struct FFXIVIpcPrepareZoning : FFXIVIpcBasePacket<PrepareZoning>
|
||||||
*
|
*
|
||||||
* See https://gist.github.com/Minoost/c35843c4c8a7a931f31fdaac9bce64c2
|
* See https://gist.github.com/Minoost/c35843c4c8a7a931f31fdaac9bce64c2
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcCFNotify : FFXIVIpcBasePacket<CFNotify>
|
struct FFXIVIpcCFNotify :
|
||||||
|
FFXIVIpcBasePacket< CFNotify >
|
||||||
{
|
{
|
||||||
uint32_t state1; // 3 = cancelled, 4 = duty ready
|
uint32_t state1; // 3 = cancelled, 4 = duty ready
|
||||||
uint32_t state2; // if state1 == 3, state2 is cancelled reason
|
uint32_t state2; // if state1 == 3, state2 is cancelled reason
|
||||||
|
@ -1274,7 +1349,8 @@ struct FFXIVIpcCFNotify : FFXIVIpcBasePacket<CFNotify>
|
||||||
* Do note that this packet has to come early in login phase (around initui packet)
|
* Do note that this packet has to come early in login phase (around initui packet)
|
||||||
* or it won't be applied until you reconnect
|
* or it won't be applied until you reconnect
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcCFAvailableContents : FFXIVIpcBasePacket<CFAvailableContents>
|
struct FFXIVIpcCFAvailableContents :
|
||||||
|
FFXIVIpcBasePacket< CFAvailableContents >
|
||||||
{
|
{
|
||||||
uint8_t contents[0x48];
|
uint8_t contents[0x48];
|
||||||
};
|
};
|
||||||
|
@ -1283,7 +1359,8 @@ struct FFXIVIpcCFAvailableContents : FFXIVIpcBasePacket<CFAvailableContents>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update adventure in needs in duty roulette
|
* to update adventure in needs in duty roulette
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcCFPlayerInNeed : FFXIVIpcBasePacket<CFPlayerInNeed>
|
struct FFXIVIpcCFPlayerInNeed :
|
||||||
|
FFXIVIpcBasePacket< CFPlayerInNeed >
|
||||||
{
|
{
|
||||||
// Ordered by roulette id
|
// Ordered by roulette id
|
||||||
uint8_t inNeeds[0x10];
|
uint8_t inNeeds[0x10];
|
||||||
|
@ -1293,13 +1370,15 @@ struct FFXIVIpcCFPlayerInNeed : FFXIVIpcBasePacket<CFPlayerInNeed>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to update duty info in general
|
* to update duty info in general
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcCFDutyInfo : FFXIVIpcBasePacket<CFDutyInfo>
|
struct FFXIVIpcCFDutyInfo :
|
||||||
|
FFXIVIpcBasePacket< CFDutyInfo >
|
||||||
{
|
{
|
||||||
uint8_t penaltyTime;
|
uint8_t penaltyTime;
|
||||||
uint8_t unknown[7];
|
uint8_t unknown[7];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcCFRegisterDuty : FFXIVIpcBasePacket<CFRegisterDuty>
|
struct FFXIVIpcCFRegisterDuty :
|
||||||
|
FFXIVIpcBasePacket< CFRegisterDuty >
|
||||||
{
|
{
|
||||||
uint32_t unknown0; // 0x301
|
uint32_t unknown0; // 0x301
|
||||||
uint8_t rouletteId; // if it's a daily roulette
|
uint8_t rouletteId; // if it's a daily roulette
|
||||||
|
@ -1308,7 +1387,8 @@ struct FFXIVIpcCFRegisterDuty : FFXIVIpcBasePacket<CFRegisterDuty>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct FFXIVIpcCFMemberStatus : FFXIVIpcBasePacket<CFMemberStatus>
|
struct FFXIVIpcCFMemberStatus :
|
||||||
|
FFXIVIpcBasePacket< CFMemberStatus >
|
||||||
{
|
{
|
||||||
uint16_t contentId;
|
uint16_t contentId;
|
||||||
uint16_t unknown1;
|
uint16_t unknown1;
|
||||||
|
@ -1321,7 +1401,8 @@ struct FFXIVIpcCFMemberStatus : FFXIVIpcBasePacket<CFMemberStatus>
|
||||||
uint32_t unknown3;
|
uint32_t unknown3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcEorzeaTimeOffset : FFXIVIpcBasePacket<EorzeaTimeOffset>
|
struct FFXIVIpcEorzeaTimeOffset :
|
||||||
|
FFXIVIpcBasePacket< EorzeaTimeOffset >
|
||||||
{
|
{
|
||||||
uint64_t timestamp;
|
uint64_t timestamp;
|
||||||
};
|
};
|
||||||
|
@ -1330,7 +1411,8 @@ struct FFXIVIpcEorzeaTimeOffset : FFXIVIpcBasePacket<EorzeaTimeOffset>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to set the gear show/hide status of a character
|
* to set the gear show/hide status of a character
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcEquipDisplayFlags : FFXIVIpcBasePacket<EquipDisplayFlags>
|
struct FFXIVIpcEquipDisplayFlags :
|
||||||
|
FFXIVIpcBasePacket< EquipDisplayFlags >
|
||||||
{
|
{
|
||||||
uint8_t bitmask;
|
uint8_t bitmask;
|
||||||
};
|
};
|
||||||
|
@ -1339,7 +1421,8 @@ struct FFXIVIpcEquipDisplayFlags : FFXIVIpcBasePacket<EquipDisplayFlags>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to mount a player
|
* to mount a player
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcMount : FFXIVIpcBasePacket<Mount>
|
struct FFXIVIpcMount :
|
||||||
|
FFXIVIpcBasePacket< Mount >
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
};
|
};
|
||||||
|
@ -1348,7 +1431,8 @@ struct FFXIVIpcMount : FFXIVIpcBasePacket<Mount>
|
||||||
* Structural representation of the packet sent by the server
|
* Structural representation of the packet sent by the server
|
||||||
* to mount a player
|
* to mount a player
|
||||||
*/
|
*/
|
||||||
struct FFXIVIpcDirectorVars : FFXIVIpcBasePacket<DirectorVars>
|
struct FFXIVIpcDirectorVars :
|
||||||
|
FFXIVIpcBasePacket< DirectorVars >
|
||||||
{
|
{
|
||||||
/*! DirectorType | ContentId */
|
/*! DirectorType | ContentId */
|
||||||
uint32_t m_directorId;
|
uint32_t m_directorId;
|
||||||
|
@ -1361,18 +1445,21 @@ struct FFXIVIpcDirectorVars : FFXIVIpcBasePacket<DirectorVars>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct FFXIVIpcActorGauge : FFXIVIpcBasePacket<ActorGauge>
|
struct FFXIVIpcActorGauge :
|
||||||
|
FFXIVIpcBasePacket< ActorGauge >
|
||||||
{
|
{
|
||||||
uint8_t classJobId;
|
uint8_t classJobId;
|
||||||
uint8_t data[15]; // depends on classJobId
|
uint8_t data[15]; // depends on classJobId
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcPerformNote : FFXIVIpcBasePacket<PerformNote>
|
struct FFXIVIpcPerformNote :
|
||||||
|
FFXIVIpcBasePacket< PerformNote >
|
||||||
{
|
{
|
||||||
uint8_t data[32];
|
uint8_t data[32];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcWardInfo : FFXIVIpcBasePacket<WardInfo>
|
struct FFXIVIpcWardInfo :
|
||||||
|
FFXIVIpcBasePacket< WardInfo >
|
||||||
{
|
{
|
||||||
uint16_t unknown0;
|
uint16_t unknown0;
|
||||||
uint16_t wardNum; // set 1 for "Mist, Ward 2"
|
uint16_t wardNum; // set 1 for "Mist, Ward 2"
|
||||||
|
@ -1386,7 +1473,8 @@ struct FFXIVIpcWardInfo : FFXIVIpcBasePacket<WardInfo>
|
||||||
uint8_t unknown6;
|
uint8_t unknown6;
|
||||||
uint8_t unknown7;
|
uint8_t unknown7;
|
||||||
uint8_t unknown8;
|
uint8_t unknown8;
|
||||||
struct {
|
struct
|
||||||
|
{
|
||||||
uint8_t houseSize; //1 = small, 2 = middle, 3 = big; 1
|
uint8_t houseSize; //1 = small, 2 = middle, 3 = big; 1
|
||||||
uint8_t houseState; //1 = for sell, 2 = sold, 3 = hasOwner, 0x0A = House sharing; 2
|
uint8_t houseState; //1 = for sell, 2 = sold, 3 = hasOwner, 0x0A = House sharing; 2
|
||||||
uint8_t iconColor; //HouseState has to be 3; 1 = Private, 2 = FC House; 4
|
uint8_t iconColor; //HouseState has to be 3; 1 = Private, 2 = FC House; 4
|
||||||
|
@ -1405,7 +1493,8 @@ struct FFXIVIpcWardInfo : FFXIVIpcBasePacket<WardInfo>
|
||||||
} landSet[30];
|
} landSet[30];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcWardYardInfo : FFXIVIpcBasePacket<WardYardInfo>
|
struct FFXIVIpcWardYardInfo :
|
||||||
|
FFXIVIpcBasePacket< WardYardInfo >
|
||||||
{
|
{
|
||||||
/* consistency check? */
|
/* consistency check? */
|
||||||
uint32_t unknown1; //always 0xFFFFFFFF
|
uint32_t unknown1; //always 0xFFFFFFFF
|
||||||
|
@ -1424,13 +1513,15 @@ struct FFXIVIpcWardYardInfo : FFXIVIpcBasePacket<WardYardInfo>
|
||||||
} object[100];
|
} object[100];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcMSQTrackerProgress : FFXIVIpcBasePacket<MSQTrackerProgress>
|
struct FFXIVIpcMSQTrackerProgress :
|
||||||
|
FFXIVIpcBasePacket< MSQTrackerProgress >
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
uint32_t padding;
|
uint32_t padding;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcMSQTrackerComplete : FFXIVIpcBasePacket<MSQTrackerComplete>
|
struct FFXIVIpcMSQTrackerComplete :
|
||||||
|
FFXIVIpcBasePacket< MSQTrackerComplete >
|
||||||
{
|
{
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
uint32_t padding1;
|
uint32_t padding1;
|
||||||
|
@ -1439,7 +1530,8 @@ struct FFXIVIpcMSQTrackerComplete : FFXIVIpcBasePacket<MSQTrackerComplete>
|
||||||
uint64_t padding4; // last 4 bytes is uint32_t but who cares
|
uint64_t padding4; // last 4 bytes is uint32_t but who cares
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcObjectSpawn : FFXIVIpcBasePacket<ObjectSpawn>
|
struct FFXIVIpcObjectSpawn :
|
||||||
|
FFXIVIpcBasePacket< ObjectSpawn >
|
||||||
{
|
{
|
||||||
uint8_t spawnIndex;
|
uint8_t spawnIndex;
|
||||||
uint8_t objKind;
|
uint8_t objKind;
|
||||||
|
@ -1464,13 +1556,15 @@ struct FFXIVIpcObjectSpawn : FFXIVIpcBasePacket<ObjectSpawn>
|
||||||
int16_t unknown3E;
|
int16_t unknown3E;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcObjectDespawn : FFXIVIpcBasePacket<ObjectDespawn>
|
struct FFXIVIpcObjectDespawn :
|
||||||
|
FFXIVIpcBasePacket< ObjectDespawn >
|
||||||
{
|
{
|
||||||
uint8_t spawnIndex;
|
uint8_t spawnIndex;
|
||||||
uint8_t padding[7];
|
uint8_t padding[7];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FFXIVIpcDuelChallenge : FFXIVIpcBasePacket<DuelChallenge>
|
struct FFXIVIpcDuelChallenge :
|
||||||
|
FFXIVIpcBasePacket< DuelChallenge >
|
||||||
{
|
{
|
||||||
uint8_t otherClassJobId;
|
uint8_t otherClassJobId;
|
||||||
uint8_t otherLevel; // class job level
|
uint8_t otherLevel; // class job level
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
@ -7,62 +8,64 @@
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
template<class T>
|
template< class T >
|
||||||
class LockedQueue
|
class LockedQueue
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LockedQueue();
|
LockedQueue();
|
||||||
|
|
||||||
~LockedQueue();
|
~LockedQueue();
|
||||||
|
|
||||||
T pop();
|
T pop();
|
||||||
|
|
||||||
//we can pass this in by reference, instead of copying
|
//we can pass this in by reference, instead of copying
|
||||||
void push(const T object);
|
void push( const T object );
|
||||||
|
|
||||||
//we can pass this in by reference
|
//we can pass this in by reference
|
||||||
//this will push it onto the queue, and swap the object
|
//this will push it onto the queue, and swap the object
|
||||||
// with a default-constructed T at the same time.
|
// with a default-constructed T at the same time.
|
||||||
void push_swap(T& object);
|
void push_swap( T& object );
|
||||||
void push_reset(T& object);
|
|
||||||
|
void push_reset( T& object );
|
||||||
|
|
||||||
|
|
||||||
std::size_t size();
|
std::size_t size();
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::queue<T> m_queue;
|
std::queue< T > m_queue;
|
||||||
std::mutex m_mutex;
|
std::mutex m_mutex;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
LockedQueue<T>::LockedQueue()
|
LockedQueue< T >::LockedQueue()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
std::size_t LockedQueue<T>::size()
|
std::size_t LockedQueue< T >::size()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock( m_mutex);
|
std::lock_guard< std::mutex > lock( m_mutex );
|
||||||
return m_queue.size();
|
return m_queue.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
LockedQueue<T>::~LockedQueue()
|
LockedQueue< T >::~LockedQueue()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
T LockedQueue<T>::pop()
|
T LockedQueue< T >::pop()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock( m_mutex);
|
std::lock_guard< std::mutex > lock( m_mutex );
|
||||||
|
|
||||||
if( m_queue.empty())
|
if( m_queue.empty() )
|
||||||
{
|
{
|
||||||
return T();
|
return T();
|
||||||
}
|
}
|
||||||
|
@ -72,27 +75,27 @@ namespace Core {
|
||||||
m_queue.pop();
|
m_queue.pop();
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
void LockedQueue<T>::push(const T object)
|
void LockedQueue< T >::push( const T object )
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock( m_mutex);
|
std::lock_guard< std::mutex > lock( m_mutex );
|
||||||
m_queue.push(object);
|
m_queue.push( object );
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
void LockedQueue<T>::push_swap(T& object)
|
void LockedQueue< T >::push_swap( T& object )
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock( m_mutex);
|
std::lock_guard< std::mutex > lock( m_mutex );
|
||||||
|
|
||||||
m_queue.push(object);
|
m_queue.push( object );
|
||||||
|
|
||||||
T default_ctored_object = T();
|
T default_ctored_object = T();
|
||||||
//this is a special swap that will do a legit naive swap normally,
|
//this is a special swap that will do a legit naive swap normally,
|
||||||
// except if there exists a function called T::swap(), which is
|
// except if there exists a function called T::swap(), which is
|
||||||
// specialized and possibly faster.
|
// specialized and possibly faster.
|
||||||
boost::swap(object, default_ctored_object);
|
boost::swap( object, default_ctored_object );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,14 +104,14 @@ namespace Core {
|
||||||
// this will allow that the object on the queue is the *last* shared_ptr
|
// this will allow that the object on the queue is the *last* shared_ptr
|
||||||
// in existance by the time this function returns.
|
// in existance by the time this function returns.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template< class T >
|
||||||
void LockedQueue<T>::push_reset(T& object)
|
void LockedQueue< T >::push_reset( T& object )
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock( m_mutex);
|
std::lock_guard< std::mutex > lock( m_mutex );
|
||||||
|
|
||||||
m_queue.push(object);
|
m_queue.push( object );
|
||||||
|
|
||||||
T default_ctored_object = T();
|
T default_ctored_object = T();
|
||||||
|
|
||||||
|
@ -119,6 +122,6 @@ namespace Core {
|
||||||
// this will allow that the object on the queue is the *last* shared_ptr
|
// this will allow that the object on the queue is the *last* shared_ptr
|
||||||
// in existance by the time this function returns.
|
// in existance by the time this function returns.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,8 +8,7 @@
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
{
|
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
class LockedWaitQueue
|
class LockedWaitQueue
|
||||||
|
@ -18,11 +17,14 @@ private:
|
||||||
std::mutex m_queueLock;
|
std::mutex m_queueLock;
|
||||||
std::queue< T > m_queue;
|
std::queue< T > m_queue;
|
||||||
std::condition_variable m_condition;
|
std::condition_variable m_condition;
|
||||||
std::atomic<bool> m_shutdown;
|
std::atomic< bool > m_shutdown;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
LockedWaitQueue<T>() : m_shutdown(false) { }
|
LockedWaitQueue< T >() :
|
||||||
|
m_shutdown( false )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void push( const T& value )
|
void push( const T& value )
|
||||||
{
|
{
|
||||||
|
@ -58,7 +60,7 @@ public:
|
||||||
std::unique_lock< std::mutex > lock( m_queueLock );
|
std::unique_lock< std::mutex > lock( m_queueLock );
|
||||||
|
|
||||||
while( m_queue.empty() && !m_shutdown )
|
while( m_queue.empty() && !m_shutdown )
|
||||||
m_condition.wait(lock);
|
m_condition.wait( lock );
|
||||||
|
|
||||||
if( m_queue.empty() || m_shutdown )
|
if( m_queue.empty() || m_shutdown )
|
||||||
return;
|
return;
|
||||||
|
@ -88,10 +90,15 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template< typename E = T >
|
template< typename E = T >
|
||||||
typename std::enable_if< std::is_pointer< E >::value >::type deleteQueuedObject( E& obj ) { delete obj; }
|
typename std::enable_if< std::is_pointer< E >::value >::type deleteQueuedObject( E& obj )
|
||||||
|
{
|
||||||
|
delete obj;
|
||||||
|
}
|
||||||
|
|
||||||
template< typename E = T >
|
template< typename E = T >
|
||||||
typename std::enable_if< !std::is_pointer< E >::value >::type deleteQueuedObject( E const& ) { }
|
typename std::enable_if< !std::is_pointer< E >::value >::type deleteQueuedObject( E const& )
|
||||||
|
{
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,14 +5,12 @@
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
namespace Core
|
namespace Core {
|
||||||
|
namespace Util {
|
||||||
|
template< typename T, typename ActorIdType = uint32_t >
|
||||||
|
class SpawnIndexAllocator
|
||||||
{
|
{
|
||||||
namespace Util
|
public:
|
||||||
{
|
|
||||||
template< typename T, typename ActorIdType = uint32_t >
|
|
||||||
class SpawnIndexAllocator
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
static_assert( std::is_same< T, uint8_t >::value || std::is_same< T, uint16_t >::value ||
|
static_assert( std::is_same< T, uint8_t >::value || std::is_same< T, uint16_t >::value ||
|
||||||
std::is_same< T, uint32_t >::value || std::is_same< T, uint64_t >::value,
|
std::is_same< T, uint32_t >::value || std::is_same< T, uint64_t >::value,
|
||||||
"T must be uint8_t, uint16_t, uint32_t, uint64_t" );
|
"T must be uint8_t, uint16_t, uint32_t, uint64_t" );
|
||||||
|
@ -20,7 +18,8 @@ namespace Util
|
||||||
SpawnIndexAllocator() :
|
SpawnIndexAllocator() :
|
||||||
m_maxSlotId( 0 ),
|
m_maxSlotId( 0 ),
|
||||||
m_reserveFirstSlot( false )
|
m_reserveFirstSlot( false )
|
||||||
{ }
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void init( T maxSlotId, bool reserveFirstSlot = false )
|
void init( T maxSlotId, bool reserveFirstSlot = false )
|
||||||
{
|
{
|
||||||
|
@ -55,7 +54,7 @@ namespace Util
|
||||||
auto nextId = m_availableIds.front();
|
auto nextId = m_availableIds.front();
|
||||||
m_availableIds.pop();
|
m_availableIds.pop();
|
||||||
|
|
||||||
m_actorIdToAllocatedMap[actorId] = nextId;
|
m_actorIdToAllocatedMap[ actorId ] = nextId;
|
||||||
|
|
||||||
return nextId;
|
return nextId;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +76,7 @@ namespace Util
|
||||||
return static_cast< T >( -1 );
|
return static_cast< T >( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setupQueue()
|
void setupQueue()
|
||||||
{
|
{
|
||||||
assert( m_maxSlotId != 0 );
|
assert( m_maxSlotId != 0 );
|
||||||
|
@ -101,7 +100,7 @@ namespace Util
|
||||||
|
|
||||||
T m_maxSlotId;
|
T m_maxSlotId;
|
||||||
bool m_reserveFirstSlot;
|
bool m_reserveFirstSlot;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ std::string Core::Util::binaryToHexString( uint8_t* pBinData, uint16_t size )
|
||||||
|
|
||||||
for( uint32_t i = 0; i < size; i++ )
|
for( uint32_t i = 0; i < size; i++ )
|
||||||
{
|
{
|
||||||
outStr += boost::str( boost::format( "%|02X|" ) % ( int32_t ) ( pBinData[i] & 0xFF ) );
|
outStr += boost::str( boost::format( "%|02X|" ) % ( int32_t ) ( pBinData[ i ] & 0xFF ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return outStr;
|
return outStr;
|
||||||
|
@ -24,7 +24,7 @@ std::string Core::Util::binaryToHexDump( uint8_t* pBinData, uint16_t size )
|
||||||
int byteBlock = offsetBlock + bytesPerLine * 3 + ( bytesPerLine - 1 ) / 8 + 2;
|
int byteBlock = offsetBlock + bytesPerLine * 3 + ( bytesPerLine - 1 ) / 8 + 2;
|
||||||
int lineLength = byteBlock + bytesPerLine + 1;
|
int lineLength = byteBlock + bytesPerLine + 1;
|
||||||
|
|
||||||
std::string line ( lineLength, ' ' );
|
std::string line( lineLength, ' ' );
|
||||||
int numLines = ( size + bytesPerLine - 1 ) / bytesPerLine;
|
int numLines = ( size + bytesPerLine - 1 ) / bytesPerLine;
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,37 +32,37 @@ std::string Core::Util::binaryToHexDump( uint8_t* pBinData, uint16_t size )
|
||||||
|
|
||||||
for( uint32_t i = 0; i < size; i += bytesPerLine )
|
for( uint32_t i = 0; i < size; i += bytesPerLine )
|
||||||
{
|
{
|
||||||
line[0] = hexChars[( i >> 28 ) & 0xF];
|
line[ 0 ] = hexChars[ ( i >> 28 ) & 0xF ];
|
||||||
line[1] = hexChars[( i >> 24 ) & 0xF];
|
line[ 1 ] = hexChars[ ( i >> 24 ) & 0xF ];
|
||||||
line[2] = hexChars[( i >> 20 ) & 0xF];
|
line[ 2 ] = hexChars[ ( i >> 20 ) & 0xF ];
|
||||||
line[3] = hexChars[( i >> 16 ) & 0xF];
|
line[ 3 ] = hexChars[ ( i >> 16 ) & 0xF ];
|
||||||
line[4] = hexChars[( i >> 12 ) & 0xF];
|
line[ 4 ] = hexChars[ ( i >> 12 ) & 0xF ];
|
||||||
line[5] = hexChars[( i >> 8 ) & 0xF];
|
line[ 5 ] = hexChars[ ( i >> 8 ) & 0xF ];
|
||||||
line[6] = hexChars[( i >> 4 ) & 0xF];
|
line[ 6 ] = hexChars[ ( i >> 4 ) & 0xF ];
|
||||||
line[7] = hexChars[( i >> 0 ) & 0xF];
|
line[ 7 ] = hexChars[ ( i >> 0 ) & 0xF ];
|
||||||
|
|
||||||
int hexColumn = offsetBlock;
|
int hexColumn = offsetBlock;
|
||||||
int charColumn = byteBlock;
|
int charColumn = byteBlock;
|
||||||
|
|
||||||
for( int j = 0; j < bytesPerLine; j++ )
|
for( int j = 0; j < bytesPerLine; j++ )
|
||||||
{
|
{
|
||||||
if( j > 0 && ( j & 7 ) == 0)
|
if( j > 0 && ( j & 7 ) == 0 )
|
||||||
{
|
{
|
||||||
hexColumn++;
|
hexColumn++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( i + j >= size )
|
if( i + j >= size )
|
||||||
{
|
{
|
||||||
line[hexColumn] = ' ';
|
line[ hexColumn ] = ' ';
|
||||||
line[hexColumn + 1] = ' ';
|
line[ hexColumn + 1 ] = ' ';
|
||||||
line[charColumn] = ' ';
|
line[ charColumn ] = ' ';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint8_t by = pBinData[i + j];
|
uint8_t by = pBinData[ i + j ];
|
||||||
line[hexColumn] = hexChars[( by >> 4 ) & 0xF];
|
line[ hexColumn ] = hexChars[ ( by >> 4 ) & 0xF ];
|
||||||
line[hexColumn + 1] = hexChars[by & 0xF];
|
line[ hexColumn + 1 ] = hexChars[ by & 0xF ];
|
||||||
line[charColumn] = by < 32 ? '.' : static_cast< char >( by );
|
line[ charColumn ] = by < 32 ? '.' : static_cast< char >( by );
|
||||||
}
|
}
|
||||||
|
|
||||||
hexColumn += 3;
|
hexColumn += 3;
|
||||||
|
|
|
@ -22,19 +22,21 @@ float calcAngTo( float x, float y, float x1, float y1 );
|
||||||
float calcAngFrom( float x, float y, float x1, float y1 );
|
float calcAngFrom( float x, float y, float x1, float y1 );
|
||||||
|
|
||||||
uint16_t floatToUInt16( float val );
|
uint16_t floatToUInt16( float val );
|
||||||
|
|
||||||
uint16_t floatToUInt16Rot( float val );
|
uint16_t floatToUInt16Rot( float val );
|
||||||
|
|
||||||
uint8_t floatToUInt8Rot( float val );
|
uint8_t floatToUInt8Rot( float val );
|
||||||
|
|
||||||
template
|
template
|
||||||
<typename T>
|
< typename T >
|
||||||
T clamp( T val, T minimum, T maximum )
|
T clamp( T val, T minimum, T maximum )
|
||||||
{
|
{
|
||||||
if (val > maximum)
|
if( val > maximum )
|
||||||
{
|
{
|
||||||
return maximum;
|
return maximum;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (val < minimum)
|
if( val < minimum )
|
||||||
{
|
{
|
||||||
return minimum;
|
return minimum;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
namespace Version {
|
namespace Version {
|
||||||
|
|
||||||
extern const std::string GIT_HASH;
|
extern const std::string GIT_HASH;
|
||||||
extern const std::string VERSION;
|
extern const std::string VERSION;
|
||||||
|
|
||||||
} /* Version */
|
} /* Version */
|
||||||
} /* Core */
|
} /* Core */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,11 +2,14 @@
|
||||||
#include "../ScriptObject.h"
|
#include "../ScriptObject.h"
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class ActionReturn6 : public ActionScript
|
class ActionReturn6 :
|
||||||
|
public ActionScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ActionReturn6() : ActionScript( 6 )
|
ActionReturn6() :
|
||||||
{}
|
ActionScript( 6 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onCastFinish( Core::Entity::Player& player, Core::Entity::Chara& targetActor ) override
|
void onCastFinish( Core::Entity::Player& player, Core::Entity::Chara& targetActor ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class ActionSprint3 : public ActionScript
|
class ActionSprint3 :
|
||||||
|
public ActionScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ActionSprint3() : ActionScript( 3 )
|
ActionSprint3() :
|
||||||
{}
|
ActionScript( 3 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onCastFinish( Core::Entity::Player& player, Core::Entity::Chara& targetActor ) override
|
void onCastFinish( Core::Entity::Player& player, Core::Entity::Chara& targetActor ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,11 +10,14 @@
|
||||||
#define AETHERYTE_MENU_FAVORITE_POINT 4
|
#define AETHERYTE_MENU_FAVORITE_POINT 4
|
||||||
#define AETHERYTE_MENU_FAVORITE_POINT_SECURITY_TOKEN 5
|
#define AETHERYTE_MENU_FAVORITE_POINT_SECURITY_TOKEN 5
|
||||||
|
|
||||||
class Aethernet : public EventScript
|
class Aethernet :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Aethernet() : EventScript( EVENTSCRIPT_AETHERNET_ID )
|
Aethernet() :
|
||||||
{}
|
EventScript( EVENTSCRIPT_AETHERNET_ID )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
@ -30,12 +33,13 @@ public:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
player.eventActionStart( eventId, ACTION_ATTUNE,
|
||||||
|
[]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||||
{
|
{
|
||||||
player.registerAetheryte( eventId & 0xFFFF );
|
player.registerAetheryte( eventId & 0xFFFF );
|
||||||
player.playScene( eventId, 3, 0, 0, 0 );
|
player.playScene( eventId, 3, 0, 0, 0 );
|
||||||
},
|
},
|
||||||
[] ( Entity::Player& ply, uint32_t evntId, uint64_t additional )
|
[]( Entity::Player& ply, uint32_t evntId, uint64_t additional )
|
||||||
{
|
{
|
||||||
|
|
||||||
}, 0 );
|
}, 0 );
|
||||||
|
|
|
@ -12,11 +12,14 @@
|
||||||
#define AETHERYTE_MENU_FAVORITE_POINT 4
|
#define AETHERYTE_MENU_FAVORITE_POINT 4
|
||||||
#define AETHERYTE_MENU_FAVORITE_POINT_SECURITY_TOKEN 5
|
#define AETHERYTE_MENU_FAVORITE_POINT_SECURITY_TOKEN 5
|
||||||
|
|
||||||
class Aetheryte : public EventScript
|
class Aetheryte :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Aetheryte() : EventScript( EVENTSCRIPT_AETHERYTE_ID )
|
Aetheryte() :
|
||||||
{}
|
EventScript( EVENTSCRIPT_AETHERYTE_ID )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
@ -28,7 +31,8 @@ public:
|
||||||
{
|
{
|
||||||
player.setHomepoint( result.eventId & 0xFFFF );
|
player.setHomepoint( result.eventId & 0xFFFF );
|
||||||
player.sendQuestMessage( result.eventId, 2, 0xEA, 0, 0 );
|
player.sendQuestMessage( result.eventId, 2, 0xEA, 0, 0 );
|
||||||
} else if( result.param1 == 512 ) // aethernet access
|
}
|
||||||
|
else if( result.param1 == 512 ) // aethernet access
|
||||||
{
|
{
|
||||||
if( result.param2 == 4 )
|
if( result.param2 == 4 )
|
||||||
{
|
{
|
||||||
|
@ -48,7 +52,8 @@ public:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
player.eventActionStart( eventId, ACTION_ATTUNE, []( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
player.eventActionStart( eventId, ACTION_ATTUNE,
|
||||||
|
[]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||||
{
|
{
|
||||||
player.registerAetheryte( eventId & 0xFFFF );
|
player.registerAetheryte( eventId & 0xFFFF );
|
||||||
|
|
||||||
|
@ -62,7 +67,7 @@ public:
|
||||||
player.learnAction( ACTION_TELEPORT );
|
player.learnAction( ACTION_TELEPORT );
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[] ( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
[]( Entity::Player& player, uint32_t eventId, uint64_t additional )
|
||||||
{}, 0 );
|
{}, 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,18 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefCutSceneReplay : public EventScript
|
class CmnDefCutSceneReplay :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefCutSceneReplay() : EventScript( 721028 )
|
CmnDefCutSceneReplay() :
|
||||||
{}
|
EventScript( 721028 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 != 0 )
|
if( result.param2 != 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefHousingSignboard : public EventScript
|
class CmnDefHousingSignboard :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefHousingSignboard() : EventScript( 721031 )
|
CmnDefHousingSignboard() :
|
||||||
{}
|
EventScript( 721031 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefInnBed : public EventScript
|
class CmnDefInnBed :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefInnBed() : EventScript( 720916 )
|
CmnDefInnBed() :
|
||||||
{}
|
EventScript( 720916 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
// menu
|
// menu
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
if( result.param2 > 0 )
|
if( result.param2 > 0 )
|
||||||
Scene00001( player, result.param2 );
|
Scene00001( player, result.param2 );
|
||||||
|
@ -22,7 +25,7 @@ public:
|
||||||
// lay down
|
// lay down
|
||||||
void Scene00001( Entity::Player& player, uint16_t param )
|
void Scene00001( Entity::Player& player, uint16_t param )
|
||||||
{
|
{
|
||||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
Scene00002( player, result.param2 );
|
Scene00002( player, result.param2 );
|
||||||
};
|
};
|
||||||
|
@ -40,7 +43,7 @@ public:
|
||||||
void Scene00100( Entity::Player& player )
|
void Scene00100( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = []( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = []( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{ };
|
{};
|
||||||
|
|
||||||
player.playScene( getId(), 100, 0x800, 0, 0, callback );
|
player.playScene( getId(), 100, 0x800, 0, 0, callback );
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,15 +5,18 @@
|
||||||
#define ACTION_RENAME 3
|
#define ACTION_RENAME 3
|
||||||
#define ACTION_REMOVE 4
|
#define ACTION_REMOVE 4
|
||||||
|
|
||||||
class CmnDefLinkShell : public EventScript
|
class CmnDefLinkShell :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefLinkShell() : EventScript( 0xB0006 )
|
CmnDefLinkShell() :
|
||||||
{}
|
EventScript( 0xB0006 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00001( Entity::Player& player )
|
void Scene00001( Entity::Player& player )
|
||||||
{
|
{
|
||||||
auto callback = [this]( Entity::Player& player, const Event::SceneResult& result )
|
auto callback = [ this ]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
switch( result.param2 )
|
switch( result.param2 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefMarketBoardGridania : public EventScript
|
class CmnDefMarketBoardGridania :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefMarketBoardGridania() : EventScript( 0xB0027 )
|
CmnDefMarketBoardGridania() :
|
||||||
{}
|
EventScript( 0xB0027 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefMogLetter : public EventScript
|
class CmnDefMogLetter :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefMogLetter() : EventScript( 720898 )
|
CmnDefMogLetter() :
|
||||||
{}
|
EventScript( 720898 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override
|
||||||
{
|
{
|
||||||
|
@ -15,7 +18,7 @@ public:
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.playScene( getId(), 0, 0,
|
player.playScene( getId(), 0, 0,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[ & ]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefNpcRepair : public EventScript
|
class CmnDefNpcRepair :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefNpcRepair() : EventScript( 0xB0013 )
|
CmnDefNpcRepair() :
|
||||||
{}
|
EventScript( 0xB0013 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,16 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class CmnDefWeatherForeCast : public EventScript
|
class CmnDefWeatherForeCast :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CmnDefWeatherForeCast() : EventScript( 721100 )
|
CmnDefWeatherForeCast() :
|
||||||
{}
|
EventScript( 721100 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
player.playScene( getId(), 0, HIDE_HOTBAR,
|
player.playScene( getId(), 0, HIDE_HOTBAR,
|
||||||
[&]( Entity::Player& player, const Event::SceneResult& result )
|
[ & ]( Entity::Player& player, const Event::SceneResult& result )
|
||||||
{
|
{
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class ComDefMobHuntBoard : public EventScript
|
class ComDefMobHuntBoard :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ComDefMobHuntBoard() : EventScript( 0xB00CA )
|
ComDefMobHuntBoard() :
|
||||||
{}
|
EventScript( 0xB00CA )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class GilShop : public EventScript
|
class GilShop :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GilShop() : EventScript( 0x00040001 )
|
GilShop() :
|
||||||
{}
|
EventScript( 0x00040001 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
constexpr static auto SCENE_FLAGS = HIDE_HOTBAR | NO_DEFAULT_CAMERA;
|
constexpr static auto SCENE_FLAGS = HIDE_HOTBAR | NO_DEFAULT_CAMERA;
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Actor/Player.h>
|
#include <Actor/Player.h>
|
||||||
|
|
||||||
class HouFurOrchestrion : public EventScript
|
class HouFurOrchestrion :
|
||||||
|
public EventScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
HouFurOrchestrion() : EventScript( 721226 )
|
HouFurOrchestrion() :
|
||||||
{}
|
EventScript( 721226 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void Scene00000( Entity::Player& player )
|
void Scene00000( Entity::Player& player )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,26 +1,36 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class AkhAfahAmphitheatreExtreme : public InstanceContentScript
|
class AkhAfahAmphitheatreExtreme :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AkhAfahAmphitheatreExtreme() : InstanceContentScript( 20025 )
|
AkhAfahAmphitheatreExtreme() :
|
||||||
{ }
|
InstanceContentScript( 20025 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "unknown_0", 2004238, 4772738, 4, { -1.210436f, 0.000000f, -0.715586f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2004238, 4772738, 4, { -1.210436f, 0.000000f, -0.715586f }, 1.000000f,
|
||||||
instance->registerEObj( "sgvf_r1fc_b0472", 2004239, 4797573, 4, { 1.181316f, -0.000000f, 1.563968f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
|
instance->registerEObj( "sgvf_r1fc_b0472", 2004239, 4797573, 4, { 1.181316f, -0.000000f, 1.563968f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> wind_def wind_def_anim wind_pop wind_pop_anim
|
// States -> wind_def wind_def_anim wind_pop wind_pop_anim
|
||||||
instance->registerEObj( "sgvf_r1fc_b0471", 2004240, 4841629, 4, { 11.000000f, 0.000000f, -11.000000f }, 1.000000f, 0.793709f );
|
instance->registerEObj( "sgvf_r1fc_b0471", 2004240, 4841629, 4, { 11.000000f, 0.000000f, -11.000000f }, 1.000000f,
|
||||||
|
0.793709f );
|
||||||
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
||||||
instance->registerEObj( "sgvf_r1fc_b0471_1", 2004349, 4841631, 4, { 12.811310f, -0.000000f, 9.376424f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_r1fc_b0471_1", 2004349, 4841631, 4, { 12.811310f, -0.000000f, 9.376424f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
||||||
instance->registerEObj( "sgvf_r1fc_b0471_2", 2004350, 4841632, 4, { -8.033875f, 0.000000f, 10.406790f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_r1fc_b0471_2", 2004350, 4841632, 4, { -8.033875f, 0.000000f, 10.406790f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
||||||
instance->registerEObj( "sgvf_r1fc_b0471_3", 2004351, 4841633, 4, { -8.319038f, -0.000001f, -10.997720f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_r1fc_b0471_3", 2004351, 4841633, 4, { -8.319038f, -0.000001f, -10.997720f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
// States -> magi_def magi_def_anim magi_pop magi_pop_anim
|
||||||
instance->registerEObj( "Entrance", 2000182, 4738599, 5, { 9.717670f, 0.000000f, 14.522430f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Entrance", 2000182, 4738599, 5, { 9.717670f, 0.000000f, 14.522430f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Exit", 2000139, 0, 4, { 0.000000f, 0.000000f, -15.000000f }, 1.000000f, 0.000000f );
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors101110 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors101110 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors101110() : InstanceContentScript( 60011 )
|
ThePalaceoftheDeadFloors101110() :
|
||||||
{ }
|
InstanceContentScript( 60011 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6527847, 4, { -300.000000f, 0.000026f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6527847, 4, { -300.000000f, 0.000026f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2000608, 6544382, 4, { 301.149902f, -0.045413f, 285.247589f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2000608, 6544382, 4, { 301.149902f, -0.045413f, 285.247589f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors110 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors110 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors110() : InstanceContentScript( 60001 )
|
ThePalaceoftheDeadFloors110() :
|
||||||
{ }
|
InstanceContentScript( 60001 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2002872, 6324883, 4, { -300.000000f, -0.000010f, -220.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2002872, 6324883, 4, { -300.000000f, -0.000010f, -220.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors111120 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors111120 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors111120() : InstanceContentScript( 60012 )
|
ThePalaceoftheDeadFloors111120() :
|
||||||
{ }
|
InstanceContentScript( 60012 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535115, 4, { -300.000000f, 0.000026f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535115, 4, { -300.000000f, 0.000026f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors1120 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors1120 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors1120() : InstanceContentScript( 60002 )
|
ThePalaceoftheDeadFloors1120() :
|
||||||
{ }
|
InstanceContentScript( 60002 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6353850, 4, { -300.000000f, 0.000026f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6353850, 4, { -300.000000f, 0.000026f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors121130 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors121130 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors121130() : InstanceContentScript( 60013 )
|
ThePalaceoftheDeadFloors121130() :
|
||||||
{ }
|
InstanceContentScript( 60013 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535115, 4, { -300.000000f, 0.000026f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535115, 4, { -300.000000f, 0.000026f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors131140 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors131140 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors131140() : InstanceContentScript( 60014 )
|
ThePalaceoftheDeadFloors131140() :
|
||||||
{ }
|
InstanceContentScript( 60014 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535683, 4, { -300.000000f, -0.000205f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535683, 4, { -300.000000f, -0.000205f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors141150 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors141150 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors141150() : InstanceContentScript( 60015 )
|
ThePalaceoftheDeadFloors141150() :
|
||||||
{ }
|
InstanceContentScript( 60015 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535683, 4, { -300.000000f, -0.000205f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6535683, 4, { -300.000000f, -0.000205f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors151160 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors151160 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors151160() : InstanceContentScript( 60016 )
|
ThePalaceoftheDeadFloors151160() :
|
||||||
{ }
|
InstanceContentScript( 60016 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors161170 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors161170 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors161170() : InstanceContentScript( 60017 )
|
ThePalaceoftheDeadFloors161170() :
|
||||||
{ }
|
InstanceContentScript( 60017 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors171180 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors171180 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors171180() : InstanceContentScript( 60018 )
|
ThePalaceoftheDeadFloors171180() :
|
||||||
{ }
|
InstanceContentScript( 60018 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors181190 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors181190 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors181190() : InstanceContentScript( 60019 )
|
ThePalaceoftheDeadFloors181190() :
|
||||||
{ }
|
InstanceContentScript( 60019 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors191200 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors191200 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors191200() : InstanceContentScript( 60020 )
|
ThePalaceoftheDeadFloors191200() :
|
||||||
{ }
|
InstanceContentScript( 60020 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6534547, 4, { -301.179504f, 0.130118f, -301.014709f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors2130 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors2130 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors2130() : InstanceContentScript( 60003 )
|
ThePalaceoftheDeadFloors2130() :
|
||||||
{ }
|
InstanceContentScript( 60003 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2002872, 6387948, 4, { -300.000000f, -0.116918f, -237.513199f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2002872, 6387948, 4, { -300.000000f, -0.116918f, -237.513199f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,35 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors3140 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors3140 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors3140() : InstanceContentScript( 60004 )
|
ThePalaceoftheDeadFloors3140() :
|
||||||
{ }
|
InstanceContentScript( 60004 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6367892, 4, { -300.000000f, 0.000000f, -225.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6367892, 4, { -300.000000f, 0.000000f, -225.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2002872, 6392196, 4, { 300.000000f, 0.000000f, 374.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2002872, 6392196, 4, { 300.000000f, 0.000000f, 374.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "unknown_0", 2007351, 6277715, 4, { 300.036102f, 0.000000f, 373.916687f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2007351, 6277715, 4, { 300.036102f, 0.000000f, 373.916687f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_1", 2007352, 6394671, 4, { 307.159912f, 0.000000f, 370.556702f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_2", 2007353, 6394677, 4, { 305.303894f, 0.000000f, 380.231415f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_1", 2007352, 6394671, 4, { 307.159912f, 0.000000f, 370.556702f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_3", 2007354, 6394673, 4, { 296.024109f, -0.000000f, 381.100189f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_4", 2007355, 6394675, 4, { 291.561890f, 0.000000f, 372.412689f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_2", 2007353, 6394677, 4, { 305.303894f, 0.000000f, 380.231415f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_5", 2007356, 6394674, 4, { 298.511902f, 0.000000f, 366.134003f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_3", 2007354, 6394673, 4, { 296.024109f, -0.000000f, 381.100189f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_4", 2007355, 6394675, 4, { 291.561890f, 0.000000f, 372.412689f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_5", 2007356, 6394674, 4, { 298.511902f, 0.000000f, 366.134003f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,35 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors4150 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors4150 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors4150() : InstanceContentScript( 60005 )
|
ThePalaceoftheDeadFloors4150() :
|
||||||
{ }
|
InstanceContentScript( 60005 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6367892, 4, { -300.000000f, 0.000000f, -225.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6367892, 4, { -300.000000f, 0.000000f, -225.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2002872, 6392196, 4, { 300.000000f, 0.000000f, 374.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2002872, 6392196, 4, { 300.000000f, 0.000000f, 374.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "unknown_0", 2007351, 6277715, 4, { 300.036102f, 0.000000f, 373.916687f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2007351, 6277715, 4, { 300.036102f, 0.000000f, 373.916687f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_1", 2007352, 6394671, 4, { 307.159912f, 0.000000f, 370.556702f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_2", 2007353, 6394677, 4, { 305.303894f, 0.000000f, 380.231415f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_1", 2007352, 6394671, 4, { 307.159912f, 0.000000f, 370.556702f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_3", 2007354, 6394673, 4, { 296.024109f, -0.000000f, 381.100189f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_4", 2007355, 6394675, 4, { 291.561890f, 0.000000f, 372.412689f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_2", 2007353, 6394677, 4, { 305.303894f, 0.000000f, 380.231415f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_5", 2007356, 6394674, 4, { 298.511902f, 0.000000f, 366.134003f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_3", 2007354, 6394673, 4, { 296.024109f, -0.000000f, 381.100189f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_4", 2007355, 6394675, 4, { 291.561890f, 0.000000f, 372.412689f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_5", 2007356, 6394674, 4, { 298.511902f, 0.000000f, 366.134003f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors5160 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors5160 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors5160() : InstanceContentScript( 60006 )
|
ThePalaceoftheDeadFloors5160() :
|
||||||
{ }
|
InstanceContentScript( 60006 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6521120, 4, { -300.000000f, 3.189805f, -241.061096f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6521120, 4, { -300.000000f, 3.189805f, -241.061096f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors6170 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors6170 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors6170() : InstanceContentScript( 60007 )
|
ThePalaceoftheDeadFloors6170() :
|
||||||
{ }
|
InstanceContentScript( 60007 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6521120, 4, { -300.000000f, 3.189805f, -241.061096f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6521120, 4, { -300.000000f, 3.189805f, -241.061096f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors7180 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors7180 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors7180() : InstanceContentScript( 60008 )
|
ThePalaceoftheDeadFloors7180() :
|
||||||
{ }
|
InstanceContentScript( 60008 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6521120, 4, { -300.000000f, 3.189805f, -241.061096f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6521120, 4, { -300.000000f, 3.189805f, -241.061096f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors8190 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors8190 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors8190() : InstanceContentScript( 60009 )
|
ThePalaceoftheDeadFloors8190() :
|
||||||
{ }
|
InstanceContentScript( 60009 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6527847, 4, { -300.000000f, 0.000026f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6527847, 4, { -300.000000f, 0.000026f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2000608, 6544382, 4, { 301.149902f, -0.045413f, 285.247589f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2000608, 6544382, 4, { 301.149902f, -0.045413f, 285.247589f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class ThePalaceoftheDeadFloors91100 : public InstanceContentScript
|
class ThePalaceoftheDeadFloors91100 :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ThePalaceoftheDeadFloors91100() : InstanceContentScript( 60010 )
|
ThePalaceoftheDeadFloors91100() :
|
||||||
{ }
|
InstanceContentScript( 60010 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6527847, 4, { -300.000000f, 0.000026f, -237.000000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959", 2000608, 6527847, 4, { -300.000000f, 0.000026f, -237.000000f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2000608, 6544382, 4, { 301.149902f, -0.045413f, 285.247589f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0959_1", 2000608, 6544382, 4, { 301.149902f, -0.045413f, 285.247589f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
// States -> vf_bextwall_on vf_bextwall_on2off vf_bextwall_off
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class AlaMhigo : public InstanceContentScript
|
class AlaMhigo :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AlaMhigo() : InstanceContentScript( 56 )
|
AlaMhigo() :
|
||||||
{ }
|
InstanceContentScript( 56 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,137 +1,219 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class AmdaporKeep : public InstanceContentScript
|
class AmdaporKeep :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AmdaporKeep() : InstanceContentScript( 14 )
|
AmdaporKeep() :
|
||||||
{ }
|
InstanceContentScript( 14 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2", 2000551, 4277027, 4, { -3.577190f, 48.000000f, -12.625050f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2", 2000551, 4277027, 4, { -3.577190f, 48.000000f, -12.625050f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_1", 2000552, 4277005, 4, { 21.455280f, 48.000011f, -12.604770f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_1", 2000552, 4277005, 4, { 21.455280f, 48.000011f, -12.604770f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_2", 2000553, 4277029, 4, { -3.963791f, 48.000000f, 9.699657f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_2", 2000553, 4277029, 4, { -3.963791f, 48.000000f, 9.699657f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_3", 2000554, 4277028, 4, { 21.081841f, 47.999920f, 9.731779f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_3", 2000554, 4277028, 4, { 21.081841f, 47.999920f, 9.731779f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "Entrance", 2000491, 4246565, 5, { -254.388702f, -8.857766f, -0.323940f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Entrance", 2000491, 4246565, 5, { -254.388702f, -8.857766f, -0.323940f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "unknown_0", 2000492, 0, 4, { -266.179810f, -9.200000f, -0.162207f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2000492, 0, 4, { -266.179810f, -9.200000f, -0.162207f }, 1.000000f,
|
||||||
instance->registerEObj( "Exit", 2000493, 4246574, 4, { -12.466670f, 48.285069f, -0.015320f }, 0.991760f, 0.000048f );
|
0.000000f );
|
||||||
|
instance->registerEObj( "Exit", 2000493, 4246574, 4, { -12.466670f, 48.285069f, -0.015320f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
// States -> vf_htras1_on vf_htras1_of
|
// States -> vf_htras1_on vf_htras1_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0094", 2000494, 4246576, 4, { -81.527344f, 0.000003f, -1.602537f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0094", 2000494, 4246576, 4, { -81.527344f, 0.000003f, -1.602537f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_line_on vf_line_of
|
// States -> vf_line_on vf_line_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118", 2000495, 4246594, 4, { -81.412201f, 0.000003f, 0.186550f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118", 2000495, 4246594, 4, { -81.412201f, 0.000003f, 0.186550f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0094_1", 2000496, 4246595, 4, { 199.816895f, 21.957701f, -104.781303f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgvf_w_lvd_b0094_1", 2000496, 4246595, 4, { 199.816895f, 21.957701f, -104.781303f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> vf_line_on vf_line_of
|
// States -> vf_line_on vf_line_of
|
||||||
instance->registerEObj( "sgpl_w_lvd_b0118_f1d2", 2000497, 4246596, 4, { 200.915497f, 21.957701f, -104.598198f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgpl_w_lvd_b0118_f1d2", 2000497, 4246596, 4, { 200.915497f, 21.957701f, -104.598198f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0249", 2000498, 4246617, 4, { 34.775269f, 48.081181f, 0.381470f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgvf_w_lvd_b0249", 2000498, 4246617, 4, { 34.775269f, 48.081181f, 0.381470f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
// States -> vf_line_on vf_line_of
|
// States -> vf_line_on vf_line_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0250", 2000499, 4246618, 4, { 34.775269f, 48.081181f, -0.839294f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgvf_w_lvd_b0250", 2000499, 4246618, 4, { 34.775269f, 48.081181f, -0.839294f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -246.833496f, -8.499996f, 4.016408f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -246.833496f, -8.499996f, 4.016408f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "Aetherialflow", 2000500, 4247835, 4, { -10.236110f, -0.000000f, -0.015320f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Aetherialflow", 2000500, 4247835, 4, { -10.236110f, -0.000000f, -0.015320f }, 0.991760f,
|
||||||
instance->registerEObj( "PresenceChamberdoor", 2000502, 4308888, 4, { 60.483269f, 48.174511f, -0.015320f }, 0.991760f, 0.000048f );
|
0.000048f );
|
||||||
instance->registerEObj( "BloodyTranseptdoor", 2000687, 4308274, 4, { 199.985397f, 22.200001f, -103.389503f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "PresenceChamberdoor", 2000502, 4308888, 4, { 60.483269f, 48.174511f, -0.015320f },
|
||||||
instance->registerEObj( "sgvf_f1d1_b0008", 2002741, 4388278, 4, { -82.462273f, 0.000002f, 0.045686f }, 1.000000f, 0.000000f );
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "BloodyTranseptdoor", 2000687, 4308274, 4, { 199.985397f, 22.200001f, -103.389503f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
|
instance->registerEObj( "sgvf_f1d1_b0008", 2002741, 4388278, 4, { -82.462273f, 0.000002f, 0.045686f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_baria1_off vf_baria_on
|
// States -> vf_baria1_off vf_baria_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1", 2000509, 4271520, 4, { 134.111496f, 22.079769f, -5.935791f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1", 2000509, 4271520, 4, { 134.111496f, 22.079769f, -5.935791f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_1", 2000510, 4271522, 4, { 142.229202f, 22.079769f, -6.088379f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_2", 2000511, 4271529, 4, { 158.129196f, 22.079769f, -6.088379f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_1", 2000510, 4271522, 4, { 142.229202f, 22.079769f, -6.088379f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_3", 2000512, 4271531, 4, { 133.958893f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_4", 2000513, 4271532, 4, { 142.015594f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_2", 2000511, 4271529, 4, { 158.129196f, 22.079769f, -6.088379f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_5", 2000514, 4271533, 4, { 158.190201f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_6", 2000521, 4274657, 4, { 193.987900f, 22.110291f, 42.099609f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_3", 2000512, 4271531, 4, { 133.958893f, 22.079769f, 6.271362f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_7", 2000522, 4274656, 4, { 193.804794f, 22.079769f, 57.938480f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_8", 2000523, 4274655, 4, { 193.804794f, 22.079769f, 65.964722f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_4", 2000513, 4271532, 4, { 142.015594f, 22.079769f, 6.271362f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_9", 2000524, 4274661, 4, { 206.317093f, 22.079769f, 42.038570f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_10", 2000525, 4274660, 4, { 206.286697f, 22.079769f, 57.968990f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_5", 2000514, 4271533, 4, { 158.190201f, 22.079769f, 6.271362f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_11", 2000526, 4274659, 4, { 206.286697f, 22.079769f, 65.995239f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_12", 2000533, 4274648, 4, { 241.992798f, 22.079769f, -6.332520f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_6", 2000521, 4274657, 4, { 193.987900f, 22.110291f, 42.099609f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_13", 2000534, 4274649, 4, { 258.075806f, 22.079769f, -6.332520f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_14", 2000535, 4274650, 4, { 265.949493f, 22.079769f, -6.271484f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_7", 2000522, 4274656, 4, { 193.804794f, 22.079769f, 57.938480f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_15", 2000536, 4274651, 4, { 241.931793f, 22.079769f, 6.240906f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_16", 2000537, 4274652, 4, { 258.075806f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_8", 2000523, 4274655, 4, { 193.804794f, 22.079769f, 65.964722f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_17", 2000538, 4274653, 4, { 266.071503f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_18", 2000545, 4274662, 4, { 193.804794f, 22.079769f, -34.042912f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_9", 2000524, 4274661, 4, { 206.317093f, 22.079769f, 42.038570f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_19", 2000546, 4274667, 4, { 193.804794f, 22.079769f, -42.008121f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_20", 2000547, 4274666, 4, { 193.804794f, 22.079769f, -58.335270f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_10", 2000525, 4274660, 4, { 206.286697f, 22.079769f, 57.968990f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_21", 2000548, 4274663, 4, { 206.317093f, 22.079769f, -33.890320f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_22", 2000549, 4274665, 4, { 206.317093f, 22.079769f, -41.916561f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_11", 2000526, 4274659, 4, { 206.286697f, 22.079769f, 65.995239f },
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar1_23", 2000550, 4274664, 4, { 206.317093f, 22.079769f, -58.274231f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_4", 2000503, 4274671, 4, { 134.111496f, 22.079769f, -5.935791f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_12", 2000533, 4274648, 4, { 241.992798f, 22.079769f, -6.332520f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_13", 2000534, 4274649, 4, { 258.075806f, 22.079769f, -6.332520f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_14", 2000535, 4274650, 4, { 265.949493f, 22.079769f, -6.271484f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_15", 2000536, 4274651, 4, { 241.931793f, 22.079769f, 6.240906f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_16", 2000537, 4274652, 4, { 258.075806f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_17", 2000538, 4274653, 4, { 266.071503f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_18", 2000545, 4274662, 4, { 193.804794f, 22.079769f, -34.042912f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_19", 2000546, 4274667, 4, { 193.804794f, 22.079769f, -42.008121f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_20", 2000547, 4274666, 4, { 193.804794f, 22.079769f, -58.335270f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_21", 2000548, 4274663, 4, { 206.317093f, 22.079769f, -33.890320f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_22", 2000549, 4274665, 4, { 206.317093f, 22.079769f, -41.916561f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar1_23", 2000550, 4274664, 4, { 206.317093f, 22.079769f, -58.274231f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_4", 2000503, 4274671, 4, { 134.111496f, 22.079769f, -5.935791f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_5", 2000504, 4274672, 4, { 142.229202f, 22.079769f, -6.088379f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_5", 2000504, 4274672, 4, { 142.229202f, 22.079769f, -6.088379f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_6", 2000505, 4274673, 4, { 158.129196f, 22.079769f, -6.088379f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_6", 2000505, 4274673, 4, { 158.129196f, 22.079769f, -6.088379f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_7", 2000506, 4274674, 4, { 133.958893f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_7", 2000506, 4274674, 4, { 133.958893f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_8", 2000507, 4274675, 4, { 142.015594f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_8", 2000507, 4274675, 4, { 142.015594f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_9", 2000508, 4274676, 4, { 158.190201f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_9", 2000508, 4274676, 4, { 158.190201f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_10", 2000515, 4274685, 4, { 193.987900f, 22.110291f, 42.099609f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_10", 2000515, 4274685, 4, { 193.987900f, 22.110291f, 42.099609f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_11", 2000516, 4274684, 4, { 193.804794f, 22.079769f, 57.938480f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_11", 2000516, 4274684, 4, { 193.804794f, 22.079769f, 57.938480f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_12", 2000517, 4274683, 4, { 193.804794f, 22.079769f, 65.964722f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_12", 2000517, 4274683, 4, { 193.804794f, 22.079769f, 65.964722f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_13", 2000518, 4274688, 4, { 206.317093f, 22.079769f, 42.038570f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_13", 2000518, 4274688, 4, { 206.317093f, 22.079769f, 42.038570f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_14", 2000519, 4274687, 4, { 206.317093f, 22.079769f, 57.968990f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_14", 2000519, 4274687, 4, { 206.317093f, 22.079769f, 57.968990f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_15", 2000520, 4274686, 4, { 206.317093f, 22.079769f, 65.995239f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_15", 2000520, 4274686, 4, { 206.317093f, 22.079769f, 65.995239f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_16", 2000527, 4274677, 4, { 241.992798f, 22.079769f, -6.332520f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_16", 2000527, 4274677, 4, { 241.992798f, 22.079769f, -6.332520f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_17", 2000528, 4274678, 4, { 258.075806f, 22.079769f, -6.332520f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_17", 2000528, 4274678, 4, { 258.075806f, 22.079769f, -6.332520f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_18", 2000529, 4274679, 4, { 265.949493f, 22.079769f, -6.271484f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_18", 2000529, 4274679, 4, { 265.949493f, 22.079769f, -6.271484f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_19", 2000530, 4274680, 4, { 241.931793f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_19", 2000530, 4274680, 4, { 241.931793f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_20", 2000531, 4274681, 4, { 258.075806f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_20", 2000531, 4274681, 4, { 258.075806f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_21", 2000532, 4274682, 4, { 266.071503f, 22.079769f, 6.271362f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_21", 2000532, 4274682, 4, { 266.071503f, 22.079769f, 6.271362f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_22", 2000539, 4274689, 4, { 193.804794f, 22.079769f, -34.042912f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_22", 2000539, 4274689, 4, { 193.804794f, 22.079769f, -34.042912f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_23", 2000540, 4274694, 4, { 193.804794f, 22.079769f, -42.008121f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_23", 2000540, 4274694, 4, { 193.804794f, 22.079769f, -42.008121f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_24", 2000541, 4274693, 4, { 193.804794f, 22.079769f, -58.335270f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_24", 2000541, 4274693, 4, { 193.804794f, 22.079769f, -58.335270f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_25", 2000542, 4274690, 4, { 206.317093f, 22.079769f, -33.890320f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_25", 2000542, 4274690, 4, { 206.317093f, 22.079769f, -33.890320f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_26", 2000543, 4274692, 4, { 206.317093f, 22.079769f, -41.916561f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_26", 2000543, 4274692, 4, { 206.317093f, 22.079769f, -41.916561f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "sgbg_f1d3_a1_gar2_27", 2000544, 4274691, 4, { 206.317093f, 22.079769f, -58.274231f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_f1d3_a1_gar2_27", 2000544, 4274691, 4, { 206.317093f, 22.079769f, -58.274231f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> on off vfx_on
|
// States -> on off vfx_on
|
||||||
instance->registerEObj( "Entrance_1", 2000182, 5608623, 5, { -156.520401f, -2.800003f, -5.140180f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Entrance_1", 2000182, 5608623, 5, { -156.520401f, -2.800003f, -5.140180f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2002872, 5608617, 4, { -154.662003f, -2.800003f, 5.028913f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2002872, 5608617, 4, { -154.662003f, -2.800003f, 5.028913f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_1", 2002735, 0, 4, { -151.232193f, -2.822998f, 0.289556f }, 1.174927f, -1.570451f );
|
instance->registerEObj( "unknown_1", 2002735, 0, 4, { -151.232193f, -2.822998f, 0.289556f }, 1.174927f,
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2005128, 5608619, 4, { -112.240501f, -2.800003f, -0.701091f }, 1.000000f, 0.000000f );
|
-1.570451f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2005128, 5608619, 4, { -112.240501f, -2.800003f, -0.701091f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_2", 2002735, 0, 4, { -46.585720f, 0.045776f, 0.190301f }, 1.179312f, -1.570451f );
|
instance->registerEObj( "unknown_2", 2002735, 0, 4, { -46.585720f, 0.045776f, 0.190301f }, 1.179312f, -1.570451f );
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2002872, 5608620, 4, { -46.476231f, 0.000000f, -0.510445f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2002872, 5608620, 4, { -46.476231f, 0.000000f, -0.510445f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "Exit_1", 2000139, 0, 4, { -7.766907f, -0.015320f, 0.015198f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Exit_1", 2000139, 0, 4, { -7.766907f, -0.015320f, 0.015198f }, 0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgvf_f1d3_bo189", 2000561, 4248559, 4, { 200.121902f, 21.988159f, -114.000000f }, 1.000000f, 0.000048f );
|
instance->registerEObj( "sgvf_f1d3_bo189", 2000561, 4248559, 4, { 200.121902f, 21.988159f, -114.000000f },
|
||||||
instance->registerEObj( "sgbg_col_wall_00", 2000555, 4249099, 4, { 200.000000f, 21.988159f, -151.822800f }, 0.991760f, 0.000048f );
|
1.000000f, 0.000048f );
|
||||||
instance->registerEObj( "Aetherialflow_1", 2000501, 4247838, 4, { 200.061005f, 22.000000f, -165.266006f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_col_wall_00", 2000555, 4249099, 4, { 200.000000f, 21.988159f, -151.822800f },
|
||||||
instance->registerEObj( "sgbg_col_wall_00_1", 2000556, 4249100, 4, { 200.000000f, 21.988159f, -146.822800f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_col_wall_00_2", 2000557, 4249101, 4, { 200.000000f, 21.988159f, -141.822800f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Aetherialflow_1", 2000501, 4247838, 4, { 200.061005f, 22.000000f, -165.266006f },
|
||||||
instance->registerEObj( "sgbg_col_wall_00_3", 2000560, 4249104, 4, { 200.000000f, 21.988159f, -126.822800f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_col_wall_00_4", 2000602, 4253048, 4, { 200.000000f, 21.988159f, -121.822800f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_col_wall_00_1", 2000556, 4249100, 4, { 200.000000f, 21.988159f, -146.822800f },
|
||||||
instance->registerEObj( "sgbg_col_wall_00_5", 2000559, 4249103, 4, { 200.000000f, 21.988159f, -131.822800f }, 0.991760f, 0.000048f );
|
0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "sgbg_col_wall_00_6", 2000558, 4249102, 4, { 200.000000f, 21.957701f, -136.838501f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgbg_col_wall_00_2", 2000557, 4249101, 4, { 200.000000f, 21.988159f, -141.822800f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_col_wall_00_3", 2000560, 4249104, 4, { 200.000000f, 21.988159f, -126.822800f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_col_wall_00_4", 2000602, 4253048, 4, { 200.000000f, 21.988159f, -121.822800f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_col_wall_00_5", 2000559, 4249103, 4, { 200.000000f, 21.988159f, -131.822800f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgbg_col_wall_00_6", 2000558, 4249102, 4, { 200.000000f, 21.957701f, -136.838501f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,51 +1,80 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class AmdaporKeepHard : public InstanceContentScript
|
class AmdaporKeepHard :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AmdaporKeepHard() : InstanceContentScript( 29 )
|
AmdaporKeepHard() :
|
||||||
{ }
|
InstanceContentScript( 29 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118", 2002872, 5040923, 4, { 203.452301f, 0.116688f, 208.657593f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118", 2002872, 5040923, 4, { 203.452301f, 0.116688f, 208.657593f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_0", 2002735, 0, 4, { 199.471802f, 0.116693f, 210.128204f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2002735, 0, 4, { 199.471802f, 0.116693f, 210.128204f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "sgbg_f1d7_a4_scy01", 2005153, 5619221, 4, { 198.706802f, -20.000010f, 229.113907f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgbg_f1d7_a4_scy01", 2005153, 5619221, 4, { 198.706802f, -20.000010f, 229.113907f },
|
||||||
instance->registerEObj( "unknown_1", 2004696, 5009720, 4, { -200.316895f, -4.301562f, -43.621670f }, 1.000000f, 0.000000f );
|
1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "unknown_2", 2004697, 5009721, 4, { -47.771290f, -0.000000f, -71.658272f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_1", 2004696, 5009720, 4, { -200.316895f, -4.301562f, -43.621670f }, 1.000000f,
|
||||||
instance->registerEObj( "sgbg_f1d7_a1_evl01", 2004698, 5031991, 4, { -125.087196f, -2.000000f, 28.417601f }, 1.000000f, -0.000000f );
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_2", 2004697, 5009721, 4, { -47.771290f, -0.000000f, -71.658272f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "sgbg_f1d7_a1_evl01", 2004698, 5031991, 4, { -125.087196f, -2.000000f, 28.417601f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> evils_def evils_off_anim evils_on evils_on_anim
|
// States -> evils_def evils_off_anim evils_on evils_on_anim
|
||||||
instance->registerEObj( "sgvf_f1d7_b0574", 2004699, 5031992, 4, { -104.790604f, -2.000000f, 47.174728f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_f1d7_b0574", 2004699, 5031992, 4, { -104.790604f, -2.000000f, 47.174728f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_baria1_off vf_baria_on
|
// States -> vf_baria1_off vf_baria_on
|
||||||
instance->registerEObj( "unknown_3", 2004700, 0, 4, { 2.343430f, 48.179089f, -2.083742f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_3", 2004700, 0, 4, { 2.343430f, 48.179089f, -2.083742f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "unknown_4", 2004702, 5009732, 4, { 125.604897f, 43.999989f, 3.999085f }, 1.000000f, 0.005971f );
|
instance->registerEObj( "unknown_4", 2004702, 5009732, 4, { 125.604897f, 43.999989f, 3.999085f }, 1.000000f,
|
||||||
|
0.005971f );
|
||||||
instance->registerEObj( "unknown_5", 2004701, 0, 4, { 149.666000f, 44.200001f, -0.006115f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_5", 2004701, 0, 4, { 149.666000f, 44.200001f, -0.006115f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "unknown_6", 2004703, 5010816, 4, { 196.927399f, 44.000019f, -101.381798f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_6", 2004703, 5010816, 4, { 196.927399f, 44.000019f, -101.381798f }, 1.000000f,
|
||||||
instance->registerEObj( "sgbg_f1d7_a1_evl01_1", 2004704, 5032163, 4, { 199.696106f, 44.000000f, -181.197006f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
|
instance->registerEObj( "sgbg_f1d7_a1_evl01_1", 2004704, 5032163, 4, { 199.696106f, 44.000000f, -181.197006f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> evils_def evils_off_anim evils_on evils_on_anim
|
// States -> evils_def evils_off_anim evils_on evils_on_anim
|
||||||
instance->registerEObj( "Aetherialflow", 2004705, 5032164, 4, { 199.682800f, 44.163898f, -180.392395f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "Aetherialflow", 2004705, 5032164, 4, { 199.682800f, 44.163898f, -180.392395f }, 1.000000f,
|
||||||
instance->registerEObj( "Fellorb", 2004706, 5009746, 4, { 200.094101f, -0.000008f, 0.050249f }, 1.000000f, 0.000000f );
|
-0.000000f );
|
||||||
instance->registerEObj( "Aetherialflow_1", 2004707, 5033533, 4, { 199.899506f, 0.000000f, -3.297300f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "Fellorb", 2004706, 5009746, 4, { 200.094101f, -0.000008f, 0.050249f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_7", 2004768, 5033548, 4, { 210.649307f, 0.116687f, -6.120441f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_8", 2004769, 5033549, 4, { 189.489807f, 0.116688f, -6.804901f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Aetherialflow_1", 2004707, 5033533, 4, { 199.899506f, 0.000000f, -3.297300f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_9", 2004770, 5033551, 4, { 204.506500f, 0.116687f, 9.902725f }, 1.000000f, 0.000000f );
|
-0.000000f );
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2004708, 5034801, 4, { -119.510101f, -2.400002f, 18.885540f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_7", 2004768, 5033548, 4, { 210.649307f, 0.116687f, -6.120441f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_8", 2004769, 5033549, 4, { 189.489807f, 0.116688f, -6.804901f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_9", 2004770, 5033551, 4, { 204.506500f, 0.116687f, 9.902725f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2004708, 5034801, 4, { -119.510101f, -2.400002f, 18.885540f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2002872, 5034800, 4, { -130.314606f, -2.400000f, -18.221069f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2002872, 5034800, 4, { -130.314606f, -2.400000f, -18.221069f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_10", 2002735, 0, 4, { -125.041801f, -1.964380f, -20.543480f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_10", 2002735, 0, 4, { -125.041801f, -1.964380f, -20.543480f }, 1.000000f,
|
||||||
instance->registerEObj( "sgpl_f1d7_a1_gar0", 2004996, 5390927, 4, { -112.845497f, -2.400000f, 12.122500f }, 1.000000f, 0.785314f );
|
0.000000f );
|
||||||
instance->registerEObj( "sgpl_f1d7_a1_gar0_1", 2004997, 5390928, 4, { -112.845497f, -2.400000f, -12.378100f }, 1.000000f, 0.785457f );
|
instance->registerEObj( "sgpl_f1d7_a1_gar0", 2004996, 5390927, 4, { -112.845497f, -2.400000f, 12.122500f },
|
||||||
instance->registerEObj( "sgpl_f1d7_a1_gar0_2", 2004998, 5390929, 4, { -137.250000f, -2.400000f, 12.122500f }, 1.000000f, -0.785410f );
|
1.000000f, 0.785314f );
|
||||||
instance->registerEObj( "sgpl_f1d7_a1_gar0_3", 2004999, 5390930, 4, { -137.396194f, -2.400000f, -12.366500f }, 1.000000f, -0.785398f );
|
instance->registerEObj( "sgpl_f1d7_a1_gar0_1", 2004997, 5390928, 4, { -112.845497f, -2.400000f, -12.378100f },
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2004782, 5038257, 4, { 198.459198f, 43.991699f, -172.369705f }, 1.000000f, 0.000048f );
|
1.000000f, 0.785457f );
|
||||||
|
instance->registerEObj( "sgpl_f1d7_a1_gar0_2", 2004998, 5390929, 4, { -137.250000f, -2.400000f, 12.122500f },
|
||||||
|
1.000000f, -0.785410f );
|
||||||
|
instance->registerEObj( "sgpl_f1d7_a1_gar0_3", 2004999, 5390930, 4, { -137.396194f, -2.400000f, -12.366500f },
|
||||||
|
1.000000f, -0.785398f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2004782, 5038257, 4, { 198.459198f, 43.991699f, -172.369705f },
|
||||||
|
1.000000f, 0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_4", 2002872, 5038255, 4, { 197.802597f, 43.991699f, -125.932701f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_4", 2002872, 5038255, 4, { 197.802597f, 43.991699f, -125.932701f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_11", 2002735, 0, 4, { 199.511703f, 44.022221f, -130.601303f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "unknown_11", 2002735, 0, 4, { 199.511703f, 44.022221f, -130.601303f }, 1.000000f,
|
||||||
instance->registerEObj( "Entrance", 2000182, 5018466, 5, { -255.724792f, -9.199999f, -5.249732f }, 1.000000f, 0.000000f );
|
-0.000000f );
|
||||||
|
instance->registerEObj( "Entrance", 2000182, 5018466, 5, { -255.724792f, -9.199999f, -5.249732f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -252.173401f, -9.199999f, 5.737248f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -252.173401f, -9.199999f, 5.737248f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "Exit", 2000139, 0, 4, { 200.798599f, -0.000008f, 240.880905f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Exit", 2000139, 0, 4, { 200.798599f, -0.000008f, 240.880905f }, 1.000000f, 0.000000f );
|
||||||
|
|
|
@ -1,46 +1,73 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class BaelsarsWall : public InstanceContentScript
|
class BaelsarsWall :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BaelsarsWall() : InstanceContentScript( 48 )
|
BaelsarsWall() :
|
||||||
{ }
|
InstanceContentScript( 48 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "unknown_0", 2002735, 0, 4, { -173.966797f, 3.049999f, 52.443710f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2002735, 0, 4, { -173.966797f, 3.049999f, 52.443710f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118", 2002872, 6588628, 4, { -173.612198f, 3.049997f, 52.688000f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118", 2002872, 6588628, 4, { -173.612198f, 3.049997f, 52.688000f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2002872, 6588629, 4, { -154.029907f, 3.049906f, 72.262756f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2002872, 6588629, 4, { -154.029907f, 3.049906f, 72.262756f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_1", 2002735, 0, 4, { 95.577843f, -300.028412f, 0.707827f }, 1.000000f, -1.570451f );
|
instance->registerEObj( "unknown_1", 2002735, 0, 4, { 95.577843f, -300.028412f, 0.707827f }, 1.000000f,
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2002872, 6588652, 4, { 95.163948f, -300.028198f, 0.952097f }, 1.000000f, -1.570451f );
|
-1.570451f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2002872, 6588652, 4, { 95.163948f, -300.028198f, 0.952097f },
|
||||||
|
1.000000f, -1.570451f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2002872, 6588653, 4, { 135.748398f, -300.000092f, 0.172490f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2002872, 6588653, 4, { 135.748398f, -300.000092f, 0.172490f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_4", 2002872, 6588667, 4, { 371.527588f, 212.000000f, 391.566010f }, 1.000000f, -0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_4", 2002872, 6588667, 4, { 371.527588f, 212.000000f, 391.566010f },
|
||||||
|
1.000000f, -0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_2", 2002735, 0, 4, { 371.795685f, 212.000000f, 391.643097f }, 1.000000f, -1.570451f );
|
instance->registerEObj( "unknown_2", 2002735, 0, 4, { 371.795685f, 212.000000f, 391.643097f }, 1.000000f,
|
||||||
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -230.764297f, -0.932137f, -173.143600f }, 1.000000f, 0.000000f );
|
-1.570451f );
|
||||||
|
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -230.764297f, -0.932137f, -173.143600f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
instance->registerEObj( "Exit", 2000139, 0, 4, { 352.071411f, 212.000000f, 391.988892f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Exit", 2000139, 0, 4, { 352.071411f, 212.000000f, 391.988892f }, 0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "Entrance", 2000182, 6562675, 5, { -228.044006f, -0.901261f, -183.153198f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Entrance", 2000182, 6562675, 5, { -228.044006f, -0.901261f, -183.153198f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "Imperialidentificationkey", 2007567, 0, 4, { -202.837997f, -0.966086f, -62.488140f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Imperialidentificationkey", 2007567, 0, 4, { -202.837997f, -0.966086f, -62.488140f },
|
||||||
instance->registerEObj( "Securityterminal", 2007571, 6640773, 4, { -206.023102f, 2.815013f, -48.897739f }, 1.000000f, 0.000000f );
|
1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "unknown_3", 2007575, 6501039, 4, { -203.861694f, 1.804717f, -49.827511f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Securityterminal", 2007571, 6640773, 4, { -206.023102f, 2.815013f, -48.897739f },
|
||||||
instance->registerEObj( "Imperialidentificationkey_1", 2007568, 0, 4, { -176.569397f, 2.150000f, 17.400681f }, 1.000000f, 0.000000f );
|
1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "Securityterminal_1", 2007572, 6516973, 4, { -187.083206f, 2.707914f, 19.031469f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_3", 2007575, 6501039, 4, { -203.861694f, 1.804717f, -49.827511f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_4", 2007576, 6502290, 4, { -174.854904f, 2.100000f, 23.458460f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_5", 2007776, 6500492, 4, { -126.770897f, 2.000089f, 72.952606f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Imperialidentificationkey_1", 2007568, 0, 4, { -176.569397f, 2.150000f, 17.400681f },
|
||||||
instance->registerEObj( "Controlpanel", 2007580, 0, 4, { -0.003809f, -299.760315f, 0.024599f }, 2.000000f, 0.000048f );
|
1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "Controlpanel_1", 2007581, 0, 4, { 177.511993f, -298.963196f, 4.224624f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Securityterminal_1", 2007572, 6516973, 4, { -187.083206f, 2.707914f, 19.031469f },
|
||||||
instance->registerEObj( "Controlpanel_2", 2007582, 6523203, 4, { 177.434006f, -298.072601f, 6.243333f }, 1.000000f, 0.000000f );
|
1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "unknown_6", 2007601, 6516974, 4, { 176.321396f, -299.105713f, 0.250570f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_4", 2007576, 6502290, 4, { -174.854904f, 2.100000f, 23.458460f }, 1.000000f,
|
||||||
instance->registerEObj( "Imperialidentificationkey_2", 2007569, 0, 4, { 317.032288f, 169.000107f, 230.153503f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "Securityterminal_2", 2007573, 6488516, 4, { 320.921600f, 169.867996f, 243.976807f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_5", 2007776, 6500492, 4, { -126.770897f, 2.000089f, 72.952606f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_7", 2007577, 6488509, 4, { 328.225189f, 169.000107f, 244.581894f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_8", 2007578, 6777152, 4, { 382.790100f, 203.000000f, 357.169403f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Controlpanel", 2007580, 0, 4, { -0.003809f, -299.760315f, 0.024599f }, 2.000000f,
|
||||||
|
0.000048f );
|
||||||
|
instance->registerEObj( "Controlpanel_1", 2007581, 0, 4, { 177.511993f, -298.963196f, 4.224624f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
|
instance->registerEObj( "Controlpanel_2", 2007582, 6523203, 4, { 177.434006f, -298.072601f, 6.243333f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_6", 2007601, 6516974, 4, { 176.321396f, -299.105713f, 0.250570f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "Imperialidentificationkey_2", 2007569, 0, 4, { 317.032288f, 169.000107f, 230.153503f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
|
instance->registerEObj( "Securityterminal_2", 2007573, 6488516, 4, { 320.921600f, 169.867996f, 243.976807f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
|
instance->registerEObj( "unknown_7", 2007577, 6488509, 4, { 328.225189f, 169.000107f, 244.581894f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_8", 2007578, 6777152, 4, { 382.790100f, 203.000000f, 357.169403f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class BardamsMettle : public InstanceContentScript
|
class BardamsMettle :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BardamsMettle() : InstanceContentScript( 53 )
|
BardamsMettle() :
|
||||||
{ }
|
InstanceContentScript( 53 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,34 +1,50 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class BrayfloxsLongstop : public InstanceContentScript
|
class BrayfloxsLongstop :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BrayfloxsLongstop() : InstanceContentScript( 8 )
|
BrayfloxsLongstop() :
|
||||||
{ }
|
InstanceContentScript( 8 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "unknown_0", 2001694, 0, 4, { -36.384769f, 34.915119f, -234.568405f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_0", 2001694, 0, 4, { -36.384769f, 34.915119f, -234.568405f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_1", 2001461, 0, 4, { 142.567200f, -1.266762f, 67.804497f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "unknown_1", 2001461, 0, 4, { 142.567200f, -1.266762f, 67.804497f }, 0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "RunstopHeadgate", 2001462, 3996541, 4, { 105.920601f, 1.745684f, 11.445460f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "RunstopHeadgate", 2001462, 3996541, 4, { 105.920601f, 1.745684f, 11.445460f }, 1.000000f,
|
||||||
instance->registerEObj( "RunstopGutgate", 2001463, 3970152, 4, { 113.391296f, -0.849704f, -33.166710f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "RunstopBackgate", 2001464, 3970154, 4, { -19.424801f, 7.919373f, -71.122383f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "RunstopGutgate", 2001463, 3970152, 4, { 113.391296f, -0.849704f, -33.166710f }, 1.000000f,
|
||||||
instance->registerEObj( "LongstopHeadgate", 2001465, 3970153, 4, { -113.634499f, 1.332127f, -58.144779f }, 1.000000f, 0.000000f );
|
0.000000f );
|
||||||
instance->registerEObj( "LongstopGutgate", 2001466, 3976772, 4, { -89.831360f, 14.042510f, -96.676224f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "RunstopBackgate", 2001464, 3970154, 4, { -19.424801f, 7.919373f, -71.122383f }, 0.991760f,
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118", 2001584, 4086949, 4, { 106.822800f, -1.629326f, 2.541263f }, 1.000000f, 0.000000f );
|
0.000048f );
|
||||||
|
instance->registerEObj( "LongstopHeadgate", 2001465, 3970153, 4, { -113.634499f, 1.332127f, -58.144779f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
|
instance->registerEObj( "LongstopGutgate", 2001466, 3976772, 4, { -89.831360f, 14.042510f, -96.676224f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118", 2001584, 4086949, 4, { 106.822800f, -1.629326f, 2.541263f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_2", 2001585, 0, 4, { 110.429604f, -1.663330f, 3.311157f }, 0.991760f, 0.214809f );
|
instance->registerEObj( "unknown_2", 2001585, 0, 4, { 110.429604f, -1.663330f, 3.311157f }, 0.991760f, 0.214809f );
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2001586, 4088979, 4, { 8.021301f, 5.921407f, -69.090309f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2001586, 4088979, 4, { 8.021301f, 5.921407f, -69.090309f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_3", 2001587, 0, 4, { 6.458210f, 5.902269f, -67.560417f }, 1.000000f, -0.788830f );
|
instance->registerEObj( "unknown_3", 2001587, 0, 4, { 6.458210f, 5.902269f, -67.560417f }, 1.000000f, -0.788830f );
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2001588, 4088985, 4, { -106.298798f, -2.123102f, -10.585170f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "sgvf_w_lvd_b0118_2", 2001588, 4088985, 4, { -106.298798f, -2.123102f, -10.585170f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_4", 2001589, 0, 4, { -105.172897f, -2.123102f, -10.865350f }, 1.000000f, -0.043989f );
|
instance->registerEObj( "unknown_4", 2001589, 0, 4, { -105.172897f, -2.123102f, -10.865350f }, 1.000000f,
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2001590, 4088991, 4, { -68.039551f, 33.716820f, -232.938904f }, 1.000000f, 0.000000f );
|
-0.043989f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118_3", 2001590, 4088991, 4, { -68.039551f, 33.716820f, -232.938904f },
|
||||||
|
1.000000f, 0.000000f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_5", 2001591, 0, 4, { -68.693542f, 33.682091f, -234.070496f }, 1.000000f, -1.318638f );
|
instance->registerEObj( "unknown_5", 2001591, 0, 4, { -68.693542f, 33.682091f, -234.070496f }, 1.000000f,
|
||||||
instance->registerEObj( "Entrance", 2000182, 4097104, 5, { 122.445702f, -1.119082f, 68.403687f }, 1.000000f, 0.000000f );
|
-1.318638f );
|
||||||
|
instance->registerEObj( "Entrance", 2000182, 4097104, 5, { 122.445702f, -1.119082f, 68.403687f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "Shortcut", 2000700, 0, 4, { 113.256897f, -1.172536f, 59.115589f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Shortcut", 2000700, 0, 4, { 113.256897f, -1.172536f, 59.115589f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "Exit", 2000139, 0, 4, { -8.639429f, 35.641689f, -234.813797f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Exit", 2000139, 0, 4, { -8.639429f, 35.641689f, -234.813797f }, 0.991760f, 0.000048f );
|
||||||
|
|
|
@ -1,43 +1,64 @@
|
||||||
#include <ScriptObject.h>
|
#include <ScriptObject.h>
|
||||||
#include <Zone/InstanceContent.h>
|
#include <Zone/InstanceContent.h>
|
||||||
|
|
||||||
class BrayfloxsLongstopHard : public InstanceContentScript
|
class BrayfloxsLongstopHard :
|
||||||
|
public InstanceContentScript
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BrayfloxsLongstopHard() : InstanceContentScript( 20 )
|
BrayfloxsLongstopHard() :
|
||||||
{ }
|
InstanceContentScript( 20 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void onInit( InstanceContentPtr instance ) override
|
void onInit( InstanceContentPtr instance ) override
|
||||||
{
|
{
|
||||||
instance->registerEObj( "unknown_0", 2003103, 0, 4, { -16.800230f, 25.375731f, -171.007904f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "unknown_0", 2003103, 0, 4, { -16.800230f, 25.375731f, -171.007904f }, 0.991760f,
|
||||||
instance->registerEObj( "RunstopHeadgate", 2002182, 4542379, 4, { 105.912804f, 1.724182f, 11.428960f }, 0.991760f, 0.000048f );
|
0.000048f );
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118", 2002183, 4621964, 4, { 111.650299f, 0.228821f, -49.790279f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "RunstopHeadgate", 2002182, 4542379, 4, { 105.912804f, 1.724182f, 11.428960f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118", 2002183, 4621964, 4, { 111.650299f, 0.228821f, -49.790279f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -75.025421f, -1.210333f, 73.659332f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Shortcut", 2000700, 0, 4, { -75.025421f, -1.210333f, 73.659332f }, 0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "Entrance", 2000182, 4543753, 5, { -77.622681f, 0.605630f, 95.628304f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Entrance", 2000182, 4543753, 5, { -77.622681f, 0.605630f, 95.628304f }, 0.991760f,
|
||||||
|
0.000048f );
|
||||||
// States -> vf_lock_on vf_lock_of
|
// States -> vf_lock_on vf_lock_of
|
||||||
instance->registerEObj( "unknown_1", 2002326, 0, 4, { -3.491464f, -0.354560f, -24.718349f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_1", 2002326, 0, 4, { -3.491464f, -0.354560f, -24.718349f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "Tinykey", 2002325, 0, 4, { -62.769581f, -0.332854f, 36.199650f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "Tinykey", 2002325, 0, 4, { -62.769581f, -0.332854f, 36.199650f }, 1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "sgpl_w_lvd_b0118_wide", 2002872, 4543726, 4, { 111.888000f, -2.109839f, -6.942894f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "sgpl_w_lvd_b0118_wide", 2002872, 4543726, 4, { 111.888000f, -2.109839f, -6.942894f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_2", 2002735, 0, 4, { 114.658699f, -2.093417f, -6.149437f }, 1.100000f, 0.000000f );
|
instance->registerEObj( "unknown_2", 2002735, 0, 4, { 114.658699f, -2.093417f, -6.149437f }, 1.100000f, 0.000000f );
|
||||||
instance->registerEObj( "unknown_3", 2002109, 4549243, 4, { 92.977211f, 5.002774f, -110.975502f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_3", 2002109, 4549243, 4, { 92.977211f, 5.002774f, -110.975502f }, 1.000000f,
|
||||||
instance->registerEObj( "unknown_4", 2002150, 4549448, 4, { 30.497520f, 8.248112f, -82.096916f }, 0.991760f, 0.000048f );
|
0.000000f );
|
||||||
instance->registerEObj( "unknown_5", 2002180, 4549459, 4, { 27.134510f, 7.114878f, -120.719704f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "unknown_4", 2002150, 4549448, 4, { 30.497520f, 8.248112f, -82.096916f }, 0.991760f,
|
||||||
instance->registerEObj( "unknown_6", 2002181, 4574849, 4, { 45.695850f, 7.015042f, -129.344604f }, 1.000000f, 0.000000f );
|
0.000048f );
|
||||||
instance->registerEObj( "Stolenwares", 2002262, 4598415, 4, { -28.610241f, 25.192631f, -174.631195f }, 0.991760f, -0.000527f );
|
instance->registerEObj( "unknown_5", 2002180, 4549459, 4, { 27.134510f, 7.114878f, -120.719704f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "unknown_6", 2002181, 4574849, 4, { 45.695850f, 7.015042f, -129.344604f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
|
instance->registerEObj( "Stolenwares", 2002262, 4598415, 4, { -28.610241f, 25.192631f, -174.631195f }, 0.991760f,
|
||||||
|
-0.000527f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_7", 2002735, 0, 4, { 44.686901f, 7.015000f, -131.547394f }, 0.500000f, -0.532325f );
|
instance->registerEObj( "unknown_7", 2002735, 0, 4, { 44.686901f, 7.015000f, -131.547394f }, 0.500000f,
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2002872, 4543729, 4, { 44.232769f, 7.015042f, -129.352997f }, 0.991760f, 0.000048f );
|
-0.532325f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0118_1", 2002872, 4543729, 4, { 44.232769f, 7.015042f, -129.352997f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "ブレイフロクスの抜道", 2003429, 0, 4, { 44.358749f, 7.554582f, -132.341095f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "ブレイフロクスの抜道", 2003429, 0, 4, { 44.358749f, 7.554582f, -132.341095f }, 1.000000f,
|
||||||
|
0.000000f );
|
||||||
instance->registerEObj( "Exit", 2000139, 0, 4, { -25.894650f, 35.019409f, -222.949600f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "Exit", 2000139, 0, 4, { -25.894650f, 35.019409f, -222.949600f }, 0.991760f, 0.000048f );
|
||||||
instance->registerEObj( "SwiftmakeCheckgate", 2002184, 4549240, 4, { -95.264717f, 12.888430f, -122.593300f }, 1.000000f, 0.000000f );
|
instance->registerEObj( "SwiftmakeCheckgate", 2002184, 4549240, 4, { -95.264717f, 12.888430f, -122.593300f },
|
||||||
instance->registerEObj( "SwiftmakeCheckgate_1", 2002665, 4549241, 4, { -100.273201f, 20.310730f, -163.513397f }, 1.000000f, 0.000000f );
|
1.000000f, 0.000000f );
|
||||||
instance->registerEObj( "SwiftmakeCheckgate_2", 2002884, 4572942, 4, { -102.647499f, 21.011600f, -187.365494f }, 0.991760f, 0.000048f );
|
instance->registerEObj( "SwiftmakeCheckgate_1", 2002665, 4549241, 4, { -100.273201f, 20.310730f, -163.513397f },
|
||||||
instance->registerEObj( "sgvf_w_lvd_b0250", 2002872, 4543735, 4, { -48.175251f, 34.706921f, -234.463196f }, 0.991760f, 0.000048f );
|
1.000000f, 0.000000f );
|
||||||
|
instance->registerEObj( "SwiftmakeCheckgate_2", 2002884, 4572942, 4, { -102.647499f, 21.011600f, -187.365494f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
|
instance->registerEObj( "sgvf_w_lvd_b0250", 2002872, 4543735, 4, { -48.175251f, 34.706921f, -234.463196f },
|
||||||
|
0.991760f, 0.000048f );
|
||||||
// States -> vf_bextwall_on vf_bextwall_of
|
// States -> vf_bextwall_on vf_bextwall_of
|
||||||
instance->registerEObj( "unknown_8", 2002735, 0, 4, { -48.271229f, 34.918541f, -235.574203f }, 1.000000f, -1.497719f );
|
instance->registerEObj( "unknown_8", 2002735, 0, 4, { -48.271229f, 34.918541f, -235.574203f }, 1.000000f,
|
||||||
|
-1.497719f );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue