Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/opensb/help.config.patch3
-rw-r--r--source/frontend/StarClientCommandProcessor.cpp35
-rw-r--r--source/frontend/StarClientCommandProcessor.hpp1
-rw-r--r--source/game/StarWorldClient.cpp4
-rw-r--r--source/game/StarWorldClient.hpp4
5 files changed, 35 insertions, 12 deletions
diff --git a/assets/opensb/help.config.patch b/assets/opensb/help.config.patch
index 15375e8..ad1da12 100644
--- a/assets/opensb/help.config.patch
+++ b/assets/opensb/help.config.patch
@@ -10,6 +10,7 @@
},
"openSbCommands": {
- "swap": "Usage /swap <name>. Swaps the current character, case-insensitive, only substring required."
+ "swap": "Usage /swap <name>. Swaps the current character, case-insensitive, only substring required.",
+ "respawninworld": "Usage /respawninworld. Sets the respawn flag for the current world until you teleport away."
}
}
diff --git a/source/frontend/StarClientCommandProcessor.cpp b/source/frontend/StarClientCommandProcessor.cpp
index 2d98289..ac87397 100644
--- a/source/frontend/StarClientCommandProcessor.cpp
+++ b/source/frontend/StarClientCommandProcessor.cpp
@@ -15,9 +15,9 @@
namespace Star {
ClientCommandProcessor::ClientCommandProcessor(UniverseClientPtr universeClient, CinematicPtr cinematicOverlay,
- MainInterfacePaneManager* paneManager, StringMap<StringList> macroCommands)
+ MainInterfacePaneManager* paneManager, StringMap<StringList> macroCommands)
: m_universeClient(std::move(universeClient)), m_cinematicOverlay(std::move(cinematicOverlay)),
- m_paneManager(paneManager), m_macroCommands(std::move(macroCommands)) {
+ m_paneManager(paneManager), m_macroCommands(std::move(macroCommands)) {
m_builtinCommands = {
{"reload", bind(&ClientCommandProcessor::reload, this)},
{"whoami", bind(&ClientCommandProcessor::whoami, this)},
@@ -51,7 +51,8 @@ ClientCommandProcessor::ClientCommandProcessor(UniverseClientPtr universeClient,
{"maketechavailable", bind(&ClientCommandProcessor::makeTechAvailable, this, _1)},
{"enabletech", bind(&ClientCommandProcessor::enableTech, this, _1)},
{"upgradeship", bind(&ClientCommandProcessor::upgradeShip, this, _1)},
- {"swap", bind(&ClientCommandProcessor::swap, this, _1)}
+ {"swap", bind(&ClientCommandProcessor::swap, this, _1)},
+ {"respawnInWorld", bind(&ClientCommandProcessor::respawnInWorld, this, _1)}
};
}
@@ -128,7 +129,7 @@ String ClientCommandProcessor::reload() {
String ClientCommandProcessor::whoami() {
return strf("Client: You are {}. You are {}an Admin.",
- m_universeClient->mainPlayer()->name(), m_universeClient->mainPlayer()->isAdmin() ? "" : "not ");
+ m_universeClient->mainPlayer()->name(), m_universeClient->mainPlayer()->isAdmin() ? "" : "not ");
}
String ClientCommandProcessor::gravity() {
@@ -186,7 +187,7 @@ String ClientCommandProcessor::setGravity(String const& argumentsString) {
return "You must be an admin to use this command.";
m_universeClient->worldClient()->overrideGravity(lexicalCast<float>(arguments.at(0)));
- return strf("Gravity set to {}, the change is LOCAL ONLY", arguments.at(0));
+ return strf("Gravity set to {} (This is client-side!)", arguments.at(0));
}
String ClientCommandProcessor::resetGravity() {
@@ -273,8 +274,8 @@ String ClientCommandProcessor::previewNewQuest(String const& argumentsString) {
return "You must be an admin to use this command.";
return previewQuestPane(arguments, [this](QuestPtr const& quest) {
- return make_shared<NewQuestInterface>(m_universeClient->questManager(), quest, m_universeClient->mainPlayer());
- });
+ return make_shared<NewQuestInterface>(m_universeClient->questManager(), quest, m_universeClient->mainPlayer());
+ });
}
String ClientCommandProcessor::previewQuestComplete(String const& argumentsString) {
@@ -283,8 +284,8 @@ String ClientCommandProcessor::previewQuestComplete(String const& argumentsStrin
return "You must be an admin to use this command.";
return previewQuestPane(arguments, [this](QuestPtr const& quest) {
- return make_shared<QuestCompleteInterface>(quest, m_universeClient->mainPlayer(), CinematicPtr{});
- });
+ return make_shared<QuestCompleteInterface>(quest, m_universeClient->mainPlayer(), CinematicPtr{});
+ });
}
String ClientCommandProcessor::previewQuestFailed(String const& argumentsString) {
@@ -293,8 +294,8 @@ String ClientCommandProcessor::previewQuestFailed(String const& argumentsString)
return "You must be an admin to use this command.";
return previewQuestPane(arguments, [this](QuestPtr const& quest) {
- return make_shared<QuestFailedInterface>(quest, m_universeClient->mainPlayer());
- });
+ return make_shared<QuestFailedInterface>(quest, m_universeClient->mainPlayer());
+ });
}
String ClientCommandProcessor::clearScannedObjects() {
@@ -427,4 +428,16 @@ String ClientCommandProcessor::swap(String const& argumentsString) {
return "Failed to swap player";
}
+String ClientCommandProcessor::respawnInWorld(String const& argumentsString) {
+ auto arguments = m_parser.tokenizeToStringList(argumentsString);
+ auto worldClient = m_universeClient->worldClient();
+
+ if (arguments.size() == 0)
+ return strf("Respawn in this world is currently {}", worldClient->respawnInWorld() ? "true" : "false");
+
+ bool respawnInWorld = Json::parse(arguments.at(0)).toBool();
+ worldClient->setRespawnInWorld(respawnInWorld);
+ return strf("Respawn in this world set to {} (This is client-side!)", respawnInWorld ? "true" : "false");
}
+
+} \ No newline at end of file
diff --git a/source/frontend/StarClientCommandProcessor.hpp b/source/frontend/StarClientCommandProcessor.hpp
index b06f3d5..94dad5d 100644
--- a/source/frontend/StarClientCommandProcessor.hpp
+++ b/source/frontend/StarClientCommandProcessor.hpp
@@ -58,6 +58,7 @@ private:
String enableTech(String const& argumentsString);
String upgradeShip(String const& argumentsString);
String swap(String const& argumentsString);
+ String respawnInWorld(String const& argumentsString);
UniverseClientPtr m_universeClient;
CinematicPtr m_cinematicOverlay;
diff --git a/source/game/StarWorldClient.cpp b/source/game/StarWorldClient.cpp
index 9e0478a..8abfcdf 100644
--- a/source/game/StarWorldClient.cpp
+++ b/source/game/StarWorldClient.cpp
@@ -142,6 +142,10 @@ bool WorldClient::respawnInWorld() const {
return m_respawnInWorld;
}
+void WorldClient::setRespawnInWorld(bool respawnInWorld) {
+ m_respawnInWorld = respawnInWorld;
+}
+
void WorldClient::removeEntity(EntityId entityId, bool andDie) {
auto entity = m_entityMap->entity(entityId);
if (!entity)
diff --git a/source/game/StarWorldClient.hpp b/source/game/StarWorldClient.hpp
index e00a3b8..1616b10 100644
--- a/source/game/StarWorldClient.hpp
+++ b/source/game/StarWorldClient.hpp
@@ -108,6 +108,7 @@ public:
bool mainPlayerDead() const;
void reviveMainPlayer();
bool respawnInWorld() const;
+ void setRespawnInWorld(bool respawnInWorld);
void removeEntity(EntityId entityId, bool andDie);
@@ -175,6 +176,9 @@ public:
typedef std::function<bool(PlayerPtr, StringView)> BroadcastCallback;
BroadcastCallback& broadcastCallback();
+
+
+
private:
static const float DropDist;