Can't start Aseco.bat: PHP Warning/fatal error string offset

Discuss everything about Xymph's Aseco flavoured server control scripts for TM Forever / classic TMN and for TM² Canyon.

Moderators: Xymph, TM-Patrol

Post Reply
alex4311
highway camper
highway camper
Posts: 2
Joined: 08 Apr 2017 16:38
Owned TM-games: tmnf

Can't start Aseco.bat: PHP Warning/fatal error string offset

Post by alex4311 » 08 Apr 2017 17:42

Hello all,

I've been trying to make my own server in TMNF. I managed to make the server show up in the server list in TMNF and I can join the server through the LAN mode in game. However, I can't get xaseco to work.
When TrackmaniaServer is running and I start up the Aseco.bat, it gives me this message:

Code: Select all

# initialize XASECO ###########################################################
[XAseco] PHP Version is 7.1.3 on WINNT
[XAseco] Load settings [config.xml]
[PHP Warning] Illegal string offset 'TMLOGIN' on line 77 in file C:\TMNFServer\X
aseco\xaseco\includes\xmlparser.inc.php

Fatal error: Uncaught Error: Cannot use string offset as an array in C:\TMNFServ
er\Xaseco\xaseco\includes\xmlparser.inc.php:77
Stack trace:
#0 [internal function]: Examsly->closeTag(Resource id #14, 'TMLOGIN')
#1 C:\TMNFServer\Xaseco\xaseco\includes\xmlparser.inc.php(44): xml_parse(Resourc
e id #14, '<?xml version="...')
#2 C:\TMNFServer\Xaseco\xaseco\aseco.php(220): Examsly->parseXml('config.xml', t
rue, false)
#3 C:\TMNFServer\Xaseco\xaseco\aseco.php(697): Aseco->loadSettings('config.xml')

#4 C:\TMNFServer\Xaseco\xaseco\aseco.php(2561): Aseco->run('config.xml')
#5 {main}
  thrown in C:\TMNFServer\Xaseco\xaseco\includes\xmlparser.inc.php on line 77
Only place where you find "tmlogin" is in the config.xml file:

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<settings>
  <aseco>
    <masteradmins>
              <tmlogin>xxx</tmlogin> <ipaddress></ipaddress>
	</masteradmins>
I've removed the "format:" in the xml files, placed the xml files from the newinstall folder into the xaseco folder next to aseco.php, placed the php files from the newinstall folder to the includes folder (I didn't remove the xml and php files from the newinstall folder, but I edited the xml files that I placed in the xaseco folder), and I followed the TMF quickstart guide from gamers.org.

I'm using Windows 7 Professional 64-bit, TrackmaniaServer_2011-02-21, PHP 7.1.3 and MySQL Server 5.7.17. I've searched online and on this forum, but couldn't find any solution for this.

Does anyone have an idea how to fix this problem? :)

weasel
speedy pilot
speedy pilot
Posts: 331
Joined: 11 Mar 2011 23:44
Owned TM-games: TMN, TMU, TMF,TM2all

Re: Can't start Aseco.bat: PHP Warning/fatal error string of

Post by weasel » 08 Apr 2017 19:58

There was a post on this forum about xaseco and php 7 +

some post on forum :

TheBigG wrote:
will there be a fix for PHP7? XAseco uses mysql_connect and that is removed in PHP7.
https://secure.php.net/manual/en/functi ... onnect.php

I am aware of that, but mysql_* calls are used in 20+ source files, not to mention countless third-party plugins. Rewriting to mysqli_* calls would take far more than a 'fix'. :(

The simple fix? Don't upgrade to PHP 7, or -- for ManiaPlanet, anyway -- switch to a more modern server controller that doesn't use mysql_* calls.

I know... not desirable either.




the fix :
viewtopic.php?f=127&t=37120

viewtopic.php?f=127&t=35817

Xymph
Pit Crew
Pit Crew
Posts: 5650
Joined: 19 Aug 2007 12:58
Owned TM-games: TMN, TMU, TMF, TM²
Contact:

Re: Can't start Aseco.bat: PHP Warning/fatal error string of

Post by Xymph » 08 Apr 2017 20:45

If config.xml cannot be loaded, then obviously its structure is broken -- independent of any PHP7 issues.
Developer of XASECO for TMF/TMN ESWC & XASECO2 for TM²: see XAseco.org
Find your way around the Mania community from the TMN ESWC hub, TMF hub, TM² hub, and SM hub

alex4311
highway camper
highway camper
Posts: 2
Joined: 08 Apr 2017 16:38
Owned TM-games: tmnf

Re: Can't start Aseco.bat: PHP Warning/fatal error string of

Post by alex4311 » 09 Apr 2017 13:05

Thanks for the quick replies, guys.
There was a post on this forum about xaseco and php 7 +

some post on forum :

TheBigG wrote:
will there be a fix for PHP7? XAseco uses mysql_connect and that is removed in PHP7.
https://secure.php.net/manual/en/functi ... onnect.php

I am aware of that, but mysql_* calls are used in 20+ source files, not to mention countless third-party plugins. Rewriting to mysqli_* calls would take far more than a 'fix'. :(

The simple fix? Don't upgrade to PHP 7, or -- for ManiaPlanet, anyway -- switch to a more modern server controller that doesn't use mysql_* calls.

I know... not desirable either.




the fix :
viewtopic.php?f=127&t=37120

viewtopic.php?f=127&t=35817
I downloaded the Modernizer plugin and extracted it to my xaseco main folder, and edited my aseco.php file:

Code: Select all

<?php
/* vim: set noexpandtab tabstop=2 softtabstop=2 shiftwidth=2: */

/**
 * Projectname: XASECO (formerly ASECO/RASP)
 *
 * Requires: PHP version 5, MySQL version 4/5
 *
 * LICENSE: This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as published
 * by the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 *
 * @license             http://www.gnu.org/copyleft/gpl.html GNU GPL
 *
 * Authored & copyright 2006 by Florian Schnell <floschnell@gmail.com>
 *
 * Re-authored & copyright May 2007 - Jul 2013 by Xymph <tm@gamers.org>
 *
 * Visit the official site at http://www.xaseco.org/
 */

/**
 * Include required classes
 */
require_once('includes/modernizer.inc.php');
require_once('includes/types.inc.php');  // contains classes to store information
require_once('includes/basic.inc.php');  // contains standard functions
require_once('includes/GbxRemote.inc.php');  // needed for dedicated server connections
require_once('includes/xmlparser.inc.php');  // provides an XML parser
require_once('includes/gbxdatafetcher.inc.php');  // provides access to GBX data
require_once('includes/tmndatafetcher.inc.php');  // provides access to TMN world stats
require_once('includes/rasp.settings.php');  // specific to the RASP plugins
In viewtopic.php?f=127&t=35817, reaby also gives a link to Toffe's xaseco2 fork, but I didn't download that, because it seems like you don't have to do that if you already downloaded the Modernizer plugin and edited the aseco.php.

In viewtopic.php?f=127&t=37120, Bueddl talks about replacing the old API. He placed some lines you have to search for and replace, but I don't know in which file I have to do that.
I did download xaseco1.16 bugfix for the memory leak. It contained the GBXDataFetcher v2.5, and in the first reply I saw that it was outdated, so I downloaded GBX Data Fetcher module (v2.9) and placed it in the includes folder.

After I did this, I launched Aseco.bat. It loaded some plugins this time, but gave me a different error:

Code: Select all

# initialize XASECO ###########################################################
[XAseco] PHP Version is 7.1.3 on WINNT
[XAseco] Load settings [config.xml]
[XAseco] Load admin/ops lists [adminops.xml]
[XAseco] Load banned IPs list [bannedips.xml]
[XAseco] Load plugins list [plugins.xml]
[XAseco] Load plugin [plugin.localdatabase.php]
[XAseco] Load plugin [plugin.rounds.php]
[XAseco] Load plugin [chat.admin.php]
[XAseco] Load plugin [chat.help.php]
[XAseco] Load plugin [chat.records.php]
[XAseco] Load plugin [chat.records2.php]
[XAseco] Load plugin [chat.recrels.php]
[XAseco] Load plugin [chat.dedimania.php]
[XAseco] Load plugin [chat.players.php]
[XAseco] Load plugin [chat.players2.php]
[XAseco] Load plugin [chat.wins.php]
[XAseco] Load plugin [chat.laston.php]
[XAseco] Load plugin [chat.lastwin.php]
[XAseco] Load plugin [chat.stats.php]
[XAseco] Load plugin [chat.server.php]
[XAseco] Load plugin [chat.songmod.php]
[XAseco] Load plugin [chat.me.php]
[XAseco] Load plugin [plugin.tmxinfo.php]
[XAseco] Load plugin [plugin.track.php]
[XAseco] Load plugin [plugin.checkpoints.php]
[XAseco] Load plugin [plugin.dedimania.php]
[XAseco] Load plugin [plugin.rasp.php]
[XAseco] Load plugin [plugin.rasp_jukebox.php]
[XAseco] Load plugin [plugin.rasp_chat.php]
[XAseco] Load plugin [plugin.rasp_karma.php]
[XAseco] Load plugin [plugin.rasp_nextmap.php]
[XAseco] Load plugin [plugin.rasp_nextrank.php]
[XAseco] Load plugin [plugin.rasp_votes.php]
[XAseco] Load plugin [plugin.chatlog.php]
[XAseco] Load plugin [plugin.style.php]
[XAseco] Load plugin [plugin.panels.php]
[XAseco] Load plugin [plugin.uptodate.php]
[XAseco] Load plugin [jfreu.plugin.php]
[XAseco] Load plugin [mistral.idlekick.php]
[04/09,12:15:03] Try to connect to TM dedicated server on 127.0.0.1:5000 timeout
 180s
[04/09,12:15:03] Try to authenticate with login 'SuperAdmin' and password 'xxx'
[04/09,12:15:03] Connection established successfully !
[04/09,12:15:03] [LocalDB] Load config file [localdatabase.xml]
[04/09,12:15:03] [LocalDB] Try to connect to MySQL server on 'localhost' with da
tabase 'aseco'

Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in C:\T
MNFServer\Xaseco\xaseco\includes\modernizer.inc.php:13
Stack trace:
#0 C:\TMNFServer\Xaseco\xaseco\plugins\plugin.localdatabase.php(73): mysql_conne
ct('localhost', 'xxx', 'xxx')
#1 C:\TMNFServer\Xaseco\xaseco\aseco.php(1249): ldb_connect(Object(Aseco), NULL)

#2 C:\TMNFServer\Xaseco\xaseco\aseco.php(732): Aseco->releaseEvent('onStartup',
NULL)
#3 C:\TMNFServer\Xaseco\xaseco\aseco.php(2562): Aseco->run('config.xml')
#4 {main}
  thrown in C:\TMNFServer\Xaseco\xaseco\includes\modernizer.inc.php on line 13
Here's the modernizer.inc.php file:

Code: Select all

<?php
error_reporting(E_ALL ^ E_DEPRECATED);

class dbFix {
	public $conn;
}

$_db = new \dbFix();

if (!function_exists('mysql_connect')) {	
	function mysql_connect($server,$user,$password="",$newlink=false,$flags=0) {
		global $_db;
		$conn = mysqli_connect($server, $user, $password);	
		$_db->conn = $conn;
		return $conn;
	}
}
if (!function_exists('mysql_select_db')) {
	function mysql_select_db($database_name, $link=false) {
		global $_db;
		return mysqli_select_db($_db->conn, $database_name);
	}
}
if (!function_exists('mysql_affected_rows')) {
	function mysql_affected_rows($ident = null) {
		global $_db;
		return mysqli_affected_rows($_db->conn);
	}
}
if (!function_exists('mysql_close')) {
	function mysql_close($ident = null){
		global $_db;
		return mysqli_close($_db->conn);
	}
}

if (!function_exists('mysql_errno')) {
	function mysql_errno($ident = null){
		global $_db;
		return mysqli_errno($_db->conn);
	}
}

if (!function_exists('mysql_error')) {
	function mysql_error($ident = null){
		global $_db;
		return mysqli_error($_db->conn);
	}
}

if (!function_exists('mysql_escape_string')) {	
	function mysql_escape_string($string){
		global $_db;
		return mysqli_real_escape_string($_db->conn, $string);
	}
}

if (!function_exists('mysql_real_escape_string')) {
	function mysql_real_escape_string($string){
		global $_db;
		return mysqli_real_escape_string($_db->conn, $string);
	}
}

if (!function_exists('mysql_fetch_array')) {
	function mysql_fetch_array($result, $int=null){
		global $_db;
		return mysqli_fetch_array($result);
	}
}
    
if (!function_exists('mysql_fetch_assoc')) {
	function mysql_fetch_assoc($result){
		return mysqli_fetch_assoc($result);
	}
}   
    
if (!function_exists('mysql_fetch_field')) {
	function mysql_fetch_field($result, $offset = 0){
		return mysqli_fetch_field($result);
	}
}   

if (!function_exists('mysql_fetch_object')) {
	function mysql_fetch_object($result){
		return mysqli_fetch_object($result);
	}
}
if (!function_exists('mysql_fetch_row')) {
	function mysql_fetch_row($result){
		return mysqli_fetch_row($result);
	}
}
if (!function_exists('mysql_free_result')) {
	function mysql_free_result($result){
		return mysqli_free_result($result);
	}
}   
if (!function_exists('mysql_insert_id')) {
	function mysql_insert_id($res){
		global $_db;
		return mysqli_insert_id($_db->conn);
	}
} 	
if (!function_exists('mysql_list_dbs')) {
	function mysql_list_dbs($result){
		return mysqli_list_dbs($result);
	}
} 
if (!function_exists('mysql_list_dbs')) {
	function mysql_list_dbs($result){
		return mysqli_list_dbs($result);
	}
}
if (!function_exists('mysql_query')) {
	function mysql_query($query, $res=null){
		global $_db;
		return mysqli_query($_db->conn, $query);
	}
} 
if (!function_exists('mysql_num_rows')) {
	function mysql_num_rows($result){
		return mysqli_num_rows($result);
	}
}
if (!function_exists('mysql_num_rows')) {
	function mysql_num_rows($result){
		return mysqli_num_rows($result);
	}
} 	
if (!function_exists('mysql_ping')) {
	function mysql_ping($resource = null){
		global $_db;
		return mysqli_ping($_db->conn);
	}
} 
if (!function_exists('mysql_set_charset')) {
	function mysql_set_charset($cname, $res){
		global $_db;
		return mysqli_set_charset($_db->conn, $cname);
	}
} 
if (!function_exists('mysql_stat')) {
	function mysql_stat($link = null) {
		global $_db;
		return mysqli_stat($_db->conn);
	}
}
		 	
if (!function_exists('mysql_tablename')) {
	function mysql_tablename($resource) {
		return mysqli_tablename($resource);
	}
}
   
if (!function_exists('mysql_thread_id')) {
	function mysql_thread_id($res = null) {
		global $_db;
		return mysqli_thread_id($_db->conn);
	}
} 

if (!function_exists('mysql_unbuffered_query')) {
	function mysql_unbuffered_query($query, $con=null) {
		global $_db;
		return mysqli_query($_db->conn, $query);
	}
} 

if (!function_exists('mysql_get_server_info')) {
	function mysql_get_server_info($con=null) {
		global $_db;
		return mysqli_get_server_info($_db->conn);
	}
}  

if (!function_exists('call_user_method_array')) {
	function call_user_method_array($method, $object, $array) {
		return call_user_func_array(array($object, $method), $array);
	}
}
The error says it found something in modernizer.inc.php, but if I search on Google for "call to undefined function mysqli_connect()", it says it gives that error because the mysqli PHP extension is not installed. I looked on the php site for the extension, but in the Quick start guide it says that you need "a familiarity with the PHP programming language, the SQL language, and basic knowledge of the MySQL server" to install this extension, which I don't have.
I tried some other solutions people posted on other forums for this error, such as removing the semicolon in front of extension=php_mysqli.dll in the php.ini file, removing the entire line, and I added the line ;extension=mysqli.so. I did this all in both the .ini files, but it didn't work.
If config.xml cannot be loaded, then obviously its structure is broken -- independent of any PHP7 issues.
After downloading the Modernizer plugin/memory leak bugfix, I think it loaded the config.xml file correctly. But here's the complete config.xml file:

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<settings>
  <aseco>
    <masteradmins>
      <tmlogin>xxx</tmlogin> <ipaddress></ipaddress>
	</masteradmins>

    <colors>
      <error>$f00$i</error>
      <welcome>$f00</welcome>
      <server>$ff0</server>
      <highlite>$fff</highlite>
      <timelite>$bbb</timelite>
      <record>$0f3</record>
      <emotic>$fa0</emotic>
      <music>$d80</music>
      <message>$39f</message>
      <rank>$ff3</rank>
      <vote>$f8f</vote>
      <karma>$ff0</karma>
      <donate>$f0f</donate>
      <admin>$ff0</admin>
      <black>$000</black>
      <grey>$888</grey>
      <login>$00f</login>
      <logina>$0c0</logina>
      <nick>$f00</nick>
      <interact>$ff0$i</interact>
      <dedimsg>$28b</dedimsg>
      <dedirec>$0b3</dedirec>
    </colors>

    <messages>
      <!-- init messages -->
      <startup>{#server}*** XASECO {#highlite}v{1}{#server} running on {#highlite}{2}{#server}:{#highlite}{3}{#server} ***</startup>
      <welcome>{#welcome}Welcome {#highlite}{1}{#welcome} to {#highlite}{2}$z$s{br}{#welcome}This server uses {#highlite}XASECO v{3}{#welcome} to manage your records.</welcome>
      <warning>$s{#welcome}This is an administrative warning.{br}{br}$gWhatever you wrote is against our server's{br}policy. Not respecting other players, or{br}using offensive language might result in a{br}{#welcome}kick, or ban {#message}the next time.{br}{br}$gThe server administrators.</warning>

      <!-- record messages -->
      <record_current>{#server}>> {#message}Current record on {#highlite}{1}{#message} is {#highlite}{2}{#message} by {#highlite}{3}</record_current>
      <record_none>{#server}>> {#message}Currently no record on {#highlite}{1}{#message} ...</record_none>
      <record_error>{#server}>> {#error}Could not get records from database... No records this round!</record_error>

      <!-- ranking messages -->
      <ranking>{#server}>> {#message}Local Record rankings on {#highlite}{1}{#message} {2} this round:</ranking>
      <ranking_range>{#server}>> {#message}Local Record rankings on {#highlite}{1}{#message} {2} this round (range {#highlite}{3}{#message}):</ranking_range>
      <ranking_new>{#server}>> {#message}Local Record rankings on {#highlite}{1}{#message} {2} this round ({#highlite}{3}{#message} new):</ranking_new>
      <ranking_nonew>{#server}>> {#message}Local Record rankings on {#highlite}{1}{#message} {2} this round: none new so far</ranking_nonew>
      <ranking_none>{#server}>> {#message}Local Record rankings on {#highlite}{1}{#message} {2} this round: no records!</ranking_none>

      <!-- record misc. messages -->
      <ranking_record_new_on>{#rank}{1}{#message}.$i{#highlite}{2}{#message}[{#highlite}{3}{#message}]$i, </ranking_record_new_on>
      <ranking_record_new>{#rank}{1}{#message}.{#highlite}{2}{#message}[{#highlite}{3}{#message}], </ranking_record_new>
      <ranking_record_on>{#rank}{1}{#message}.$i{#timelite}{2}{#message}[{#timelite}{3}{#message}]$i, </ranking_record_on>
      <ranking_record>{#rank}{1}{#message}.{#timelite}{2}{#message}[{#timelite}{3}{#message}], </ranking_record>
      <ranking_record2>{#rank}{1}{#message}.{#timelite}{2}{#message}, </ranking_record2>

      <!-- record relation messages -->
      <first_record>{#server}> {#record}The first Local record is: </first_record>
      <last_record>{#server}> {#record}The last Local record is: </last_record>
      <diff_record>{#server}> {#record}Difference between {1}{#record} and {2}{#record} is: {#highlite}{3}</diff_record>
      <summary>{#server}> {#highlite}{1} $z$s{#record}has {#highlite}{2}{#record} Local record{3}, the top {4} being: </summary>
      <sum_entry>{#highlite}{1} {#record}rec{2} #{#rank}{3}{#record}, </sum_entry>

      <!-- win messages -->
      <wins>{#server}> {#record}You have already won {#highlite}{1}{#record} race{2}</wins>
      <win_new>{#server}> {#record}Congratulations, you won your {#highlite}{1}{#record}. race!</win_new>
      <win_multi>{#server}>> {#record}Congratulations, {#highlite}{1}{#record} won his/her {#highlite}{2}{#record}. race!</win_multi>

      <!-- muting messages -->
      <mute>{#server}> Player {#highlite}{1}$z$s{#server} is muted!</mute>
      <unmute>{#server}> Player {#highlite}{1}$z$s{#server} is unmuted!</unmute>
      <muted>{#server}> {#highlite}{1}{#error} disabled because you are on the global mute list!</muted>

      <!-- donate/pay messages -->
      <donation>{#donate} Donate {#highlite}{1}{#donate} coppers to {#highlite}{2}$z</donation>
      <thanks_all>{#server}>> {#highlite}{1}$z$s{#donate} received a donation of {#highlite}{2}{#donate} coppers from {#highlite}{3}$z$s{#donate}.  Thank You!</thanks_all>
      <thanks_you>{#server}> {#donate}You made a donation of {#highlite}{1}{#donate} coppers.  Thank You!</thanks_you>
      <donate_minimum>{#server}> {#error}Minimum donation amount is {#highlite}$i {1}{#error} coppers!</donate_minimum>
      <donate_help>{#server}> {#error}Use {#highlite}$i /donate <number>{#error} to donate coppers to the server</donate_help>
      <payment>{#donate} Send {#highlite}{1}{#donate} coppers to {#highlite}{2}$z</payment>
      <pay_insuff>{#server}> {#error}Insufficient server coppers: {#highlite}$i {1}{#error}!</pay_insuff>
      <pay_server>{#server}> {#error}Cannot pay this server itself!</pay_server>
      <pay_confirm>{#server}> {#donate}Payment of {#highlite}{1}{#donate} coppers to {#highlite}{2}{#donate} confirmed!  Remaining coppers: {#highlite}{3}</pay_confirm>
      <pay_cancel>{#server}> {#donate}Payment to {#highlite}{1}{#donate} cancelled!</pay_cancel>
      <pay_help>{#server}> {#error}Use {#highlite}$i /admin pay <login> $m<number>{#error} to send server coppers to a login</pay_help>

      <!-- playtime/track messages -->
      <playtime>{#server}> Current track {#highlite}{1}{#server} has been played for {#highlite}{2}</playtime>
      <playtime_finish>{#server}>> Current track {#highlite}{1}{#server} finished after {#highlite}{2}</playtime_finish>
      <playtime_replay> {#server}({#highlite}{1}{#server} replay{2}, total {#highlite}{3}{#server})</playtime_replay>
      <track>{#server}> Current track {#highlite}{1} {#server}by {#highlite}{2}  {#server}Author: {#highlite}{3} {#server}Gold: {#highlite}{4} {#server}Silver: {#highlite}{5} {#server}Bronze: {#highlite}{6} {#server}Cost: {#highlite}{7}</track>
      <current_track>{#server}>> Current track {#highlite}{1} {#server}by {#highlite}{2}  {#server}Author: {#highlite}{3}</current_track>

      <!-- rounds points messages -->
      <rpoints_named>{#server}> {1}Custom points system set to {#highlite}{2}{3}: {#highlite}{4},...</rpoints_named>
      <rpoints_nameless>{#server}> {1}Custom points system set to: {#highlite}{2},...</rpoints_nameless>
      <no_rpoints>{#server}> {1}No custom Rounds points system defined!</no_rpoints>

      <!-- relay messages -->
      <no_relays>{#server}> {#error}No relay servers connected</no_relays>
      <relaymaster>{#server}> This server relays master server: {#highlite}{1}{#server} ({#highlite}{2}{#server})</relaymaster>
      <notonrelay>{#server}> {#error}Command unavailable on relay server</notonrelay>

      <!-- uptodate messages -->
      <uptodate_ok>{#server}>> {#message}This XASECO version {#highlite}{1}{#message} is up to date</uptodate_ok>
      <uptodate_new>{#server}>> {#message}New XASECO version {#highlite}{1}{#message} available from {#highlite}{2}</uptodate_new>

      <!-- connection messages -->
      <banip_dialog>{#welcome}Your IP was banned from this server.$z</banip_dialog>
      <banip_error>{#welcome}Could not connect:{br}{br}Your IP was banned from this server!</banip_error>
      <client_dialog>{#welcome}Obsolete client version, please $l[http://www.tm-forum.com/viewtopic.php?p=139752#p139752]upgrade$l.$z</client_dialog>
      <client_error>{#welcome}Obsolete client version!{br}Please upgrade to the $l[http://www.tm-forum.com/viewtopic.php?p=139752#p139752]latest version$l.</client_error>
      <connect_dialog>{#welcome}Connection problem, please retry.$z</connect_dialog>
      <connect_error>{#welcome}$sThis is an administrative notice.$z{br}{br}XASECO encountered a very rare player connection{br}problem. Please re-join the server to correct it.{br}Apologies for the inconvenience.{br}{br}$sThe server administrators.</connect_error>

      <!-- idlekick messages -->
      <idlekick_play>{#server}>> IdleKick player {#highlite}{1}$z$s{#server} after {#highlite}{2}{#server} challenge{3}!</idlekick_play>
      <idlespec_play>{#server}>> IdleSpec player {#highlite}{1}$z$s{#server} after {#highlite}{2}{#server} challenge{3}</idlespec_play>
      <idlekick_spec>{#server}>> IdleKick spectator {#highlite}{1}$z$s{#server} after {#highlite}{2}{#server} challenge{3}!</idlekick_spec>

      <!-- miscellaneous messages -->
      <song>{#server}> Track {#highlite}{1} {#server}plays song: {#highlite}{2}</song>
      <mod>{#server}> Track {#highlite}{1} {#server}uses mod: {#highlite}{2} {#server}({#highlite}{3}{#server})</mod>
      <coppers>{#server}> Server {#highlite}{1}$z$s {#server}owns {#highlite}{2} {#server}coppers!</coppers>
      <time>{#server}> {#interact}Current Server Time: {#highlite}$i {1}{#interact} on {#highlite}$i {2}</time>
      <tmxrec>{#server}>> {#record}TMX World Record: {#highlite}{1}{#record} by {#highlite}{2}</tmxrec>
      <round>$n{#message}R{#highlite}{1}{#message}> </round>
      <no_cpsspec>{#server}> {#highlite}/cpsspec{#server} is not currently enabled on this server.</no_cpsspec>
      <no_admin>{#server}> {#error}You have to be in admin list to do that!</no_admin>
      <help_explanation>{#server}> Press the {#highlite}C{#server} key to see the whole list, and use {#highlite}/helpall{#server} for details</help_explanation>
      <united_only>{#server}> {#error}This requires a TM United Forever {1}!</united_only>
      <forever_only>{#server}> {#error}Command only available on TM Forever!</forever_only>
    </messages>

    <welcome_msg_window>False</welcome_msg_window>
    <lock_password></lock_password>
    <log_all_chat>False</log_all_chat>
    <chatpmlog_times>True</chatpmlog_times>
    <cheater_action>0</cheater_action>
    <script_timeout>60</script_timeout>

    <show_min_recs>8</show_min_recs>
    <!-- 2 = full report, 1 = only track record, 0 = none -->
    <!-- add 4 to show the report in the TMF message      -->
    <!-- window instead of the main chat window           -->
    <show_recs_before>2</show_recs_before>
    <!-- 2 = full report, 1 = only top-5, 0 = none        -->
    <!-- add 4 to show the report in the TMF message      -->
    <!-- window instead of the main chat window           -->
    <show_recs_after>2</show_recs_after>
    <show_recs_range>True</show_recs_range>
    <!-- 2 = in TMF message window, 1 = in chat, 0 = none -->
    <show_tmxrec>1</show_tmxrec>
    <!-- 2 = in TMF message window, 1 = in chat, 0 = none -->
    <show_playtime>1</show_playtime>
    <!-- 2 = in TMF message window, 1 = in chat, 0 = none -->
    <show_curtrack>0</show_curtrack>

    <default_tracklist>tracklist.txt</default_tracklist>
    <writetracklist_random>True</writetracklist_random>
    <help_explanation>False</help_explanation>
    <lists_colornicks>True</lists_colornicks>
    <lists_colortracks>True</lists_colortracks>
    <topclans_minplayers>2</topclans_minplayers>
    <global_win_multiple>50</global_win_multiple>
    <display_checkpoints>True</display_checkpoints>
    <enable_cpsspec>False</enable_cpsspec>
    <auto_enable_cps>True</auto_enable_cps>
    <auto_enable_dedicps>False</auto_enable_dedicps>
    <auto_admin_addip>True</auto_admin_addip>
    <adminops_file>adminops.xml</adminops_file>
    <bannedips_file>bannedips.xml</bannedips_file>
    <blacklist_file>blacklist.txt</blacklist_file>
    <guestlist_file>guestlist.txt</guestlist_file>
    <trackhist_file>trackhist.txt</trackhist_file>

    <!-- the remaining settings are for TMF only          -->
    <admin_client_version>2.11.19</admin_client_version>
    <player_client_version></player_client_version>
    <default_rpoints></default_rpoints>
    <afk_force_spec>True</afk_force_spec>
    <clickable_lists>True</clickable_lists>
    <show_rec_logins>True</show_rec_logins>
    <!-- True = in TMF message window, False = in chat    -->
    <recs_in_window>False</recs_in_window>
    <!-- True = in TMF message window, False = in chat    -->
    <rounds_in_window>False</rounds_in_window>
    <!-- timeout of the TMF message window in seconds     -->
    <window_timeout>6</window_timeout>
    <!-- True = display individual stats panels for each  -->
    <!-- player during the scoreboard & disable the rank  -->
    <!-- chat messages, False = show only rank messages   -->
    <sb_stats_panels>False</sb_stats_panels>

    <!-- default windows style: none for old TMN-like, or -->
    <!-- filename that should be at styles/<filename>.xml -->
    <window_style>DarkBlur</window_style>
    <!-- default panels:  empty for no panel, otherwise a -->
    <!-- filename that should be at panels/<filename>.xml -->
    <admin_panel>AdminBelowChat</admin_panel>
    <donate_panel>DonateBelowCPList</donate_panel>
    <records_panel>RecordsRightBottom</records_panel>
    <vote_panel>VoteBelowChat</vote_panel>
  </aseco>

  <tmserver>
    <login>SuperAdmin</login>
    <password>xxx</password>
    <ip>127.0.0.1</ip>
    <port>5000</port>
    <timeout>180</timeout>
  </tmserver>
</settings>

Post Reply