Sådan installerer du addons på din Garry's Mod server
Workshop-collection, resource.AddWorkshop og manuel installation - og hvorfor dine spillere ser ERROR-skilte, selv om addonsene virker fint på serveren.
To ting der forveksles: server og klient
Det her er hele nøglen til Garry's Mod-addons, og misforståelsen står bag stort set alle supportsager:
| Serveren | Spilleren | |
|---|---|---|
| Hvad den skal have | Filerne, så koden kan køre og kortet kan indlæses | Modeller, materialer og lyde, så der er noget at se |
| Hvordan | +host_workshop_collection eller filer i garrysmod/addons/ |
resource.AddWorkshop() |
| Hvis det mangler | Addonet virker ikke | ERROR-skilte og lilla-sorte tern |
En workshop-collection alene henter ikke addons ned til spillerne. Serveren mounter dem, men klienten får kun automatisk besked om to ting: det kort serveren kører, hvis det ligger i din collection, og den gamemode du kører, hvis den har et workshop-ID. Alt andet - playermodels, våben, props - skal registreres med
resource.AddWorkshop.
Lua-only addons som ULX, DarkRP og admin-mods skal kun ligge på serveren. De har ikke noget indhold, spillerne skal hente.
Trin 1 - Lav en workshop-collection
- Abonnér på mindst ét addon i Garry's Mod-workshoppen.
- Brug Collections → Create Collection og læg dine addons i.
- Sæt den til Offentlig eller Unlisted. En privat collection kan serveren ikke læse.
- Kopiér ID'et fra adressen - tallet efter
?id=.
Collections må ikke indeholde andre collections. Indlejrede collections bliver ikke pakket ud, og de indre addons indlæses aldrig. Læg addons direkte i collectionen.
Trin 2 - Sæt collectionen på serveren
Stop serveren i Potionhost kontrolpanelet, gå til Startup, og tilføj:
+host_workshop_collection 157384458
Start serveren igen. Første opstart tager længere tid, mens den henter alt ned.
Du skal ikke bruge en Steam Web API-nøgle. Ældre guider skriver
-authkey- det er et krav i CS:GO og CS2, ikke i Garry's Mod. Du kan roligt lade den være.
En typisk komplet opstartslinje:
-game garrysmod -port 27015 +maxplayers 32
+host_workshop_collection 157384458
+gamemode sandbox +map gm_construct
+sv_setsteamaccount DIT_GSLT
+gamemode tager mappenavnet under garrysmod/gamemodes/ - altså darkrp, ikke "DarkRP". +map tager kortets navn uden .bsp.
Trin 3 - Sørg for at spillerne henter indholdet
Opret filen garrysmod/lua/autorun/server/workshop.lua og skriv ét addon-ID per linje:
resource.AddWorkshop( "150455514" )
resource.AddWorkshop( "104606562" )
resource.AddWorkshop( "2818480138" )
- ID'erne er enkelte addons - aldrig et collection-ID
- Kun addons med indhold: modeller, materialer, lyde, kort. Lua-only addons giver ingenting
- Der er en grænse på 8192 filer i alt
- Genstart serveren, for at filen træder i kraft
Manuel installation uden workshop
Har du et addon, der ikke ligger på workshoppen, skal det pakkes ud først. Workshop-addons distribueres som .gma-filer, og serveren kan ikke bruge dem direkte.
Brug værktøjet gmad, der følger med Garry's Mod:
gmad.exe extract -file "mit_addon.gma" -out "hvor_det_skal_hen"
Upload derefter den udpakkede mappe til garrysmod/addons/. Strukturen skal se sådan ud:
garrysmod/addons/mit_addon/
├── lua/
├── materials/
├── models/
├── maps/
└── sound/
Det hyppigste fejltrin er et ekstra mappelag. Ligger dine filer i
addons/mit_addon/mit_addon/lua/, bliver de ikke indlæst. Øverste niveau inde i addon-mappen skal værelua,materials,modelsog så videre.Serveren kører Linux. Alle filer og mapper skal være med små bogstaver og uden mellemrum, ellers findes de ikke.
Indhold fra andre Source-spil
Kører du et kort, der bruger Counter-Strike: Source-teksturer, skal serveren mounte det spil. Det sker i garrysmod/cfg/mount.cfg:
"mountcfg"
{
"cstrike" "/sti/til/cstrike"
}
Husk at spillerne også selv skal eje og have mounted spillet, ellers ser de lilla-sorte tern uanset hvad serveren gør.
Verificér at det virker
I konsollen under opstart kommer der en linje per addon:
Mounting Addon 'M9K Heavy Weapons' (128091208)
Kommer der Download Failed!, er det den linje, du skal handle på.
Kigger du efter, at spillerne får indholdet, skal du se:
Making workshop map available for client download
Live-tjek fra konsollen:
lua_run PrintTable( engine.GetAddons() )
Du får en liste med mounted og downloaded per addon. Bemærk at den kun viser workshop-addons - manuelt installerede mapper står ikke på listen.
Fejlfinding
| Symptom | Sandsynlig årsag | Løsning |
|---|---|---|
| Spillerne ser ERROR-skilte og lilla tern | Addonet er mountet på serveren, men ikke registreret til download | Tilføj resource.AddWorkshop |
| Lilla tern på kortet | Manglende spilindhold, fx CS:S | Sæt mount.cfg op - og spilleren skal eje spillet |
host_workshop_collection is unset |
Mellemrum i parameteren | Skriv den som ét ord efterfulgt af ét tal |
| Ingen addons hentes | Collectionen er privat | Sæt den til offentlig eller unlisted |
| Kun nogle addons indlæses | Collectionen indeholder andre collections | Læg addons direkte i den |
Download Failed! på ét stort addon |
Kendt problem med store filer | Installér netop det addon manuelt |
| Manuelt addon indlæses ikke | Ekstra mappelag, eller store bogstaver i filnavne | Ret strukturen, brug små bogstaver |
.gma uploadet direkte |
Serveren bruger ikke pakkede filer | Pak den ud med gmad først |
| Gamemoden starter ikke | +gamemode matcher ikke mappenavnet |
Brug mappenavnet, fx darkrp |
| Ændringer i Lua slår ikke igennem | Autorun-filer genindlæses ikke i drift | Genstart serveren |
Gode råd
- Tilføj addons i små portioner og genstart imellem - så ved du hvad der brød serveren.
- Join som en helt frisk spiller uden abonnementer for at teste, om
resource.AddWorkshoper sat rigtigt op. - Hold collectionen ryddelig. Hvert addon koster opstartstid og diskplads.
- Sæt
sv_setsteamaccountmed et GSLT - ellers bliver serveren nedprioriteret i serverlisten. - Tag en backup af
garrysmod/data/inden større ændringer. Det er der dine spilleres data ligger.
Hænger du fast i en collection, der ikke vil hentes? Send os collection-linket i en ticket, så kigger vi på den.