Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
cs_packet.cpp
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#include "
Chat.h
"
7
#include "
ObjectAccessor.h
"
8
#include "
ObjectMgr.h
"
9
#include "
PacketLog.h
"
10
#include "
Player.h
"
11
#include "
ScriptMgr.h
"
12
#include "
WorldSession.h
"
13
14
#include <string>
15
#include <vector>
16
17
namespace
18
{
19
std::string TrimCommandText(std::string text)
20
{
21
std::string::size_type first = text.find_first_not_of(
" \t\r\n"
);
22
if
(first == std::string::npos)
23
return
""
;
24
25
std::string::size_type last = text.find_last_not_of(
" \t\r\n"
);
26
text = text.substr(first, last - first + 1);
27
28
if
(text.size() >= 2 && text[0] ==
'"'
&& text[text.size() - 1] ==
'"'
)
29
text = text.substr(1, text.size() - 2);
30
31
first = text.find_first_not_of(
" \t\r\n"
);
32
if
(first == std::string::npos)
33
return
""
;
34
35
last = text.find_last_not_of(
" \t\r\n"
);
36
return
text.substr(first, last - first + 1);
37
}
38
39
std::string GetPacketCommandName(
char
const
* args)
40
{
41
return
TrimCommandText(args ? args :
""
);
42
}
43
}
44
45
class
packet_commandscript
:
public
CommandScript
46
{
47
public
:
48
packet_commandscript
() :
CommandScript
(
"packet_commandscript"
) { }
49
50
std::vector<ChatCommand>
GetCommands
() const
OVERRIDE
51
{
52
static
std::vector<ChatCommand> packetCharCommandTable =
53
{
54
{
"start"
,
rbac::RBAC_PERM_COMMAND_PACKET_CHAR_START
,
false
, &
HandlePacketCharStartCommand
,
""
, },
55
{
"stop"
,
rbac::RBAC_PERM_COMMAND_PACKET_CHAR_STOP
,
false
, &
HandlePacketCharStopCommand
,
""
, },
56
};
57
58
static
std::vector<ChatCommand> packetCommandTable =
59
{
60
{
"start"
,
rbac::RBAC_PERM_COMMAND_PACKET_START
,
false
, &
HandlePacketStartCommand
,
""
, },
61
{
"stop"
,
rbac::RBAC_PERM_COMMAND_PACKET_STOP
,
false
, &
HandlePacketStopCommand
,
""
, },
62
{
"char"
,
rbac::RBAC_PERM_COMMAND_PACKET_CHAR
,
false
, NULL,
""
, packetCharCommandTable },
63
};
64
65
static
std::vector<ChatCommand> commandTable =
66
{
67
{
"packet"
,
rbac::RBAC_PERM_COMMAND_PACKET
,
false
, NULL,
""
, packetCommandTable },
68
};
69
70
return
commandTable;
71
}
72
73
static
bool
HandlePacketStartCommand
(
ChatHandler
* handler,
char
const
*
/*args*/
)
74
{
75
sPacketLog
->EnableGlobalLogging();
76
handler->
PSendSysMessage
(
"Packet logging enabled for all sessions."
);
77
return
true
;
78
}
79
80
static
bool
HandlePacketStopCommand
(
ChatHandler
* handler,
char
const
*
/*args*/
)
81
{
82
sPacketLog
->DisableAllLogging();
83
handler->
PSendSysMessage
(
"Packet logging disabled."
);
84
return
true
;
85
}
86
87
static
bool
HandlePacketCharStartCommand
(
ChatHandler
* handler,
char
const
* args)
88
{
89
std::string characterName = GetPacketCommandName(args);
90
if
(characterName.empty() || !
normalizePlayerName
(characterName))
91
{
92
handler->
PSendSysMessage
(
"Usage: .packet char start \"name\""
);
93
handler->
SetSentErrorMessage
(
true
);
94
return
false
;
95
}
96
97
sPacketLog
->EnableCharacterLogging(characterName);
98
99
if
(
Player
* target =
sObjectAccessor
->FindPlayerByName(characterName))
100
if
(
WorldSession
* targetSession = target->GetSession())
101
targetSession->LogPacketMarker(
"Packet logging enabled for this character."
);
102
103
handler->
PSendSysMessage
(
"Packet logging enabled for character %s."
, characterName.c_str());
104
return
true
;
105
}
106
107
static
bool
HandlePacketCharStopCommand
(
ChatHandler
* handler,
char
const
* args)
108
{
109
std::string characterName = GetPacketCommandName(args);
110
if
(characterName.empty() || !
normalizePlayerName
(characterName))
111
{
112
handler->
PSendSysMessage
(
"Usage: .packet char stop \"name\""
);
113
handler->
SetSentErrorMessage
(
true
);
114
return
false
;
115
}
116
117
sPacketLog
->DisableCharacterLogging(characterName);
118
handler->
PSendSysMessage
(
"Packet logging disabled for character %s."
, characterName.c_str());
119
return
true
;
120
}
121
};
122
123
void
AddSC_packet_commandscript
()
124
{
125
new
packet_commandscript
();
126
}
Chat.h
OVERRIDE
#define OVERRIDE
Definition
Define.h:60
ObjectAccessor.h
sObjectAccessor
#define sObjectAccessor
Definition
ObjectAccessor.h:195
normalizePlayerName
bool normalizePlayerName(std::string &name)
Definition
ObjectMgr.cpp:165
ObjectMgr.h
PacketLog.h
sPacketLog
#define sPacketLog
Definition
PacketLog.h:47
Player.h
ScriptMgr.h
WorldSession.h
ChatHandler
Definition
Chat.h:41
ChatHandler::PSendSysMessage
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
Definition
Chat.cpp:221
ChatHandler::SetSentErrorMessage
void SetSentErrorMessage(bool val)
Definition
Chat.h:114
CommandScript::CommandScript
CommandScript(const char *name)
Definition
ScriptMgr.cpp:1466
Player
Definition
Player.h:1289
WorldSession
Player session in the World.
Definition
WorldSession.h:254
packet_commandscript
Definition
cs_packet.cpp:46
packet_commandscript::GetCommands
std::vector< ChatCommand > GetCommands() const OVERRIDE
Definition
cs_packet.cpp:50
packet_commandscript::HandlePacketStartCommand
static bool HandlePacketStartCommand(ChatHandler *handler, char const *)
Definition
cs_packet.cpp:73
packet_commandscript::HandlePacketStopCommand
static bool HandlePacketStopCommand(ChatHandler *handler, char const *)
Definition
cs_packet.cpp:80
packet_commandscript::HandlePacketCharStartCommand
static bool HandlePacketCharStartCommand(ChatHandler *handler, char const *args)
Definition
cs_packet.cpp:87
packet_commandscript::HandlePacketCharStopCommand
static bool HandlePacketCharStopCommand(ChatHandler *handler, char const *args)
Definition
cs_packet.cpp:107
packet_commandscript::packet_commandscript
packet_commandscript()
Definition
cs_packet.cpp:48
AddSC_packet_commandscript
void AddSC_packet_commandscript()
Definition
cs_packet.cpp:123
rbac::RBAC_PERM_COMMAND_PACKET_CHAR_START
@ RBAC_PERM_COMMAND_PACKET_CHAR_START
Definition
RBAC.h:707
rbac::RBAC_PERM_COMMAND_PACKET_START
@ RBAC_PERM_COMMAND_PACKET_START
Definition
RBAC.h:704
rbac::RBAC_PERM_COMMAND_PACKET_STOP
@ RBAC_PERM_COMMAND_PACKET_STOP
Definition
RBAC.h:705
rbac::RBAC_PERM_COMMAND_PACKET_CHAR
@ RBAC_PERM_COMMAND_PACKET_CHAR
Definition
RBAC.h:706
rbac::RBAC_PERM_COMMAND_PACKET
@ RBAC_PERM_COMMAND_PACKET
Definition
RBAC.h:703
rbac::RBAC_PERM_COMMAND_PACKET_CHAR_STOP
@ RBAC_PERM_COMMAND_PACKET_CHAR_STOP
Definition
RBAC.h:708
src
server
scripts
Commands
cs_packet.cpp
Generated on
for Project SkyFire Core by
1.17.0