Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
cs_disable.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/* ScriptData
7Name: disable_commandscript
8%Complete: 100
9Comment: All disable related commands
10Category: commandscripts
11EndScriptData */
12
13#include "AchievementMgr.h"
14#include "Chat.h"
15#include "DisableMgr.h"
16#include "Language.h"
17#include "ObjectMgr.h"
18#include "OutdoorPvP.h"
19#include "Player.h"
20#include "ScriptMgr.h"
21#include "SpellMgr.h"
22
24{
25public:
26 disable_commandscript() : CommandScript("disable_commandscript") { }
27
28 std::vector<ChatCommand> GetCommands() const OVERRIDE
29 {
30 static std::vector<ChatCommand> removeDisableCommandTable =
31 {
40 };
41 static std::vector<ChatCommand> addDisableCommandTable =
42 {
51 };
52 static std::vector<ChatCommand> disableCommandTable =
53 {
54 { "add", rbac::RBAC_PERM_COMMAND_DISABLE_ADD, true, NULL, "", addDisableCommandTable },
55 { "remove", rbac::RBAC_PERM_COMMAND_DISABLE_REMOVE, true, NULL, "", removeDisableCommandTable },
56 };
57 static std::vector<ChatCommand> commandTable =
58 {
59 { "disable", rbac::RBAC_PERM_COMMAND_DISABLE, false, NULL, "", disableCommandTable },
60 };
61 return commandTable;
62 }
63
64 static bool HandleAddDisables(ChatHandler* handler, char const* args, uint8 disableType)
65 {
66 char* entryStr = strtok((char*)args, " ");
67 if (!entryStr || !atoi(entryStr))
68 return false;
69
70 char* flagsStr = strtok(NULL, " ");
71 uint8 flags = flagsStr ? uint8(atoi(flagsStr)) : 0;
72
73 char* commentStr = strtok(NULL, "");
74 if (!commentStr)
75 return false;
76
77 std::string disableComment = commentStr;
78 uint32 entry = uint32(atoi(entryStr));
79
80 std::string disableTypeStr = "";
81
82 switch (disableType)
83 {
85 {
86 if (!sSpellMgr->GetSpellInfo(entry))
87 {
89 handler->SetSentErrorMessage(true);
90 return false;
91 }
92 disableTypeStr = "spell";
93 break;
94 }
96 {
97 if (!sObjectMgr->GetQuestTemplate(entry))
98 {
100 handler->SetSentErrorMessage(true);
101 return false;
102 }
103 disableTypeStr = "quest";
104 break;
105 }
106 case DISABLE_TYPE_MAP:
107 {
108 if (!sMapStore.LookupEntry(entry))
109 {
111 handler->SetSentErrorMessage(true);
112 return false;
113 }
114 disableTypeStr = "map";
115 break;
116 }
118 {
119 if (!sBattlemasterListStore.LookupEntry(entry))
120 {
122 handler->SetSentErrorMessage(true);
123 return false;
124 }
125 disableTypeStr = "battleground";
126 break;
127 }
129 {
130 if (!sAchievementMgr->GetAchievementCriteria(entry))
131 {
133 handler->SetSentErrorMessage(true);
134 return false;
135 }
136 disableTypeStr = "achievement criteria";
137 break;
138 }
140 {
141 if (entry > MAX_OUTDOORPVP_TYPES)
142 {
144 handler->SetSentErrorMessage(true);
145 return false;
146 }
147 disableTypeStr = "outdoorpvp";
148 break;
149 }
151 {
152 if (!sMapStore.LookupEntry(entry))
153 {
155 handler->SetSentErrorMessage(true);
156 return false;
157 }
158 disableTypeStr = "vmap";
159 break;
160 }
162 {
163 if (!sMapStore.LookupEntry(entry))
164 {
166 handler->SetSentErrorMessage(true);
167 return false;
168 }
169 disableTypeStr = "mmap";
170 break;
171 }
172 default:
173 break;
174 }
175
176 PreparedStatement* stmt = NULL;
177 stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_DISABLES);
178 stmt->setUInt32(0, entry);
179 stmt->setUInt8(1, disableType);
180 PreparedQueryResult result = WorldDatabase.Query(stmt);
181 if (result)
182 {
183 handler->PSendSysMessage("This %s (Id: %u) is already disabled.", disableTypeStr.c_str(), entry);
184 handler->SetSentErrorMessage(true);
185 return false;
186 }
187
188 stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_DISABLES);
189 stmt->setUInt32(0, entry);
190 stmt->setUInt8(1, disableType);
191 stmt->setUInt16(2, flags);
192 stmt->setString(3, disableComment);
193 WorldDatabase.Execute(stmt);
194
195 handler->PSendSysMessage("Add Disabled %s (Id: %u) for reason %s", disableTypeStr.c_str(), entry, disableComment.c_str());
196 return true;
197 }
198
199 static bool HandleAddDisableSpellCommand(ChatHandler* handler, char const* args)
200 {
201 if (!*args)
202 return false;
203
204 return HandleAddDisables(handler, args, DISABLE_TYPE_SPELL);
205 }
206
207 static bool HandleAddDisableQuestCommand(ChatHandler* handler, char const* args)
208 {
209 if (!*args)
210 return false;
211
212 return HandleAddDisables(handler, args, DISABLE_TYPE_QUEST);
213 }
214
215 static bool HandleAddDisableMapCommand(ChatHandler* handler, char const* args)
216 {
217 if (!*args)
218 return false;
219
220 return HandleAddDisables(handler, args, DISABLE_TYPE_MAP);
221 }
222
223 static bool HandleAddDisableBattlegroundCommand(ChatHandler* handler, char const* args)
224 {
225 if (!*args)
226 return false;
227
228 return HandleAddDisables(handler, args, DISABLE_TYPE_BATTLEGROUND);
229 }
230
231 static bool HandleAddDisableAchievementCriteriaCommand(ChatHandler* handler, char const* args)
232 {
233 if (!*args)
234 return false;
235
237 }
238
239 static bool HandleAddDisableOutdoorPvPCommand(ChatHandler* handler, char const* args)
240 {
241 if (!*args)
242 return false;
243
245 return true;
246 }
247
248 static bool HandleAddDisableVmapCommand(ChatHandler* handler, char const* args)
249 {
250 if (!*args)
251 return false;
252
253 return HandleAddDisables(handler, args, DISABLE_TYPE_VMAP);
254 }
255
256 static bool HandleAddDisableMMapCommand(ChatHandler* handler, char const* args)
257 {
258 if (!*args)
259 return false;
260
261 return HandleAddDisables(handler, args, DISABLE_TYPE_MMAP);
262 }
263
264 static bool HandleRemoveDisables(ChatHandler* handler, char const* args, uint8 disableType)
265 {
266 char* entryStr = strtok((char*)args, " ");
267 if (!entryStr || !atoi(entryStr))
268 return false;
269
270 uint32 entry = uint32(atoi(entryStr));
271
272 std::string disableTypeStr = "";
273
274 switch (disableType)
275 {
277 disableTypeStr = "spell";
278 break;
280 disableTypeStr = "quest";
281 break;
282 case DISABLE_TYPE_MAP:
283 disableTypeStr = "map";
284 break;
286 disableTypeStr = "battleground";
287 break;
289 disableTypeStr = "achievement criteria";
290 break;
292 disableTypeStr = "outdoorpvp";
293 break;
295 disableTypeStr = "vmap";
296 break;
298 disableTypeStr = "mmap";
299 break;
300 }
301
302 PreparedStatement* stmt = NULL;
303 stmt = WorldDatabase.GetPreparedStatement(WORLD_SEL_DISABLES);
304 stmt->setUInt32(0, entry);
305 stmt->setUInt8(1, disableType);
306 PreparedQueryResult result = WorldDatabase.Query(stmt);
307 if (!result)
308 {
309 handler->PSendSysMessage("This %s (Id: %u) is not disabled.", disableTypeStr.c_str(), entry);
310 handler->SetSentErrorMessage(true);
311 return false;
312 }
313
314 stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_DISABLES);
315 stmt->setUInt32(0, entry);
316 stmt->setUInt8(1, disableType);
317 WorldDatabase.Execute(stmt);
318
319 handler->PSendSysMessage("Remove Disabled %s (Id: %u)", disableTypeStr.c_str(), entry);
320 return true;
321 }
322
323 static bool HandleRemoveDisableSpellCommand(ChatHandler* handler, char const* args)
324 {
325 if (!*args)
326 return false;
327
328 return HandleRemoveDisables(handler, args, DISABLE_TYPE_SPELL);
329 }
330
331 static bool HandleRemoveDisableQuestCommand(ChatHandler* handler, char const* args)
332 {
333 if (!*args)
334 return false;
335
336 return HandleRemoveDisables(handler, args, DISABLE_TYPE_QUEST);
337 }
338
339 static bool HandleRemoveDisableMapCommand(ChatHandler* handler, char const* args)
340 {
341 if (!*args)
342 return false;
343
344 return HandleRemoveDisables(handler, args, DISABLE_TYPE_MAP);
345 }
346
347 static bool HandleRemoveDisableBattlegroundCommand(ChatHandler* handler, char const* args)
348 {
349 if (!*args)
350 return false;
351
352 return HandleRemoveDisables(handler, args, DISABLE_TYPE_BATTLEGROUND);
353 }
354
355 static bool HandleRemoveDisableAchievementCriteriaCommand(ChatHandler* handler, char const* args)
356 {
357 if (!*args)
358 return false;
359
361 }
362
363 static bool HandleRemoveDisableOutdoorPvPCommand(ChatHandler* handler, char const* args)
364 {
365 if (!*args)
366 return false;
367
368 return HandleRemoveDisables(handler, args, DISABLE_TYPE_OUTDOORPVP);
369 }
370
371 static bool HandleRemoveDisableVmapCommand(ChatHandler* handler, char const* args)
372 {
373 if (!*args)
374 return false;
375
376 return HandleRemoveDisables(handler, args, DISABLE_TYPE_VMAP);
377 }
378
379 static bool HandleRemoveDisableMMapCommand(ChatHandler* handler, char const* args)
380 {
381 if (!*args)
382 return false;
383
384 return HandleRemoveDisables(handler, args, DISABLE_TYPE_MMAP);
385 }
386};
387
#define sAchievementMgr
DBCStorage< BattlemasterListEntry > sBattlemasterListStore(BattlemasterListEntryfmt)
DBCStorage< MapEntry > sMapStore(MapEntryfmt)
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define OVERRIDE
Definition Define.h:60
@ DISABLE_TYPE_SPELL
Definition DisableMgr.h:15
@ DISABLE_TYPE_MMAP
Definition DisableMgr.h:22
@ DISABLE_TYPE_VMAP
Definition DisableMgr.h:21
@ DISABLE_TYPE_QUEST
Definition DisableMgr.h:16
@ DISABLE_TYPE_MAP
Definition DisableMgr.h:17
@ DISABLE_TYPE_BATTLEGROUND
Definition DisableMgr.h:18
@ DISABLE_TYPE_ACHIEVEMENT_CRITERIA
Definition DisableMgr.h:19
@ DISABLE_TYPE_OUTDOORPVP
Definition DisableMgr.h:20
@ LANG_COMMAND_NO_ACHIEVEMENT_CRITERIA_FOUND
Definition Language.h:1101
@ LANG_COMMAND_NOMAPFOUND
Definition Language.h:1080
@ LANG_COMMAND_NO_BATTLEGROUND_FOUND
Definition Language.h:1100
@ LANG_COMMAND_NOSPELLFOUND
Definition Language.h:425
@ LANG_COMMAND_QUEST_NOTFOUND
Definition Language.h:452
@ LANG_COMMAND_NO_OUTDOOR_PVP_FORUND
Definition Language.h:1102
#define sObjectMgr
Definition ObjectMgr.h:1617
#define MAX_OUTDOORPVP_TYPES
Definition OutdoorPvP.h:25
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
Definition QueryResult.h:94
#define sSpellMgr
Definition SpellMgr.h:744
@ WORLD_DEL_DISABLES
@ WORLD_INS_DISABLES
@ WORLD_SEL_DISABLES
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
Definition Chat.cpp:221
void SetSentErrorMessage(bool val)
Definition Chat.h:114
CommandScript(const char *name)
void setString(const uint8 index, const std::string &value)
void setUInt16(const uint8 index, const uint16 value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
static bool HandleAddDisableBattlegroundCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableSpellCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableMapCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableAchievementCriteriaCommand(ChatHandler *handler, char const *args)
std::vector< ChatCommand > GetCommands() const OVERRIDE
static bool HandleAddDisableAchievementCriteriaCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableMMapCommand(ChatHandler *handler, char const *args)
static bool HandleAddDisableMapCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableQuestCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableOutdoorPvPCommand(ChatHandler *handler, char const *args)
static bool HandleAddDisableVmapCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableVmapCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisableBattlegroundCommand(ChatHandler *handler, char const *args)
static bool HandleRemoveDisables(ChatHandler *handler, char const *args, uint8 disableType)
static bool HandleAddDisableOutdoorPvPCommand(ChatHandler *handler, char const *args)
static bool HandleAddDisableSpellCommand(ChatHandler *handler, char const *args)
static bool HandleAddDisables(ChatHandler *handler, char const *args, uint8 disableType)
static bool HandleAddDisableQuestCommand(ChatHandler *handler, char const *args)
static bool HandleAddDisableMMapCommand(ChatHandler *handler, char const *args)
void AddSC_disable_commandscript()
WorldDatabaseWorkerPool WorldDatabase
Accessor to the world database.
Definition Main.cpp:40
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_ACHIEVEMENT_CRITERIA
Definition RBAC.h:247
@ RBAC_PERM_COMMAND_DISABLE_ADD_BATTLEGROUND
Definition RBAC.h:239
@ RBAC_PERM_COMMAND_DISABLE_ADD_VMAP
Definition RBAC.h:245
@ RBAC_PERM_COMMAND_DISABLE_REMOVE
Definition RBAC.h:246
@ RBAC_PERM_COMMAND_DISABLE_ADD_SPELL
Definition RBAC.h:244
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_VMAP
Definition RBAC.h:254
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_MMAP
Definition RBAC.h:250
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_SPELL
Definition RBAC.h:253
@ RBAC_PERM_COMMAND_DISABLE_ADD_OUTDOORPVP
Definition RBAC.h:242
@ RBAC_PERM_COMMAND_DISABLE
Definition RBAC.h:236
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_MAP
Definition RBAC.h:249
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_BATTLEGROUND
Definition RBAC.h:248
@ RBAC_PERM_COMMAND_DISABLE_ADD
Definition RBAC.h:237
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_QUEST
Definition RBAC.h:252
@ RBAC_PERM_COMMAND_DISABLE_ADD_MMAP
Definition RBAC.h:241
@ RBAC_PERM_COMMAND_DISABLE_ADD_MAP
Definition RBAC.h:240
@ RBAC_PERM_COMMAND_DISABLE_ADD_QUEST
Definition RBAC.h:243
@ RBAC_PERM_COMMAND_DISABLE_REMOVE_OUTDOORPVP
Definition RBAC.h:251
@ RBAC_PERM_COMMAND_DISABLE_ADD_ACHIEVEMENT_CRITERIA
Definition RBAC.h:238