Otclient 1.0
14/8/2020
protocolcodes.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010-2020 OTClient <https://github.com/edubart/otclient>
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a copy
5
* of this software and associated documentation files (the "Software"), to deal
6
* in the Software without restriction, including without limitation the rights
7
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
* copies of the Software, and to permit persons to whom the Software is
9
* furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice shall be included in
12
* all copies or substantial portions of the Software.
13
*
14
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
* THE SOFTWARE.
21
*/
22
23
#include "
protocolcodes.h
"
24
25
namespace
Proto
{
26
27
std::map<uint8, uint8>
messageModesMap
;
28
29
void
buildMessageModesMap
(
int
version)
30
{
31
messageModesMap
.clear();
32
33
if
(version >= 1094) {
34
messageModesMap
[
Otc::MessageMana
] = 43;
35
}
36
37
if
(version >= 1055) {
// might be 1054
38
messageModesMap
[
Otc::MessageNone
] = 0;
39
messageModesMap
[
Otc::MessageSay
] = 1;
40
messageModesMap
[
Otc::MessageWhisper
] = 2;
41
messageModesMap
[
Otc::MessageYell
] = 3;
42
messageModesMap
[
Otc::MessagePrivateFrom
] = 4;
43
messageModesMap
[
Otc::MessagePrivateTo
] = 5;
44
messageModesMap
[
Otc::MessageChannelManagement
] = 6;
45
messageModesMap
[
Otc::MessageChannel
] = 7;
46
messageModesMap
[
Otc::MessageChannelHighlight
] = 8;
47
messageModesMap
[
Otc::MessageSpell
] = 9;
48
messageModesMap
[
Otc::MessageNpcFromStartBlock
] = 10;
49
messageModesMap
[
Otc::MessageNpcFrom
] = 11;
50
messageModesMap
[
Otc::MessageNpcTo
] = 12;
51
messageModesMap
[
Otc::MessageGamemasterBroadcast
] = 13;
52
messageModesMap
[
Otc::MessageGamemasterChannel
] = 14;
53
messageModesMap
[
Otc::MessageGamemasterPrivateFrom
] = 15;
54
messageModesMap
[
Otc::MessageGamemasterPrivateTo
] = 16;
55
messageModesMap
[
Otc::MessageLogin
] = 17;
56
messageModesMap
[
Otc::MessageWarning
] = 18;
// Admin
57
messageModesMap
[
Otc::MessageGame
] = 19;
58
messageModesMap
[
Otc::MessageGameHighlight
] = 20;
59
messageModesMap
[
Otc::MessageFailure
] = 21;
60
messageModesMap
[
Otc::MessageLook
] = 22;
61
messageModesMap
[
Otc::MessageDamageDealed
] = 23;
62
messageModesMap
[
Otc::MessageDamageReceived
] = 24;
63
messageModesMap
[
Otc::MessageHeal
] = 25;
64
messageModesMap
[
Otc::MessageExp
] = 26;
65
messageModesMap
[
Otc::MessageDamageOthers
] = 27;
66
messageModesMap
[
Otc::MessageHealOthers
] = 28;
67
messageModesMap
[
Otc::MessageExpOthers
] = 29;
68
messageModesMap
[
Otc::MessageStatus
] = 30;
69
messageModesMap
[
Otc::MessageLoot
] = 31;
70
messageModesMap
[
Otc::MessageTradeNpc
] = 32;
71
messageModesMap
[
Otc::MessageGuild
] = 33;
72
messageModesMap
[
Otc::MessagePartyManagement
] = 34;
73
messageModesMap
[
Otc::MessageParty
] = 35;
74
messageModesMap
[
Otc::MessageBarkLow
] = 36;
75
messageModesMap
[
Otc::MessageBarkLoud
] = 37;
76
messageModesMap
[
Otc::MessageReport
] = 38;
77
messageModesMap
[
Otc::MessageHotkeyUse
] = 39;
78
messageModesMap
[
Otc::MessageTutorialHint
] = 40;
79
messageModesMap
[
Otc::MessageThankyou
] = 41;
80
messageModesMap
[
Otc::MessageMarket
] = 42;
81
}
else
if
(version >= 1036) {
82
for
(
int
i =
Otc::MessageNone
; i <=
Otc::MessageBeyondLast
; ++i) {
83
if
(i >=
Otc::MessageNpcTo
)
84
messageModesMap
[i] = i + 1;
85
else
86
messageModesMap
[i] = i;
87
}
88
}
else
if
(version >= 900) {
89
for
(
int
i =
Otc::MessageNone
; i <=
Otc::MessageBeyondLast
; ++i)
90
messageModesMap
[i] = i;
91
}
else
if
(version >= 861) {
92
messageModesMap
[
Otc::MessageNone
] = 0;
93
messageModesMap
[
Otc::MessageSay
] = 1;
94
messageModesMap
[
Otc::MessageWhisper
] = 2;
95
messageModesMap
[
Otc::MessageYell
] = 3;
96
messageModesMap
[
Otc::MessageNpcTo
] = 4;
97
messageModesMap
[
Otc::MessageNpcFrom
] = 5;
98
messageModesMap
[
Otc::MessagePrivateFrom
] = 6;
99
messageModesMap
[
Otc::MessagePrivateTo
] = 6;
100
messageModesMap
[
Otc::MessageChannel
] = 7;
101
messageModesMap
[
Otc::MessageChannelManagement
] = 8;
102
messageModesMap
[
Otc::MessageGamemasterBroadcast
] = 9;
103
messageModesMap
[
Otc::MessageGamemasterChannel
] = 10;
104
messageModesMap
[
Otc::MessageGamemasterPrivateFrom
] = 11;
105
messageModesMap
[
Otc::MessageGamemasterPrivateTo
] = 11;
106
messageModesMap
[
Otc::MessageChannelHighlight
] = 12;
107
messageModesMap
[
Otc::MessageMonsterSay
] = 13;
108
messageModesMap
[
Otc::MessageMonsterYell
] = 14;
109
messageModesMap
[
Otc::MessageWarning
] = 15;
110
messageModesMap
[
Otc::MessageGame
] = 16;
111
messageModesMap
[
Otc::MessageLogin
] = 17;
112
messageModesMap
[
Otc::MessageStatus
] = 18;
113
messageModesMap
[
Otc::MessageLook
] = 19;
114
messageModesMap
[
Otc::MessageFailure
] = 20;
115
messageModesMap
[
Otc::MessageBlue
] = 21;
116
messageModesMap
[
Otc::MessageRed
] = 22;
117
}
else
if
(version >= 840) {
118
messageModesMap
[
Otc::MessageNone
] = 0;
119
messageModesMap
[
Otc::MessageSay
] = 1;
120
messageModesMap
[
Otc::MessageWhisper
] = 2;
121
messageModesMap
[
Otc::MessageYell
] = 3;
122
messageModesMap
[
Otc::MessageNpcTo
] = 4;
123
messageModesMap
[
Otc::MessageNpcFromStartBlock
] = 5;
124
messageModesMap
[
Otc::MessagePrivateFrom
] = 6;
125
messageModesMap
[
Otc::MessagePrivateTo
] = 6;
126
messageModesMap
[
Otc::MessageChannel
] = 7;
127
messageModesMap
[
Otc::MessageChannelManagement
] = 8;
128
messageModesMap
[
Otc::MessageRVRChannel
] = 9;
129
messageModesMap
[
Otc::MessageRVRAnswer
] = 10;
130
messageModesMap
[
Otc::MessageRVRContinue
] = 11;
131
messageModesMap
[
Otc::MessageGamemasterBroadcast
] = 12;
132
messageModesMap
[
Otc::MessageGamemasterChannel
] = 13;
133
messageModesMap
[
Otc::MessageGamemasterPrivateFrom
] = 14;
134
messageModesMap
[
Otc::MessageGamemasterPrivateTo
] = 14;
135
messageModesMap
[
Otc::MessageChannelHighlight
] = 15;
136
// 16, 17 ??
137
messageModesMap
[
Otc::MessageRed
] = 18;
138
messageModesMap
[
Otc::MessageMonsterSay
] = 19;
139
messageModesMap
[
Otc::MessageMonsterYell
] = 20;
140
messageModesMap
[
Otc::MessageWarning
] = 21;
141
messageModesMap
[
Otc::MessageGame
] = 22;
142
messageModesMap
[
Otc::MessageLogin
] = 23;
143
messageModesMap
[
Otc::MessageStatus
] = 24;
144
messageModesMap
[
Otc::MessageLook
] = 25;
145
messageModesMap
[
Otc::MessageFailure
] = 26;
146
messageModesMap
[
Otc::MessageBlue
] = 27;
147
}
else
if
(version >= 760) {
148
messageModesMap
[
Otc::MessageNone
] = 0;
149
messageModesMap
[
Otc::MessageSay
] = 1;
150
messageModesMap
[
Otc::MessageWhisper
] = 2;
151
messageModesMap
[
Otc::MessageYell
] = 3;
152
messageModesMap
[
Otc::MessagePrivateFrom
] = 4;
153
messageModesMap
[
Otc::MessagePrivateTo
] = 4;
154
messageModesMap
[
Otc::MessageChannel
] = 5;
155
messageModesMap
[
Otc::MessageRVRChannel
] = 6;
156
messageModesMap
[
Otc::MessageRVRAnswer
] = 7;
157
messageModesMap
[
Otc::MessageRVRContinue
] = 8;
158
messageModesMap
[
Otc::MessageGamemasterBroadcast
] = 9;
159
messageModesMap
[
Otc::MessageGamemasterChannel
] = 10;
160
messageModesMap
[
Otc::MessageGamemasterPrivateFrom
] = 11;
161
messageModesMap
[
Otc::MessageGamemasterPrivateTo
] = 11;
162
messageModesMap
[
Otc::MessageChannelHighlight
] = 12;
163
// 13, 14, 15 ??
164
messageModesMap
[
Otc::MessageMonsterSay
] = 16;
165
messageModesMap
[
Otc::MessageMonsterYell
] = 17;
166
messageModesMap
[
Otc::MessageWarning
] = 18;
167
messageModesMap
[
Otc::MessageGame
] = 19;
168
messageModesMap
[
Otc::MessageLogin
] = 20;
169
messageModesMap
[
Otc::MessageStatus
] = 21;
170
messageModesMap
[
Otc::MessageLook
] = 22;
171
messageModesMap
[
Otc::MessageFailure
] = 23;
172
messageModesMap
[
Otc::MessageBlue
] = 24;
173
messageModesMap
[
Otc::MessageRed
] = 25;
174
}
175
}
176
177
Otc::MessageMode
translateMessageModeFromServer
(
uint8
mode)
178
{
179
auto
it = std::find_if(
messageModesMap
.begin(),
messageModesMap
.end(), [=](
const
std::pair<uint8, uint8>& p) { return p.second == mode; });
180
if
(it !=
messageModesMap
.end())
181
return
static_cast<
Otc::MessageMode
>
(it->first);
182
return
Otc::MessageInvalid
;
183
}
184
185
uint8
translateMessageModeToServer
(
Otc::MessageMode
mode)
186
{
187
if
(mode < 0 || mode >=
Otc::LastMessage
)
188
return
Otc::MessageInvalid
;
189
const
auto
it =
messageModesMap
.find(mode);
190
if
(it !=
messageModesMap
.end())
191
return
it->second;
192
return
Otc::MessageInvalid
;
193
}
194
195
}
protocolcodes.h
Otc::MessageBarkLow
@ MessageBarkLow
Definition:
const.h:343
Otc::MessageRVRChannel
@ MessageRVRChannel
Definition:
const.h:358
Otc::MessageParty
@ MessageParty
Definition:
const.h:342
Otc::MessageThankyou
@ MessageThankyou
Definition:
const.h:348
Otc::MessageRed
@ MessageRed
Definition:
const.h:356
Otc::MessagePrivateFrom
@ MessagePrivateFrom
Definition:
const.h:313
Otc::MessageWarning
@ MessageWarning
Definition:
const.h:326
Otc::MessageStatus
@ MessageStatus
Definition:
const.h:337
Otc::MessageRVRContinue
@ MessageRVRContinue
Definition:
const.h:360
Otc::MessageChannel
@ MessageChannel
Definition:
const.h:316
Otc::MessageLook
@ MessageLook
Definition:
const.h:329
Otc::MessageSay
@ MessageSay
Definition:
const.h:310
Otc::MessageHotkeyUse
@ MessageHotkeyUse
Definition:
const.h:346
Otc::MessageNpcFrom
@ MessageNpcFrom
Definition:
const.h:319
Otc::MessageMana
@ MessageMana
Definition:
const.h:350
Otc::MessageTutorialHint
@ MessageTutorialHint
Definition:
const.h:347
Otc::MessageGamemasterChannel
@ MessageGamemasterChannel
Definition:
const.h:322
Otc::MessageHeal
@ MessageHeal
Definition:
const.h:332
Otc::MessageGameHighlight
@ MessageGameHighlight
Definition:
const.h:361
Otc::MessageNpcTo
@ MessageNpcTo
Definition:
const.h:320
Proto::buildMessageModesMap
void buildMessageModesMap(int version)
Definition:
protocolcodes.cpp:29
Otc::MessageGamemasterPrivateFrom
@ MessageGamemasterPrivateFrom
Definition:
const.h:323
Otc::MessageYell
@ MessageYell
Definition:
const.h:312
Otc::MessageBeyondLast
@ MessageBeyondLast
Definition:
const.h:351
Otc::MessageInvalid
@ MessageInvalid
Definition:
const.h:364
Otc::MessageExp
@ MessageExp
Definition:
const.h:333
Proto::translateMessageModeFromServer
Otc::MessageMode translateMessageModeFromServer(uint8 mode)
Definition:
protocolcodes.cpp:177
Otc::MessageMode
MessageMode
Definition:
const.h:308
Otc::MessageBarkLoud
@ MessageBarkLoud
Definition:
const.h:344
Proto::translateMessageModeToServer
uint8 translateMessageModeToServer(Otc::MessageMode mode)
Definition:
protocolcodes.cpp:185
Otc::MessageNone
@ MessageNone
Definition:
const.h:309
Proto::messageModesMap
std::map< uint8, uint8 > messageModesMap
Definition:
protocolcodes.cpp:27
Otc::MessageGamemasterBroadcast
@ MessageGamemasterBroadcast
Definition:
const.h:321
Otc::MessageLoot
@ MessageLoot
Definition:
const.h:338
Otc::LastMessage
@ LastMessage
Definition:
const.h:363
Otc::MessageRVRAnswer
@ MessageRVRAnswer
Definition:
const.h:359
Otc::MessageExpOthers
@ MessageExpOthers
Definition:
const.h:336
Proto
Definition:
protocolcodes.cpp:25
Otc::MessageTradeNpc
@ MessageTradeNpc
Definition:
const.h:339
Otc::MessageGuild
@ MessageGuild
Definition:
const.h:340
Otc::MessageDamageOthers
@ MessageDamageOthers
Definition:
const.h:334
Otc::MessageChannelHighlight
@ MessageChannelHighlight
Definition:
const.h:317
Otc::MessageReport
@ MessageReport
Definition:
const.h:345
Otc::MessageDamageDealed
@ MessageDamageDealed
Definition:
const.h:330
Otc::MessageLogin
@ MessageLogin
Definition:
const.h:325
Otc::MessageGame
@ MessageGame
Definition:
const.h:327
Otc::MessageGamemasterPrivateTo
@ MessageGamemasterPrivateTo
Definition:
const.h:324
Otc::MessageBlue
@ MessageBlue
Definition:
const.h:357
Otc::MessageMonsterSay
@ MessageMonsterSay
Definition:
const.h:355
Otc::MessagePartyManagement
@ MessagePartyManagement
Definition:
const.h:341
Otc::MessageDamageReceived
@ MessageDamageReceived
Definition:
const.h:331
Otc::MessageWhisper
@ MessageWhisper
Definition:
const.h:311
Otc::MessageFailure
@ MessageFailure
Definition:
const.h:328
Otc::MessagePrivateTo
@ MessagePrivateTo
Definition:
const.h:314
Otc::MessageChannelManagement
@ MessageChannelManagement
Definition:
const.h:315
Otc::MessageNpcFromStartBlock
@ MessageNpcFromStartBlock
Definition:
const.h:362
Otc::MessageMonsterYell
@ MessageMonsterYell
Definition:
const.h:354
Otc::MessageMarket
@ MessageMarket
Definition:
const.h:349
uint8
uint8_t uint8
Definition:
types.h:37
Otc::MessageHealOthers
@ MessageHealOthers
Definition:
const.h:335
Otc::MessageSpell
@ MessageSpell
Definition:
const.h:318
src
client
protocolcodes.cpp
Generated by
1.8.17
For more information visit
https://forum.opentibia.dev/