Possible for a map to crash if its not on a certain IP/server?

Is it possible for a map to crash if its not on a certain IP/server? Looking to protect custom maps.

short answer no

EDIT
there was a thread about using lump files https://developer.valvesoftware.com/wiki/Patching_levels_with_lump_files basicly what you did was make the map then when you changed anything you would have the compile tools output a lump file, the lump file would contain info about the changed entities or brushes “no to sure on this” but you’d just upload the lump file to the server , and if anyone tried moving the bsp onto another server and didn’t have the lump file tey would only have the map with out the changed entities which would break game play or leave parts of the map without detail brushes but that link should help you out more :slight_smile:

Only way I can think is to put a custom model or material in the map that only your server has, and trigger the map to crash somehow if the model doesn’t exist. Maybe with point_servercommand.

the map could trigger the server to crash if the server is missing a material/model from the map?

Yeah, like, maybe put the custom prop in a trigger and if the trigger doesn’t fire, then have a point_servercommand crash the game.

[editline]11th August 2016[/editline]

There are lots of ways to crash the game with addoutput I think.

[editline]11th August 2016[/editline]

Anyone can edit your map and remove whatever is causing the crash though.

Very interesting. How hard you think it would be to do this?

[editline]11th August 2016[/editline]

this sounds interesting too (thank you for that info) any resources on how exactly this could be done/tested?

You can just edit your map with entspy, delete all entities and preserve the Checksum.
If you preserve it, people with the modified bsp can play on the normal bsp.

So you just put the normal bsp in your server and the modified on your fast dl. Everyone will dl the broken version, and they wont be able to fix anything.

I would say it’s better than trying to crash a server (there are different way to do it though but as said before, it can be fixed by anyone).

I actually already am doing this (thank you for your reply though) but I am now trying to extra protection in the event the server version map gets leaked

a bypassable way (if someone can even bother) is to just have a trigger under the player spawns to “kill !players”, and have a lua script remove it on boot

very interesting too… thank you

thanks for the replies, getting better advice than I expected. if anyone else could please feel free to chime in if you can add to any of these discussions or have your own idea

For a last crash example:

Add a filter_activator_name.
OnPass !self FireUser1 (it’s useless output and wont do anything but add it)

Put a trigger somewhere
OnStartTouch !activator Kill <delay=0>
OnStartTouch filter_name TestActivator <delay=0.02>

Explanation: player touch the trigger, he is Killed from the map (entity player removed). It then try to TestActivator on nothing (on NULL literally), causing whole server to crash.
It’s a known bug (valve wiki mention not to use OnEndTouch to test a filter as if a player disconnect within the trigger it will crash server), but it look less suspicious to use this than use a clientcommand to disconnect/retry the player :wink:

This is very possible and the only effective way to protect your map. The rest can all be bypassed.

any information on how this could be done? has anyone ever done it?

bump

I’m guessing your making your own custom maps, what you do is once you map is finished copy it to
C:\Steam\steamapps\common\SourceSDK\bin\source2009\bin in there is the vbspinfo.exe make a shortcut of it and right click then properties on the target line add after vbspinfo.exe add -x ur map name and .lmp file will be made when you left click the shortcut open the .lmp file with notepad ++ you’ll then see the entity that you can remove from the bsp that you’ll put on your server like


"world_maxs" "1536 512 512"
"world_mins" "-512 -1152 64"
"detailmaterial" "detail/detailsprites"
"detailvbsp" "detail.vbsp"
"maxpropscreenwidth" "-1"
"skyname" "sky_day01_01"
"classname" "worldspawn"
"mapversion" "7"
"hammerid" "1"
}
{
"origin" "48.2318 256 80"
"angles" "0 0 0"
"classname" "info_player_start"
"hammerid" "19"
}
{
"origin" "320 262.573 304"
"_quadratic_attn" "0"
"_linear_attn" "0"
"_lightscaleHDR" "1"
"_lightHDR" "-1 -1 -1 1"
"_light" "240 237 200 400"
"_distance" "512"
"_constant_attn" "1"
"classname" "light"
"hammerid" "25"
}
{
"origin" "1280 -384 304"
"_quadratic_attn" "0"
"_linear_attn" "0"
"_lightscaleHDR" "1"
"_lightHDR" "-1 -1 -1 1"
"_light" "240 237 200 400"
"_distance" "512"
"_constant_attn" "1"
"classname" "light"
"hammerid" "50"
}
{
"origin" "925.273 285.152 65"
"nodeid" "1"
"classname" "info_node"
"hammerid" "106"
}
{
"origin" "1168.56 79.7832 65"
"nodeid" "2"
"classname" "info_node"
"hammerid" "108"
}
{
"origin" "774.284 390.955 65"
"nodeid" "3"
"classname" "info_node"
"hammerid" "110"
}
{
"origin" "775.876 117.156 65"
"nodeid" "4"
"classname" "info_node"
"hammerid" "112"
}
{
"origin" "632.656 257.654 65"
"nodeid" "5"
"classname" "info_node"
"hammerid" "114"
}
{
"origin" "509.829 378.981 65"
"nodeid" "6"
"classname" "info_node"
"hammerid" "116"
}
{
"origin" "507.57 135.425 65"
"nodeid" "7"
"classname" "info_node"
"hammerid" "118"
}
{
"origin" "408.458 262.187 65"
"nodeid" "8"
"classname" "info_node"
"hammerid" "120"
}
{
"origin" "283.414 155.306 65"
"nodeid" "9"
"classname" "info_node"
"hammerid" "122"
}
{
"origin" "263.252 378.756 65"
"nodeid" "10"
"classname" "info_node"
"hammerid" "124"
}
{
"origin" "133.934 235.242 65"
"nodeid" "11"
"classname" "info_node"
"hammerid" "126"
}
{
"origin" "-19.7429 116.449 65"
"nodeid" "12"
"classname" "info_node"
"hammerid" "128"
}
{
"origin" "2.08838 396.826 65"
"nodeid" "13"
"classname" "info_node"
"hammerid" "130"
}
{
"origin" "1406.46 -131.748 65"
"nodeid" "14"
"classname" "info_node"
"hammerid" "132"
}
{
"origin" "1151.15 -246.99 65"
"nodeid" "15"
"classname" "info_node"
"hammerid" "134"
}
{
"origin" "1290.76 -451.398 65"
"nodeid" "16"
"classname" "info_node"
"hammerid" "136"
}
{
"origin" "1390.9 -762.841 65"
"nodeid" "17"
"classname" "info_node"
"hammerid" "138"
}
{
"origin" "1186.37 -685.352 65"
"nodeid" "18"
"classname" "info_node"
"hammerid" "140"
}
{
"origin" "1402.83 -242.73 80"
"spawnflags" "516"
"rendercolor" "255 255 255"
"renderamt" "255"
"physdamagescale" "1.0"
"angles" "0 180 0"
"classname" "npc_zombie"
"hammerid" "142"
}
{
"origin" "1122.83 -435.711 80"
"spawnflags" "516"
"rendercolor" "255 255 255"
"renderamt" "255"
"physdamagescale" "1.0"
"angles" "0 90 0"
"classname" "npc_zombie"
"hammerid" "144"
}
{
"origin" "1272.02 96 80"
"spawnflags" "516"
"rendercolor" "255 255 255"
"renderamt" "255"
"physdamagescale" "1.0"
"angles" "0 150 0"
"classname" "npc_zombie"
"hammerid" "146"
}

go back into hammer and remove the entities that are shown in the .lmp file save and compile
put the new .bsp on the server,join te server to see it with out the entities then put the .lmp file in the maps folder with the new bsp then join the server again and you’ll all the entities back :slight_smile:
when you distribute your custom map just give out the bsp, when players join your server they dl the .lmp file off the server and things wil look ok, so if anyone get your bsp nd puts it striaght on to there server they won’t have the .lmp file and there version will have a lot of missing game play :slight_smile:

Actually the clients don’t download the lump files. All entities are networked in source. So they get it that way.

I would suggest doing the method I mentionned above. But as you say in case the original bsp get leaked, you want something else.

So add many different crash triggers in the original bsp, and just for your server, use the plugin Stripper:Source (I’m not sure if it work for Garry’s Mod), to remove these crash trigger.

Of course, people could always try to remove the crash trigger in case they get the original bsp, but if you add many, there will surely miss some.