Merge branch 'master' into Playerbot

This commit is contained in:
Yunfan Li
2024-07-19 17:25:43 +08:00
141 changed files with 225779 additions and 226517 deletions

View File

@@ -42,7 +42,9 @@ public:
static ChatCommandTable ticketResponseCommandTable =
{
{ "append", HandleGMTicketResponseAppendCommand, SEC_GAMEMASTER, Console::Yes },
{ "appendln", HandleGMTicketResponseAppendLnCommand, SEC_GAMEMASTER, Console::Yes }
{ "appendln", HandleGMTicketResponseAppendLnCommand, SEC_GAMEMASTER, Console::Yes },
{ "delete", HandleGMTicketResponseDeleteCommand, SEC_GAMEMASTER, Console::Yes },
{ "show", HandleGMTicketResponseShowCommand, SEC_GAMEMASTER, Console::Yes }
};
static ChatCommandTable ticketCommandTable =
{
@@ -436,10 +438,9 @@ public:
return true;
}
static bool _HandleGMTicketResponseAppendCommand(uint32 ticketId, bool newLine, ChatHandler* handler)
static bool TicketResponseAppend(uint32 ticketId, bool newLine, ChatHandler* handler, std::string response)
{
char* response = strtok(nullptr, "\n");
if (!response)
if (response.empty())
return false;
GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
@@ -459,22 +460,74 @@ public:
}
CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr);
ticket->AppendResponse(response);
if (newLine)
ticket->AppendResponse("\n");
ticket->AppendResponse(response);
ticket->SaveToDB(trans);
sTicketMgr->UpdateLastChange();
std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, nullptr);
msg += handler->PGetParseString(LANG_COMMAND_TICKETRESPONSEAPPENDED, response);
handler->PSendSysMessage(msg.c_str());
return true;
}
static bool HandleGMTicketResponseAppendCommand(ChatHandler* handler, uint32 ticketId)
static bool HandleGMTicketResponseAppendCommand(ChatHandler* handler, uint32 ticketId, Tail res)
{
return _HandleGMTicketResponseAppendCommand(ticketId, false, handler);
return TicketResponseAppend(ticketId, false, handler, res.data());
}
static bool HandleGMTicketResponseAppendLnCommand(ChatHandler* handler, uint32 ticketId)
static bool HandleGMTicketResponseAppendLnCommand(ChatHandler* handler, uint32 ticketId, Tail res)
{
return _HandleGMTicketResponseAppendCommand(ticketId, true, handler);
return TicketResponseAppend(ticketId, true, handler, res.data());
}
static bool HandleGMTicketResponseDeleteCommand(ChatHandler* handler, uint32 ticketId)
{
GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
// Don't allow deleting response for a closed ticket.
if (!ticket || ticket->IsClosed())
{
handler->SendSysMessage(LANG_COMMAND_TICKETNOTEXIST);
return true;
}
// Cannot delete response for a ticket that is assigned to someone else.
//! Console excluded
Player* player = handler->GetSession() ? handler->GetSession()->GetPlayer() : nullptr;
if (player && ticket->IsAssignedNotTo(player->GetGUID()))
{
handler->PSendSysMessage(LANG_COMMAND_TICKETALREADYASSIGNED, ticket->GetId());
return true;
}
CharacterDatabaseTransaction trans = CharacterDatabaseTransaction(nullptr);
ticket->DeleteResponse();
ticket->SaveToDB(trans);
sTicketMgr->UpdateLastChange();
std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, nullptr);
msg += handler->PGetParseString(LANG_COMMAND_TICKETRESPONSEDELETED, player ? player->GetName() : "Console");
handler->SendGlobalGMSysMessage(msg.c_str());
return true;
}
static bool HandleGMTicketResponseShowCommand(ChatHandler* handler, uint32 ticketId)
{
GmTicket* ticket = sTicketMgr->GetTicket(ticketId);
if (!ticket)
{
handler->SendSysMessage(LANG_COMMAND_TICKETNOTEXIST);
return true;
}
std::string msg = ticket->FormatMessageString(*handler, nullptr, nullptr, nullptr, nullptr);
msg += handler->PGetParseString(LANG_COMMAND_TICKETLISTRESPONSE, ticket->GetResponse());
handler->PSendSysMessage(msg.c_str());
return true;
}
};