wiki:Server fixes

Version 11 (modified by Alloc, 5 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. Admins.xml
    3. Replaced Telnet server
      1. New commands (also usable through ingame console)
  4. Release Notes
    1. rev. 100
    2. rev. 98
    3. rev. 96
    4. rev. 93
    5. rev. 91
    6. rev. 86
    7. rev. 84
    8. rev. 83
    9. Initial release (rev. 81)

Download

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

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 NamePatcher (originally written by DerPopo, adapted to my needs). 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"
    

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.
  • 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

New commands (also usable through ingame console)

  • getgameprefs / gg: Get all server preferences (no parameters passed) or just those that contain the strning that is passed. This can be used to give all users access to read the server settings (e.g. land claim size). 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
    
  • 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
    
  • sayplayer: Send a message to a single player denoted by his name or entity id. Will be shown on receiver side as "Server (private)".
  • 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:
        064 * brickDecayedTan
        064 * concreteBlock
        064 * quarterBlock
        064 * wedgeWoodWhiteShinglesAlsphalt
    
    Bagpack of player:
        031 * canBeef
        001 * firstAidBandage
        032 * painkillers
        001 * PumpShotgun
        064 * tallGrassDiagonal2
    

Release Notes

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)