StopThatTank
StopThatTank copied to clipboard
STT crash MultiMod server after changed map with not precached error
I have a MultiMod server running modes like Randomizer, Freak Fortress 2 (1.19. unnoficial) and STT (1.6). And I have this strange behavior where the server crashes after changed the map after playing STT. It doesn't happens immediately, and there seems to be some requirements in order to reproduce it:
Server:
- OS: Windows (I didn't test it with Linux)
- Sourcemod: 1.10 build 6502
- SRCDS updated to the latest version.
~~Requirements:~~
- ~~At least four or five real players connected to the server.~~
- ~~Have played STT at least a complete round~~
~~Steps:~~
- ~~Load the server with any map that is not STT. In my case I used surf_utopia~~
- ~~Wait until you have at least four or five players connected.~~
- ~~Change to a STT map (I used pl_badwater). For making it a real world test, I changed the map using
sm_setnextmap
andmp_timelimit 1
~~ - ~~Play a whole round (i.e. until the time runs over, or until the bomb explodes)~~
- ~~Change the map to another gamemode (I used vsh_egyptyspot_b4 and FF2)~~
- ~~Wait until the map is complete loaded and you spawn for the first round.~~
- ~~Crash~~
(Read the first comment for an updated procedure)
Crash: The crash hangs the server completely, giving the players time-out error. If you're using Windows and running the server in a cmd window, you will get this prompt:
Engine Error
---------------------------
142/ - tf_wearable_campaign_item: UTIL_SetModel: not precached: models/player/items/cyoa_pda/cyoa_pda.mdl
If you are running in a screen or service, it will hang for ever and you will have to restart it manually without any futher information.
Also, this happens using both the sm plugins unload/load
method and tank_enabled 1/0
.
If you need more info, please, just ask it. I will try to find a workaround for this and, if I found any, I will post a comment here.
Okey, doing some testing, I got a precise way for reproducing the error:
Requirements:
- Having the Gravel Jungle Inferno Contracker equipped in a class.
Steps:
- Load the server with any map that uses STT. In my case I used pl_badwater
- Equip the Contracker in any class (I used Soldier for that)
- Join to any team.
- Change the map to another gamemode (I used vsh_egyptyspot_b4 and FF2). For that you can just use
sm_map
and you don't need to play any round in STT. - Wait until the map is completely loaded and spawn with the class that has the Contracker.
- Crash
Sadly I still no have any clue for fixing it yet. I tried to use the SM File/Folder Downloader and Precacher for re-pre-caching the model, but sadly it didn't work.
I made a simple plugin as a temporal fix for this. Please note, this is NOT an ideal fix.
The usage is pretty simple: Just install the plugin (copy the .smx to the plugin folder and .sp to the scripting folder) and load it with sm plugins load tank_mm_fix
(you can also change the map or just restart the server).
This plugin has to be running every time. Don't unload it even if you are not playing STT.
Also, I added the command tank_checkpad
for checking if the Contracker was precached or not.