Page 1 of 1

QuakeSpasm 0.85.8

Posted: Mon Oct 08, 2012 8:37 am
by szo
Version 0.85.8 of QuakeSpasm is released:

Downloads
Project page

ChangeLog:
* Made Quake shareware 1.00 and 1.01 versions to be recognized properly.
* Fixed control-character handling in unicode mode. Keyboard input tweaks.
* Made the keypad keys to send separate key events in game mode.
* Text pasting support from OS clipboard to console. (Windows and Mac OS X.)
* Support for the Apple (Command) key on Mac OS X.
* Fixed increased (more than 32) dynamic lights.
* Music playback: Made sure that the file's channels count is supported.
* Support for Solaris.
* Switched to using libmad instead of libmpg123 for MP3 playback on Mac OS X.
* Better support for building the Mac OS X version using a makefile, support for cross-compiling on Linux.
* Fixed a minor intermissions glitch.
* Increased string buffer size from 256 to 384 for PF_VarString to work around broken mods such as UQC.
* Restored original behavior for Quake registered version detection.
* Minor demo recording/playback tweaks.
* Minor tweaks to the scale menu option.
* unbindall before loading stored bindings (configurable by new cvar cfg_unbindall, enabled by default.)
* New icon.
* Miscellaneous source code cleanups.

Re: QuakeSpasm 0.85.8

Posted: Mon Oct 08, 2012 5:43 pm
by ezzetabi
I tried my iq with quakespasm and I noticed that the simple iq flashlight does not work in quakespasm, it is expected that an entity without a model but with EF_DIMLIGHT effect does not appear? Using a transparent mdl model would help?
EDIT: yes, it solves the problem.

In iq the flash turns off when the level ends, calling the function crashed quakespasm.
CODE HERE.

Code: Select all

the Installation
Using protocol 666
etb entered the game
ADDRESS    1000(?)              137(think).think     1000(?)              
    flash.qc : flash_off
    flash.qc : flash_update
<NO FUNCTION>
assignment to world entity
Host_Error: Program error
Client etb removed
Shutting down SDL sound
It is expected?

If a new monster is spawned the total number of monster is not updated, try Tur Torment level where few mines are spawned when you make appear the ``You are not supposed to be here'' message.

quakespasm has a strange behavior with the skill variable:

Code: Select all

]skill 4
]restart

FITZQUAKE 0.85 SERVER (45995 CRC)



the Slipgate Complex
Using protocol 666
]skill
"skill" is "3"
Client etb removed
Shutting down SDL sound
It might breaks map with extra difficulty levels like anwop.

Re: QuakeSpasm 0.85.8

Posted: Mon Oct 08, 2012 8:40 pm
by r00k
assignment to world entity will crash on any client. It's a quakeC bug. You might be assigning a variable to self like self.blah = 123. where self in that instance is the world.
edit
ok i looked at ur code and self.flash.think ?
is .flash an entity? of so is flash.owner = player entity??
Either way pm me, i dont wanna further derail this thread on a QC bug, unrelated to his engine release. :(

Re: QuakeSpasm 0.85.8

Posted: Mon Oct 08, 2012 8:48 pm
by szo
ezzetabi wrote:In iq the flash turns off when the level ends, calling the function crashed quakespasm.
CODE HERE.
Crash happens because you are calling flash_off() from within flash_update()
and flash_update() has a shorter think time than flash_off(). Replace the flash_off()
call simply by a remove(self) in flash_update() and it will be fixed.

So, this is **not** a quakespasm issue, but an issue with your qc code.

Re: QuakeSpasm 0.85.8

Posted: Mon Oct 08, 2012 8:55 pm
by r00k
EDIT: ^^ what szo said, was typing the message as he replied.
--------------------------------------------------------------------------
it's because ur calling sub_remove when self points to the player.
You should do this instead

Code: Select all

void() flash_off = 
{
entity tmp;
    self.aflag = self.aflag - FL_FLASHLIGHT;
tmp = self;
self = tmp.flash;
    self.think = SUB_Remove;
    self.nextthink = time + 0.1;
self = tmp;
};
[/color]

Re: QuakeSpasm 0.85.8

Posted: Mon Oct 08, 2012 8:58 pm
by szo
ezzetabi wrote:quakespasm has a strange behavior with the skill variable:

Code: Select all

]skill 4
]restart
[...snip...]
]skill
"skill" is "3"
Client etb removed
Shutting down SDL sound
It might breaks map with extra difficulty levels like anwop.
It is *standart quake code*, which neither fitzquake nor we had ever touched:
see SV_SpawnServer() who limits skill to 3.

Re: QuakeSpasm 0.85.8

Posted: Tue Oct 09, 2012 7:34 am
by szo
r00k wrote:EDIT: ^^ what szo said, was typing the message as he replied.
--------------------------------------------------------------------------
Well, I'm certainly not a qc expert and I only looked at his code _very_ briefly,
so your analysis may be correct too.

Re: QuakeSpasm 0.85.8

Posted: Sat Oct 13, 2012 5:33 pm
by mh
Try this:

Run Quake; the ID1 game.
Load a save game from where you've already completed at least one episode.
Have a look at the runes on your sbar.
Issue a "kill" command at the console.
Have another look at those runes.

This affects nearly every NQ engine; the cause is that serverflags don't survive the kill command; the fix is:

Code: Select all

void Host_Kill_f (void)
{
	float fl;

	if (cmd_source == src_command)
	{
		Cmd_ForwardToServer ();
		return;
	}

	if (sv_player->v.health <= 0)
	{
		SV_ClientPrintf ("Can't suicide -- allready dead!\n");
		return;
	}

	fl = pr_global_struct->serverflags;

	pr_global_struct->time = sv.time;
	pr_global_struct->self = EDICT_TO_PROG (sv_player);
	PR_ExecuteProgram (pr_global_struct->ClientKill);

	pr_global_struct->serverflags = fl;
	svs.serverflags = fl;
}

Re: QuakeSpasm 0.85.8

Posted: Sun Oct 14, 2012 5:08 am
by qbism
Do any mods turn players into zombies? Unusual fix in this same function:

Code: Select all

	// 2001-09-09 Kill command does not work for zombie players fix by Maddes  start
	//	if (sv_player->v.health <= 0)
	if ((sv_player->v.health <= 0) && (sv_player->v.deadflag != DEAD_NO))
		// 2001-09-09 Kill command does not work for zombie players fix by Maddes  end

Re: QuakeSpasm 0.85.8

Posted: Mon Oct 15, 2012 2:20 am
by mankrip
mh wrote:Run Quake; the ID1 game.
Load a save game from where you've already completed at least one episode.
Have a look at the runes on your sbar.
Issue a "kill" command at the console.
Have another look at those runes.

This affects nearly every NQ engine; the cause is that serverflags don't survive the kill command; the fix is:
That's not a proper fix; it doesn't work for the restart command, and it also introduces another bug: Get the rune, save the game before changing the level, reload it, and use the kill command - your fix will incorrectly add that rune to the player's inventory, because it wasn't there when the player first started the map.

The actual issue is that the serverflags value isn't properly stored in the saves. I have just added a proper fix on the first post of this thread. That does break savegame compatibility, but it's the proper solution. Changing the value of SAVEGAME_VERSION from 5 to 6 and adding a check for it solves that... hmm, I should do this now.

[edit] I've added a savegame_compatibility cvar and a menu option to switch the SAVEGAME_VERSION, so there's no compatibility problems anymore.