{"id":17074,"date":"2025-07-22T15:29:55","date_gmt":"2025-07-22T15:29:55","guid":{"rendered":"https:\/\/ggservers.com\/knowledgebase\/?post_type=ht_kb&#038;p=17074"},"modified":"2025-07-22T15:29:57","modified_gmt":"2025-07-22T15:29:57","slug":"how-to-set-up-multiple-custom-spawn-points-in-your-project-zomboid-server","status":"publish","type":"ht_kb","link":"https:\/\/ggservers.com\/knowledgebase\/article\/how-to-set-up-multiple-custom-spawn-points-in-your-project-zomboid-server\/","title":{"rendered":"How to Set Up Multiple Custom Spawn Points in Your Project Zomboid Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"78\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-1024x78.png\" alt=\"\" class=\"wp-image-13375\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-1024x78.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-300x23.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-768x59.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-50x4.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-60x5.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1-100x8.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2024\/05\/image-1.png 1240w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Want players on your Project Zomboid server to spawn in different towns, safehouses, or even based on their profession? You can fully customize spawn locations by creating your own <code>.lua<\/code> files. This guide will walk you through the full process, from creating spawnpoint files to linking them with the game.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u26a0\ufe0f <strong>Advanced Setup Warning<\/strong><br>This guide involves creating and editing multiple <code>.lua<\/code> files. If the format is even slightly incorrect (e.g., missing commas or brackets), your <strong>server may fail to start or crash on launch<\/strong>.<br>Always <strong>back up your files<\/strong> before making changes.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Getting Coordinates for Your Spawn Location<\/h2>\n\n\n\n<p>Before changing the server settings, you&#8217;ll need to get the coordinates of where you want players to spawn.<\/p>\n\n\n\n<p>Here\u2019s how to get accurate coordinates using the official Project Zomboid map:<\/p>\n\n\n\n<p>1. Go to the <a href=\"https:\/\/map.projectzomboid.com\/\" data-type=\"link\" data-id=\"https:\/\/map.projectzomboid.com\/\">Project Zomboid World Map<\/a>.<\/p>\n\n\n\n<p>2. Select the map your server is using (like Knox County).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"495\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-1024x495.png\" alt=\"\" class=\"wp-image-17053\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-1024x495.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-300x145.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-768x371.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-50x24.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-1536x743.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-60x29.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129-100x48.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-129.png 1917w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>3. At the top, click the <strong>Map Coordinates<\/strong> tab.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-1024x499.png\" alt=\"\" class=\"wp-image-17054\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-1024x499.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-300x146.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-768x374.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-50x24.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-1536x749.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-60x29.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130-100x49.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-130.png 1918w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>4. Press <strong>Lock Coords<\/strong>, then click anywhere on the map to mark your desired spawn spot.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"467\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-1024x467.png\" alt=\"\" class=\"wp-image-17055\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-1024x467.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-300x137.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-768x350.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-50x23.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-1536x700.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-60x27.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131-100x46.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-131.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-1024x500.png\" alt=\"\" class=\"wp-image-17057\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-1024x500.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-300x147.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-768x375.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-50x24.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-1536x751.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-60x29.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133-100x49.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-133.png 1911w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-1024x500.png\" alt=\"\" class=\"wp-image-17058\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-1024x500.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-300x146.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-768x375.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-50x24.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-1536x750.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-60x29.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134-100x49.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-134.png 1918w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>5. Take note of the following:<\/p>\n\n\n\n<p><strong>Cell (CelX, CelY)<\/strong> \u2014 grid cell on the map<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"720\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-138.png\" alt=\"\" class=\"wp-image-17062\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-138.png 321w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-138-134x300.png 134w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-138-22x50.png 22w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-138-27x60.png 27w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-138-45x100.png 45w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/figure>\n\n\n\n<p><strong>Rel (RelX, RelY)<\/strong> \u2014 exact position inside that cell<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"719\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-139.png\" alt=\"\" class=\"wp-image-17063\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-139.png 321w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-139-134x300.png 134w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-139-22x50.png 22w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-139-27x60.png 27w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-139-45x100.png 45w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Setting Up Custom Spawn Locations (Player Spawn Menu)<\/h2>\n\n\n\n<p>\u26a0\ufe0f <strong>Advanced Configuration Warning:<\/strong><br>This guide involves editing and creating <code>.lua<\/code> files manually. If you\u2019re unfamiliar with this, take your time and back up your files before making changes.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note: You <em>can\u2019t<\/em> add custom images or descriptions to each spawn without having your players manually install files on their own machines, which is not recommended for most servers.<\/p>\n<\/blockquote>\n\n\n\n<p>1. Login and stop your server from the panel. If you aren&#8217;t sure how to login and access your panel, we have a guide <a href=\"https:\/\/ggservers.com\/knowledgebase\/article\/getting-started-how-to-access-your-project-zomboid-server-and-control-panel\/\" data-type=\"link\" data-id=\"https:\/\/ggservers.com\/knowledgebase\/article\/getting-started-how-to-access-your-project-zomboid-server-and-control-panel\/\">here<\/a>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"97\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-1024x97.png\" alt=\"\" class=\"wp-image-17066\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-1024x97.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-300x28.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-768x72.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-50x5.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-60x6.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141-100x9.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-141.png 1515w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2. Click on Files. Then go to and open: <code>Pterodactyl\/Server\/Pterodactyl_spawnpoints.lua<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"313\" height=\"846\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-148.png\" alt=\"\" class=\"wp-image-17080\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-148.png 313w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-148-111x300.png 111w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-148-18x50.png 18w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-148-22x60.png 22w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-148-37x100.png 37w\" sizes=\"auto, (max-width: 313px) 100vw, 313px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"256\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-1024x256.png\" alt=\"\" class=\"wp-image-17079\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-1024x256.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-300x75.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-768x192.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-50x12.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-1536x383.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-60x15.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147-100x25.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-147.png 1543w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>3. Replace the values in the file with the values you got. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>worldX\/worldY<\/strong> \u2192 these are Cell coordinates<\/li>\n\n\n\n<li><strong>posX\/posY<\/strong> \u2192 these are Rel coordinates <\/li>\n<\/ul>\n\n\n\n<p>So for our example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"319\" height=\"718\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-149.png\" alt=\"\" class=\"wp-image-17081\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-149.png 319w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-149-133x300.png 133w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-149-22x50.png 22w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-149-27x60.png 27w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-149-44x100.png 44w\" sizes=\"auto, (max-width: 319px) 100vw, 319px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"863\" height=\"407\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150.png\" alt=\"\" class=\"wp-image-17082\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150.png 863w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150-300x141.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150-768x362.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150-50x24.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150-60x28.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-150-100x47.png 100w\" sizes=\"auto, (max-width: 863px) 100vw, 863px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Note: posZ is your map level (0 = ground, 1 = second floor, etc.)<\/p>\n\n\n\n<p>Make sure to save the file after editing<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Add More Spawn Locations (Optional)<\/h3>\n\n\n\n<p>You can add multiple spawn locations under the same occupation for randomness:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function SpawnPoints()\n    return {\n        unemployed = {\n            { worldX = 33, worldY = 42, posX = 251, posY = 165, posZ = 0 },\n            { worldX = 33, worldY = 42, posX = 240, posY = 150, posZ = 0 },\n            { worldX = 33, worldY = 42, posX = 220, posY = 180, posZ = 0 },\n        }\n    }\nend<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Note<\/strong>: Using <code>unemployed =<\/code> means <strong>any profession<\/strong> will use those spawnpoints unless otherwise specified.<\/p>\n<\/blockquote>\n\n\n\n<p>If you want to support different jobs spawning in different places, use this structure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function SpawnPoints()\n    return {\n        unemployed = {\n            { worldX = 33, worldY = 42, posX = 251, posY = 165, posZ = 0 }\n        },\n        fireofficer = {\n            { worldX = 34, worldY = 42, posX = 200, posY = 140, posZ = 0 }\n        },\n        policeofficer = {\n            { worldX = 35, worldY = 41, posX = 190, posY = 160, posZ = 0 }\n        }\n    }\nend<\/code><\/pre>\n\n\n\n<p>Each job listed will only spawn at its matching set of coordinates.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Link Spawnpoints in <code>spawnregions.lua<\/code><\/h2>\n\n\n\n<p>Now you need to tell the server which custom spawn file to load.<\/p>\n\n\n\n<p>1. Go to: <code>\/Pterodactyl\/Server\/Pterodactyl_spawnregions.lua<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"333\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-1024x333.png\" alt=\"\" class=\"wp-image-17083\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-1024x333.png 1024w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-300x98.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-768x250.png 768w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-50x16.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-1536x500.png 1536w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-60x20.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151-100x33.png 100w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-151.png 1540w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>2. <strong>OPTIONAL<\/strong>: Remove Default Spawns (If You Want to Force Only One Custom Option)<\/p>\n\n\n\n<p>By default, Project Zomboid offers multiple spawn choices like Muldraugh or Riverside. If you want to <strong>remove these<\/strong> and <strong>only show your custom spawn option<\/strong>, edit your <code>Pterodactyl_spawnregions.lua<\/code> to look like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function SpawnRegions()\n\treturn {\n\t\t{ name = \"Custom Spawn\", file = \"Pterodactyl_spawnpoints.lua\" }\n\t}\nend<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"330\" src=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-152.png\" alt=\"\" class=\"wp-image-17085\" srcset=\"https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-152.png 761w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-152-300x130.png 300w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-152-50x22.png 50w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-152-60x26.png 60w, https:\/\/ggservers.com\/knowledgebase\/wp-content\/uploads\/2025\/07\/image-152-100x43.png 100w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/figure>\n\n\n\n<p>This removes all city-based spawns and only shows your custom one in the spawn menu.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Tip:<\/strong> You can name <code>\"Custom Spawn\"<\/code> anything you want, players will see that name on the spawn screen.<\/p>\n\n\n\n<p>Make sure to save the file after editing<\/p>\n\n\n\n<p><\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Final Step: Save &amp; Restart<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Save both <code>.lua<\/code> files.<\/li>\n\n\n\n<li>Restart your server from the panel.<\/li>\n<\/ol>\n\n\n\n<p>Done! Your custom spawnpoint setup is now live.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Adding Multiple Spawnpoint Files (Optional)<\/h2>\n\n\n\n<p>If you want to offer <strong>more than one custom spawn option<\/strong>, you can do that by creating additional <code>.lua<\/code> spawnpoint files. For example, if you want players to choose between a main base and an outpost.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create Additional Spawnpoints Files<\/h3>\n\n\n\n<p>Make a copy of your existing file <code>Pterodactyl_spawnpoints.lua<\/code> and rename it to something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>Pterodactyl_spawnpoints2.lua<\/code><code>Pterodactyl_spawnpoints3.lua<\/code><\/code><\/pre>\n\n\n\n<p>Then edit each file and add different coordinates for each location:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- Pterodactyl_spawnpoints2.lua\nfunction SpawnPoints()\n    return {\n        unemployed = {\n            { worldX = 34, worldY = 42, posX = 200, posY = 160, posZ = 0 }\n        }\n    }\nend<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Link Each File in <code>Pterodactyl_spawnregions.lua<\/code><\/h3>\n\n\n\n<p>Now you need to add a reference to each new file in your <code>Pterodactyl_spawnregions.lua<\/code> so the server knows to include it in the spawn menu.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function SpawnRegions()\n\treturn {\n\t\t{ name = \"Muldraugh, KY\", file = \"media\/maps\/Muldraugh, KY\/spawnpoints.lua\" },\n\t\t{ name = \"Riverside, KY\", file = \"media\/maps\/Riverside, KY\/spawnpoints.lua\" },\n\t\t{ name = \"Rosewood, KY\", file = \"media\/maps\/Rosewood, KY\/spawnpoints.lua\" },\n\t\t{ name = \"West Point, KY\", file = \"media\/maps\/West Point, KY\/spawnpoints.lua\" },\n\t\t{ name = \"Custom Spawn 1\", file = \"media\/maps\/Pterodactyl_spawnpoints.lua\" },\n\t\t{ name = \"Custom Spawn 2\", file = \"media\/maps\/Pterodactyl_spawnpoints2.lua\" }\n\t}\nend<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\"Custom Spawn 1\"<\/code> and <code>\"Custom Spawn 2\"<\/code> are the names that will show up in the in-game spawn menu.<\/li>\n\n\n\n<li>Each one points to a separate file with its own list of coordinates.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Tip<\/strong>: You can define different professions in each file if you want them to spawn at unique locations too.<\/p>\n<\/blockquote>\n\n\n\n<p><strong>Remember to save the file after editing, and restart the server. <\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting Tips<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If your server <strong>crashes on startup<\/strong>, check for missing commas, brackets, or incorrect indentation.<\/li>\n\n\n\n<li>You can <strong>test with one file<\/strong> first before expanding to more.<\/li>\n\n\n\n<li>Make sure all <code>.lua<\/code> files are saved and placed in the <code>\/Pterodactyl\/Server\/<\/code> directory.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>If you have any issues, contact us via live chat or the\u00a0<a href=\"https:\/\/ggservers.com\/knowledgebase\/article\/how-to-open-a-support-ticket\/\">ticket system<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Want players on your Project Zomboid server to spawn in different towns, safehouses, or even based on their profession? You can fully customize spawn locations by creating your own .lua files. This guide will walk you through the full process, from creating spawnpoint files to linking them with the game&#8230;.<\/p>\n","protected":false},"author":6,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"ht-kb-category":[1279],"ht-kb-tag":[4786,4773,4776,4777,4772,4771,4770,4784,4787,4778,4779,4775,4785,4780,4789,4788,4781,4774,4783,4782],"class_list":["post-17074","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-project-zomboid","ht_kb_tag-how-to-set-spawn-point-project-zomboid","ht_kb_tag-project-zomboid-add-spawn-options","ht_kb_tag-project-zomboid-change-starting-location","ht_kb_tag-project-zomboid-create-custom-spawn-file","ht_kb_tag-project-zomboid-custom-safehouse-spawn","ht_kb_tag-project-zomboid-custom-spawn-menu","ht_kb_tag-project-zomboid-custom-spawn-points","ht_kb_tag-project-zomboid-different-spawn-towns","ht_kb_tag-project-zomboid-lua-spawnpoints","ht_kb_tag-project-zomboid-map-spawn-coordinates","ht_kb_tag-project-zomboid-multiplayer-spawn-setup","ht_kb_tag-project-zomboid-multiple-spawn-locations","ht_kb_tag-project-zomboid-per-job-spawns","ht_kb_tag-project-zomboid-randomized-spawns","ht_kb_tag-project-zomboid-server-spawn-configuration","ht_kb_tag-project-zomboid-setup-spawnregions-lua","ht_kb_tag-project-zomboid-spawn-by-profession","ht_kb_tag-project-zomboid-spawn-config-tutorial","ht_kb_tag-project-zomboid-spawn-crash-fix","ht_kb_tag-project-zomboid-spawn-script-example"],"acf":[],"_links":{"self":[{"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/ht-kb\/17074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/comments?post=17074"}],"version-history":[{"count":8,"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/ht-kb\/17074\/revisions"}],"predecessor-version":[{"id":17091,"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/ht-kb\/17074\/revisions\/17091"}],"wp:attachment":[{"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/media?parent=17074"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/ht-kb-category?post=17074"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/ggservers.com\/knowledgebase\/wp-json\/wp\/v2\/ht-kb-tag?post=17074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}