Script Examples
Toggle Service Power State
This script checks the current status of the service from the service manager and toggles it — starting the service if it's stopped, or stopping it if it's running.
info
ServiceManagerService requires the Run Impersonated option to be unchecked on the script.
- C#
- Python 3
- PowerShell
- JavaScript
- Lua
//refAssemblies: TCAdmin.SDK.dll, TCAdmin.GameHosting.SDK.dll, TCAdmin.Scripting.dll, TCAdmin.Monitor.dll
using TCAdmin.Web.Shared.Models.Enums;
var Globals = new TCAdmin.Scripting.Engines.Addons.CSharpGameGlobals(); // DO NOT MODIFY THIS LINE
var console = Globals.ScriptConsole;
var serviceManager = Globals.ServiceManagerService;
var service = Globals.ThisService;
var serviceManagerStatus = await serviceManager.GetServiceStatus(service.ServiceId);
console.WriteLine($"Current service id is { service.ServiceId }");
console.WriteLine($"Status in database: { service.Status }");
console.WriteLine($"Status in service manager: { serviceManagerStatus.Status }");
if(serviceManagerStatus.Status == EServiceStatus.Stopped)
{
await serviceManager.StartService(service.ServiceId);
console.WriteLine("Service was started 🚀");
}
else if(serviceManagerStatus.Status == EServiceStatus.Started)
{
await serviceManager.StopService(service.ServiceId);
console.WriteLine("Service was stopped 🛑");
}
service = ThisService
serviceManagerStatus = ServiceManagerService.GetServiceStatus(service.ServiceId).Result
print("Current service id is " + str(service.ServiceId))
print("Status in database: " + str(service.Status))
print("Status in service manager: " + str(serviceManagerStatus.Status))
if serviceManagerStatus.Status.ToString() == "Stopped":
ServiceManagerService.StartService(service.ServiceId).Wait()
print("Service was started 🚀")
elif serviceManagerStatus.Status.ToString() == "Started":
ServiceManagerService.StopService(service.ServiceId).Wait()
print("Service was stopped 🛑")
$service = $ThisService
$serviceManagerStatus = $ServiceManagerService.GetServiceStatus($service.ServiceId).Result
Write-Host "Current service id is $($service.ServiceId)"
Write-Host "Status in database: $($service.Status)"
Write-Host "Status in service manager: $($serviceManagerStatus.Status)"
if ($serviceManagerStatus.Status.ToString() -eq "Stopped") {
$ServiceManagerService.StartService($service.ServiceId).Wait()
Write-Host "Service was started 🚀"
} elseif ($serviceManagerStatus.Status.ToString() -eq "Started") {
$ServiceManagerService.StopService($service.ServiceId).Wait()
Write-Host "Service was stopped 🛑"
}
var service = ThisService;
var serviceManagerStatus = ServiceManagerService.GetServiceStatus(service.ServiceId).Result;
Console.log("Current service id is " + service.ServiceId);
Console.log("Status in database: " + service.Status);
Console.log("Status in service manager: " + serviceManagerStatus.Status);
// EServiceStatus: Starting=0, Started=1, Stopping=2, Stopped=3
if (serviceManagerStatus.Status == 3) {
ServiceManagerService.StartService(service.ServiceId).Wait();
Console.log("Service was started 🚀");
} else if (serviceManagerStatus.Status == 1) {
ServiceManagerService.StopService(service.ServiceId).Wait();
Console.log("Service was stopped 🛑");
}
local service = ThisService
local serviceManager = ServiceManagerService
local serviceManagerStatus = serviceManager:GetServiceStatus(service.ServiceId).Result
print("Current service id is {0}", service.ServiceId)
print("Status in database: {0}", service.Status)
print("Status in service manager: {0}", serviceManagerStatus.Status)
-- EServiceStatus: Starting=0, Started=1, Stopping=2, Stopped=3
if serviceManagerStatus.Status == 3 then
serviceManager:StartService(service.ServiceId):Wait()
print("Service was started 🚀")
elseif serviceManagerStatus.Status == 1 then
serviceManager:StopService(service.ServiceId):Wait()
print("Service was stopped 🛑")
end
Create Global Announcement
This script creates a global banner announcement that auto-expires after 30 minutes.
- C#
- Python 3
- PowerShell
- JavaScript
- Lua
//refAssemblies: TCAdmin.SDK.dll, TCAdmin.GameHosting.SDK.dll, TCAdmin.Scripting.dll, TCAdmin.Monitor.dll
using System;
using System.Collections.Generic;
using TCAdmin.Web.Shared.Models.Enums;
using TCAdmin.SDK.Database.Entities;
var Globals = new TCAdmin.Scripting.Engines.Addons.CSharpGameGlobals(); // DO NOT MODIFY THIS LINE
var scopes = new List<AnnouncementScope> { new() { ScopeType = EAnnouncementScopeType.Global } };
var announcement = new Announcement
{
Subject = "Maintenance",
Body = "Server restart in 30 minutes",
Severity = EAnnouncementSeverity.Warning,
DisplayType = EAnnouncementDisplayType.Banner,
DisplayBehavior = EAnnouncementDisplayBehavior.AutoExpire,
IsActive = true,
ExpiresAt = DateTime.UtcNow.AddMinutes(30)
};
await Globals.AnnouncementManager.CreateAnnouncementAsync(announcement, scopes);
from System import DateTime
from System.Collections.Generic import List
from TCAdmin.Web.Shared.Models.Enums import EAnnouncementScopeType, EAnnouncementSeverity, EAnnouncementDisplayType, EAnnouncementDisplayBehavior
from TCAdmin.SDK.Database.Entities import Announcement, AnnouncementScope
scopes = List[AnnouncementScope]()
scope = AnnouncementScope()
scope.ScopeType = EAnnouncementScopeType.Global
scopes.Add(scope)
announcement = Announcement()
announcement.Subject = "Maintenance"
announcement.Body = "Server restart in 30 minutes"
announcement.Severity = EAnnouncementSeverity.Warning
announcement.DisplayType = EAnnouncementDisplayType.Banner
announcement.DisplayBehavior = EAnnouncementDisplayBehavior.AutoExpire
announcement.IsActive = True
announcement.ExpiresAt = DateTime.UtcNow.AddMinutes(30)
AnnouncementManager.CreateAnnouncementAsync(announcement, scopes).Wait()
$scope = New-Object TCAdmin.SDK.Database.Entities.AnnouncementScope
$scope.ScopeType = [TCAdmin.Web.Shared.Models.Enums.EAnnouncementScopeType]::Global
$scopes = New-Object "System.Collections.Generic.List[TCAdmin.SDK.Database.Entities.AnnouncementScope]"
$scopes.Add($scope)
$announcement = New-Object TCAdmin.SDK.Database.Entities.Announcement
$announcement.Subject = "Maintenance"
$announcement.Body = "Server restart in 30 minutes"
$announcement.Severity = [TCAdmin.Web.Shared.Models.Enums.EAnnouncementSeverity]::Warning
$announcement.DisplayType = [TCAdmin.Web.Shared.Models.Enums.EAnnouncementDisplayType]::Banner
$announcement.DisplayBehavior = [TCAdmin.Web.Shared.Models.Enums.EAnnouncementDisplayBehavior]::AutoExpire
$announcement.IsActive = $true
$announcement.ExpiresAt = [DateTime]::UtcNow.AddMinutes(30)
$AnnouncementManager.CreateAnnouncementAsync($announcement, $scopes).Wait()
var scope = new TCAdmin.SDK.Database.Entities.AnnouncementScope();
scope.ScopeType = 0; // EAnnouncementScopeType.Global
var scopes = new System.Collections.Generic.List(TCAdmin.SDK.Database.Entities.AnnouncementScope)();
scopes.Add(scope);
var announcement = new TCAdmin.SDK.Database.Entities.Announcement();
announcement.Subject = "Maintenance";
announcement.Body = "Server restart in 30 minutes";
announcement.Severity = 2; // EAnnouncementSeverity.Warning
announcement.DisplayType = 1; // EAnnouncementDisplayType.Banner
announcement.DisplayBehavior = 1; // EAnnouncementDisplayBehavior.AutoExpire
announcement.IsActive = true;
announcement.ExpiresAt = System.DateTime.UtcNow.AddMinutes(30);
AnnouncementManager.CreateAnnouncementAsync(announcement, scopes).Wait();
local scope = TCAdmin.SDK.Database.Entities.AnnouncementScope()
scope.ScopeType = 0 -- EAnnouncementScopeType.Global
local scopes = System.Collections.Generic.List(TCAdmin.SDK.Database.Entities.AnnouncementScope)()
scopes:Add(scope)
local announcement = TCAdmin.SDK.Database.Entities.Announcement()
announcement.Subject = "Maintenance"
announcement.Body = "Server restart in 30 minutes"
announcement.Severity = 2 -- EAnnouncementSeverity.Warning
announcement.DisplayType = 1 -- EAnnouncementDisplayType.Banner
announcement.DisplayBehavior = 1 -- EAnnouncementDisplayBehavior.AutoExpire
announcement.IsActive = true
announcement.ExpiresAt = System.DateTime.UtcNow:AddMinutes(30)
AnnouncementManager:CreateAnnouncementAsync(announcement, scopes):Wait()