mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-25 15:07:28 +00:00
breakout gmlevel into a scoped enum (#996)
* breakout gmlevel enum and make it a class tested that things still work slash command, chat restrictions, packets and serializations * fix GM level for some slash commands * fix new use of this enum
This commit is contained in:
parent
b967cc57d1
commit
72ca0f13ff
@ -12,6 +12,7 @@
|
|||||||
#include "dConfig.h"
|
#include "dConfig.h"
|
||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
using namespace dChatFilterDCF;
|
using namespace dChatFilterDCF;
|
||||||
|
|
||||||
@ -108,8 +109,8 @@ void dChatFilter::ExportWordlistToDCF(const std::string& filepath, bool whiteLis
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::pair<uint8_t, uint8_t>> dChatFilter::IsSentenceOkay(const std::string& message, int gmLevel, bool whiteList) {
|
std::vector<std::pair<uint8_t, uint8_t>> dChatFilter::IsSentenceOkay(const std::string& message, eGameMasterLevel gmLevel, bool whiteList) {
|
||||||
if (gmLevel > GAME_MASTER_LEVEL_FORUM_MODERATOR) return { }; //If anything but a forum mod, return true.
|
if (gmLevel > eGameMasterLevel::FORUM_MODERATOR) return { }; //If anything but a forum mod, return true.
|
||||||
if (message.empty()) return { };
|
if (message.empty()) return { };
|
||||||
if (!whiteList && m_DeniedWords.empty()) return { { 0, message.length() } };
|
if (!whiteList && m_DeniedWords.empty()) return { { 0, message.length() } };
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "dCommonVars.h"
|
#include "dCommonVars.h"
|
||||||
|
|
||||||
|
enum class eGameMasterLevel : uint8_t;
|
||||||
namespace dChatFilterDCF {
|
namespace dChatFilterDCF {
|
||||||
static const uint32_t header = ('D' + ('C' << 8) + ('F' << 16) + ('B' << 24));
|
static const uint32_t header = ('D' + ('C' << 8) + ('F' << 16) + ('B' << 24));
|
||||||
static const uint32_t formatVersion = 2;
|
static const uint32_t formatVersion = 2;
|
||||||
@ -23,7 +24,7 @@ public:
|
|||||||
void ReadWordlistPlaintext(const std::string& filepath, bool whiteList);
|
void ReadWordlistPlaintext(const std::string& filepath, bool whiteList);
|
||||||
bool ReadWordlistDCF(const std::string& filepath, bool whiteList);
|
bool ReadWordlistDCF(const std::string& filepath, bool whiteList);
|
||||||
void ExportWordlistToDCF(const std::string& filepath, bool whiteList);
|
void ExportWordlistToDCF(const std::string& filepath, bool whiteList);
|
||||||
std::vector<std::pair<uint8_t, uint8_t>> IsSentenceOkay(const std::string& message, int gmLevel, bool whiteList = true);
|
std::vector<std::pair<uint8_t, uint8_t>> IsSentenceOkay(const std::string& message, eGameMasterLevel gmLevel, bool whiteList = true);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool m_DontGenerateDCF;
|
bool m_DontGenerateDCF;
|
||||||
|
@ -175,21 +175,6 @@ union suchar {
|
|||||||
char svalue;
|
char svalue;
|
||||||
};
|
};
|
||||||
|
|
||||||
//=========== DLU ENUMS ============
|
|
||||||
|
|
||||||
enum eGameMasterLevel : int32_t {
|
|
||||||
GAME_MASTER_LEVEL_CIVILIAN = 0, // Normal player.
|
|
||||||
GAME_MASTER_LEVEL_FORUM_MODERATOR = 1, // No permissions on live servers.
|
|
||||||
GAME_MASTER_LEVEL_JUNIOR_MODERATOR = 2, // Can kick/mute and pull chat logs.
|
|
||||||
GAME_MASTER_LEVEL_MODERATOR = 3, // Can return lost items.
|
|
||||||
GAME_MASTER_LEVEL_SENIOR_MODERATOR = 4, // Can ban.
|
|
||||||
GAME_MASTER_LEVEL_LEAD_MODERATOR = 5, // Can approve properties.
|
|
||||||
GAME_MASTER_LEVEL_JUNIOR_DEVELOPER = 6, // Junior developer & future content team. Civilan on live.
|
|
||||||
GAME_MASTER_LEVEL_INACTIVE_DEVELOPER = 7, // Inactive developer, limited permissions.
|
|
||||||
GAME_MASTER_LEVEL_DEVELOPER = 8, // Active developer, full permissions on live.
|
|
||||||
GAME_MASTER_LEVEL_OPERATOR = 9 // Can shutdown server for restarts & updates.
|
|
||||||
};
|
|
||||||
|
|
||||||
//=========== LU ENUMS ============
|
//=========== LU ENUMS ============
|
||||||
|
|
||||||
//! An enum for object ID bits
|
//! An enum for object ID bits
|
||||||
|
20
dCommon/dEnums/eGameMasterLevel.h
Normal file
20
dCommon/dEnums/eGameMasterLevel.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#ifndef __EGAMEMASTERLEVEL__H__
|
||||||
|
#define __EGAMEMASTERLEVEL__H__
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
enum class eGameMasterLevel : uint8_t {
|
||||||
|
CIVILIAN = 0, // Normal player.
|
||||||
|
FORUM_MODERATOR = 1, // No permissions on live servers.
|
||||||
|
JUNIOR_MODERATOR = 2, // Can kick/mute and pull chat logs.
|
||||||
|
MODERATOR = 3, // Can return lost items.
|
||||||
|
SENIOR_MODERATOR = 4, // Can ban.
|
||||||
|
LEAD_MODERATOR = 5, // Can approve properties.
|
||||||
|
JUNIOR_DEVELOPER = 6, // Junior developer & future content team. Civilan on live.
|
||||||
|
INACTIVE_DEVELOPER = 7, // Inactive developer, limited permissions.
|
||||||
|
DEVELOPER = 8, // Active developer, full permissions on live.
|
||||||
|
OPERATOR = 9 // Can shutdown server for restarts & updates.
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif //!__EGAMEMASTERLEVEL__H__
|
@ -18,6 +18,7 @@
|
|||||||
#include "InventoryComponent.h"
|
#include "InventoryComponent.h"
|
||||||
#include "eMissionTaskType.h"
|
#include "eMissionTaskType.h"
|
||||||
#include "eMissionState.h"
|
#include "eMissionState.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
Character::Character(uint32_t id, User* parentUser) {
|
Character::Character(uint32_t id, User* parentUser) {
|
||||||
//First load the name, etc:
|
//First load the name, etc:
|
||||||
@ -204,7 +205,9 @@ void Character::DoQuickXMLDataParse() {
|
|||||||
tinyxml2::XMLElement* character = m_Doc->FirstChildElement("obj")->FirstChildElement("char");
|
tinyxml2::XMLElement* character = m_Doc->FirstChildElement("obj")->FirstChildElement("char");
|
||||||
if (character) {
|
if (character) {
|
||||||
character->QueryAttribute("cc", &m_Coins);
|
character->QueryAttribute("cc", &m_Coins);
|
||||||
character->QueryAttribute("gm", &m_GMLevel);
|
int32_t gm_level = 0;
|
||||||
|
character->QueryAttribute("gm", &gm_level);
|
||||||
|
m_GMLevel = static_cast<eGameMasterLevel>(gm_level);
|
||||||
|
|
||||||
uint64_t lzidConcat = 0;
|
uint64_t lzidConcat = 0;
|
||||||
if (character->FindAttribute("lzid")) {
|
if (character->FindAttribute("lzid")) {
|
||||||
@ -304,7 +307,7 @@ void Character::SaveXMLToDatabase() {
|
|||||||
|
|
||||||
tinyxml2::XMLElement* character = m_Doc->FirstChildElement("obj")->FirstChildElement("char");
|
tinyxml2::XMLElement* character = m_Doc->FirstChildElement("obj")->FirstChildElement("char");
|
||||||
if (character) {
|
if (character) {
|
||||||
character->SetAttribute("gm", m_GMLevel);
|
character->SetAttribute("gm", static_cast<uint32_t>(m_GMLevel));
|
||||||
character->SetAttribute("cc", m_Coins);
|
character->SetAttribute("cc", m_Coins);
|
||||||
|
|
||||||
auto zoneInfo = dZoneManager::Instance()->GetZone()->GetZoneID();
|
auto zoneInfo = dZoneManager::Instance()->GetZone()->GetZoneID();
|
||||||
@ -545,7 +548,7 @@ void Character::OnZoneLoad() {
|
|||||||
const auto maxGMLevel = m_ParentUser->GetMaxGMLevel();
|
const auto maxGMLevel = m_ParentUser->GetMaxGMLevel();
|
||||||
|
|
||||||
// This does not apply to the GMs
|
// This does not apply to the GMs
|
||||||
if (maxGMLevel > GAME_MASTER_LEVEL_CIVILIAN) {
|
if (maxGMLevel > eGameMasterLevel::CIVILIAN) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ class User;
|
|||||||
struct Packet;
|
struct Packet;
|
||||||
class Entity;
|
class Entity;
|
||||||
enum class ePermissionMap : uint64_t;
|
enum class ePermissionMap : uint64_t;
|
||||||
|
enum class eGameMasterLevel : uint8_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Meta information about a character, like their name and style
|
* Meta information about a character, like their name and style
|
||||||
@ -308,13 +309,13 @@ public:
|
|||||||
* Gets the GM level of the character
|
* Gets the GM level of the character
|
||||||
* @return the GM level
|
* @return the GM level
|
||||||
*/
|
*/
|
||||||
int32_t GetGMLevel() const { return m_GMLevel; }
|
eGameMasterLevel GetGMLevel() const { return m_GMLevel; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the GM level of the character
|
* Sets the GM level of the character
|
||||||
* @param value the GM level to set
|
* @param value the GM level to set
|
||||||
*/
|
*/
|
||||||
void SetGMLevel(uint8_t value) { m_GMLevel = value; }
|
void SetGMLevel(eGameMasterLevel value) { m_GMLevel = value; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the current amount of coins of the character
|
* Gets the current amount of coins of the character
|
||||||
@ -481,7 +482,7 @@ private:
|
|||||||
*
|
*
|
||||||
* @see eGameMasterLevel
|
* @see eGameMasterLevel
|
||||||
*/
|
*/
|
||||||
int32_t m_GMLevel;
|
eGameMasterLevel m_GMLevel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bitmap of permission attributes this character has.
|
* Bitmap of permission attributes this character has.
|
||||||
|
@ -70,6 +70,7 @@
|
|||||||
#include "RailActivatorComponent.h"
|
#include "RailActivatorComponent.h"
|
||||||
#include "LUPExhibitComponent.h"
|
#include "LUPExhibitComponent.h"
|
||||||
#include "TriggerComponent.h"
|
#include "TriggerComponent.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
#include "eReplicaComponentType.h"
|
#include "eReplicaComponentType.h"
|
||||||
|
|
||||||
// Table includes
|
// Table includes
|
||||||
@ -89,7 +90,7 @@ Entity::Entity(const LWOOBJID& objectID, EntityInfo info, Entity* parentEntity)
|
|||||||
m_TemplateID = info.lot;
|
m_TemplateID = info.lot;
|
||||||
m_ParentEntity = parentEntity;
|
m_ParentEntity = parentEntity;
|
||||||
m_Character = nullptr;
|
m_Character = nullptr;
|
||||||
m_GMLevel = 0;
|
m_GMLevel = eGameMasterLevel::CIVILIAN;
|
||||||
m_CollectibleID = 0;
|
m_CollectibleID = 0;
|
||||||
m_NetworkID = 0;
|
m_NetworkID = 0;
|
||||||
m_Groups = {};
|
m_Groups = {};
|
||||||
@ -857,7 +858,7 @@ void Entity::SetProximityRadius(dpEntity* entity, std::string name) {
|
|||||||
proxMon->SetProximityRadius(entity, name);
|
proxMon->SetProximityRadius(entity, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Entity::SetGMLevel(uint8_t value) {
|
void Entity::SetGMLevel(eGameMasterLevel value) {
|
||||||
m_GMLevel = value;
|
m_GMLevel = value;
|
||||||
if (GetParentUser()) {
|
if (GetParentUser()) {
|
||||||
Character* character = GetParentUser()->GetLastUsedChar();
|
Character* character = GetParentUser()->GetLastUsedChar();
|
||||||
@ -969,7 +970,7 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke
|
|||||||
|
|
||||||
outBitStream->Write0(); //ObjectWorldState
|
outBitStream->Write0(); //ObjectWorldState
|
||||||
|
|
||||||
if (m_GMLevel != 0) {
|
if (m_GMLevel != eGameMasterLevel::CIVILIAN) {
|
||||||
outBitStream->Write1();
|
outBitStream->Write1();
|
||||||
outBitStream->Write(m_GMLevel);
|
outBitStream->Write(m_GMLevel);
|
||||||
} else outBitStream->Write0(); //No GM Level
|
} else outBitStream->Write0(); //No GM Level
|
||||||
|
@ -31,6 +31,7 @@ class Item;
|
|||||||
class Character;
|
class Character;
|
||||||
class EntityCallbackTimer;
|
class EntityCallbackTimer;
|
||||||
enum class eTriggerEventType;
|
enum class eTriggerEventType;
|
||||||
|
enum class eGameMasterLevel : uint8_t;
|
||||||
enum class eReplicaComponentType : uint32_t;
|
enum class eReplicaComponentType : uint32_t;
|
||||||
|
|
||||||
namespace CppScripts {
|
namespace CppScripts {
|
||||||
@ -60,7 +61,7 @@ public:
|
|||||||
|
|
||||||
Character* GetCharacter() const { return m_Character; }
|
Character* GetCharacter() const { return m_Character; }
|
||||||
|
|
||||||
uint8_t GetGMLevel() const { return m_GMLevel; }
|
eGameMasterLevel GetGMLevel() const { return m_GMLevel; }
|
||||||
|
|
||||||
uint8_t GetCollectibleID() const { return uint8_t(m_CollectibleID); }
|
uint8_t GetCollectibleID() const { return uint8_t(m_CollectibleID); }
|
||||||
|
|
||||||
@ -108,7 +109,7 @@ public:
|
|||||||
|
|
||||||
void SetCharacter(Character* value) { m_Character = value; }
|
void SetCharacter(Character* value) { m_Character = value; }
|
||||||
|
|
||||||
void SetGMLevel(uint8_t value);
|
void SetGMLevel(eGameMasterLevel value);
|
||||||
|
|
||||||
void SetOwnerOverride(LWOOBJID value);
|
void SetOwnerOverride(LWOOBJID value);
|
||||||
|
|
||||||
@ -308,7 +309,7 @@ protected:
|
|||||||
|
|
||||||
Entity* m_ParentEntity; //For spawners and the like
|
Entity* m_ParentEntity; //For spawners and the like
|
||||||
std::vector<Entity*> m_ChildEntities;
|
std::vector<Entity*> m_ChildEntities;
|
||||||
uint8_t m_GMLevel;
|
eGameMasterLevel m_GMLevel;
|
||||||
uint16_t m_CollectibleID;
|
uint16_t m_CollectibleID;
|
||||||
std::vector<std::string> m_Groups;
|
std::vector<std::string> m_Groups;
|
||||||
uint16_t m_NetworkID;
|
uint16_t m_NetworkID;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include "MessageIdentifiers.h"
|
#include "MessageIdentifiers.h"
|
||||||
#include "dConfig.h"
|
#include "dConfig.h"
|
||||||
#include "eTriggerEventType.h"
|
#include "eTriggerEventType.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
#include "eReplicaComponentType.h"
|
#include "eReplicaComponentType.h"
|
||||||
|
|
||||||
EntityManager* EntityManager::m_Address = nullptr;
|
EntityManager* EntityManager::m_Address = nullptr;
|
||||||
@ -370,7 +371,7 @@ void EntityManager::ConstructEntity(Entity* entity, const SystemAddress& sysAddr
|
|||||||
// PacketUtils::SavePacket("[24]_"+std::to_string(entity->GetObjectID()) + "_" + std::to_string(m_SerializationCounter) + ".bin", (char*)stream.GetData(), stream.GetNumberOfBytesUsed());
|
// PacketUtils::SavePacket("[24]_"+std::to_string(entity->GetObjectID()) + "_" + std::to_string(m_SerializationCounter) + ".bin", (char*)stream.GetData(), stream.GetNumberOfBytesUsed());
|
||||||
|
|
||||||
if (entity->IsPlayer()) {
|
if (entity->IsPlayer()) {
|
||||||
if (entity->GetGMLevel() > GAME_MASTER_LEVEL_CIVILIAN) {
|
if (entity->GetGMLevel() > eGameMasterLevel::CIVILIAN) {
|
||||||
GameMessages::SendToggleGMInvis(entity->GetObjectID(), true, sysAddr);
|
GameMessages::SendToggleGMInvis(entity->GetObjectID(), true, sysAddr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,13 +6,14 @@
|
|||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "dZoneManager.h"
|
#include "dZoneManager.h"
|
||||||
#include "eServerDisconnectIdentifiers.h"
|
#include "eServerDisconnectIdentifiers.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
User::User(const SystemAddress& sysAddr, const std::string& username, const std::string& sessionKey) {
|
User::User(const SystemAddress& sysAddr, const std::string& username, const std::string& sessionKey) {
|
||||||
m_AccountID = 0;
|
m_AccountID = 0;
|
||||||
m_Username = "";
|
m_Username = "";
|
||||||
m_SessionKey = "";
|
m_SessionKey = "";
|
||||||
|
|
||||||
m_MaxGMLevel = 0; //The max GM level this account can assign to it's characters
|
m_MaxGMLevel = eGameMasterLevel::CIVILIAN; //The max GM level this account can assign to it's characters
|
||||||
m_LastCharID = 0;
|
m_LastCharID = 0;
|
||||||
|
|
||||||
m_SessionKey = sessionKey;
|
m_SessionKey = sessionKey;
|
||||||
@ -33,7 +34,7 @@ User::User(const SystemAddress& sysAddr, const std::string& username, const std:
|
|||||||
sql::ResultSet* res = stmt->executeQuery();
|
sql::ResultSet* res = stmt->executeQuery();
|
||||||
while (res->next()) {
|
while (res->next()) {
|
||||||
m_AccountID = res->getUInt(1);
|
m_AccountID = res->getUInt(1);
|
||||||
m_MaxGMLevel = res->getInt(2);
|
m_MaxGMLevel = static_cast<eGameMasterLevel>(res->getInt(2));
|
||||||
m_MuteExpire = 0; //res->getUInt64(3);
|
m_MuteExpire = 0; //res->getUInt64(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
class Character;
|
class Character;
|
||||||
|
enum class eGameMasterLevel : uint8_t;
|
||||||
|
|
||||||
struct BehaviorParams {
|
struct BehaviorParams {
|
||||||
uint32_t behavior;
|
uint32_t behavior;
|
||||||
@ -29,7 +30,7 @@ public:
|
|||||||
std::string& GetSessionKey() { return m_SessionKey; }
|
std::string& GetSessionKey() { return m_SessionKey; }
|
||||||
SystemAddress& GetSystemAddress() { return m_SystemAddress; }
|
SystemAddress& GetSystemAddress() { return m_SystemAddress; }
|
||||||
|
|
||||||
uint32_t GetMaxGMLevel() { return m_MaxGMLevel; }
|
eGameMasterLevel GetMaxGMLevel() { return m_MaxGMLevel; }
|
||||||
uint32_t GetLastCharID() { return m_LastCharID; }
|
uint32_t GetLastCharID() { return m_LastCharID; }
|
||||||
void SetLastCharID(uint32_t newCharID) { m_LastCharID = newCharID; }
|
void SetLastCharID(uint32_t newCharID) { m_LastCharID = newCharID; }
|
||||||
|
|
||||||
@ -61,7 +62,7 @@ private:
|
|||||||
std::string m_SessionKey;
|
std::string m_SessionKey;
|
||||||
SystemAddress m_SystemAddress;
|
SystemAddress m_SystemAddress;
|
||||||
|
|
||||||
uint32_t m_MaxGMLevel; //The max GM level this account can assign to it's characters
|
eGameMasterLevel m_MaxGMLevel; //The max GM level this account can assign to it's characters
|
||||||
uint32_t m_LastCharID;
|
uint32_t m_LastCharID;
|
||||||
std::vector<Character*> m_Characters;
|
std::vector<Character*> m_Characters;
|
||||||
LWOOBJID m_LoggedInCharID;
|
LWOOBJID m_LoggedInCharID;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "AssetManager.h"
|
#include "AssetManager.h"
|
||||||
#include "CDClientDatabase.h"
|
#include "CDClientDatabase.h"
|
||||||
#include "dMessageIdentifiers.h"
|
#include "dMessageIdentifiers.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
UserManager* UserManager::m_Address = nullptr;
|
UserManager* UserManager::m_Address = nullptr;
|
||||||
|
|
||||||
@ -330,7 +331,7 @@ void UserManager::CreateCharacter(const SystemAddress& sysAddr, Packet* packet)
|
|||||||
|
|
||||||
//Check to see if our name was pre-approved:
|
//Check to see if our name was pre-approved:
|
||||||
bool nameOk = IsNamePreapproved(name);
|
bool nameOk = IsNamePreapproved(name);
|
||||||
if (!nameOk && u->GetMaxGMLevel() > 1) nameOk = true;
|
if (!nameOk && u->GetMaxGMLevel() > eGameMasterLevel::FORUM_MODERATOR) nameOk = true;
|
||||||
|
|
||||||
if (name != "") {
|
if (name != "") {
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("INSERT INTO `charinfo`(`id`, `account_id`, `name`, `pending_name`, `needs_rename`, `last_login`) VALUES (?,?,?,?,?,?)");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("INSERT INTO `charinfo`(`id`, `account_id`, `name`, `pending_name`, `needs_rename`, `last_login`) VALUES (?,?,?,?,?,?)");
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "GameMessages.h"
|
#include "GameMessages.h"
|
||||||
#include "Item.h"
|
#include "Item.h"
|
||||||
#include "AMFFormat.h"
|
#include "AMFFormat.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
CharacterComponent::CharacterComponent(Entity* parent, Character* character) : Component(parent) {
|
CharacterComponent::CharacterComponent(Entity* parent, Character* character) : Component(parent) {
|
||||||
m_Character = character;
|
m_Character = character;
|
||||||
@ -165,9 +166,9 @@ void CharacterComponent::SetPvpEnabled(const bool value) {
|
|||||||
m_PvpEnabled = value;
|
m_PvpEnabled = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CharacterComponent::SetGMLevel(int gmlevel) {
|
void CharacterComponent::SetGMLevel(eGameMasterLevel gmlevel) {
|
||||||
m_DirtyGMInfo = true;
|
m_DirtyGMInfo = true;
|
||||||
if (gmlevel > 0) m_IsGM = true;
|
if (gmlevel > eGameMasterLevel::CIVILIAN) m_IsGM = true;
|
||||||
else m_IsGM = false;
|
else m_IsGM = false;
|
||||||
m_GMLevel = gmlevel;
|
m_GMLevel = gmlevel;
|
||||||
}
|
}
|
||||||
@ -239,7 +240,7 @@ void CharacterComponent::LoadFromXml(tinyxml2::XMLDocument* doc) {
|
|||||||
// End custom attributes
|
// End custom attributes
|
||||||
//
|
//
|
||||||
|
|
||||||
if (m_GMLevel > 0) {
|
if (m_GMLevel > eGameMasterLevel::CIVILIAN) {
|
||||||
m_IsGM = true;
|
m_IsGM = true;
|
||||||
m_DirtyGMInfo = true;
|
m_DirtyGMInfo = true;
|
||||||
m_EditorLevel = m_GMLevel;
|
m_EditorLevel = m_GMLevel;
|
||||||
|
@ -178,7 +178,7 @@ public:
|
|||||||
* Sets the GM level of the character, should be called in the entity. Here it's set for serialization
|
* Sets the GM level of the character, should be called in the entity. Here it's set for serialization
|
||||||
* @param gmlevel the gm level to set
|
* @param gmlevel the gm level to set
|
||||||
*/
|
*/
|
||||||
void SetGMLevel(int gmlevel);
|
void SetGMLevel(eGameMasterLevel gmlevel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the player statistics from the string stored in the XML
|
* Initializes the player statistics from the string stored in the XML
|
||||||
@ -333,7 +333,7 @@ private:
|
|||||||
/**
|
/**
|
||||||
* The current GM level of this character (anything > 0 counts as a GM)
|
* The current GM level of this character (anything > 0 counts as a GM)
|
||||||
*/
|
*/
|
||||||
unsigned char m_GMLevel;
|
eGameMasterLevel m_GMLevel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the character has HF enabled
|
* Whether the character has HF enabled
|
||||||
@ -343,7 +343,7 @@ private:
|
|||||||
/**
|
/**
|
||||||
* The level of the character in HF
|
* The level of the character in HF
|
||||||
*/
|
*/
|
||||||
unsigned char m_EditorLevel;
|
eGameMasterLevel m_EditorLevel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the currently active activity has been changed
|
* Whether the currently active activity has been changed
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
#include "EntityInfo.h"
|
#include "EntityInfo.h"
|
||||||
#include "eMissionTaskType.h"
|
#include "eMissionTaskType.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
std::unordered_map<LOT, PetComponent::PetPuzzleData> PetComponent::buildCache{};
|
std::unordered_map<LOT, PetComponent::PetPuzzleData> PetComponent::buildCache{};
|
||||||
std::unordered_map<LWOOBJID, LWOOBJID> PetComponent::currentActivities{};
|
std::unordered_map<LWOOBJID, LWOOBJID> PetComponent::currentActivities{};
|
||||||
@ -988,7 +988,7 @@ void PetComponent::Command(NiPoint3 position, LWOOBJID source, int32_t commandTy
|
|||||||
// TODO: Go to player
|
// TODO: Go to player
|
||||||
}
|
}
|
||||||
|
|
||||||
if (owner->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (owner->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
ChatPackets::SendSystemMessage(owner->GetSystemAddress(), u"Commmand Type: " + (GeneralUtils::to_u16string(commandType)) + u" - Type Id: " + (GeneralUtils::to_u16string(typeId)));
|
ChatPackets::SendSystemMessage(owner->GetSystemAddress(), u"Commmand Type: " + (GeneralUtils::to_u16string(commandType)) + u" - Type Id: " + (GeneralUtils::to_u16string(typeId)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1080,7 +1080,7 @@ void PetComponent::SetPetNameForModeration(const std::string& petName) {
|
|||||||
int approved = 1; //default, in mod
|
int approved = 1; //default, in mod
|
||||||
|
|
||||||
//Make sure that the name isn't already auto-approved:
|
//Make sure that the name isn't already auto-approved:
|
||||||
if (Game::chatFilter->IsSentenceOkay(petName, 0).empty()) {
|
if (Game::chatFilter->IsSentenceOkay(petName, eGameMasterLevel::CIVILIAN).empty()) {
|
||||||
approved = 2; //approved
|
approved = 2; //approved
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "UserManager.h"
|
#include "UserManager.h"
|
||||||
#include "dLogger.h"
|
#include "dLogger.h"
|
||||||
#include "AMFFormat.h"
|
#include "AMFFormat.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
|
|
||||||
PropertyEntranceComponent::PropertyEntranceComponent(uint32_t componentID, Entity* parent) : Component(parent) {
|
PropertyEntranceComponent::PropertyEntranceComponent(uint32_t componentID, Entity* parent) : Component(parent) {
|
||||||
this->propertyQueries = {};
|
this->propertyQueries = {};
|
||||||
@ -271,7 +272,7 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity, bool incl
|
|||||||
|
|
||||||
bool isModeratorApproved = propertyEntry->getBoolean(10);
|
bool isModeratorApproved = propertyEntry->getBoolean(10);
|
||||||
|
|
||||||
if (!isModeratorApproved && entity->GetGMLevel() >= GAME_MASTER_LEVEL_LEAD_MODERATOR) {
|
if (!isModeratorApproved && entity->GetGMLevel() >= eGameMasterLevel::LEAD_MODERATOR) {
|
||||||
propertyName = "[AWAITING APPROVAL]";
|
propertyName = "[AWAITING APPROVAL]";
|
||||||
propertyDescription = "[AWAITING APPROVAL]";
|
propertyDescription = "[AWAITING APPROVAL]";
|
||||||
isModeratorApproved = true;
|
isModeratorApproved = true;
|
||||||
|
@ -303,7 +303,7 @@ bool ScriptedActivityComponent::HasLobby() const {
|
|||||||
|
|
||||||
bool ScriptedActivityComponent::IsValidActivity(Entity* player) {
|
bool ScriptedActivityComponent::IsValidActivity(Entity* player) {
|
||||||
// Makes it so that scripted activities with an unimplemented map cannot be joined
|
// Makes it so that scripted activities with an unimplemented map cannot be joined
|
||||||
/*if (player->GetGMLevel() < GAME_MASTER_LEVEL_DEVELOPER && (m_ActivityInfo.instanceMapID == 1302 || m_ActivityInfo.instanceMapID == 1301)) {
|
/*if (player->GetGMLevel() < eGameMasterLevel::DEVELOPER && (m_ActivityInfo.instanceMapID == 1302 || m_ActivityInfo.instanceMapID == 1301)) {
|
||||||
if (m_Parent->GetLOT() == 4860) {
|
if (m_Parent->GetLOT() == 4860) {
|
||||||
auto* missionComponent = player->GetComponent<MissionComponent>();
|
auto* missionComponent = player->GetComponent<MissionComponent>();
|
||||||
missionComponent->CompleteMission(229);
|
missionComponent->CompleteMission(229);
|
||||||
|
@ -409,7 +409,7 @@ void GameMessages::SendServerDoneLoadingAllObjects(Entity* entity, const SystemA
|
|||||||
SEND_PACKET;
|
SEND_PACKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameMessages::SendChatModeUpdate(const LWOOBJID& objectID, uint8_t level) {
|
void GameMessages::SendChatModeUpdate(const LWOOBJID& objectID, eGameMasterLevel level) {
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
CMSGHEADER;
|
CMSGHEADER;
|
||||||
bitStream.Write(objectID);
|
bitStream.Write(objectID);
|
||||||
@ -418,7 +418,7 @@ void GameMessages::SendChatModeUpdate(const LWOOBJID& objectID, uint8_t level) {
|
|||||||
SEND_PACKET_BROADCAST;
|
SEND_PACKET_BROADCAST;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameMessages::SendGMLevelBroadcast(const LWOOBJID& objectID, uint8_t level) {
|
void GameMessages::SendGMLevelBroadcast(const LWOOBJID& objectID, eGameMasterLevel level) {
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
CMSGHEADER;
|
CMSGHEADER;
|
||||||
bitStream.Write(objectID);
|
bitStream.Write(objectID);
|
||||||
|
@ -21,6 +21,7 @@ enum class eAnimationFlags : uint32_t;
|
|||||||
|
|
||||||
enum class eUnequippableActiveType;
|
enum class eUnequippableActiveType;
|
||||||
enum eInventoryType : uint32_t;
|
enum eInventoryType : uint32_t;
|
||||||
|
enum class eGameMasterLevel : uint8_t;
|
||||||
|
|
||||||
namespace GameMessages {
|
namespace GameMessages {
|
||||||
class PropertyDataMessage;
|
class PropertyDataMessage;
|
||||||
@ -61,8 +62,8 @@ namespace GameMessages {
|
|||||||
|
|
||||||
void SendRestoreToPostLoadStats(Entity* entity, const SystemAddress& sysAddr);
|
void SendRestoreToPostLoadStats(Entity* entity, const SystemAddress& sysAddr);
|
||||||
void SendServerDoneLoadingAllObjects(Entity* entity, const SystemAddress& sysAddr);
|
void SendServerDoneLoadingAllObjects(Entity* entity, const SystemAddress& sysAddr);
|
||||||
void SendGMLevelBroadcast(const LWOOBJID& objectID, uint8_t level);
|
void SendGMLevelBroadcast(const LWOOBJID& objectID, eGameMasterLevel level);
|
||||||
void SendChatModeUpdate(const LWOOBJID& objectID, uint8_t level);
|
void SendChatModeUpdate(const LWOOBJID& objectID, eGameMasterLevel level);
|
||||||
|
|
||||||
void SendAddItemToInventoryClientSync(Entity* entity, const SystemAddress& sysAddr, Item* item, const LWOOBJID& objectID, bool showFlyingLoot, int itemCount, LWOOBJID subKey = LWOOBJID_EMPTY, eLootSourceType lootSourceType = eLootSourceType::LOOT_SOURCE_NONE);
|
void SendAddItemToInventoryClientSync(Entity* entity, const SystemAddress& sysAddr, Item* item, const LWOOBJID& objectID, bool showFlyingLoot, int itemCount, LWOOBJID subKey = LWOOBJID_EMPTY, eLootSourceType lootSourceType = eLootSourceType::LOOT_SOURCE_NONE);
|
||||||
void SendNotifyClientFlagChange(const LWOOBJID& objectID, int iFlagID, bool bFlag, const SystemAddress& sysAddr);
|
void SendNotifyClientFlagChange(const LWOOBJID& objectID, int iFlagID, bool bFlag, const SystemAddress& sysAddr);
|
||||||
|
@ -75,6 +75,7 @@
|
|||||||
#include "eMissionState.h"
|
#include "eMissionState.h"
|
||||||
#include "TriggerComponent.h"
|
#include "TriggerComponent.h"
|
||||||
#include "eServerDisconnectIdentifiers.h"
|
#include "eServerDisconnectIdentifiers.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
#include "eReplicaComponentType.h"
|
#include "eReplicaComponentType.h"
|
||||||
|
|
||||||
#include "CDObjectsTable.h"
|
#include "CDObjectsTable.h"
|
||||||
@ -121,19 +122,20 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
//Game::logger->Log("SlashCommandHandler", "Received chat command \"%s\"", GeneralUtils::UTF16ToWTF8(command).c_str());
|
//Game::logger->Log("SlashCommandHandler", "Received chat command \"%s\"", GeneralUtils::UTF16ToWTF8(command).c_str());
|
||||||
|
|
||||||
User* user = UserManager::Instance()->GetUser(sysAddr);
|
User* user = UserManager::Instance()->GetUser(sysAddr);
|
||||||
if ((chatCommand == "setgmlevel" || chatCommand == "makegm" || chatCommand == "gmlevel") && user->GetMaxGMLevel() > GAME_MASTER_LEVEL_CIVILIAN) {
|
if ((chatCommand == "setgmlevel" || chatCommand == "makegm" || chatCommand == "gmlevel") && user->GetMaxGMLevel() > eGameMasterLevel::CIVILIAN) {
|
||||||
if (args.size() != 1) return;
|
if (args.size() != 1) return;
|
||||||
|
|
||||||
uint32_t level;
|
uint32_t level_intermed = 0;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], level)) {
|
if (!GeneralUtils::TryParse(args[0], level_intermed)) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Invalid gm level.");
|
ChatPackets::SendSystemMessage(sysAddr, u"Invalid gm level.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
eGameMasterLevel level = static_cast<eGameMasterLevel>(level_intermed);
|
||||||
|
|
||||||
#ifndef DEVELOPER_SERVER
|
#ifndef DEVELOPER_SERVER
|
||||||
if (user->GetMaxGMLevel() == GAME_MASTER_LEVEL_JUNIOR_DEVELOPER) {
|
if (user->GetMaxGMLevel() == eGameMasterLevel::JUNIOR_DEVELOPER) {
|
||||||
level = GAME_MASTER_LEVEL_CIVILIAN;
|
level = eGameMasterLevel::CIVILIAN;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -146,9 +148,9 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
||||||
if (entity->GetGMLevel() > GAME_MASTER_LEVEL_CIVILIAN && level == GAME_MASTER_LEVEL_CIVILIAN) {
|
if (entity->GetGMLevel() > eGameMasterLevel::CIVILIAN && level == eGameMasterLevel::CIVILIAN) {
|
||||||
GameMessages::SendToggleGMInvis(entity->GetObjectID(), false, UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendToggleGMInvis(entity->GetObjectID(), false, UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
} else if (entity->GetGMLevel() == GAME_MASTER_LEVEL_CIVILIAN && level > GAME_MASTER_LEVEL_CIVILIAN) {
|
} else if (entity->GetGMLevel() == eGameMasterLevel::CIVILIAN && level > eGameMasterLevel::CIVILIAN) {
|
||||||
GameMessages::SendToggleGMInvis(entity->GetObjectID(), true, UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendToggleGMInvis(entity->GetObjectID(), true, UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,10 +162,10 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DEVELOPER_SERVER
|
#ifndef DEVELOPER_SERVER
|
||||||
if ((entity->GetGMLevel() > user->GetMaxGMLevel()) || (entity->GetGMLevel() > GAME_MASTER_LEVEL_CIVILIAN && user->GetMaxGMLevel() == GAME_MASTER_LEVEL_JUNIOR_DEVELOPER)) {
|
if ((entity->GetGMLevel() > user->GetMaxGMLevel()) || (entity->GetGMLevel() > eGameMasterLevel::CIVILIAN && user->GetMaxGMLevel() == eGameMasterLevel::JUNIOR_DEVELOPER)) {
|
||||||
WorldPackets::SendGMLevelChange(sysAddr, true, user->GetMaxGMLevel(), entity->GetGMLevel(), GAME_MASTER_LEVEL_CIVILIAN);
|
WorldPackets::SendGMLevelChange(sysAddr, true, user->GetMaxGMLevel(), entity->GetGMLevel(), eGameMasterLevel::CIVILIAN);
|
||||||
GameMessages::SendChatModeUpdate(entity->GetObjectID(), GAME_MASTER_LEVEL_CIVILIAN);
|
GameMessages::SendChatModeUpdate(entity->GetObjectID(), eGameMasterLevel::CIVILIAN);
|
||||||
entity->SetGMLevel(GAME_MASTER_LEVEL_CIVILIAN);
|
entity->SetGMLevel(eGameMasterLevel::CIVILIAN);
|
||||||
|
|
||||||
GameMessages::SendToggleGMInvis(entity->GetObjectID(), false, UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendToggleGMInvis(entity->GetObjectID(), false, UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
|
|
||||||
@ -171,7 +173,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (chatCommand == "togglenameplate" && (Game::config->GetValue("allownameplateoff") == "1" || entity->GetGMLevel() > GAME_MASTER_LEVEL_DEVELOPER)) {
|
if (chatCommand == "togglenameplate" && (Game::config->GetValue("allownameplateoff") == "1" || entity->GetGMLevel() > eGameMasterLevel::DEVELOPER)) {
|
||||||
auto* character = entity->GetCharacter();
|
auto* character = entity->GetCharacter();
|
||||||
|
|
||||||
if (character && character->GetBillboardVisible()) {
|
if (character && character->GetBillboardVisible()) {
|
||||||
@ -349,7 +351,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user->GetMaxGMLevel() == 0 || entity->GetGMLevel() >= 0) {
|
if (user->GetMaxGMLevel() == eGameMasterLevel::CIVILIAN || entity->GetGMLevel() >= eGameMasterLevel::CIVILIAN) {
|
||||||
if (chatCommand == "die") {
|
if (chatCommand == "die") {
|
||||||
entity->Smash(entity->GetObjectID());
|
entity->Smash(entity->GetObjectID());
|
||||||
}
|
}
|
||||||
@ -375,7 +377,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
ChatPackets::SendSystemMessage(sysAddr, u"Map: " + (GeneralUtils::to_u16string(zoneId.GetMapID())) + u"\nClone: " + (GeneralUtils::to_u16string(zoneId.GetCloneID())) + u"\nInstance: " + (GeneralUtils::to_u16string(zoneId.GetInstanceID())));
|
ChatPackets::SendSystemMessage(sysAddr, u"Map: " + (GeneralUtils::to_u16string(zoneId.GetMapID())) + u"\nClone: " + (GeneralUtils::to_u16string(zoneId.GetCloneID())) + u"\nInstance: " + (GeneralUtils::to_u16string(zoneId.GetInstanceID())));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity->GetGMLevel() == 0) return;
|
if (entity->GetGMLevel() == eGameMasterLevel::CIVILIAN) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Log command to database
|
// Log command to database
|
||||||
@ -385,7 +387,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
stmt->execute();
|
stmt->execute();
|
||||||
delete stmt;
|
delete stmt;
|
||||||
|
|
||||||
if (chatCommand == "setminifig" && args.size() == 2 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_FORUM_MODERATOR) { // could break characters so only allow if GM > 0
|
if (chatCommand == "setminifig" && args.size() == 2 && entity->GetGMLevel() >= eGameMasterLevel::FORUM_MODERATOR) { // could break characters so only allow if GM > 0
|
||||||
int32_t minifigItemId;
|
int32_t minifigItemId;
|
||||||
if (!GeneralUtils::TryParse(args[1], minifigItemId)) {
|
if (!GeneralUtils::TryParse(args[1], minifigItemId)) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Invalid Minifig Item Id ID.");
|
ChatPackets::SendSystemMessage(sysAddr, u"Invalid Minifig Item Id ID.");
|
||||||
@ -429,7 +431,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendToggleGMInvis(entity->GetObjectID(), false, UNASSIGNED_SYSTEM_ADDRESS); // need to retoggle because it gets reenabled on creation of new character
|
GameMessages::SendToggleGMInvis(entity->GetObjectID(), false, UNASSIGNED_SYSTEM_ADDRESS); // need to retoggle because it gets reenabled on creation of new character
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "playanimation" || chatCommand == "playanim") && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "playanimation" || chatCommand == "playanim") && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
std::u16string anim = GeneralUtils::ASCIIToUTF16(args[0], args[0].size());
|
std::u16string anim = GeneralUtils::ASCIIToUTF16(args[0], args[0].size());
|
||||||
GameMessages::SendPlayAnimation(entity, anim);
|
GameMessages::SendPlayAnimation(entity, anim);
|
||||||
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
||||||
@ -439,7 +441,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "list-spawns" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "list-spawns" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
for (const auto& pair : EntityManager::Instance()->GetSpawnPointEntities()) {
|
for (const auto& pair : EntityManager::Instance()->GetSpawnPointEntities()) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, GeneralUtils::ASCIIToUTF16(pair.first));
|
ChatPackets::SendSystemMessage(sysAddr, GeneralUtils::ASCIIToUTF16(pair.first));
|
||||||
}
|
}
|
||||||
@ -449,7 +451,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "unlock-emote" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "unlock-emote" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
int32_t emoteID;
|
int32_t emoteID;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], emoteID)) {
|
if (!GeneralUtils::TryParse(args[0], emoteID)) {
|
||||||
@ -460,11 +462,11 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
entity->GetCharacter()->UnlockEmote(emoteID);
|
entity->GetCharacter()->UnlockEmote(emoteID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "force-save" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "force-save" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
entity->GetCharacter()->SaveXMLToDatabase();
|
entity->GetCharacter()->SaveXMLToDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "kill" && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "kill" && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Brutally murdering that player, if online on this server.");
|
ChatPackets::SendSystemMessage(sysAddr, u"Brutally murdering that player, if online on this server.");
|
||||||
|
|
||||||
auto* user = UserManager::Instance()->GetUser(args[0]);
|
auto* user = UserManager::Instance()->GetUser(args[0]);
|
||||||
@ -479,7 +481,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "speedboost" && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "speedboost" && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
float boost;
|
float boost;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], boost)) {
|
if (!GeneralUtils::TryParse(args[0], boost)) {
|
||||||
@ -510,7 +512,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
EntityManager::Instance()->SerializeEntity(entity);
|
EntityManager::Instance()->SerializeEntity(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "freecam" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "freecam" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
const auto state = !entity->GetVar<bool>(u"freecam");
|
const auto state = !entity->GetVar<bool>(u"freecam");
|
||||||
entity->SetVar<bool>(u"freecam", state);
|
entity->SetVar<bool>(u"freecam", state);
|
||||||
|
|
||||||
@ -520,7 +522,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setcontrolscheme" && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "setcontrolscheme" && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
uint32_t scheme;
|
uint32_t scheme;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], scheme)) {
|
if (!GeneralUtils::TryParse(args[0], scheme)) {
|
||||||
@ -534,7 +536,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "approveproperty" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_LEAD_MODERATOR) {
|
if (chatCommand == "approveproperty" && entity->GetGMLevel() >= eGameMasterLevel::LEAD_MODERATOR) {
|
||||||
|
|
||||||
if (PropertyManagementComponent::Instance() != nullptr) {
|
if (PropertyManagementComponent::Instance() != nullptr) {
|
||||||
PropertyManagementComponent::Instance()->UpdateApprovedStatus(true);
|
PropertyManagementComponent::Instance()->UpdateApprovedStatus(true);
|
||||||
@ -543,7 +545,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setuistate" && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "setuistate" && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
AMFStringValue* value = new AMFStringValue();
|
AMFStringValue* value = new AMFStringValue();
|
||||||
value->SetStringValue(args[0]);
|
value->SetStringValue(args[0]);
|
||||||
|
|
||||||
@ -556,7 +558,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "toggle" && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "toggle" && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
AMFTrueValue* value = new AMFTrueValue();
|
AMFTrueValue* value = new AMFTrueValue();
|
||||||
|
|
||||||
AMFArrayValue amfArgs;
|
AMFArrayValue amfArgs;
|
||||||
@ -568,7 +570,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "setinventorysize" || chatCommand == "setinvsize") && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if ((chatCommand == "setinventorysize" || chatCommand == "setinvsize") && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args.at(0), size)) {
|
if (!GeneralUtils::TryParse(args.at(0), size)) {
|
||||||
@ -609,7 +611,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "runmacro" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "runmacro" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() != 1) return;
|
if (args.size() != 1) return;
|
||||||
|
|
||||||
// Only process if input does not contain separator charaters
|
// Only process if input does not contain separator charaters
|
||||||
@ -639,7 +641,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "addmission" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "addmission" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() == 0) return;
|
if (args.size() == 0) return;
|
||||||
|
|
||||||
uint32_t missionID;
|
uint32_t missionID;
|
||||||
@ -654,7 +656,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "completemission" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "completemission" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() == 0) return;
|
if (args.size() == 0) return;
|
||||||
|
|
||||||
uint32_t missionID;
|
uint32_t missionID;
|
||||||
@ -669,7 +671,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setflag" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() == 1) {
|
if (chatCommand == "setflag" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() == 1) {
|
||||||
uint32_t flagId;
|
uint32_t flagId;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], flagId)) {
|
if (!GeneralUtils::TryParse(args[0], flagId)) {
|
||||||
@ -680,7 +682,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
entity->GetCharacter()->SetPlayerFlag(flagId, true);
|
entity->GetCharacter()->SetPlayerFlag(flagId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setflag" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() == 2) {
|
if (chatCommand == "setflag" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() == 2) {
|
||||||
uint32_t flagId;
|
uint32_t flagId;
|
||||||
std::string onOffFlag = args[0];
|
std::string onOffFlag = args[0];
|
||||||
if (!GeneralUtils::TryParse(args[1], flagId)) {
|
if (!GeneralUtils::TryParse(args[1], flagId)) {
|
||||||
@ -693,7 +695,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
entity->GetCharacter()->SetPlayerFlag(flagId, onOffFlag == "on");
|
entity->GetCharacter()->SetPlayerFlag(flagId, onOffFlag == "on");
|
||||||
}
|
}
|
||||||
if (chatCommand == "clearflag" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() == 1) {
|
if (chatCommand == "clearflag" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() == 1) {
|
||||||
uint32_t flagId;
|
uint32_t flagId;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], flagId)) {
|
if (!GeneralUtils::TryParse(args[0], flagId)) {
|
||||||
@ -704,7 +706,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
entity->GetCharacter()->SetPlayerFlag(flagId, false);
|
entity->GetCharacter()->SetPlayerFlag(flagId, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "resetmission" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "resetmission" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() == 0) return;
|
if (args.size() == 0) return;
|
||||||
|
|
||||||
uint32_t missionID;
|
uint32_t missionID;
|
||||||
@ -731,7 +733,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "playeffect" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 3) {
|
if (chatCommand == "playeffect" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 3) {
|
||||||
int32_t effectID = 0;
|
int32_t effectID = 0;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], effectID)) {
|
if (!GeneralUtils::TryParse(args[0], effectID)) {
|
||||||
@ -742,11 +744,11 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendPlayFXEffect(entity->GetObjectID(), effectID, GeneralUtils::ASCIIToUTF16(args[1]), args[2]);
|
GameMessages::SendPlayFXEffect(entity->GetObjectID(), effectID, GeneralUtils::ASCIIToUTF16(args[1]), args[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "stopeffect" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "stopeffect" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
GameMessages::SendStopFXEffect(entity, true, args[0]);
|
GameMessages::SendStopFXEffect(entity, true, args[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setanntitle" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "setanntitle" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() < 0) return;
|
if (args.size() < 0) return;
|
||||||
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -757,7 +759,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setannmsg" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "setannmsg" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() < 0) return;
|
if (args.size() < 0) return;
|
||||||
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -768,7 +770,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "announce" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "announce" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (entity->GetCharacter()->GetAnnouncementTitle().size() == 0 || entity->GetCharacter()->GetAnnouncementMessage().size() == 0) {
|
if (entity->GetCharacter()->GetAnnouncementTitle().size() == 0 || entity->GetCharacter()->GetAnnouncementMessage().size() == 0) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Use /setanntitle <title> & /setannmsg <msg> first!");
|
ChatPackets::SendSystemMessage(sysAddr, u"Use /setanntitle <title> & /setannmsg <msg> first!");
|
||||||
return;
|
return;
|
||||||
@ -778,7 +780,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "shutdownuniverse" && entity->GetGMLevel() == GAME_MASTER_LEVEL_OPERATOR) {
|
if (chatCommand == "shutdownuniverse" && entity->GetGMLevel() == eGameMasterLevel::OPERATOR) {
|
||||||
//Tell the master server that we're going to be shutting down whole "universe":
|
//Tell the master server that we're going to be shutting down whole "universe":
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
PacketUtils::WriteHeader(bitStream, MASTER, MSG_MASTER_SHUTDOWN_UNIVERSE);
|
PacketUtils::WriteHeader(bitStream, MASTER, MSG_MASTER_SHUTDOWN_UNIVERSE);
|
||||||
@ -790,7 +792,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "getnavmeshheight" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "getnavmeshheight" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto control = static_cast<ControllablePhysicsComponent*>(entity->GetComponent(eReplicaComponentType::CONTROLLABLE_PHYSICS));
|
auto control = static_cast<ControllablePhysicsComponent*>(entity->GetComponent(eReplicaComponentType::CONTROLLABLE_PHYSICS));
|
||||||
if (!control) return;
|
if (!control) return;
|
||||||
|
|
||||||
@ -799,7 +801,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
ChatPackets::SendSystemMessage(sysAddr, msg);
|
ChatPackets::SendSystemMessage(sysAddr, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "gmadditem" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "gmadditem" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
if (args.size() == 1) {
|
if (args.size() == 1) {
|
||||||
uint32_t itemLOT;
|
uint32_t itemLOT;
|
||||||
|
|
||||||
@ -834,7 +836,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "mailitem" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_MODERATOR && args.size() >= 2) {
|
if (chatCommand == "mailitem" && entity->GetGMLevel() >= eGameMasterLevel::MODERATOR && args.size() >= 2) {
|
||||||
const auto& playerName = args[0];
|
const auto& playerName = args[0];
|
||||||
|
|
||||||
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT id from charinfo WHERE name=? LIMIT 1;");
|
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("SELECT id from charinfo WHERE name=? LIMIT 1;");
|
||||||
@ -883,7 +885,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "setname" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "setname" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
std::string name = "";
|
std::string name = "";
|
||||||
|
|
||||||
for (const auto& arg : args) {
|
for (const auto& arg : args) {
|
||||||
@ -893,7 +895,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendSetName(entity->GetObjectID(), GeneralUtils::UTF8ToUTF16(name), UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendSetName(entity->GetObjectID(), GeneralUtils::UTF8ToUTF16(name), UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "title" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "title" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
std::string name = entity->GetCharacter()->GetName() + " - ";
|
std::string name = entity->GetCharacter()->GetName() + " - ";
|
||||||
|
|
||||||
for (const auto& arg : args) {
|
for (const auto& arg : args) {
|
||||||
@ -903,7 +905,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendSetName(entity->GetObjectID(), GeneralUtils::UTF8ToUTF16(name), UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendSetName(entity->GetObjectID(), GeneralUtils::UTF8ToUTF16(name), UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "teleport" || chatCommand == "tele") && entity->GetGMLevel() >= GAME_MASTER_LEVEL_JUNIOR_MODERATOR) {
|
if ((chatCommand == "teleport" || chatCommand == "tele") && entity->GetGMLevel() >= eGameMasterLevel::JUNIOR_MODERATOR) {
|
||||||
NiPoint3 pos{};
|
NiPoint3 pos{};
|
||||||
if (args.size() == 3) {
|
if (args.size() == 3) {
|
||||||
|
|
||||||
@ -969,7 +971,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "tpall" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "tpall" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
const auto pos = entity->GetPosition();
|
const auto pos = entity->GetPosition();
|
||||||
|
|
||||||
const auto characters = EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::CHARACTER);
|
const auto characters = EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::CHARACTER);
|
||||||
@ -981,7 +983,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "dismount" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "dismount" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
||||||
if (possessorComponent) {
|
if (possessorComponent) {
|
||||||
auto possessableId = possessorComponent->GetPossessable();
|
auto possessableId = possessorComponent->GetPossessable();
|
||||||
@ -992,7 +994,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "fly" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_JUNIOR_DEVELOPER) {
|
if (chatCommand == "fly" && entity->GetGMLevel() >= eGameMasterLevel::JUNIOR_DEVELOPER) {
|
||||||
auto* character = entity->GetCharacter();
|
auto* character = entity->GetCharacter();
|
||||||
|
|
||||||
if (character) {
|
if (character) {
|
||||||
@ -1028,7 +1030,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
|
|
||||||
//------- GM COMMANDS TO ACTUALLY MODERATE --------
|
//------- GM COMMANDS TO ACTUALLY MODERATE --------
|
||||||
|
|
||||||
if (chatCommand == "mute" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_JUNIOR_DEVELOPER) {
|
if (chatCommand == "mute" && entity->GetGMLevel() >= eGameMasterLevel::JUNIOR_DEVELOPER) {
|
||||||
if (args.size() >= 1) {
|
if (args.size() >= 1) {
|
||||||
auto* player = Player::GetPlayer(args[0]);
|
auto* player = Player::GetPlayer(args[0]);
|
||||||
|
|
||||||
@ -1123,7 +1125,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "kick" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_JUNIOR_MODERATOR) {
|
if (chatCommand == "kick" && entity->GetGMLevel() >= eGameMasterLevel::JUNIOR_MODERATOR) {
|
||||||
if (args.size() == 1) {
|
if (args.size() == 1) {
|
||||||
auto* player = Player::GetPlayer(args[0]);
|
auto* player = Player::GetPlayer(args[0]);
|
||||||
|
|
||||||
@ -1141,7 +1143,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "ban" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_SENIOR_MODERATOR) {
|
if (chatCommand == "ban" && entity->GetGMLevel() >= eGameMasterLevel::SENIOR_MODERATOR) {
|
||||||
if (args.size() == 1) {
|
if (args.size() == 1) {
|
||||||
auto* player = Player::GetPlayer(args[0]);
|
auto* player = Player::GetPlayer(args[0]);
|
||||||
|
|
||||||
@ -1190,7 +1192,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
if (chatCommand == "buffme" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "buffme" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto dest = static_cast<DestroyableComponent*>(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
|
auto dest = static_cast<DestroyableComponent*>(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
|
||||||
if (dest) {
|
if (dest) {
|
||||||
dest->SetHealth(999);
|
dest->SetHealth(999);
|
||||||
@ -1203,7 +1205,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
EntityManager::Instance()->SerializeEntity(entity);
|
EntityManager::Instance()->SerializeEntity(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "startcelebration" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() == 1) {
|
if (chatCommand == "startcelebration" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() == 1) {
|
||||||
int32_t celebration;
|
int32_t celebration;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], celebration)) {
|
if (!GeneralUtils::TryParse(args[0], celebration)) {
|
||||||
@ -1214,7 +1216,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendStartCelebrationEffect(entity, entity->GetSystemAddress(), celebration);
|
GameMessages::SendStartCelebrationEffect(entity, entity->GetSystemAddress(), celebration);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "buffmed" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "buffmed" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto dest = static_cast<DestroyableComponent*>(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
|
auto dest = static_cast<DestroyableComponent*>(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
|
||||||
if (dest) {
|
if (dest) {
|
||||||
dest->SetHealth(9);
|
dest->SetHealth(9);
|
||||||
@ -1227,7 +1229,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
EntityManager::Instance()->SerializeEntity(entity);
|
EntityManager::Instance()->SerializeEntity(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "refillstats" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "refillstats" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
|
|
||||||
auto dest = static_cast<DestroyableComponent*>(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
|
auto dest = static_cast<DestroyableComponent*>(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
|
||||||
if (dest) {
|
if (dest) {
|
||||||
@ -1239,7 +1241,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
EntityManager::Instance()->SerializeEntity(entity);
|
EntityManager::Instance()->SerializeEntity(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "lookup" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "lookup" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
auto query = CDClientDatabase::CreatePreppedStmt(
|
auto query = CDClientDatabase::CreatePreppedStmt(
|
||||||
"SELECT `id`, `name` FROM `Objects` WHERE `displayName` LIKE ?1 OR `name` LIKE ?1 OR `description` LIKE ?1 LIMIT 50");
|
"SELECT `id`, `name` FROM `Objects` WHERE `displayName` LIKE ?1 OR `name` LIKE ?1 OR `description` LIKE ?1 LIMIT 50");
|
||||||
// Concatenate all of the arguments into a single query so a multi word query can be used properly.
|
// Concatenate all of the arguments into a single query so a multi word query can be used properly.
|
||||||
@ -1261,7 +1263,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "spawn" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "spawn" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
ControllablePhysicsComponent* comp = static_cast<ControllablePhysicsComponent*>(entity->GetComponent(eReplicaComponentType::CONTROLLABLE_PHYSICS));
|
ControllablePhysicsComponent* comp = static_cast<ControllablePhysicsComponent*>(entity->GetComponent(eReplicaComponentType::CONTROLLABLE_PHYSICS));
|
||||||
if (!comp) return;
|
if (!comp) return;
|
||||||
|
|
||||||
@ -1302,7 +1304,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
EntityManager::Instance()->ConstructEntity(newEntity);
|
EntityManager::Instance()->ConstructEntity(newEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "spawngroup" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 3) {
|
if (chatCommand == "spawngroup" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 3) {
|
||||||
auto controllablePhysicsComponent = entity->GetComponent<ControllablePhysicsComponent>();
|
auto controllablePhysicsComponent = entity->GetComponent<ControllablePhysicsComponent>();
|
||||||
if (!controllablePhysicsComponent) return;
|
if (!controllablePhysicsComponent) return;
|
||||||
|
|
||||||
@ -1353,7 +1355,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "giveuscore") && args.size() >= 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "giveuscore") && args.size() >= 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
int32_t uscore;
|
int32_t uscore;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], uscore)) {
|
if (!GeneralUtils::TryParse(args[0], uscore)) {
|
||||||
@ -1375,7 +1377,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendModifyLEGOScore(entity, entity->GetSystemAddress(), uscore, lootType);
|
GameMessages::SendModifyLEGOScore(entity, entity->GetSystemAddress(), uscore, lootType);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "setlevel") && args.size() >= 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "setlevel") && args.size() >= 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
// We may be trying to set a specific players level to a level. If so override the entity with the requested players.
|
// We may be trying to set a specific players level to a level. If so override the entity with the requested players.
|
||||||
std::string requestedPlayerToSetLevelOf = "";
|
std::string requestedPlayerToSetLevelOf = "";
|
||||||
if (args.size() > 1) {
|
if (args.size() > 1) {
|
||||||
@ -1443,7 +1445,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "pos" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "pos" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
const auto position = entity->GetPosition();
|
const auto position = entity->GetPosition();
|
||||||
|
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"<" + (GeneralUtils::to_u16string(position.x)) + u", " + (GeneralUtils::to_u16string(position.y)) + u", " + (GeneralUtils::to_u16string(position.z)) + u">");
|
ChatPackets::SendSystemMessage(sysAddr, u"<" + (GeneralUtils::to_u16string(position.x)) + u", " + (GeneralUtils::to_u16string(position.y)) + u", " + (GeneralUtils::to_u16string(position.z)) + u">");
|
||||||
@ -1451,7 +1453,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
std::cout << position.x << ", " << position.y << ", " << position.z << std::endl;
|
std::cout << position.x << ", " << position.y << ", " << position.z << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "rot" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "rot" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
const auto rotation = entity->GetRotation();
|
const auto rotation = entity->GetRotation();
|
||||||
|
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"<" + (GeneralUtils::to_u16string(rotation.w)) + u", " + (GeneralUtils::to_u16string(rotation.x)) + u", " + (GeneralUtils::to_u16string(rotation.y)) + u", " + (GeneralUtils::to_u16string(rotation.z)) + u">");
|
ChatPackets::SendSystemMessage(sysAddr, u"<" + (GeneralUtils::to_u16string(rotation.w)) + u", " + (GeneralUtils::to_u16string(rotation.x)) + u", " + (GeneralUtils::to_u16string(rotation.y)) + u", " + (GeneralUtils::to_u16string(rotation.z)) + u">");
|
||||||
@ -1459,22 +1461,22 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
std::cout << rotation.w << ", " << rotation.x << ", " << rotation.y << ", " << rotation.z << std::endl;
|
std::cout << rotation.w << ", " << rotation.x << ", " << rotation.y << ", " << rotation.z << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "locrow" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "locrow" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
const auto position = entity->GetPosition();
|
const auto position = entity->GetPosition();
|
||||||
const auto rotation = entity->GetRotation();
|
const auto rotation = entity->GetRotation();
|
||||||
|
|
||||||
std::cout << "<location x=\"" << position.x << "\" y=\"" << position.y << "\" z=\"" << position.z << "\" rw=\"" << rotation.w << "\" rx=\"" << rotation.x << "\" ry=\"" << rotation.y << "\" rz=\"" << rotation.z << "\" />" << std::endl;
|
std::cout << "<location x=\"" << position.x << "\" y=\"" << position.y << "\" z=\"" << position.z << "\" rw=\"" << rotation.w << "\" rx=\"" << rotation.x << "\" ry=\"" << rotation.y << "\" rz=\"" << rotation.z << "\" />" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "playlvlfx" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "playlvlfx" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
GameMessages::SendPlayFXEffect(entity, 7074, u"create", "7074", LWOOBJID_EMPTY, 1.0f, 1.0f, true);
|
GameMessages::SendPlayFXEffect(entity, 7074, u"create", "7074", LWOOBJID_EMPTY, 1.0f, 1.0f, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "playrebuildfx" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "playrebuildfx" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
GameMessages::SendPlayFXEffect(entity, 230, u"rebuild", "230", LWOOBJID_EMPTY, 1.0f, 1.0f, true);
|
GameMessages::SendPlayFXEffect(entity, 230, u"rebuild", "230", LWOOBJID_EMPTY, 1.0f, 1.0f, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "freemoney" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) && args.size() == 1) {
|
if ((chatCommand == "freemoney" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) && args.size() == 1) {
|
||||||
int32_t money;
|
int32_t money;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], money)) {
|
if (!GeneralUtils::TryParse(args[0], money)) {
|
||||||
@ -1486,7 +1488,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
ch->SetCoins(ch->GetCoins() + money, eLootSourceType::LOOT_SOURCE_MODERATION);
|
ch->SetCoins(ch->GetCoins() + money, eLootSourceType::LOOT_SOURCE_MODERATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "setcurrency") && args.size() == 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "setcurrency") && args.size() == 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
int32_t money;
|
int32_t money;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], money)) {
|
if (!GeneralUtils::TryParse(args[0], money)) {
|
||||||
@ -1499,13 +1501,13 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Allow for this on even while not a GM, as it sometimes toggles incorrrectly.
|
// Allow for this on even while not a GM, as it sometimes toggles incorrrectly.
|
||||||
if (chatCommand == "gminvis" && entity->GetParentUser()->GetMaxGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "gminvis" && entity->GetParentUser()->GetMaxGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
GameMessages::SendToggleGMInvis(entity->GetObjectID(), true, UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendToggleGMInvis(entity->GetObjectID(), true, UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "gmimmune" && args.size() >= 1 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "gmimmune" && args.size() >= 1 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto* destroyableComponent = entity->GetComponent<DestroyableComponent>();
|
auto* destroyableComponent = entity->GetComponent<DestroyableComponent>();
|
||||||
|
|
||||||
int32_t state = false;
|
int32_t state = false;
|
||||||
@ -1522,7 +1524,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "buff" && args.size() >= 2 && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "buff" && args.size() >= 2 && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto* buffComponent = entity->GetComponent<BuffComponent>();
|
auto* buffComponent = entity->GetComponent<BuffComponent>();
|
||||||
|
|
||||||
int32_t id = 0;
|
int32_t id = 0;
|
||||||
@ -1545,7 +1547,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "testmap" && args.size() >= 1) && entity->GetGMLevel() >= GAME_MASTER_LEVEL_FORUM_MODERATOR) {
|
if ((chatCommand == "testmap" && args.size() >= 1) && entity->GetGMLevel() >= eGameMasterLevel::FORUM_MODERATOR) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Requesting map change...");
|
ChatPackets::SendSystemMessage(sysAddr, u"Requesting map change...");
|
||||||
uint32_t reqZone;
|
uint32_t reqZone;
|
||||||
LWOCLONEID cloneId = 0;
|
LWOCLONEID cloneId = 0;
|
||||||
@ -1604,7 +1606,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "createprivate" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 3) {
|
if (chatCommand == "createprivate" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 3) {
|
||||||
uint32_t zone;
|
uint32_t zone;
|
||||||
|
|
||||||
if (!GeneralUtils::TryParse(args[0], zone)) {
|
if (!GeneralUtils::TryParse(args[0], zone)) {
|
||||||
@ -1628,13 +1630,13 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "debugui") && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "debugui") && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Opening UIDebugger...");
|
ChatPackets::SendSystemMessage(sysAddr, u"Opening UIDebugger...");
|
||||||
AMFArrayValue args;
|
AMFArrayValue args;
|
||||||
GameMessages::SendUIMessageServerToSingleClient(entity, sysAddr, "ToggleUIDebugger;", nullptr);
|
GameMessages::SendUIMessageServerToSingleClient(entity, sysAddr, "ToggleUIDebugger;", nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "boost") && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "boost") && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
||||||
|
|
||||||
if (possessorComponent == nullptr) {
|
if (possessorComponent == nullptr) {
|
||||||
@ -1666,7 +1668,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((chatCommand == "unboost") && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if ((chatCommand == "unboost") && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
auto* possessorComponent = entity->GetComponent<PossessorComponent>();
|
||||||
|
|
||||||
if (possessorComponent == nullptr) return;
|
if (possessorComponent == nullptr) return;
|
||||||
@ -1676,7 +1678,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
GameMessages::SendVehicleRemovePassiveBoostAction(vehicle->GetObjectID(), UNASSIGNED_SYSTEM_ADDRESS);
|
GameMessages::SendVehicleRemovePassiveBoostAction(vehicle->GetObjectID(), UNASSIGNED_SYSTEM_ADDRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "activatespawner" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "activatespawner" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
auto spawners = dZoneManager::Instance()->GetSpawnersByName(args[0]);
|
auto spawners = dZoneManager::Instance()->GetSpawnersByName(args[0]);
|
||||||
|
|
||||||
for (auto* spawner : spawners) {
|
for (auto* spawner : spawners) {
|
||||||
@ -1690,7 +1692,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "spawnphysicsverts" && entity->GetGMLevel() >= 6) {
|
if (chatCommand == "spawnphysicsverts" && entity->GetGMLevel() >= eGameMasterLevel::JUNIOR_DEVELOPER) {
|
||||||
//Go tell physics to spawn all the vertices:
|
//Go tell physics to spawn all the vertices:
|
||||||
auto entities = EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::PHANTOM_PHYSICS);
|
auto entities = EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::PHANTOM_PHYSICS);
|
||||||
for (auto en : entities) {
|
for (auto en : entities) {
|
||||||
@ -1700,7 +1702,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "reportproxphys" && entity->GetGMLevel() >= 6) {
|
if (chatCommand == "reportproxphys" && entity->GetGMLevel() >= eGameMasterLevel::JUNIOR_DEVELOPER) {
|
||||||
auto entities = EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::PROXIMITY_MONITOR);
|
auto entities = EntityManager::Instance()->GetEntitiesByComponent(eReplicaComponentType::PROXIMITY_MONITOR);
|
||||||
for (auto en : entities) {
|
for (auto en : entities) {
|
||||||
auto phys = static_cast<ProximityMonitorComponent*>(en->GetComponent(eReplicaComponentType::PROXIMITY_MONITOR));
|
auto phys = static_cast<ProximityMonitorComponent*>(en->GetComponent(eReplicaComponentType::PROXIMITY_MONITOR));
|
||||||
@ -1716,7 +1718,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "triggerspawner" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "triggerspawner" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
auto spawners = dZoneManager::Instance()->GetSpawnersByName(args[0]);
|
auto spawners = dZoneManager::Instance()->GetSpawnersByName(args[0]);
|
||||||
|
|
||||||
for (auto* spawner : spawners) {
|
for (auto* spawner : spawners) {
|
||||||
@ -1730,7 +1732,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "reforge" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 2) {
|
if (chatCommand == "reforge" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 2) {
|
||||||
LOT baseItem;
|
LOT baseItem;
|
||||||
LOT reforgedItem;
|
LOT reforgedItem;
|
||||||
|
|
||||||
@ -1747,7 +1749,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
inventoryComponent->AddItem(baseItem, 1, eLootSourceType::LOOT_SOURCE_MODERATION, eInventoryType::INVALID, data);
|
inventoryComponent->AddItem(baseItem, 1, eLootSourceType::LOOT_SOURCE_MODERATION, eInventoryType::INVALID, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "crash" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_OPERATOR) {
|
if (chatCommand == "crash" && entity->GetGMLevel() >= eGameMasterLevel::OPERATOR) {
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Crashing...");
|
ChatPackets::SendSystemMessage(sysAddr, u"Crashing...");
|
||||||
|
|
||||||
int* badPtr = nullptr;
|
int* badPtr = nullptr;
|
||||||
@ -1756,7 +1758,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "metrics" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "metrics" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
for (const auto variable : Metrics::GetAllMetrics()) {
|
for (const auto variable : Metrics::GetAllMetrics()) {
|
||||||
auto* metric = Metrics::GetMetric(variable);
|
auto* metric = Metrics::GetMetric(variable);
|
||||||
|
|
||||||
@ -1793,7 +1795,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "reloadconfig" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER) {
|
if (chatCommand == "reloadconfig" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER) {
|
||||||
Game::config->ReloadConfig();
|
Game::config->ReloadConfig();
|
||||||
VanityUtilities::SpawnVanity();
|
VanityUtilities::SpawnVanity();
|
||||||
dpWorld::Instance().Reload();
|
dpWorld::Instance().Reload();
|
||||||
@ -1809,7 +1811,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
ChatPackets::SendSystemMessage(sysAddr, u"Successfully reloaded config for world!");
|
ChatPackets::SendSystemMessage(sysAddr, u"Successfully reloaded config for world!");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "rollloot" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_OPERATOR && args.size() >= 3) {
|
if (chatCommand == "rollloot" && entity->GetGMLevel() >= eGameMasterLevel::OPERATOR && args.size() >= 3) {
|
||||||
uint32_t lootMatrixIndex = 0;
|
uint32_t lootMatrixIndex = 0;
|
||||||
uint32_t targetLot = 0;
|
uint32_t targetLot = 0;
|
||||||
uint32_t loops = 1;
|
uint32_t loops = 1;
|
||||||
@ -1846,7 +1848,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
ChatPackets::SendSystemMessage(sysAddr, message);
|
ChatPackets::SendSystemMessage(sysAddr, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "deleteinven" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "deleteinven" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
eInventoryType inventoryType = eInventoryType::INVALID;
|
eInventoryType inventoryType = eInventoryType::INVALID;
|
||||||
if (!GeneralUtils::TryParse(args[0], inventoryType)) {
|
if (!GeneralUtils::TryParse(args[0], inventoryType)) {
|
||||||
// In this case, we treat the input as a string and try to find it in the reflection list
|
// In this case, we treat the input as a string and try to find it in the reflection list
|
||||||
@ -1873,7 +1875,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
ChatPackets::SendSystemMessage(sysAddr, u"Deleted inventory " + GeneralUtils::UTF8ToUTF16(args[0]));
|
ChatPackets::SendSystemMessage(sysAddr, u"Deleted inventory " + GeneralUtils::UTF8ToUTF16(args[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatCommand == "inspect" && entity->GetGMLevel() >= GAME_MASTER_LEVEL_DEVELOPER && args.size() >= 1) {
|
if (chatCommand == "inspect" && entity->GetGMLevel() >= eGameMasterLevel::DEVELOPER && args.size() >= 1) {
|
||||||
Entity* closest = nullptr;
|
Entity* closest = nullptr;
|
||||||
|
|
||||||
eReplicaComponentType component;
|
eReplicaComponentType component;
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "CharacterComponent.h"
|
#include "CharacterComponent.h"
|
||||||
#include "Database.h"
|
#include "Database.h"
|
||||||
#include "dMessageIdentifiers.h"
|
#include "dMessageIdentifiers.h"
|
||||||
|
#include "eGameMasterLevel.h"
|
||||||
#include "eReplicaComponentType.h"
|
#include "eReplicaComponentType.h"
|
||||||
|
|
||||||
void ClientPackets::HandleChatMessage(const SystemAddress& sysAddr, Packet* packet) {
|
void ClientPackets::HandleChatMessage(const SystemAddress& sysAddr, Packet* packet) {
|
||||||
@ -66,7 +67,7 @@ void ClientPackets::HandleChatMessage(const SystemAddress& sysAddr, Packet* pack
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string playerName = user->GetLastUsedChar()->GetName();
|
std::string playerName = user->GetLastUsedChar()->GetName();
|
||||||
bool isMythran = user->GetLastUsedChar()->GetGMLevel() > 0;
|
bool isMythran = user->GetLastUsedChar()->GetGMLevel() > eGameMasterLevel::CIVILIAN;
|
||||||
|
|
||||||
if (!user->GetLastChatMessageApproved() && !isMythran) return;
|
if (!user->GetLastChatMessageApproved() && !isMythran) return;
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "CharacterComponent.h"
|
#include "CharacterComponent.h"
|
||||||
#include "ZCompression.h"
|
#include "ZCompression.h"
|
||||||
|
|
||||||
|
|
||||||
void WorldPackets::SendLoadStaticZone(const SystemAddress& sysAddr, float x, float y, float z, uint32_t checksum) {
|
void WorldPackets::SendLoadStaticZone(const SystemAddress& sysAddr, float x, float y, float z, uint32_t checksum) {
|
||||||
RakNet::BitStream bitStream;
|
RakNet::BitStream bitStream;
|
||||||
PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_LOAD_STATIC_ZONE);
|
PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_LOAD_STATIC_ZONE);
|
||||||
@ -127,7 +128,7 @@ void WorldPackets::SendServerState(const SystemAddress& sysAddr) {
|
|||||||
SEND_PACKET;
|
SEND_PACKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldPackets::SendCreateCharacter(const SystemAddress& sysAddr, Entity* entity, const std::string& xmlData, const std::u16string& username, int32_t gm) {
|
void WorldPackets::SendCreateCharacter(const SystemAddress& sysAddr, Entity* entity, const std::string& xmlData, const std::u16string& username, eGameMasterLevel gm) {
|
||||||
RakNet::BitStream bitStream;
|
RakNet::BitStream bitStream;
|
||||||
PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_CREATE_CHARACTER);
|
PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_CREATE_CHARACTER);
|
||||||
|
|
||||||
@ -144,8 +145,8 @@ void WorldPackets::SendCreateCharacter(const SystemAddress& sysAddr, Entity* ent
|
|||||||
LDFData<LOT>* lot = new LDFData<LOT>(u"template", 1);
|
LDFData<LOT>* lot = new LDFData<LOT>(u"template", 1);
|
||||||
LDFData<std::string>* xmlConfigData = new LDFData<std::string>(u"xmlData", xmlData);
|
LDFData<std::string>* xmlConfigData = new LDFData<std::string>(u"xmlData", xmlData);
|
||||||
LDFData<std::u16string>* name = new LDFData<std::u16string>(u"name", username);
|
LDFData<std::u16string>* name = new LDFData<std::u16string>(u"name", username);
|
||||||
LDFData<int32_t>* gmlevel = new LDFData<int32_t>(u"gmlevel", gm);
|
LDFData<int32_t>* gmlevel = new LDFData<int32_t>(u"gmlevel", static_cast<int32_t>(gm));
|
||||||
LDFData<int32_t>* chatmode = new LDFData<int32_t>(u"chatmode", gm);
|
LDFData<int32_t>* chatmode = new LDFData<int32_t>(u"chatmode", static_cast<int32_t>(gm));
|
||||||
LDFData<int64_t>* reputation = new LDFData<int64_t>(u"reputation", character->GetReputation());
|
LDFData<int64_t>* reputation = new LDFData<int64_t>(u"reputation", character->GetReputation());
|
||||||
|
|
||||||
objid->WriteToPacket(&data);
|
objid->WriteToPacket(&data);
|
||||||
@ -220,14 +221,14 @@ void WorldPackets::SendChatModerationResponse(const SystemAddress& sysAddr, bool
|
|||||||
SEND_PACKET;
|
SEND_PACKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldPackets::SendGMLevelChange(const SystemAddress& sysAddr, bool success, uint8_t highestLevel, uint8_t prevLevel, uint8_t newLevel) {
|
void WorldPackets::SendGMLevelChange(const SystemAddress& sysAddr, bool success, eGameMasterLevel highestLevel, eGameMasterLevel prevLevel, eGameMasterLevel newLevel) {
|
||||||
CBITSTREAM;
|
CBITSTREAM;
|
||||||
PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_MAKE_GM_RESPONSE);
|
PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_MAKE_GM_RESPONSE);
|
||||||
|
|
||||||
bitStream.Write<uint8_t>(success);
|
bitStream.Write<uint8_t>(success);
|
||||||
bitStream.Write<uint16_t>(highestLevel);
|
bitStream.Write(static_cast<uint16_t>(highestLevel));
|
||||||
bitStream.Write<uint16_t>(prevLevel);
|
bitStream.Write(static_cast<uint16_t>(prevLevel));
|
||||||
bitStream.Write<uint16_t>(newLevel);
|
bitStream.Write(static_cast<uint16_t>(newLevel));
|
||||||
|
|
||||||
SEND_PACKET;
|
SEND_PACKET;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
class User;
|
class User;
|
||||||
struct SystemAddress;
|
struct SystemAddress;
|
||||||
|
enum class eGameMasterLevel : uint8_t;
|
||||||
|
|
||||||
namespace WorldPackets {
|
namespace WorldPackets {
|
||||||
void SendLoadStaticZone(const SystemAddress& sysAddr, float x, float y, float z, uint32_t checksum);
|
void SendLoadStaticZone(const SystemAddress& sysAddr, float x, float y, float z, uint32_t checksum);
|
||||||
@ -17,9 +18,9 @@ namespace WorldPackets {
|
|||||||
void SendCharacterDeleteResponse(const SystemAddress& sysAddr, bool response);
|
void SendCharacterDeleteResponse(const SystemAddress& sysAddr, bool response);
|
||||||
void SendTransferToWorld(const SystemAddress& sysAddr, const std::string& serverIP, uint32_t serverPort, bool mythranShift);
|
void SendTransferToWorld(const SystemAddress& sysAddr, const std::string& serverIP, uint32_t serverPort, bool mythranShift);
|
||||||
void SendServerState(const SystemAddress& sysAddr);
|
void SendServerState(const SystemAddress& sysAddr);
|
||||||
void SendCreateCharacter(const SystemAddress& sysAddr, Entity* entity, const std::string& xmlData, const std::u16string& username, int32_t gm);
|
void SendCreateCharacter(const SystemAddress& sysAddr, Entity* entity, const std::string& xmlData, const std::u16string& username, eGameMasterLevel gm);
|
||||||
void SendChatModerationResponse(const SystemAddress& sysAddr, bool requestAccepted, uint32_t requestID, const std::string& receiver, std::vector<std::pair<uint8_t, uint8_t>> unacceptedItems);
|
void SendChatModerationResponse(const SystemAddress& sysAddr, bool requestAccepted, uint32_t requestID, const std::string& receiver, std::vector<std::pair<uint8_t, uint8_t>> unacceptedItems);
|
||||||
void SendGMLevelChange(const SystemAddress& sysAddr, bool success, uint8_t highestLevel, uint8_t prevLevel, uint8_t newLevel);
|
void SendGMLevelChange(const SystemAddress& sysAddr, bool success, eGameMasterLevel highestLevel, eGameMasterLevel prevLevel, eGameMasterLevel newLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // WORLDPACKETS_H
|
#endif // WORLDPACKETS_H
|
||||||
|
@ -128,13 +128,13 @@ There are 9 Game master levels
|
|||||||
|
|
||||||
|Level|Variable Name|Description|
|
|Level|Variable Name|Description|
|
||||||
|--- |--- |--- |
|
|--- |--- |--- |
|
||||||
|0|GAME_MASTER_LEVEL_CIVILIAN|Normal player|
|
|0|CIVILIAN|Normal player|
|
||||||
|1|GAME_MASTER_LEVEL_FORUM_MODERATOR|Forum moderator. No permissions on live servers.|
|
|1|FORUM_MODERATOR|Forum moderator. No permissions on live servers.|
|
||||||
|2|GAME_MASTER_LEVEL_JUNIOR_MODERATOR|Can kick/mute and pull chat logs|
|
|2|JUNIOR_MODERATOR|Can kick/mute and pull chat logs|
|
||||||
|3|GAME_MASTER_LEVEL_MODERATOR|Can return lost items|
|
|3|MODERATOR|Can return lost items|
|
||||||
|4|GAME_MASTER_LEVEL_SENIOR_MODERATOR|Can ban|
|
|4|SENIOR_MODERATOR|Can ban|
|
||||||
|5|GAME_MASTER_LEVEL_LEAD_MODERATOR|Can approve properties|
|
|5|LEAD_MODERATOR|Can approve properties|
|
||||||
|6|GAME_MASTER_LEVEL_JUNIOR_DEVELOPER|Junior developer & future content team. Civilan on live.|
|
|6|JUNIOR_DEVELOPER|Junior developer & future content team. Civilan on live.|
|
||||||
|7|GAME_MASTER_LEVEL_INACTIVE_DEVELOPER|Inactive developer, limited permissions.|
|
|7|INACTIVE_DEVELOPER|Inactive developer, limited permissions.|
|
||||||
|8|GAME_MASTER_LEVEL_DEVELOPER|Active developer, full permissions on live.|
|
|8|DEVELOPER|Active developer, full permissions on live.|
|
||||||
|9|GAME_MASTER_LEVEL_OPERATOR|Can shutdown server for restarts & updates.|
|
|9|OPERATOR|Can shutdown server for restarts & updates.|
|
||||||
|
Loading…
Reference in New Issue
Block a user