Skip to content

Commit 88db48e

Browse files
committed
chore: zomboid smart deployment
1 parent cf2556f commit 88db48e

6 files changed

Lines changed: 55 additions & 6 deletions

File tree

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ jobs:
124124
druid registry push ./scrolls/lgsm/sdtdserver -p main=26900/udp -p main2=26902/udp -p maintcp=26900 -i artifacts.druid.gg/druid-team/druidd-lgsm:sdtd -m --min-disk 20Gi --min-ram 2Gi --min-cpu 0.5
125125
druid registry push ./scrolls/lgsm/gmodserver -p query=27005/udp -p main=/udp -p sourcetv=27020/udp -p steam=27015 -i artifacts.druid.gg/druid-team/druidd-lgsm:gmod -m --min-disk 8Gi --min-ram 512Mi --min-cpu 0.25 --smart
126126
druid registry push ./scrolls/lgsm/cs2server -p main=/udp -p rcon=27015 -i artifacts.druid.gg/druid-team/druidd-lgsm:cs2 -m --min-disk 38Gi --min-ram 1Gi --min-cpu 0.5 --smart
127-
druid registry push ./scrolls/lgsm/pzserver -p main=/udp -p main2=/udp -i artifacts.druid.gg/druid-team/druidd-lgsm:pz -m --min-disk 3Gi --min-ram 512Mi --min-cpu 0.25
127+
druid registry push ./scrolls/lgsm/pzserver -p main=/udp -p main2=/udp -i artifacts.druid.gg/druid-team/druidd-lgsm:pz -m --min-disk 3Gi --min-ram 512Mi --min-cpu 0.25 --smart
128128
129129
druid registry push ./scrolls/lgsm/terrariaserver -p todo=8211/udp -i artifacts.druid.gg/druid-team/druidd-lgsm:terraria -m
130130
druid registry push ./scrolls/lgsm/csgoserver -p query=27005/udp -p main=27015/udp -p sourcetv=27020/udp -p steam=27015 -i artifacts.druid.gg/druid-team/druidd-lgsm:csgo -m --smart

scrolls/lgsm/.build/scroll.yaml.tmpl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ ports:
3939
- name: StartOnUnknownPacket
4040
value: "{{ .Vars.lua_query_start_on_unknown_packet }}"
4141
{{- end }}
42+
{{- if .Vars.lua_steam_app_id }}
43+
- name: SteamAppId
44+
value: "{{ .Vars.lua_steam_app_id }}"
45+
{{- end }}
4246
{{- end }}
4347
{{- if .Vars.main_port_protocol }}
4448
- name: main

scrolls/lgsm/.build/vars.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
"lua_query_map": "server idle",
8282
"lua_query_servername": "Druid Gameserver (idle) - Start server by joining",
8383
"lua_query_port": "main",
84-
"lua_query_start_on_unknown_packet": "yes"
84+
"lua_query_start_on_unknown_packet": "yes",
85+
"lua_steam_app_id": "108600"
8586
}
8687
}

scrolls/lgsm/.build/versions/pzserver/packet_handler/query.lua

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ function string.tohex(str)
1010
end))
1111
end
1212

13+
function pack_uint64_le(n)
14+
local bytes = {}
15+
for i = 1, 8 do
16+
bytes[i] = string.char(n % 256)
17+
n = math.floor(n / 256)
18+
end
19+
return table.concat(bytes)
20+
end
21+
1322
function handle(ctx, data)
1423

1524
-- prtocol begins with FFFFFFFF and the packedid
@@ -137,6 +146,14 @@ function handle(ctx, data)
137146
versionPrefix = get_var("GameVersionPrefix")
138147
serverPort = get_port("main")
139148

149+
150+
edfGameIdStr = get_var("SteamAppId")
151+
edfGameId = nil
152+
if edfGameIdStr ~= nil then
153+
edfGameId = tonumber(edfGameIdStr)
154+
end
155+
156+
140157
-- EDF & 0x80: Port
141158
-- EDF & 0x10: SteamID
142159
-- EDF & 0x20 Keywords
@@ -149,7 +166,6 @@ function handle(ctx, data)
149166
edfKeywords = get_var("GameKeywords") or ",OWNINGID:90202064633057281,OWNINGNAME:90202064633057281,NUMOPENPUBCONN:50,P2PADDR:90202064633057281,P2PPORT:" ..
150167
serverPort .. ",LEGACY_i:0"
151168

152-
edfGameId = "a00f000000000000"
153169

154170
serverinfopacket = ServeInfoPacket:new()
155171
serverinfopacket.name = name
@@ -226,6 +242,10 @@ function Packet:appendByte(data)
226242
self.bytes = self.bytes .. string.char(data)
227243
end
228244

245+
function Packet:appendRawBytes(data)
246+
self.bytes = self.bytes .. data
247+
end
248+
229249
function Packet:appendShort(num)
230250
self.bytes = self.bytes .. string.fromhex(number_to_little_endian_short(num))
231251
end
@@ -318,7 +338,8 @@ function ServeInfoPacket:GetRawPacket()
318338
p:appendString(self.edfKeywords)
319339
end
320340
if self.edfGameId ~= nil then
321-
p:appendHex(self.edfGameId)
341+
local bytes = pack_uint64_le(self.edfGameId)
342+
p:appendRawBytes(bytes)
322343
end
323344

324345

scrolls/lgsm/pzserver/packet_handler/query.lua

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ function string.tohex(str)
1010
end))
1111
end
1212

13+
function pack_uint64_le(n)
14+
local bytes = {}
15+
for i = 1, 8 do
16+
bytes[i] = string.char(n % 256)
17+
n = math.floor(n / 256)
18+
end
19+
return table.concat(bytes)
20+
end
21+
1322
function handle(ctx, data)
1423

1524
-- prtocol begins with FFFFFFFF and the packedid
@@ -137,6 +146,14 @@ function handle(ctx, data)
137146
versionPrefix = get_var("GameVersionPrefix")
138147
serverPort = get_port("main")
139148

149+
150+
edfGameIdStr = get_var("SteamAppId")
151+
edfGameId = nil
152+
if edfGameIdStr ~= nil then
153+
edfGameId = tonumber(edfGameIdStr)
154+
end
155+
156+
140157
-- EDF & 0x80: Port
141158
-- EDF & 0x10: SteamID
142159
-- EDF & 0x20 Keywords
@@ -149,7 +166,6 @@ function handle(ctx, data)
149166
edfKeywords = get_var("GameKeywords") or ",OWNINGID:90202064633057281,OWNINGNAME:90202064633057281,NUMOPENPUBCONN:50,P2PADDR:90202064633057281,P2PPORT:" ..
150167
serverPort .. ",LEGACY_i:0"
151168

152-
edfGameId = "a00f000000000000"
153169

154170
serverinfopacket = ServeInfoPacket:new()
155171
serverinfopacket.name = name
@@ -226,6 +242,10 @@ function Packet:appendByte(data)
226242
self.bytes = self.bytes .. string.char(data)
227243
end
228244

245+
function Packet:appendRawBytes(data)
246+
self.bytes = self.bytes .. data
247+
end
248+
229249
function Packet:appendShort(num)
230250
self.bytes = self.bytes .. string.fromhex(number_to_little_endian_short(num))
231251
end
@@ -318,7 +338,8 @@ function ServeInfoPacket:GetRawPacket()
318338
p:appendString(self.edfKeywords)
319339
end
320340
if self.edfGameId ~= nil then
321-
p:appendHex(self.edfGameId)
341+
local bytes = pack_uint64_le(self.edfGameId)
342+
p:appendRawBytes(bytes)
322343
end
323344

324345

scrolls/lgsm/pzserver/scroll.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ ports:
2323
value: "Druid Gameserver (idle) - Start server by joining"
2424
- name: StartOnUnknownPacket
2525
value: "yes"
26+
- name: SteamAppId
27+
value: "108600"
2628
init: "console"
2729
commands:
2830
console:

0 commit comments

Comments
 (0)