Horizon Official Technical Documentation
Client.hpp
Go to the documentation of this file.
1/***************************************************
2 * _ _ _ *
3 * | | | | (_) *
4 * | |_| | ___ _ __ _ _______ _ __ *
5 * | _ |/ _ \| '__| |_ / _ \| '_ \ *
6 * | | | | (_) | | | |/ / (_) | | | | *
7 * \_| |_/\___/|_| |_/___\___/|_| |_| *
8 ***************************************************
9 * This file is part of Horizon (c).
10 * Copyright (c) 2019 Sagun K. (sagunxp@gmail.com).
11 * Copyright (c) 2019 Horizon Dev Team.
12 *
13 * Base Author - Sagun K. (sagunxp@gmail.com)
14 *
15 * This library is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation, either version 3 of the License, or
18 * (at your option) any later version.
19 *
20 * This library is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * You should have received a copy of the GNU General Public License
26 * along with this library. If not, see <http://www.gnu.org/licenses/>.
27 **************************************************/
28
29#ifndef HORIZON_CLIENT_HPP
30#define HORIZON_CLIENT_HPP
31
32#include <stdint.h>
34#define MAX_UNIT_NAME_LENGTH 24
35#define MAX_PARTY_NAME_LENGTH 24
36#define MAX_GUILD_NAME_LENGTH 24
37#define MAX_GUILD_POSITION_NAME_LENGTH 24
38#define MAX_USERNAME_LENGTH 24
39#define MAX_PASSWORD_LENGTH 24
40#define CLIENT_BIRTHDATE_STRING_LENGTH 6
41#define MAX_BIRTHDATE_STRING_LENGTH CLIENT_BIRTHDATE_STRING_LENGTH + 5 // YYYY-MM-DD
42#define MAX_PINCODE_STRING_LENGTH 5
43#define CLIENT_MAX_EMAIL_LENGTH 40
44#define MAX_IP_ADDRESS_STR_LENGTH 16
45// For Map Names, which the client considers to be 16 in length including the .gat extension.
46#define MAP_NAME_LENGTH (11 + 1)
47#define MAP_NAME_LENGTH_EXT (MAP_NAME_LENGTH + 4)
49#if defined (_WIN32) || defined (_WIN64)
50#pragma pack(push, 1)
51#endif
53 uint32_t _character_id{ 0 };
54#if PACKET_VERSION >= 20170830
55 uint64_t _base_experience{ 0 };
56#else
57 uint32_t _base_experience{ 0 };
58#endif
59 uint32_t _zeny{ 0 };
60#if PACKET_VERSION >= 20170830
61 uint64_t _job_experience{ 0 };
62#else
63 uint32_t _job_experience{ 0 };
64#endif
65 uint32_t _job_level{ 1 };
66 uint32_t _sc_opt1{ 0 };
67 uint32_t _sc_opt2{ 0 };
68 uint32_t _body_state{ 0 };
69 uint32_t _virtue{ 0 };
70 uint32_t _honor{ 0 };
71 uint16_t _status_points{ 0 };
72#if CLIENT_TYPE == 'M' && PACKET_VERSION >= 20201007
73 uint64_t _hp{ 1 };
74 uint64_t _maximum_hp{ 1 };
75#elif PACKET_VERSION > 20081217
76 uint32_t _hp{ 1 };
77 uint32_t _maximum_hp{ 1 };
78#else
79 uint16_t _hp{ 1 };
80 uint16_t _maximum_hp{ 1 };
81#endif
82#if CLIENT_TYPE == 'M' && PACKET_VERSION >= 20201007
83 uint64_t _sp{ 1 };
84 uint64_t _maximum_sp{ 1 };
85#else
86 uint16_t _sp{ 1 };
87 uint16_t _maximum_sp{ 1 };
88#endif
90 uint16_t _job_id{ 0 };
91 uint16_t _hair_view_id{ 0 };
92#if PACKET_VERSION >= 20141022
93 uint16_t _body_view_id{ 0 };
94#endif
95 uint16_t _weapon_view_id{ 0 };
96 uint16_t _base_level{ 1 };
97 uint16_t _skill_point{ 0 };
98 uint16_t _head_bottom_view_id{ 0 };
99 uint16_t _shield_id{ 0 };
100 uint16_t _head_top_view_id{ 0 };
101 uint16_t _head_mid_view_id{ 0 };
102 uint16_t _hair_color_id{ 0 };
103 uint16_t _clothes_color_id{ 0 };
105 uint8_t _strength{ 1 };
106 uint8_t _agility{ 1 };
107 uint8_t _vitality{ 1 };
108 uint8_t _intelligence{ 1 };
109 uint8_t _dexterity{ 1 };
110 uint8_t _luck{ 1 };
111 uint16_t _char_slot{ 0 };
112#if PACKET_VERSION >= 20061023
113 uint16_t _rename_count{ 0 };
114#endif
115#if (PACKET_VERSION >= 20100720 && PACKET_VERSION <= 20100727) || PACKET_VERSION >= 20100803
116 char _map_name[MAP_NAME_LENGTH_EXT]{ 0 };
117#endif
118#if PACKET_VERSION >= 20100803
119 uint32_t _deleted_at{ 0 };
120#endif
121#if PACKET_VERSION >= 20110111
122 uint32_t _robe_view_id{ 0 };
123#endif
124#if PACKET_VERSION != 20111116 //2011-11-16 wants 136, ask gravity.
125#if PACKET_VERSION >= 20110928
126 uint32_t _change_slot_count{ 0 };
127#endif
128#if PACKET_VERSION >= 20111025
129 uint32_t _addon_option{ 0 };
130#endif
131#if PACKET_VERSION >= 20141016
132 uint8_t _gender{ 0 };
133#endif
134#endif
135
136#if defined (_WIN32) || defined (_WIN64)
137};
138#pragma pack(pop)
139#else
140} __attribute__((packed));
141#endif
142
144{
152
154{
161};
162
163#endif //HORIZON_CLIENT_HPP
character_delete_result
Definition: Client.hpp:154
@ CHAR_DEL_RESULT_PARTY_ERR
4: To delete a character you must withdraw from the guild.
Definition: Client.hpp:160
@ CHAR_DEL_RESULT_UNKNOWN
Definition: Client.hpp:155
@ CHAR_DEL_RESULT_SYSTEM_ERR
1: none/success
Definition: Client.hpp:157
@ CHAR_DEL_RESULT_GUILD_ERR
3: A database error occurred.
Definition: Client.hpp:159
@ CHAR_DEL_RESULT_DATABASE_ERR
2: Due to system settings can not be deleted.
Definition: Client.hpp:158
@ CHAR_DEL_RESULT_SUCCESS
0 (0x718): An unknown error has occurred.
Definition: Client.hpp:156
#define MAX_UNIT_NAME_LENGTH
Definition: Client.hpp:34
character_delete_accept_result
Definition: Client.hpp:144
@ CHAR_DEL_ACCEPT_RESULT_SUCCESS
0 (0x718): An unknown error has occurred.
Definition: Client.hpp:146
@ CHAR_DEL_ACCEPT_RESULT_BIRTHDAY_ERR
4: Deleting is not yet possible.
Definition: Client.hpp:150
@ CHAR_DEL_ACCEPT_RESULT_TIME_ERR
3: A database error occurred.
Definition: Client.hpp:149
@ CHAR_DEL_ACCEPT_RESULT_UNKNOWN
Definition: Client.hpp:145
@ CHAR_DEL_ACCEPT_RESULT_SYSTEM_ERR
1: none/success
Definition: Client.hpp:147
@ CHAR_DEL_ACCEPT_RESULT_DATABASE_ERR
2: Due to system settings can not be deleted.
Definition: Client.hpp:148
enum character_delete_accept_result __attribute__
#define MAP_NAME_LENGTH_EXT
Definition: Client.hpp:47
#define DEFAULT_MOVEMENT_SPEED
Definition: Horizon.hpp:58
Definition: Client.hpp:52
uint32_t _virtue
44
Definition: Client.hpp:69
char _name[MAX_UNIT_NAME_LENGTH]
112
Definition: Client.hpp:104
uint32_t _sc_opt1
32 Probably OPT1 / 2
Definition: Client.hpp:66
uint16_t _shield_id
Definition: Client.hpp:99
uint32_t _job_experience
Definition: Client.hpp:63
uint32_t _zeny
16
Definition: Client.hpp:59
uint8_t _strength
Definition: Client.hpp:105
uint16_t _skill_point
Definition: Client.hpp:97
uint32_t _character_id
4
Definition: Client.hpp:53
uint16_t _maximum_sp
62
Definition: Client.hpp:87
uint16_t _walk_speed
64
Definition: Client.hpp:89
uint32_t _honor
48
Definition: Client.hpp:70
uint8_t _luck
Definition: Client.hpp:110
uint32_t _base_experience
Definition: Client.hpp:57
uint32_t _body_state
40
Definition: Client.hpp:68
uint8_t _intelligence
Definition: Client.hpp:108
uint16_t _job_id
66
Definition: Client.hpp:90
uint16_t _base_level
74
Definition: Client.hpp:96
uint16_t _hair_view_id
68
Definition: Client.hpp:91
uint16_t _sp
60
Definition: Client.hpp:86
uint16_t _status_points
50
Definition: Client.hpp:71
uint32_t _job_level
28
Definition: Client.hpp:65
uint16_t _hair_color_id
Definition: Client.hpp:102
uint16_t _char_slot
120
Definition: Client.hpp:111
uint16_t _clothes_color_id
88
Definition: Client.hpp:103
uint16_t _weapon_view_id
72 OPTION_* in hercules.
Definition: Client.hpp:95
uint8_t _agility
Definition: Client.hpp:106
uint32_t _sc_opt2
36
Definition: Client.hpp:67
uint16_t _maximum_hp
Definition: Client.hpp:80
uint16_t _head_bottom_view_id
Definition: Client.hpp:98
uint16_t _hp
Definition: Client.hpp:79
uint8_t _vitality
Definition: Client.hpp:107
uint8_t _dexterity
Definition: Client.hpp:109
uint16_t _head_top_view_id
Definition: Client.hpp:100
uint16_t _head_mid_view_id
Definition: Client.hpp:101