Shpoike / Quakespasm

Extra bloaty junk to modernise stuff a bit.
http://triptohell.info/moodles/qss/
GNU General Public License v2.0
190 stars 41 forks source link

How to disable Rubicon Rumble Pack's autosave feature? #41

Closed Focus78 closed 3 years ago

Focus78 commented 3 years ago

How do you disable quicksave?

I checked through the config file and found nothing for quicksave except keybinds.

Thank you.

garoto commented 3 years ago

If with "quicksave" you mean "autosave", then it's a feature of whatever map pack/mod you're running. Vanilla Quake or Quakespasm has no built-in autosave functionality.

Focus78 commented 3 years ago

Yes, autosave. My bad.

The map is "Rubicon Rumble Pack".

How do I disable the autosave?

garoto commented 3 years ago

I investigated a bit and I don't think you can disable the autosave in RRP. It's hardcoded in the progs.dat.

Focus78 commented 3 years ago

What line do I need to remove to stop it from occuring?

garoto commented 3 years ago

Ugh, you'd need to decompile the progs.dat, grep all the *.qc files for checkpoint and/or quick (only two files will match: triggers.qc and client.qc) and work from there by commenting or removing the routines. Recompile the progs.dat when done, repack pak0.pak with it and test.

I'm not a programmer, but that's how I'd approach this issue.

garoto commented 3 years ago

Perhaps if you explain the reason why you need to disable RRPs autosave feature, there might be a better solution. Is it because it overwrites your own generated quicksaves?

Focus78 commented 3 years ago

Yes. Plus I find it irritating.

I'm going to be honest with you in that I downloaded Quakespasm simply to play this addon. I was previously a DarkPlaces user and this behavior never occurred in that port. Sadly this mapset goes beyond what DarkPlaces can handle without failing to render assets.

garoto commented 3 years ago

In this case, just override the default Quake quicksave name and keybind via an autoexec.cfg placed in the mod dir with the following content:

bind "F6" "echo Quicksaving...; wait; save myquicksave"
bind "F9" "echo Quickloading...; wait; load myquicksave"

The map pack will continue to load its autosave game (named quick) if you respawn after dying via a left mouse click or a spacebar press. In that case, just press F9 to load your own custom named savegame.

ericwa commented 3 years ago

I'll close this to keep the QSS issue tracker organized, but I don't know off hand how to disable RRP's autosave.

It may be the only way is to edit out the autosave triggers in the .bsp's

adelpha commented 3 years ago

I'm not sure, but it might be possible to:

  1. export the entity lists from the BSPs
  2. remove all trigger_checkpoint entities from the list
  3. place edited .ent files in the maps folder
  4. external_ents "1" in autoexec.cfg or in console

Might be slightly more complicated if the trigger_checkpoint ents have is_waiting keys because then they're inactive until triggered. I'm not experienced enough to know what happens if a target is missing - best case scenario is that nothing happens at all. :)

Just a thought.

adelpha commented 3 years ago

Actually, it's not that simple. Some of the trigger_checkpoint ents also trigger other ents required for map progression, for example in telefragged.bsp removing the trigger_checkpoint ents makes the silver keycard impossible to obtain because the cage around the keycard doesn't disappear:

{ "spawnflags" "0" "classname" "trigger_checkpoint" "is_waiting" "1" "targetname" "cagesectiontrigger" "model" "*75" }

It's probably technically possible to rewrite the .ent file to make it work by changing certain trigger_checkpoints into other trigger types, but it's too complicated for me. Think you might just have to live with it, @Focus78.

garoto commented 3 years ago

Recompiling the progs.dat after commenting any save quick/load quick routine might be the less painfull way afterall.

Focus78 commented 3 years ago

Well this is extremely disappointing.

Why anyone thought that autosaves of any kind were ever a good idea without at minimum the ability to disable the function is logically beyond me.