Skip to content

Commit d70eda6

Browse files
committed
Update source
1 parent 7413be6 commit d70eda6

File tree

1 file changed

+135
-95
lines changed

1 file changed

+135
-95
lines changed

Server/mods/deathmatch/logic/CConsoleCommands.cpp

Lines changed: 135 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -60,89 +60,117 @@ static void EndConsoleOutputCapture(CClient* pClient, const SString& strIfNoOutp
6060
}
6161
}
6262

63-
bool CConsoleCommands::StartResource(CConsole* pConsole, const char* szArguments, CClient* pClient, CClient* pEchoClient)
63+
bool CConsoleCommands::StartResource(CConsole* console, const char* arguments, CClient* client, CClient* echo) noexcept
6464
{
65-
SString strResponse;
65+
if (!arguments || !arguments[0])
66+
{
67+
echo->SendConsole("* Syntax: start <resource-name> [<resource-name> ...]");
68+
return true;
69+
}
6670

67-
if (szArguments && szArguments[0])
71+
std::istringstream iss(arguments);
72+
std::vector<std::string> names((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
73+
74+
for (const auto& name : names)
6875
{
69-
CResource* resource = g_pGame->GetResourceManager()->GetResource(szArguments);
70-
if (resource)
76+
CResource* resource = g_pGame->GetResourceManager()->GetResource(name.c_str());
77+
std::string response;
78+
79+
if (!resource)
7180
{
72-
if (pClient->GetNick())
73-
CLogger::LogPrintf("start: Requested by %s\n", GetAdminNameForLog(pClient).c_str());
81+
response = "start: Resource '" + name + "' could not be found";
82+
echo->SendConsole(response.c_str());
83+
continue;
84+
}
7485

75-
if (resource->IsLoaded())
76-
{
77-
if (!resource->IsActive())
78-
{
79-
if (g_pGame->GetResourceManager()->StartResource(resource, NULL, true))
80-
{
81-
strResponse = SString("start: Resource '%s' started", szArguments);
82-
}
83-
else
84-
{
85-
strResponse = SString("start: Resource '%s' start was requested (%s)", szArguments, resource->GetFailureReason().c_str());
86-
}
87-
}
88-
else
89-
strResponse = "start: Resource is already running";
90-
}
91-
else
92-
strResponse = SString("start: Resource is loaded, but has errors (%s)", resource->GetFailureReason().c_str());
86+
if (client->GetNick())
87+
CLogger::LogPrintf("start: Requested by %s\n", GetAdminNameForLog(client).c_str());
88+
89+
if (!resource->IsLoaded())
90+
{
91+
response = "start: Resource '" + name + "' is loaded, but has errors (" + resource->GetFailureReason() + ")";
92+
echo->SendConsole(response.c_str());
93+
continue;
94+
}
95+
96+
if (resource->IsActive())
97+
{
98+
response = "start: Resource '" + name + "' is already running";
99+
echo->SendConsole(response.c_str());
100+
continue;
101+
}
102+
103+
if (g_pGame->GetResourceManager()->StartResource(resource, nullptr, true))
104+
{
105+
response = "start: Resource '" + name + "' started";
93106
}
94107
else
95-
strResponse = "start: Resource could not be found";
108+
{
109+
response = "start: Resource '" + name + "' start was requested (" + resource->GetFailureReason() + ")";
110+
}
111+
112+
echo->SendConsole(response.c_str());
96113
}
97-
else
98-
strResponse = "* Syntax: start <resource-name>";
99114

100-
pEchoClient->SendConsole(strResponse);
101115
return true;
102116
}
103117

104-
bool CConsoleCommands::RestartResource(CConsole* pConsole, const char* szArguments, CClient* pClient, CClient* pEchoClient)
118+
bool CConsoleCommands::RestartResource(CConsole* console, const char* arguments, CClient* client, CClient* echo) noexcept
105119
{
106-
if (szArguments && szArguments[0])
120+
if (!arguments || !arguments[0])
107121
{
108-
CResource* resource = g_pGame->GetResourceManager()->GetResource(szArguments);
109-
if (resource)
122+
echo->SendConsole("* Syntax: restart <resource-name> [<resource-name> ...]");
123+
return false;
124+
}
125+
126+
std::istringstream iss(arguments);
127+
std::vector<std::string> names((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
128+
129+
for (const auto& name : names)
130+
{
131+
CResource* resource = g_pGame->GetResourceManager()->GetResource(name.c_str());
132+
std::string response;
133+
134+
if (!resource)
110135
{
111-
if (pClient->GetNick())
112-
CLogger::LogPrintf("restart: Requested by %s\n", GetAdminNameForLog(pClient).c_str());
136+
response = "restart: Resource '" + name + "' could not be found";
137+
echo->SendConsole(response.c_str());
138+
continue;
139+
}
113140

114-
if (resource->IsLoaded())
115-
{
116-
if (resource->IsActive())
117-
{
118-
if (resource->IsProtected())
119-
{
120-
if (!g_pGame->GetACLManager()->CanObjectUseRight(pClient->GetNick(), CAccessControlListGroupObject::OBJECT_TYPE_USER,
121-
"restart.protected", CAccessControlListRight::RIGHT_TYPE_COMMAND, false))
122-
{
123-
pEchoClient->SendConsole("restart: Resource could not be restarted as it is protected");
124-
return false;
125-
}
126-
}
141+
if (client->GetNick())
142+
CLogger::LogPrintf("restart: Requested by %s\n", GetAdminNameForLog(client).c_str());
127143

128-
g_pGame->GetResourceManager()->QueueResource(resource, CResourceManager::QUEUE_RESTART, NULL);
129-
pEchoClient->SendConsole("restart: Resource restarting...");
130-
}
131-
else
132-
pEchoClient->SendConsole("restart: Resource is not running");
133-
}
134-
else
135-
pEchoClient->SendConsole(SString("restart: Resource is loaded, but has errors (%s)", resource->GetFailureReason().c_str()));
144+
if (!resource->IsLoaded())
145+
{
146+
response = "restart: Resource '" + name + "' is loaded, but has errors (" + resource->GetFailureReason() + ")";
147+
echo->SendConsole(response.c_str());
148+
continue;
136149
}
137-
else
138-
pEchoClient->SendConsole("restart: Resource could not be found");
139-
return true;
150+
151+
if (!resource->IsActive())
152+
{
153+
response = "restart: Resource '" + name + "' is not running";
154+
echo->SendConsole(response.c_str());
155+
continue;
156+
}
157+
158+
if (resource->IsProtected() && !g_pGame->GetACLManager()->CanObjectUseRight(client->GetNick(), CAccessControlListGroupObject::OBJECT_TYPE_USER, "restart.protected", CAccessControlListRight::RIGHT_TYPE_COMMAND, false))
159+
{
160+
response = "restart: Resource '" + name + "' could not be restarted as it is protected";
161+
echo->SendConsole(response.c_str());
162+
continue;
163+
}
164+
165+
g_pGame->GetResourceManager()->QueueResource(resource, CResourceManager::QUEUE_RESTART, nullptr);
166+
response = "restart: Resource '" + name + "' restarting...";
167+
echo->SendConsole(response.c_str());
140168
}
141-
else
142-
pEchoClient->SendConsole("* Syntax: restart <resource-name>");
143-
return false;
169+
170+
return true;
144171
}
145172

173+
146174
bool CConsoleCommands::RefreshResources(CConsole* pConsole, const char* szArguments, CClient* pClient, CClient* pEchoClient)
147175
{
148176
BeginConsoleOutputCapture(pEchoClient);
@@ -193,47 +221,59 @@ bool CConsoleCommands::ResourceInfo(CConsole* pConsole, const char* szArguments,
193221
return false;
194222
}
195223

196-
bool CConsoleCommands::StopResource(CConsole* pConsole, const char* szArguments, CClient* pClient, CClient* pEchoClient)
224+
bool CConsoleCommands::StopResource(CConsole* console, const char* arguments, CClient* client, CClient* echo) noexcept
197225
{
198-
if (szArguments && szArguments[0])
226+
if (!arguments || !arguments[0])
199227
{
200-
CResource* resource = g_pGame->GetResourceManager()->GetResource(szArguments);
201-
if (resource)
228+
echo->SendConsole("* Syntax: stop <resource-name> [<resource-name> ...]");
229+
return false;
230+
}
231+
232+
std::istringstream iss(arguments);
233+
std::vector<std::string> names((std::istream_iterator<std::string>(iss)), std::istream_iterator<std::string>());
234+
235+
for (const auto& name : names)
236+
{
237+
CResource* resource = g_pGame->GetResourceManager()->GetResource(name.c_str());
238+
std::string response;
239+
240+
if (!resource)
202241
{
203-
if (pClient->GetNick())
204-
CLogger::LogPrintf("stop: Requested by %s\n", GetAdminNameForLog(pClient).c_str());
242+
response = "stop: Resource '" + name + "' could not be found";
243+
echo->SendConsole(response.c_str());
244+
continue;
245+
}
205246

206-
if (resource->IsLoaded())
207-
{
208-
if (resource->IsActive())
209-
{
210-
if (resource->IsProtected())
211-
{
212-
if (!g_pGame->GetACLManager()->CanObjectUseRight(pClient->GetNick(), CAccessControlListGroupObject::OBJECT_TYPE_USER, "stop.protected",
213-
CAccessControlListRight::RIGHT_TYPE_COMMAND, false))
214-
{
215-
pEchoClient->SendConsole("stop: Resource could not be stopped as it is protected");
216-
return false;
217-
}
218-
}
247+
if (client->GetNick())
248+
CLogger::LogPrintf("stop: Requested by %s\n", GetAdminNameForLog(client).c_str());
219249

220-
g_pGame->GetResourceManager()->QueueResource(resource, CResourceManager::QUEUE_STOP, NULL);
221-
pEchoClient->SendConsole("stop: Resource stopping");
222-
}
223-
else
224-
pEchoClient->SendConsole("stop: Resource is not running");
225-
}
226-
else
227-
pEchoClient->SendConsole(SString("stop: Resource is loaded, but has errors (%s)", resource->GetFailureReason().c_str()));
250+
if (!resource->IsLoaded())
251+
{
252+
response = "stop: Resource '" + name + "' is loaded, but has errors (" + resource->GetFailureReason() + ")";
253+
echo->SendConsole(response.c_str());
254+
continue;
228255
}
229-
else
230-
pEchoClient->SendConsole("stop: Resource could not be found");
231-
return true;
256+
257+
if (!resource->IsActive())
258+
{
259+
response = "stop: Resource '" + name + "' is not running";
260+
echo->SendConsole(response.c_str());
261+
continue;
262+
}
263+
264+
if (resource->IsProtected() && !g_pGame->GetACLManager()->CanObjectUseRight(client->GetNick(), CAccessControlListGroupObject::OBJECT_TYPE_USER, "stop.protected", CAccessControlListRight::RIGHT_TYPE_COMMAND, false))
265+
{
266+
response = "stop: Resource '" + name + "' could not be stopped as it is protected";
267+
echo->SendConsole(response.c_str());
268+
continue;
269+
}
270+
271+
g_pGame->GetResourceManager()->QueueResource(resource, CResourceManager::QUEUE_STOP, nullptr);
272+
response = "stop: Resource '" + name + "' stopping";
273+
echo->SendConsole(response.c_str());
232274
}
233-
else
234-
pEchoClient->SendConsole("* Syntax: stop <resource-name>");
235275

236-
return false;
276+
return true;
237277
}
238278

239279
bool CConsoleCommands::StopAllResources(CConsole* pConsole, const char* szArguments, CClient* pClient, CClient* pEchoClient)

0 commit comments

Comments
 (0)