QuakeSpasm 0.85.8

Discuss anything not covered by any of the other categories.
Post Reply
szo
Posts: 132
Joined: Mon Dec 06, 2010 4:42 pm

QuakeSpasm 0.85.8

Post 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.
ezzetabi
Posts: 4
Joined: Sat Oct 06, 2012 7:31 pm

Re: QuakeSpasm 0.85.8

Post 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.
r00k
Posts: 1111
Joined: Sat Nov 13, 2004 10:39 pm

Re: QuakeSpasm 0.85.8

Post 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. :(
szo
Posts: 132
Joined: Mon Dec 06, 2010 4:42 pm

Re: QuakeSpasm 0.85.8

Post 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.
r00k
Posts: 1111
Joined: Sat Nov 13, 2004 10:39 pm

Re: QuakeSpasm 0.85.8

Post 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]
Last edited by r00k on Mon Oct 08, 2012 8:59 pm, edited 1 time in total.
szo
Posts: 132
Joined: Mon Dec 06, 2010 4:42 pm

Re: QuakeSpasm 0.85.8

Post 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.
szo
Posts: 132
Joined: Mon Dec 06, 2010 4:42 pm

Re: QuakeSpasm 0.85.8

Post 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.
mh
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Re: QuakeSpasm 0.85.8

Post 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;
}
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
qbism
Posts: 1236
Joined: Thu Nov 04, 2004 5:51 am
Contact:

Re: QuakeSpasm 0.85.8

Post 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
mankrip
Posts: 924
Joined: Fri Jul 04, 2008 3:02 am

Re: QuakeSpasm 0.85.8

Post 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.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
Post Reply