Commit Graph
1441 Commits
Author SHA1 Message Date
drian b615fe449e Merge remote-tracking branch 'remotes/origin/next' into release_v1.3 2021-02-10 21:00:09 +01:00
drian e39de97f2f Merge remote-tracking branch 'remotes/origin/experimental' into release_v1.3 2021-02-10 19:54:05 +01:00
aurhat f58ea22b46 Replace *.ac-akimbo.net pck servers by packages.cubers.net 2018-05-20 12:26:21 +02:00
ac-stefandaurhat 7b5c91a3da temporary win10 hotfix changes
Some changes to allow the current experimental branch to be used for a
hotfix release for win10 users.

The latest win10-update broke compatibility with SDL1.2 - and apparently
MS is not going to fix it. This hotfix allows win10 users to use our
experimental SDL2-based client.

It is quite incompatible with the 1.2.0.2 release - but it's good enough
to be played in pubs.

Coopedit will not work and quite a few custom maps won't work properly.
This is due to lots of changes in the map file format and does not mean,
that those custom maps can not be played in future game releases - they
just need to be reworked. See akimbo2 to check out the reworked maps, btw.
The old official maps and most conservative custom maps should be fine.

Due to some physics changes, players of the hotfix client will have some
advantages and some disadvantages compared to the regular clients, so DO
NOT USE THE HOTFIX CLIENT TO PLAY COMPETITIVELY.

By default, if an incompatible map is loaded in multiplayer, the client
will disconnect automatically. This can be disabled (disconnectonmaperror),
but will probably get you marked as cheater, because on incompatible maps,
model clipping may not work properly. Just stick to compatible maps...
2018-02-10 11:28:51 +01:00
ac-stefandaurhat e5077d0226 use both keycodes and scancodes of keypress events
If a keycode can not be found on the list from keymap.cfg a second search
is done for the scancode. This should be helpful to assign
layout-dependent keys with rare keycodes.

Also: use a hash table for the keys (instead of a list).

Add two new scan codes for dead keys on german layouts: LEFTOF1 and
LEFTOFDEL.
2018-02-10 11:28:50 +01:00
ac-stefandaurhat f0f8eac770 remove most platform dependent exceptions for SDL2 code
* switch travis to trusty
* new parameter fullscreendesktop: uses desktop resolution for fullscreen
* "colorbits" removed, since it's no longer supported
* scr_w/scr_h no longer necessarily reflect the true display resolution
  (with fullscreendesktop = 1 and fullscreen = 1, scr_w and scr_h are
  ignored)
* desktopw and desktoph are now guaranteed to have nonzero values
* fallback to old mouse behaviour when SDL_SetRelativeMouseMode fails
* require a click into the window to grab the mouse
* scr_w/scr_h default to desktop resolution on first run

thx sauerbraten :)

DOCREF fullscreendesktop colorbits
2018-02-10 11:28:49 +01:00
ac-stefandaurhat e75dfbe4c7 fix/finish SDL2 port
* implement gamma
* menu keys fixed
* add support for horizontal mousewheel and some more mouse buttons
* fix keyrepeat
* fix window resizing
* fix compiler warnings
* use SDL to access clipboard
* remove X11-dependency
* some surplus SDL headers removed
* fix setdesktopres
* fix vsync
* improve fullscreentoggle on linux
* remove togglegrab
2018-02-10 11:28:49 +01:00
Jani-Markus Maunusandaurhat f86579533a Ported AC to SDL2 2018-02-10 11:28:48 +01:00
aurhat 9f537b0876 Fix unquoted semicolons
Thanks Robtics
2018-01-27 09:35:07 +01:00
aurhat c9d9b752a1 Update scripts for preparing Windows installer
Also cleanup
2017-11-25 03:06:06 +01:00
aurhat a9c73cb50b Update docs
Compatible with the tree in assaultcube.github.io for #49dacb0 commit.
2017-11-25 00:43:47 +01:00
aurhat 830f8c0cf7 Cleanup
Thanks DADSGETNDOWN for the report for maps/mapmodel configs.
2017-11-18 14:04:59 +01:00
aurhat 1d7dd9df84 Cleanup 2017-10-15 12:14:20 +02:00
aurhat 803517e2ef Improve maps menus
Map message moved on the right.
2017-09-04 22:49:01 +02:00
ac-stef 059ea1e992 fix omitunchangeddefaults 2017-08-05 10:49:10 +02:00
aurhat 87555d774a Update docs
Compatible with tree in assaultcube.github.io for #68e4c1b commit.
2017-07-19 21:13:00 +02:00
ac-stef 59c3d1756d add option to grey out menu items
greyed out menu items are a) grey and b) can't be operated

  menuitemgreyedout 0|1

    menu items added after this command are greyed out (1) or not (0)

DOCREF menuitemgreyedout
2017-07-09 11:30:29 +02:00
ac-stef 3a320de948 cleanup cpistol 2017-06-27 15:15:25 +02:00
ac-stef 1fe478aae4 cleanup protocol
...and get master to compile again

DOCREF hudextras mapstats_hud nextGameMode
2017-06-27 15:15:25 +02:00
ac-stef 7cddb6c7c6 add debug logging to demo recording
fix server hanging after 5th demo
fix incomplete demo slot cleanup
fix demo file size reporting (enddemorecord can't do it accurately, because
  the file is not complete, yet - so, round to megabytes, where the error
  doesn't show...)
include exact demo file size in "listdemos" report
2017-06-27 15:15:24 +02:00
ac-stef 7d1edd0fa1 cleaned up demo filename nonsense
If a filename does not contain at least mode, map and timestamp (due to
messed up format strings), the default format is used to ensure unique
filenames.

server side: added server parameters

  demo_max_number
    number of demo files to hold in RAM

  demo_save
    enable/disable writing of demos to file

  demo_path
    demo file path and filename prefix

  demo_filenameformat
    format string to assemble demo information to a filename
    %g : gamemode (int)
    %G : gamemode (chr)
    %F : gamemode (full)
    %m : minutes remaining
    %M : minutes played
    %s : seconds remaining
    %S : seconds played
    %h : IP of server
    %H : hostname of server (client only)
    %n : mapName
    %w : timestamp (formatted by demo_timestampformat)

  demo_timestampformat
    timestamp format string (see strftime() for format options)
    if the string starts with 'U', UTC is used - otherwise local time

client side:

changed demonameformat and demotimeformat to SVARs

  demonameformat
    like demo_filenameformat

  demotimeformat
    like demo_timestampformat

removed demotimelocal getdemonameformat getdemotimeformat getdemotimelocal

DOCREF demonameformat demotimeformat
DOCREF demotimelocal getdemonameformat getdemotimeformat getdemotimelocal
2017-06-27 15:15:24 +02:00
ac-stef df6719439b optionally reverse influence of previously played games modes
a negative modepenalty_weight value makes the server more likely to
suggest games with the same mode as was recently played

default is a positive value to more likely mix it up
2017-06-27 15:15:24 +02:00
ac-stef daf4b9d24a add server parameters for statistic and diagnostic purposes
Logged server parameters are checked for changes once a minute. If a
change is detected, it is logged.
2017-06-27 15:15:23 +02:00
ac-stef 49232e05e0 new commands to add modeinfo and artist info to maps
mapartist print|set|get|clear

  print:  prints the map artist player ID
  set:  sets the map artist player ID to the currently logged in player
  get:   returns the current map artist player ID
  clear:  erases an existing map artist record in the current map

modeinfo list|get|clear|<modelist> <modeflags>

  list:  lists current modeinfo entries
  get:  returns list of current modeinfo entries
  clear:  erases current list of modeinfo entries
  <modelist> <modeflags>:  specifies flags for a list of modes

DOCREF modeinfo mapartist
2017-06-27 15:15:23 +02:00
ac-stef 0b656d2380 add server-side player vita database
The server keeps track of every player ID that ever connected successfully.
This database stores the last names and IPs used by the player and the
last countries the connections came from. Some stats are counted, like
"time connected" and "total tks". Most importantly, the database stores
rights (like admin) and restrictions (like ban). All rights and
restrictions are kept as dates (or timecodes), so, for example, if your
ban date is in the future, you are banned - and if it's in the past, you
can play. The collected stats are meant to help server owners at managing
players - especially, if they want to give someone admin rights.

The database is periodically saved to a file and read from that file on
startup. The default file is config/servervita.cfg and one backup is kept
in config/servervita_bak.cfg. During server start, if the regular file
can't be loaded, the backup is tried instead.

While the server is running, it checks periodically for a file named
config/servervita_update.cfg, and if the file exists, it is renamed to
a backup filename including a timecode and read and merged into the
database. The automatic rename makes sure, that a file is only read once.
Using such updates, a server owner can easily give several people admin
rights or for example, add clan tags for a whole list of IDs. (Yes, the
database also stores a clan tag for every ID...)

The database also stores two short comments for every ID. One can only be
read by server admins, but the other one is public. The public reason, for
example, can state a reason for a ban.

One database record takes up 264 bytes of RAM. During autosave, accounts,
that have not been used for a specified time (default 12 months), will
not be written. After a server restart, those old records will be gone.

Currently, there is no process in place, to also clean up old records
from RAM. Maybe, that'll be added later...
2017-06-27 15:15:23 +02:00
ac-stef dd295bb54a initialise server parameters from commandline
overwrite defaults with commandline parameters before first use
(log level settings used as an example)
2017-06-27 15:15:23 +02:00
ac-stef d6af5be3da add auth to client server connect protocol 2017-06-27 15:15:23 +02:00
ac-stef 2147d60934 option to dump maprot suggestions to file 2017-06-27 15:15:22 +02:00
ac-stef 5fee02c77b new maprot
Instead of a list of specific map+mode combinations the maprot now only
contains general rules for maps and game modes. The server then calculates
the list by itself when needed. The server accounts played maps and modes
(and map+mode combinations) and calculates the list specifically not to
overplay maps or modes.

May need further testing.
2017-06-27 15:15:22 +02:00
ac-stef 7486317497 add changeable server parameters
A list of parameters is read from config/serverparameters.cfg once per
minute and the values written to corresponding server data structures.

If the binary is compiled in debug mode, starting a dedicated server
will write a blank config file with all possible parameters and their
descriptions, sorted and grouped into chapters.

The name of the config file can be set with the commandline parameter -A.

So far, syntax errors are not reported. Instead, it's possible to dump
all current values to a file every time something changes.
2017-06-27 15:15:22 +02:00
ac-stef b82a38b2e2 read-ahead for server info files
* poll and read motd and serverinfo along the other server config files
* "en" language setting is now immutable
2017-06-27 15:15:22 +02:00
ac-stef 1c109bfa62 new commandline parameter to specify path for server logfiles
use -H to set path
default is logs/
2017-06-27 15:15:21 +02:00
ac-stef 63668e0dda add support for a geolocation table
including two converter scripts to use Geolite2 and Webnet77 tables
2017-06-27 15:15:21 +02:00
ac-stef ac5229dfba server cleanup
* restrict reading of config files to times when the server is empty
* collect entropy
* remove hint how to convert pre-1.0 blacklists
2017-06-27 15:15:21 +02:00
ac-stef c8c310886a fix parsing of commandline switches for servers
also:
 * -Y now sets the private key for the server
 * -m without argument uses default masterserver URL
 * servers run LAN-only by default (set ms URL and private key to
   register with the master)
 * use generic locale "POSIX"
2017-06-27 15:15:21 +02:00
ac-stef 57093ed70c rewrite doc command parser
- properly break statements into words
- pick statement where cursor is
- detect unmatched braces + indicator
- fix huge memory leak
- add cs ident details
- add debug view (broken into words)
- menu entries for the settings

  docidentverbose 0|1|2|3

    enables ident details or statement analyser

DOCREF docidentverbose
2017-06-23 12:48:17 +02:00
ac-stef 4b26df11df update genmapitems
easier than to fix the persistidents vs. push/pop problem :)
2017-06-17 18:37:32 +02:00
ac-stef f33b9c0dba enable automapconfig whenever config slots are added 2017-06-16 19:20:21 +02:00
ac-stef 2448e90bf2 convmap changes
new tool: list media sources
new stage: check vantage points
new: add single map from menu
new: option to abort maps on stage errors

fixed: make sure, player is alive (to be able to enter edit mode) during
conversions
2017-06-16 16:05:03 +02:00
ac-stef 8235300d77 merge old and new entity copy/paste
- copyent and pasteent now also work with the menu list of copied ents
- pressing editmeta while using pasteent opens the menu
- new switch command (not unlike the old one)
- make expandselection and shrinkselection work with multiple selections

DOCREF switch copyent pasteent
2017-06-15 14:00:54 +02:00
ac-stef 0b2079660a fix clip entity menu and add entity copy/paste menu
newent7 type attr1 attr2 attr3 attr4 attr5 attr6 attr7

    Works like newent, but can set all seven attributes directly.
    Does not automatically put the camera yaw angle into mapmodel and flag
    entities.

fixed selectionwalk so that the first parameter can be ""

DOCREF newent7
2017-06-15 01:12:33 +02:00
ac-stef e1572dcdee move ++, --, ++f and --f to compatibility.cfg
useless, because of the "failing silently" behaviour

DOCREF ++ -- ++f --f
2017-06-14 19:01:15 +02:00
ac-stef d7277c1aa4 fix permissions for some edit commands
- always allow read-only edittextureslot, editmapmodelslot and
  editmapsoundslot
- allow setvantagepoint when editing offline or spectating offline
- new var editing_sp: 1 during edit mode in singleplayer (offline)
- additional menus for read-only access to map config slots
- new bonus edit scripts: selectmiddle and unclipentclippedmodels

DOCREF edittextureslot editmapmodelslot editmapsoundslot setvantagepoint
DOCREF editing_sp
2017-06-14 16:33:58 +02:00
ac-stef 30a0e8608c menu code cleanup and subdirectory support
menuitemmapload mapname action [hoveraction [desc]]

    create menu entry for a map file

  menudirlistsub action dots

    adds subdirectory entries to a menu with a files list
    has to come after the menudirlist command
    <action> is the command to be executed, when the menu entry is chosen
    if <dots> is 1, an entry ".." is added

  enumfiles path [extension]

    lists files in a directory
    if extension is specified, only files of that extension are listed
    if the extension is "dir", only directories are listed

DOCREF menuitemmapload menudirlistsub enumfiles
2017-06-12 20:07:11 +02:00
ac-stef a5fbccbd7c restore htf flag skins
and re-use flag model files
2017-06-11 21:13:51 +02:00
ac-stef 528d923f81 create map preview pictures during spectating
pressing CTRL+F12 during spectating creates a clean screenshot and saves
it as map preview picture

  modkeypressed

    returns 1, if a CTRL key is pressed and 0, if not

  screenshotpreview [lines]

    creates a screenshot cropped to 4:3 with a given number of lines
    (in the range of 144 to 480, default 240 or last given value)
    and jpeg quality 80

  gotovantagepoint

    now returns 1, if the map actually has a vantage point set

DOCREF screenshotpreview modkeypressed gotovantagepoint
2017-06-11 21:13:50 +02:00
ac-stef 800e4f3a13 add reset option for loadcrosshair
loadcrosshair reset

    loads all default crosshairs (including teammate and scope)

    short form of "loadcrosshair default default.png ; loadcrosshair
    scope red_dot.png ; loadcrosshair teammate teammate.png"

DOCREF loadcrosshair
2017-06-10 00:15:58 +02:00
ac-stef ef2b91c0ce more cubescript limits
the limits are hardcoded and require recompilation to change

* limit recursion depth
* limit loop iterations
* limit string lengths
* limit push/pop depth
* clean surplus whitespace from config files
* provide context for script errors

(limits accidental crashes, not intentionally malfunctioning code)
2017-06-08 19:00:04 +02:00
ac-stef 83d0199867 command cleanup
changed commands:

  strstr haystack needle

    now returns position of needle in haystack (counting from 1)
    or zero, if not found

  substr string start len

    now counts negative length from total length
    "substr text 1 -2" now returns the text without first and last char

  strreplace text search replace

    no longer restricted to 260 char stringlengths

removed commands:

  swapelements, strpos (can be scripted, if required)

DOCREF strstr substr
DOCREF swapelements strpos
2017-06-07 23:20:00 +02:00
ac-stef ffee440fa0 add early string replacement and alias lookup to cubescript
replace tokens starting with @ during scanning/sizing-up of []-blocks

  @word    look up word as in $word
  @(...)   evaluate braces
  @[...]   evaluate braces and look up result
  @"..."   parse quotes

in nested []-blocks, use multiple @ to determine time of replacement
(for example, @@@word is replaced when found inside three nested braces)

in regular $-lookup, $[...] now evaluates the braces before lookup
2017-06-07 18:16:06 +02:00