Commit graph

152 commits

Author SHA1 Message Date
Yamagi
d1a53bdeec
Merge pull request #551 from DanielGibson/scancode-input
Scancodes for Input and other keyboard input improvements
2020-04-20 08:59:55 +02:00
Daniel Gibson
f1a81a5611 SV_Frame(int _usec_) instead of msec
it's microseconds, not milliseconds.
2020-04-08 15:28:59 +02:00
Yamagi
904f14f2ff Bump MAX_STRING_CHARS to 2048 and MAX_TOKEN_CHARS to 1024.
This allows for longer arguments passed to cvars, gl_nolerp_list is a
good example for a case were a token length of 128 is too short. Keep
the mapname[] buffer in the server struct at 128 bytes to preserve
savegame compatibility.

Closes #526.
2020-03-14 17:15:40 +01:00
Daniel Gibson
9f22f3d298 PVS Studio: Misc. fixes and FIXMEs 2020-02-10 17:55:41 +01:00
Daniel Gibson
ae3723c900 YQ2_ATTR_NORETURN for functions that don't return (Sys_Error() etc)
must be used in front of functions, not behind (the GCC __attribute__
allows both, but MSVC and C11 don't!)
2020-02-10 17:55:41 +01:00
Denis Pauk
b1d3ddebbc use vsnprint in Com_Printf functions 2020-01-30 22:28:13 +02:00
Yamagi
bec90db5fe Add missing stdint.h includes. This fixes the build on Windows. 2019-11-13 19:07:49 +01:00
Daniel Gibson
378f01f7b5 SV_FatPVS(): use int32_t instead of long, as the code assumes it's 32bit 2019-09-25 21:39:02 -01:00
Daniel Gibson
d615190e36 Fixes for PVS Studio warnings: warnings in unix/main.c and sv_send.c 2019-08-24 20:40:06 -01:00
Daniel Gibson
f9c77b98af YQ2_ALIGNAS_*() in common.h 2019-08-24 20:38:42 -01:00
Daniel Gibson
bebd9e73b3 YQ2_COM_CHECK_OOM() macro to check if malloc() etc was successful 2019-08-21 21:07:31 -01:00
Daniel Gibson
d2d87025fa Fix case of map savegames name (save/bla/MAPNAME.sav/sv2)
introduced FS_GetFilenameForHandle(fileHandle_t) for this

this helps if a map has been started with "wrong" case, which doesn't
immediately fail if it has been loaded from a pack, but will result
in invalid savegame names that (with case-sensitive FSs) will fail to
load (when going back to a formerly played level)
2019-02-17 18:46:57 +01:00
Yamagi Burmeister
b49f2bda6d Reconnect entity states of clients >1 when running in coop mode.
While loading a savegame the global edict arrays is free()ed and newly
malloc()ed to reset all entity states. When the game puts the first
client into the server it sends it's entity state to us, so as long as
there's only one client everything's okay. But when there're more
clients the entity states if all clients >1 are dangeling. Hack around
that by reconnecting the clients >1 entity states "manually".
2019-02-15 19:50:56 +01:00
Daniel Gibson
04a33c9837 Fix loading Coop savegames without starting server first 2019-02-03 19:35:38 +01:00
Yamagi Burmeister
5ddab0e4bf Allow UDP download from paks that are not numbered.
Until now the UDP download code prohibited downloading of maps from all
pak files. That was some kind of copy protection, without the limitation
demo users could download assets from the full version. Don't apply that
protection for all paks, but only for numbered .pak files.

This could be enhanced by limiting the protection to pak0 to pak2 for
baseq2 and pak0 for both xatrix and rogue.
2019-01-30 17:14:14 +01:00
Yamagi Burmeister
537e6d8de3 Port the server side of HTTP downloading from q2dos. 2018-12-20 18:01:38 +01:00
Yamagi Burmeister
9525dc35a8 Some small cleanups to entity file support.
- Fix some compiler warning about wrong format strings.
- Comply to code style.
- Remove unnecessary comments.
2018-10-07 09:51:19 +02:00
NeonKnightOA
d036868600 Add support for external entity files (.ent files).
This was ported from KMQ2.
2018-10-07 09:50:54 +02:00
Yamagi Burmeister
012ab85b31 On Windows we need to pass wchar strings to remove().
Until now the server just called remove() to delete the servers state
from the HDD. That was fine on Linux were UTF-8 is used but failed
silently on Windows in case that the working dir path had some Unicode
characters. Replace remove() by Sys_Remove(), on Linux it's just a
wrapper around remove() on Windows it does a UTF8->UTF-16 conversion
and calls _wremove(). This fixes issue 318.
2018-09-30 18:57:06 +02:00
Yamagi Burmeister
6b13d77c36 Change the current working directory before writing save games.
We can't rely on the game.dll being unicode conformant. Work around
that by changing the current working directory before calling into
the game.dll, pass a non unicode string to it and chang back after
we return.
2018-02-05 18:00:28 +01:00
Yamagi Burmeister
37ea3e1d58 Introduce a wrapper Q_fopen() and replace fopen() with it.
On Unix platforms unicode is implemented through UTF-8 which is
transparent for applications. But on Windows a UTF-16 dialect is
used which needs alteration at application side. This wrapper is
another step to unicode support on Windows, now we can replace
fopen() by a function that converts our internal UTF-8 pathes to
Windows UTF-16 dialect.

This is a noop for Unix platforms. The Windows build is broken,
the compiler errors out in shared.h. This will be fixed in a
later commit.

Caveats:
* fopen() calls in 3rd party code (std_* and unzip) are not replaced.
  This may become a problem. We need to check that.
* In the Unix specific code fopen() isn't replaced since it's not
  necessayry.
2018-02-05 07:43:26 +01:00
Denis Pauk
c43e944a3d Rebase soft render from https://icculus.org/quake2/
* deleted asm code
* added support 2k+ resolutions
* SDL2 support
2017-12-11 23:33:19 +02:00
Yamagi Burmeister
629683ab40 Also print errors when build with DEDICATED_ONLY. 2017-09-07 13:17:02 +02:00
Yamagi Burmeister
465963a1a5 Reconnect the server to the global timing.
Having the server in an own timing zone seems to simplify things but
introduces slight timing discrepancies. The most visible effect is that
the game runs a little bit too fast, especially in the first cl_maxfps
frames.

Therefor: Remove timeframes, they're unnecessary. Track the time since
the last (client|server) frame instead and pass it to the client and
server when it's called.
2017-09-06 18:36:51 +02:00
Yamagi Burmeister
f16242e923 Determine svs.realtime from curtime and not the global timing.
This is the same as the client does for it's realtime. It looks at least
somewhat more correct since it pevents rounding errors. And things are
simplified a litte bit since the server timing is now independent of the
global timing.
2017-09-06 18:36:51 +02:00
Yamagi Burmeister
9efd831312 Refactoring the search path magic, step 3: Remove now used code.
Remove all functions that are no longer used:

* FS_AddGameDirectory()
* FS_SetGameDir()
* FS_AddHomeAsGameDirectory()
* FS_AddBinaryDirAsGameDirectory()

While at it try remove as much global variables from filesystem.c as
possible. Also fix a small, longstandig bug: The download code should
treat .zip and .pk3 files as pak files and not as normal directories.
2017-07-23 08:47:41 +02:00
Yamagi Burmeister
1d709e5e27 Move file name check to prevent spurious "refusing to download messages
Moving the check under the "do we have the file localy" check prevents
spurious "Refusing to download a path with .." messages with some game
data. The tank commander skin is one example. This change has no
security impact since FS_LoadFile() just opens and closes the file.

While at it tighten the condition to prevent pathes with colons (this
condition is added at the server side, too) and pathes starting with
slashes and dots.
2015-10-27 17:38:28 +01:00
Yamagi Burmeister
7456daf65f Do not display baseq2 savegames in mods / addons
The savegame list is generated by calling FS_FOpenFile() for each
possible savegame name. When a file handle is returned the savegame
exists, otherwise the savegame slot is empty. But FS_FOpenFile()
searches in every directory known to the VFS. If a savegame file
isn't found in $moddir but in baseq2, the file in baseq2 is opened
and a baseq2 savegame is displayed in the mods / addons savegame menu.

The fix is compromise between a clean solution and invasiveness:

- Refactor FS_FOpenFile() to include FS_FOpenFileRead(). FS_FOpenFile()
  was used only to open read only files, limit its's possibilities to
  do exactly that.
- Introduce a new flag "gamedir_only" to FS_FOpenFile(). When true
  only the gamedir directories are searched and not other directories
  like baseq2.
- Change all callers to FS_FOpenFile()s new signature.
- Use the new gamedir_only flag to limit the searchpath for savegames
  to the gamedir.
2015-10-25 16:44:22 +01:00
Yamagi Burmeister
bd025ae5c5 Fix an off-by-one in memmove() call in SV_Map()
Submitted by: Ozkan Sezer
2015-08-24 18:02:08 +02:00
Daniel Gibson
d19cace026 Set MAX_OSPATH to 4096 for !Windows + fixes for that
sounds easy, right?
Except some genius decided to save CVAR_LATCH cvars in buffers of
MAX_OSPATH length into savegames.. so just changing MAX_OSPATH
breaks savegame compatibility.
Fortunately, this assumption only matters in SV_WriteServerFile() and
SV_ReadServerFile() so I worked around it by introducing a
platform-specific LATCH_CVAR_SAVELENGTH (because MAX_OSPATH was 256 on
Windows but 128 on other systems..)
2015-05-23 02:02:27 +02:00
Yamagi Burmeister
eb879bb9b6 Rename VERSION to YQ2VERSION to prevent collisions
Newer jpeg versions (I guess starting with 9) define an macro
"VERSION", colliding with ours. While wie could #undef it, take
the less hacky route and rename it.
2014-01-27 18:14:36 +01:00
svdijk
6472514c8f Lets not do the last two commits just before 5.11
Revert "change several strcat calls to Q_strlcat calls"
This reverts commit ab879f1bc7.

Revert "change (v)sprintf calls to (v)snprintf calls"
This reverts commit b46e210d76.
2013-05-18 18:59:39 +02:00
svdijk
ab879f1bc7 change several strcat calls to Q_strlcat calls 2013-05-17 22:25:18 +02:00
svdijk
b46e210d76 change (v)sprintf calls to (v)snprintf calls 2013-05-17 21:50:31 +02:00
svdijk
be63c7f198 note to self: always compile before you commit 2013-05-13 21:39:53 +02:00
svdijk
a5044a93eb make sure svs.demofile is set to NULL after closing it 2013-05-13 21:26:58 +02:00
svdijk
f5a44ff5ae remove unnecessary fileHandle_t typecasts 2013-05-13 21:11:52 +02:00
svdijk
2ad4255187 fix sv.demofile/svs.demofile type/treatment 2013-05-13 21:00:50 +02:00
svdijk
8fad0a9008 change some more (mostly wrong) strncpy calls to Q_strlcpy calls 2013-05-12 20:25:00 +02:00
svdijk
7c1d2b4219 fix incorrect typecasts in FS_* calls 2013-05-11 15:22:27 +02:00
svdijk
e07294b6b1 replace most strncpy calls (several of them wrong) by Q_strlcpy calls 2013-05-11 14:44:36 +02:00
svdijk
4682c888f0 replace strncat calls by Q_strlcat calls 2013-05-11 13:24:13 +02:00
Yamagi Burmeister
d9519cee61 Remove an unneccessary check.
This check involved an uninitialized pointer, so it never worked. It
could lead to crashes in some situations, especially when clients tried
to reconnect after a manual map change on the dedictated server.
2013-03-10 12:08:58 +01:00
svdijk
76e3480ccb Some rewriting of windowed_mouse setting, in preparation of releasing the mouse in the menu. 2012-10-30 20:36:15 +01:00
Yamagi Burmeister
3918d3ba34 Change the VERSION number from float to string
Using a float number as version number is a bad idea. Correct this long
standing problem by changing it to a string. If we ever want to compare
version numbers, 2 integer constants "MAJOR_VERSION" and "MINOR_VERSION"
should be added.
2012-07-27 08:57:52 +02:00
Yamagi Burmeister
9288513e86 Reformat and cleanup of the server 2012-07-21 10:06:07 +02:00
Yamagi Burmeister
40ff7a6b09 Convert rand(), crand() and frand() to randk(), crandk() and frandk() 2012-06-02 11:55:12 +02:00
Yamagi Burmeister
67dbe816c9 Change atoi() to strtol() 2012-06-02 10:24:52 +02:00
Yamagi Burmeister
0d8f990d14 Ensure that variables that point to data on the stack are cleared 2012-06-01 17:20:05 +02:00
Yamagi Burmeister
0e1520d29a Remove dead code and assignments 2012-06-01 17:05:40 +02:00
Yamagi Burmeister
b6325d7858 Remove unused variables and dead code (patch submitted by Christoph
Mallon)
2012-04-30 10:02:58 +02:00
Christoph Mallon
ab034114b4 Whitespace fixes. 2012-04-30 08:25:59 +02:00
Yamagi Burmeister
24b5f7fe97 Remove ctf/ from Makefile and simplify it. 2011-10-09 16:55:23 +00:00
Yamagi Burmeister
91ffbf0ba5 Reorder game files 2011-10-06 07:54:45 +00:00
Yamagi Burmeister
c7dc7eb62f Fly hinzugefügt 2011-01-11 17:45:00 +00:00
Yamagi Burmeister
d05e5272dd Überarbeite sv_world.c 2010-11-26 08:36:57 +00:00
Yamagi Burmeister
8a80e54c0b Räume sv_user.c auf 2010-11-26 08:30:12 +00:00
Yamagi Burmeister
d899229399 Überarbeite sv_send.c 2010-11-26 08:20:11 +00:00
Yamagi Burmeister
cb0159014d Connectionless server commands in eine eigene Datei 2010-11-26 08:12:50 +00:00
Yamagi Burmeister
5973a3c8e9 Räume sv_main.c auf 2010-11-26 07:33:49 +00:00
Yamagi Burmeister
6c2ae15351 Räume sv_init.c auf 2010-11-26 07:22:46 +00:00
Yamagi Burmeister
c49f21c9d0 Räume sv_game.c auf 2010-11-26 07:13:42 +00:00
Yamagi Burmeister
ca69a68868 Benenne sv_ents.c in sv_entities.c um 2010-11-25 16:52:44 +00:00
Yamagi Burmeister
7d71a7c2ee Räume sv_ents.c auf 2010-11-25 16:44:50 +00:00
Yamagi Burmeister
e35544ed52 Bennene sv_ccmds.c in sv_cmd.c um 2010-11-25 16:39:19 +00:00
Yamagi Burmeister
5ddb6ab6a1 Den Server-Savegame-Code in eine eigenen Datei 2010-11-25 16:36:27 +00:00
Yamagi Burmeister
bc2e6b671d Überarbeite sv_ccmds.c 2010-11-25 16:22:55 +00:00
Yamagi Burmeister
a25b89c54a Lizenzsheader und Guard für server.h 2010-11-25 16:20:12 +00:00
Yamagi Burmeister
58eae60830 Header-Cleanup Teil II 2010-11-25 16:00:56 +00:00
Yamagi Burmeister
bc58c04af4 server.h aufräumen, Stufe 1 2010-11-25 15:55:06 +00:00
Yamagi Burmeister
3c7426f836 Verschiebe server.h in ein Unterverzeichnis 2010-11-25 15:46:36 +00:00
Yamagi Burmeister
18676a1e7d Formatiere die Shutdown-Nachrichten neu 2010-10-20 06:10:33 +00:00
Yamagi Burmeister
09c87ea0cc Reformatiere die Startup Ausgabe 2010-10-19 13:34:08 +00:00
Yamagi Burmeister
c2e06a2682 - qcommon.h -> header/common.h
- qfiles.h -> header/files.h
2010-09-01 08:45:26 +00:00
Yamagi Burmeister
19c63a4903 Fixe Blendings und Kickangles. Ein Wunder, dass diesen seit letztem März
vorhandenen Bug niemand gefunden hat.
2010-02-02 19:58:52 +00:00
Yamagi Burmeister
315f07cae7 Benenne _windowed_mouse und windowed_mouse um 2010-01-08 15:47:16 +00:00
Yamagi Burmeister
c1094db726 Unlocke die Maus, wenn Konsole offen 2010-01-05 11:53:59 +00:00
Yamagi Burmeister
1538852650 Eine Warnungen ruhiggestellt 2009-10-04 09:42:02 +00:00
Yamagi Burmeister
e4818d35d5 Speichern funktioniert nun wieder. Das Menü spinnt aber noch 2009-10-04 09:26:46 +00:00
Yamagi Burmeister
7fdf2a7c4d Weitere Filesystem-Fixes 2009-10-04 08:10:43 +00:00
Yamagi Burmeister
18fd45bb82 Warnings ruhiggestellt 2009-10-04 07:06:21 +00:00
Yamagi Burmeister
21168ea8ed Noch einige Bugs durch das neue Dateisystem behoben 2009-10-04 06:57:04 +00:00
Yamagi Burmeister
e39af72d14 Bugfixes, damit die Demos wieder gehen. Kommt morgen noch mehr nach. 2009-10-03 17:26:02 +00:00
Yamagi Burmeister
b6f5dadf4c Merge in den Trunk:
- OGG/Vorbis Support
 - pk3 Support (ungetestet)
2009-10-03 16:06:45 +00:00
Yamagi Burmeister
058d8de80f So, auch der Fallout des Umbennens des Spiels ist nun behoben 2009-04-10 13:39:58 +00:00
Yamagi Burmeister
f08984684d Dies ermöglicht es Spiele auch unter i386 zu starten 2009-03-10 16:02:05 +00:00
Yamagi Burmeister
7e1778b106 Dedicated-Client Trennung ist nun bis auf den
plattformabhängigen Teil beendet
2009-03-04 15:24:29 +00:00
Yamagi Burmeister
2bcdff7d54 Und die letzte Warnung raus 2009-03-04 13:52:49 +00:00
Yamagi Burmeister
9c3b11561e Machen wir es ein wenig eindeutiger 2009-03-04 13:48:28 +00:00
Yamagi Burmeister
ea789d8d97 Ein Teil der Arbeit, um den Dedicated Server ohne
Client bauen zu können
2009-03-04 13:41:07 +00:00
Yamagi Burmeister
106e62f78a iDas Netzwerkprotokoll repariert 2009-03-04 13:13:00 +00:00
Yamagi Burmeister
f60b40b4a3 "Index: overflow" Error beseitigt 2009-03-04 13:06:17 +00:00
Yamagi Burmeister
71d8526080 Crashfix :D 2009-03-04 13:01:55 +00:00
Yamagi Burmeister
95e2727f60 sv_world aufgeräumt 2009-03-04 12:50:40 +00:00
Yamagi Burmeister
7746edd0e4 sv_user aufgeräumt 2009-03-04 12:17:42 +00:00
Yamagi Burmeister
916afa9532 icl_send aufgeräumt 2009-03-04 11:53:52 +00:00
Yamagi Burmeister
bb096c3bf1 sv_game aufgeräumt 2009-03-04 11:42:41 +00:00
Yamagi Burmeister
b87710666d sv_init aufgeräumt 2009-03-04 11:13:16 +00:00
Yamagi Burmeister
593fae8d6b sv_game aufgeräumt 2009-03-04 10:36:26 +00:00
Yamagi Burmeister
a12b0b4e87 Server Entities repariert 2009-03-04 09:54:44 +00:00