ManaPlus
beinghandler.cpp
Go to the documentation of this file.
1 /*
2  * The ManaPlus Client
3  * Copyright (C) 2004-2009 The Mana World Development Team
4  * Copyright (C) 2009-2010 The Mana Developers
5  * Copyright (C) 2011-2019 The ManaPlus Developers
6  * Copyright (C) 2019-2021 Andrei Karas
7  *
8  * This file is part of The ManaPlus Client.
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
25 
26 #include "net/eathena/messageout.h"
28 #include "net/eathena/sprite.h"
29 
30 #include "debug.h"
31 
32 extern int packetVersion;
33 extern int serverVersion;
34 
35 namespace EAthena
36 {
37 
39  Ea::BeingHandler()
40 {
41  beingHandler = this;
42 }
43 
45 {
46  beingHandler = nullptr;
47 }
48 
50 {
51  createOutPacket(CMSG_NAME_REQUEST);
52  if (packetVersion >= 20080827 && packetVersion < 20101124)
53  {
54  outMsg.writeInt32(0, "unused");
55  outMsg.writeInt32(0, "unused");
56  }
57  outMsg.writeBeingId(id, "being id");
58 }
59 
60 void BeingHandler::undress(Being *const being) const
61 {
62  if (being == nullptr)
63  return;
64  being->unSetSprite(SPRITE_WEAPON);
69  being->unSetSprite(SPRITE_SHIELD);
70  being->unSetSprite(SPRITE_FLOOR);
71  being->unSetSprite(SPRITE_ROBE);
72  being->unSetSprite(SPRITE_EVOL2);
73  being->unSetSprite(SPRITE_EVOL3);
74  being->unSetSprite(SPRITE_EVOL4);
75  being->unSetSprite(SPRITE_EVOL5);
76  being->unSetSprite(SPRITE_EVOL6);
77  being->unSetSprite(SPRITE_HAIR);
78  being->unSetSprite(SPRITE_SHOES);
79 }
80 
81 void BeingHandler::requestRanks(const RankT rank) const
82 {
83  if (packetVersion < 20130605)
84  return;
85 
86  createOutPacket(CMSG_REQUEST_RANKS);
87  outMsg.writeInt16(CAST_S16(rank), "type");
88 }
89 
90 void BeingHandler::viewPlayerEquipment(const Being *const being) const
91 {
92  if (being == nullptr)
93  return;
94 
95  createOutPacket(CMSG_PLAYER_VIEW_EQUIPMENT);
96  outMsg.writeBeingId(being->getId(), "account id");
97 }
98 
99 void BeingHandler::requestNameByCharId(const int id) const
100 {
101  createOutPacket(CMSG_SOLVE_CHAR_NAME);
102  if (packetVersion >= 20080827 && packetVersion < 20101124)
103  {
104  outMsg.writeInt32(9, "unused");
105  outMsg.writeInt32(9, "unused");
106  }
107  outMsg.writeInt32(id, "character id");
108 }
109 
110 } // namespace EAthena
Net::BeingHandler * beingHandler
Definition: net.cpp:99
int BeingId
Definition: beingid.h:30
#define CAST_S16
Definition: cast.h:28
BeingId getId() const
Definition: actorsprite.h:64
Definition: being.h:96
void unSetSprite(const unsigned int slot)
Definition: being.cpp:2861
void requestNameByCharId(const int id) const
void requestNameById(const BeingId id) const
void requestRanks(const RankT rank) const
void viewPlayerEquipment(const Being *const being) const
void undress(Being *const being) const
int serverVersion
Definition: client.cpp:124
int packetVersion
Definition: client.cpp:125
#define createOutPacket(name)
Definition: messageout.h:37
@ SPRITE_WEAPON
Definition: sprite.h:31
@ SPRITE_FLOOR
Definition: sprite.h:40
@ SPRITE_HEAD_TOP
Definition: sprite.h:33
@ SPRITE_SHOES
Definition: sprite.h:38
@ SPRITE_EVOL4
Definition: sprite.h:44
@ SPRITE_SHIELD
Definition: sprite.h:37
@ SPRITE_HEAD_MID
Definition: sprite.h:34
@ SPRITE_EVOL2
Definition: sprite.h:42
@ SPRITE_CLOTHES_COLOR
Definition: sprite.h:36
@ SPRITE_EVOL3
Definition: sprite.h:43
@ SPRITE_ROBE
Definition: sprite.h:41
@ SPRITE_EVOL5
Definition: sprite.h:45
@ SPRITE_HEAD_BOTTOM
Definition: sprite.h:32
@ SPRITE_EVOL6
Definition: sprite.h:46
Rank ::T RankT
Definition: rank.h:34