wiki:Server fixes

Version 49 (modified by Alloc, 10 years ago) (diff)

--

THIS IS ONLY FOR THE DEDICATED SERVER BUILD OF 7DTD!

Table of contents

  1. Download
  2. Build yourself
  3. Features
    1. New log information
    2. Integrated Webserver for administration
    3. Map rendering
    4. New commands (for in-game console, control panel and Telnet)
    5. Admins.xml
    6. Replaced Telnet server
  4. Release Notes
    1. rev. 165 (0.92.5360.43161)
    2. rev. 164 (0.92.5360.33406)
    3. rev. 163 (0.91.5360.30628)
    4. revs. 161/162 (0.91.5360.3074)
    5. rev. 160 (0.91.5359.27894)
    6. rev. 159 (0.91.5359.26222)
    7. rev. 156 (0.91.5359.21630)
    8. rev. 154 (0.91.5358.38435)
    9. rev. 147 (0.91.5355.36217)
    10. rev. 143 (0.91.5355.28079)
    11. rev. 142 (0.91.5354.28918)
    12. rev. 139
    13. revs. 137-138
    14. revs. 134-136
    15. rev. 133
    16. rev. 131 (and 130/129)
    17. rev. 128
    18. rev. 127 (and 126/125)
    19. rev. 123
    20. rev. 120
    21. rev. 117
    22. rev. 114
    23. rev. 113
    24. rev. 112
    25. rev. 110
    26. rev. 108
    27. rev. 107
    28. rev. 106
    29. rev. 103
    30. rev. 100
    31. rev. 98
    32. rev. 96
    33. rev. 93
    34. rev. 91
    35. rev. 86
    36. rev. 84
    37. rev. 83
    38. Initial release (rev. 81)

Download

The latest build can be found here: http://svn.illy.bz/7dtd/binary-improvements/bin/Release/. You need both the 7dtd-server-fixes.dll and the Assembly-CSharp.patched.dll (rename it to Assembly-CSharp.dll locally).

Note that this will only work with the correct version of the 7dtd dedicated server. If they release a new build the files have to updated (should never take longer than 24h from their release).

Build yourself

The Assembly-CSharp.dll is first deobfuscated with the Deobfuscator. Then the 7dtd-server-fixes.dll can be build referencing this assembly. At last the deobfuscated Assembly-CSharp.dll is patched with the Assembly-Patcher so it calls the new methods in the 7dtd-server-fixes.dll.

Features

New log information

  • New entry whenever a player connects combining all the information that previously had to be collected manually. It is printed after RequestToSpawnPlayer and looks like this:
    Player connected, clientid=1, entityid=171, name=alloc, steamid=765611*******172, ip=192.168.1.58
    
  • Each time someone connects on Telnet:
    Telnet connection from: 127.0.0.1:45014
    
  • When someone disconnects from Telnet:
    Telnet connection closed by client: 127.0.0.1:45014
    
  • When someone executes a command through Telnet:
    Telnet executed "gt" from: 127.0.0.1:45014
    
  • When a connected client successfully executes a remote command:
    Executed command "lp" from player "Alloc"
    

Integrated Webserver for administration

See Integrated Webserver for more information.

Map rendering

The map is rendered to image files as people visit the different places. Those images are stored within the save game folder in a folder named map. This folder contains one subfolder per zoom level, 0 being the most zoomed out whereas currently 4 is the normal size. In each of them are folders for the X coordinates of the blocks which contain individual images for the Y coordinates:

 SaveGame/
     map/
         0/             # 0 being the zoom level
             -3/        # -3 is the block number in x-direction (west to east)
                 5.png  # 5 is the block number in y-direction (south to north)

The map will be rendered while people wander around but if you want to initially get everything mapped that has been visited prior to adding this mod (or prior to rev.131 which introduced this feature) you might want to run the command "rendermap". NOTE that this will take a long time to execute (in the minutes) depending on how big the visited map is so far. During this time the server can not be used for playing or any commands.

The generated map file structure can be used to show the map with tools like Leaflet. The integrated webserver will also show this map.

New commands (for in-game console, control panel and Telnet)

  • creativemenu / cm: Enable/disable creative menu for the current session.
  • getgameprefs / gg: Get all server preferences (no parameters passed) or just those that contain the string that is passed. This can be used to give all users access to read the server settings (e.g. land claim size) (see Admins.xml below). Only non-sensitive information can be accessed, so excluded are all preferences which contain the following strings:
    • Telnet
    • AdminFileName
    • ControlPanel
    • Password
    • SaveGameFolder
    • Options
      gg claim
      LandClaimDeadZone = 30
      LandClaimDecayMode = 0
      LandClaimExpiryTime = 3
      LandClaimOfflineDurabilityModifier = 4
      LandClaimOnlineDurabilityModifier = 4
      LandClaimSize = 7
      
  • gettime / gt: Get the current in-game time like this one:
    Day 18, 14:13
    
  • give: Give an item to a player
  • kill: Kill a player denoted by his name or entity id
  • listitems / li: List items that can be given with give
  • listknownplayers / lkp: List all players that have ever been online (since this version of the mod)
  • listlandprotection / llp: Lists all land protection blocks and their owners (name only shown when owner is online) or only those that are owned by a given player (steamid or entity/name if online) or show a summary of players and number of keystones used only (by passing "summary"):
    Player " (76561198066968172)" (protected: True, current hardness multiplier: 4):
       (1249, 60, -21)
    Total of 1 keystones in the game
    
  • listplayersextended / lpe: Similar to listplayers but with more information on each player (deaths, zombie kills, player kills, score, IP, ping), looking like this:
    1. id=171, Alloc, pos=(902.0, 61.0, -353.7), rot=(0.0, -91.4, 0.0), remote=True, health=32, deaths=2, zombies=0, players=0, score=0, steamid=76561198066968172, ip=192.168.1.58, ping=43
    
  • removelandprotection / rlp: Removes the given land protection block or all blocks of a given player.
  • rendermap / rm: Render the map as far as it was ever visited by any player to both a big file and many small tiles that can be used for a map viewer like Leaflet. WARNING: This command can take a long time to execute (like 5 to 30 minutes) and the server won't be usable at that time for anything else!
  • reply / re: Send a message to the player who last sent you a private message (see sayplayer / pm).
  • sayplayer / pm: Send a message to a single player denoted by his name or entity id. Will be shown on receiver side as "<sender> (PM)" where <sender> is either "Server" if sent through the control panel or Telnet interface or the name of the sending player if used by the in game console.
  • settimereal / str: Set the in-game time by number of days, hours, minutes
  • showinventory / si: List the inventory/belt content of a player denoted by his name or entity id. Note that this data is only updated every 30s when the client sends his current state. Sample output:
    Belt of player:
        Slot 1: 001 * bottledWater
        Slot 2: 001 * canChili
        Slot 3: 001 * firstAidBandage
    
    Bagpack of player:
        Slot 0: 031 * canBeef
        Slot 4: 001 * firstAidBandage
        Slot 5: 032 * painkillers
        Slot 12: 001 * PumpShotgun
        Slot 31: 064 * tallGrassDiagonal2
    
  • teleportplayer / tele: Teleport a given player to a position
  • version: Show the currently running version of the server fixes

Admins.xml

  • Commands with permission level set to >= 1000 can be executed by all players. This is useful e.g. for the new getgameprefs command.
  • Commands not defined in admins.xml at all automatically has permission level 0
  • A command set in admins.xml affects both and long version. E.g. having the following in admins.xml will set the permisisonlevel to 1 for both lp and listplayers:
    <permission cmd="lp" permission_level="1" />
    

Replaced Telnet server

  • Should be way more stable
  • Handles disconnect of clients without sending exit
  • Allows multiple connections at once (though output for one client is sent to all)
  • If no password is set in TelnetPassword the Telnet server only listens on the loopback interface!
  • Greeting message contains new line * Allocs server fixes loaded
  • Output of a command run by a single Telnet client is only sent to this one client

Release Notes

rev. 165 (0.92.5360.43161)

  • Updated for A9.2 server hotfix (server build 373581)

rev. 164 (0.92.5360.33406)

  • Updated for A9.2 (server build 373271)

rev. 163 (0.91.5360.30628)

  • Added console command teleportplayer / tele
  • Added GetPlayerInventory API
  • Map: Show inventory for a player by clicking its marker and show inventory (requires latest webserver files)

revs. 161/162 (0.91.5360.3074)

  • Another hotfix for player list API (JSON empty strings)

rev. 160 (0.91.5359.27894)

  • Another hotfix for player list API (JSON encoding for strings)

rev. 159 (0.91.5359.26222)

  • Another hotfix for player list API

rev. 156 (0.91.5359.21630)

  • Hotfix for player list API
  • Removed debug output "add dirty"

rev. 154 (0.91.5358.38435)

  • Web: First API introduced
  • Map shows current player locations both for online and offline players (last position)

rev. 147 (0.91.5355.36217)

  • Command showinventory / si changed:
    • Allows to pass steamid in addition to allowing entity id and player name
    • With steamid also players that are currently not online can be checked
    • Output format has changed: Items of same type aren't accumulated anymore but instead each slot is shown on its own:
          Slot 2: 001 * canChili
      
  • Added console command listknownplayers / lkp

rev. 143 (0.91.5355.28079)

  • Big improvements on map rendering (both live and full rendering)

rev. 142 (0.91.5354.28918)

  • Fixed Telnet connection not using UTF8
  • Removed extra output for unimplemented Web methods

rev. 139

  • Command listlandprotection / llp changed: Allow to show keystones of a single user, show summary only

revs. 137-138

  • Minor changes to integrated web server

revs. 134-136

  • Improvements on map rendering and integrated server authorization (username="admin", password same as control panel)

rev. 133

  • Added integrated web server (map display only so far)

rev. 131 (and 130/129)

  • Added map live rendering
  • Added console command rendermap / rm

rev. 128

  • Added console command creativemenu / cm
  • Added console command give
  • Added console command listitems / li

rev. 127 (and 126/125)

  • Updated for A9 (server build 363156)

rev. 123

  • Command removelandprotection / rlp changed: You can remove all blocks of a given player (by SteamID) instead of only remove a single one
  • Command removelandprotection / rlp changed: Both the association of the block to the owner and the actual block are removed

rev. 120

  • IMPORTANT Fixed a bug in the permissions calculation for players.

rev. 117

  • Updated for A9 (server build 356618)

rev. 114

  • Added console command version

rev. 113

  • Added console command listlandprotection / llp
  • Added console command removelandprotection / rlp

rev. 112

  • Command sayplayer / pm changed: Ignores color codes in player names

rev. 110

  • Fixed minor bug in reply / re

rev. 108

  • Added console command reply / re

rev. 107

  • Console output of the Web control panel and each Telnet client is separated

rev. 106

  • Updated for server build 334790

rev. 103

  • Command sayplayer changed: Added short version pm
  • Command sayplayer changed: Sender is now denoted as stated in the description above so this command can be used as a PM function for players
  • All code that could ever produce errors is now doing exception handling so it should at least never affect the game/server itself.

rev. 100

  • Updated for server build 333545

rev. 98

  • Fixed: inventory with multiple stacks of the same item causing an exception

rev. 96

  • Fixed: New commands get registered even if Telnet is not enabled
  • Fixed: The actual dedi server DLL is used now

rev. 93

  • Added console command showinventory / si

rev. 91

  • Added Telnet welcome message line: * Allocs server fixes loaded
  • Command getgamepref changed: First parameter may just be a substring of prefs, like "claim"
  • Command listplayersextended: Added output field "ping"

rev. 86

  • Console commands allowed by admins.xml affect both short and long versions

rev. 84

  • Added console command settimereal / str
  • Changed behaviour of Admins.xml (see features)

rev. 83

  • Added console command sayplayer
  • Added logging output for remote command execution from clients

Initial release (rev. 81)