All pastes #440330 Raw Edit

Untitled

public text v1 · immutable
·published 2007-04-14 23:23 UTC
rendered paste body
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<p>F L   H O O K<br />
	=============<br />
	version: 1.5.5</p>
<p>================================================================================<br />
	== INSTALLATION ================================================================<br />
	================================================================================<br />
	FLHOOK ONLY WORKS WITH FLSERVER 1.1. USING IT WITH 1.0 WILL CRASH FLSERVER!!!</p>
<p>copy the files from &quot;bin&quot; to your freelancer/exe directory and edit the FLHook.ini<br />
	in order to suite your needs.<br />
	there are 3 different ways to start flhook:<br />
	1) open dacomsrv.ini in &quot;...\freelancer\exe&quot; and append FLHook.dll to the <br />
	[Libraries] section. flserver will load flhook whenever you start it.<br />
	2) execute FLHookStart.exe while flserver.exe is already running. this will<br />
	inject FLHook into the running process.<br />
	3) execute FLHookStart.exe with &quot;execute ...&quot; as command line. this will start<br />
	flserver.exe along with FLHook. the rest of the command line will be passed<br />
	on to the server. FLHook console will be shown as soon as the loading-process<br />
	has finished<br />
	(note: the old patch is not needed anymore, use 1) instead)</p>
<p>================================================================================<br />
	== CONFIG ======================================================================<br />
	================================================================================<br />
	take a look at the comments in FLHook.ini</p>
<p>================================================================================<br />
	== ADMIN-COMMANDS ==============================================================<br />
	================================================================================<br />
	commands can be executed by administrators in several ways:<br />
	- using the FLHook console(-&gt; access to all commands)<br />
	- ingame by typing .command in the chat(e.g. .getcash Player1)<br />
	this will only work when you own the appropriate rights which may be set via<br />
	the setadmin command. FLHook will store the rights of each player in his<br />
	account-directory in flhookadmin.ini.<br />
	- via a socket connection in raw text mode(e.g. with putty)<br />
	connect to the port given in the FLHook.ini and enter &quot;PASS password&quot;. after<br />
	having successfuly logged in you may enter all of the commands you want(as<br />
	long as you have the neccessary rights). you may have several socket connections<br />
	at the same time. exiting the connection may be done by entering &quot;quit&quot; or simply<br />
	by closing it.</p>
<p>- CASH -<br />
	all cash functions work no matter if the player is currently logged in or not<br />
	getcash &lt;charname&gt;<br />
	shows current account balance of &lt;charname&gt;<br />
	setcash &lt;charname&gt; &lt;amount&gt;<br />
	sets current account balance of &lt;charname&gt; to &lt;amount&gt;<br />
	setcashsec &lt;charname&gt; &lt;oldmoney&gt; &lt;amount&gt;<br />
	sets current account balance of &lt;charname&gt; to &lt;amount&gt;, only works when his old account balance is &lt;oldmoney&gt;<br />
	addcash &lt;charname&gt; &lt;amount&gt;<br />
	adds &lt;amount&gt; to the current account balance of &lt;charname&gt;<br />
	addcashsec &lt;charname&gt; &lt;oldmoney&gt; &lt;amount&gt;<br />
	adds &lt;amount&gt; to the current account balance of &lt;charname&gt;, only works when his old account balance is &lt;oldmoney&gt;</p>
<p>- KICK/BAN -<br />
	kick &lt;charname&gt; &lt;reason&gt;<br />
	disconnects &lt;charname&gt;. the user will be displayed &lt;reason&gt;, if it is specified.<br />
	ban &lt;charname&gt;<br />
	bans &lt;charname&gt;'s account<br />
	&lt;charname&gt; stays connected if he's currently on the server<br />
	unban &lt;charname&gt;<br />
	unbans &lt;charname&gt;'s account<br />
	kickban &lt;charname&gt; &lt;reason&gt;<br />
	kicks and bans &lt;charname&gt; (2 in 1, same as kick &lt;charname&gt; &lt;reason&gt;, ban &lt;charname&gt;)</p>
<p>- MSG -<br />
	msg &lt;charname&gt; &lt;text&gt;<br />
	private message &lt;text&gt; to &lt;charname&gt; (shown as &quot;Console: &lt;text&gt;&quot;)<br />
	msgs &lt;systemname&gt; &lt;text&gt;<br />
	send &lt;text&gt; to all players in &lt;systemname&gt; (shown as &quot;Console: &lt;text&gt;&quot;)<br />
	&lt;systemname&gt; must be the either the system-id or the shortname (like Li01)<br />
	msgu &lt;text&gt;<br />
	message &lt;text&gt; to the whole universe (shown as &quot;Console: &lt;text&gt;&quot;)<br />
	fmsg &lt;charname&gt; &lt;xmltext&gt;<br />
	private message &lt;xmltext&gt; to &lt;charname&gt; (see XMLTEXT section for further details)<br />
	fmsgs &lt;systemname&gt; &lt;xmltext&gt;<br />
	send &lt;xmltext&gt; to all players in &lt;systemname&gt; (see XMLTEXT section for further details)<br />
	fmsgu &lt;xmltext&gt;<br />
	message &lt;xmltext&gt; to the whole universe (see XMLTEXT section for further details)</p>
<p>- BEAM/KILL -<br />
	beam &lt;charname&gt; &lt;basename&gt;<br />
	force &lt;charname&gt; to land on &lt;basename&gt; (player must be in space)<br />
	&lt;basename&gt; must be either the shortname(like Li01_01_Base for manhatten) or a shortcut defined in the FLHook.ini<br />
	note: see the issues section below<br />
	kill &lt;charname&gt;<br />
	kills &lt;charname&gt;</p>
<p>- REPUTATION -<br />
	resetrep &lt;charname&gt;<br />
	sets &lt;charname&gt;'s reputations to the one specified in &quot;mpnewcharacter.fl&quot;<br />
	setrep &lt;charname&gt; &lt;repgroup&gt; &lt;value&gt;<br />
	set &lt;charname&gt;'s reputation for &lt;repgroup&gt; to &lt;value&gt;. &lt;value&gt; sohuld be between -1 and 1.<br />
	example:<br />
	&quot;setrep playerxy li_n_grp 0.7&quot;<br />
	-&gt; set playerxy's reputation for liberty navy to 0.7</p>
<p>- CARGO -<br />
	cargo commands only work when the targeted player is ingame<br />
	enumcargo &lt;charname&gt;<br />
	lists &lt;charname&gt;'s cargo, first reply will be the remaining hold size<br />
	addcargo &lt;charname&gt; &lt;good&gt; &lt;count&gt; &lt;mission&gt;<br />
	adds &lt;count&gt; numbers of &lt;good&gt;(shortname like co_gun01_mark02,commodity_silver,etc OR hash) to &lt;charname&gt;'s cargo<br />
	if &lt;mission&gt; is set to 1, the cargo is declared as mission cargo<br />
	note: see issues<br />
	removecargo &lt;charname&gt; &lt;id&gt; &lt;count&gt;<br />
	removes &lt;count&gt; numbers of &lt;id&gt;(this must be the value from enumcargo's &quot;id=&quot; reply) from &lt;charname&gt;</p>
<p>- CHARACTERS -<br />
	rename &lt;oldcharname&gt; &lt;newcharname&gt;<br />
	rename &lt;oldcharname&gt; to &lt;newcharname&gt; (player will be kicked if he's logged in &lt;oldcharname&gt;'s account)<br />
	deletechar &lt;charname&gt;<br />
	delete &lt;charname&gt; (player will be kicked if he's logged in &lt;oldcharname&gt;'s account)<br />
	readcharfile &lt;charname&gt;<br />
	reads &lt;charname&gt;'s userfile(xxx.fl) and prints it(each line will be preceded by &quot;l &quot;)<br />
	writecharfile &lt;charname&gt; &lt;data&gt;<br />
	writes &lt;data&gt; into &lt;charname&gt;'s userfile(xxx.fl). existing charfile will be overwritten. you should<br />
	be careful with this one because a corrupted charfile may lead to server crashes and flhook does <br />
	not do any syntax checks on &lt;data&gt;.<br />
	NOTE: YOU MUST REPLACE LINE-WRAPS WITH \n(TEXT)<br />
	example:<br />
	writecharfile playerxy [Player]\ndescription = 00300034002f0031003\n\n ... etc.</p>
<p>- SETTINGS -<br />
	setadmin &lt;charname&gt; &lt;rights&gt;<br />
	set &lt;charname&gt; as ingame-admin with &lt;rights&gt; (affects all characters on the account) (see RIGHTS section below)<br />
	getadmin &lt;charname&gt;<br />
	show &lt;charname&gt;'s rights<br />
	deladmin &lt;charname&gt;<br />
	revoke &lt;charname&gt;'s ingame-admin-status<br />
	rehash<br />
	reload the flhook.ini in order to activate changed settings, this works for everything except the socket-settings<br />
	unload<br />
	unload flhook(flserver will keep on running flawlessly)<br />
	this is very useful since it allows you to install a new flhook version on-the-fly. simply unload, replace the files<br />
	and execute FLHookStart.exe<br />
	the command will kick players with an active moneyfixlist(don't bother).</p>
<p>- OTHER -<br />
	getgroupmembers &lt;charname&gt;<br />
	returns all players which are in a group with &lt;charname&gt;<br />
	getbasestatus &lt;basename&gt;<br />
	returns the hull status of a base. when the base hasn't been created in space yet it returns 0.<br />
	getclientid &lt;charname&gt;<br />
	gets &lt;charname&gt;'s client id<br />
	getplayerinfo &lt;charname&gt;<br />
	get &lt;charname&gt;'s info<br />
	xgetplayerinfo &lt;charname&gt;<br />
	same as getplayerinfo, except that result is shown in a more readable format<br />
	getplayers<br />
	get player info for all players on the server (players in charselect menu will not be shown)<br />
	xgetplayers<br />
	same as getplayers, except that result is shown in a more readable format<br />
	getplayerids<br />
	shows all players on the server with their client-id in a short format(useful when ingame)<br />
	getaccountdirname &lt;charname&gt;<br />
	get account-dirname of &lt;charname&gt;<br />
	getcharfilename &lt;charname&gt;<br />
	get char-filename of &lt;charname&gt;<br />
	savechar &lt;charname&gt;<br />
	save &lt;charname&gt;'s current info to disk<br />
	isloggedin &lt;charname&gt;<br />
	check if &lt;charname&gt; is logged in on the server<br />
	isonserver &lt;charname&gt;<br />
	check if &lt;charname&gt; is connected(this includes idleness in charselect menu) to the server<br />
	NOTE: isonserver will also return true, when another char on the same account is logged in!<br />
	serverinfo<br />
	shows server load, whether npc spawn is currently enabled or disabled(see ini) and uptime.<br />
	the format for the uptime is: days:hours:minutes:seconds<br />
	moneyfixlist<br />
	show players with active money-fix<br />
	help<br />
	get a list of all commands<br />
	<br />
	- MISC INFOS -<br />
	you can use client-ids instead of &lt;charname&gt; by appending $ to the cmd.<br />
	examples: <br />
	getcash$ 12<br />
	kickban$ 1<br />
	etc.</p>
<p>you can also use &quot;shortcuts&quot; instead of the whole character-name for a currently logged in player by appending<br />
	&amp; to the cmd. FLHook traverses all logged in players and checks if their character-name contains<br />
	&lt;charname&gt;(case insensitive) and if so, the command will operate on this player. an error will be shown if the <br />
	searchstring given in &lt;charname&gt; is ambiguous.<br />
	examples (let's assume there are 2 players logged in: &quot;superhax0r&quot; and &quot;..::[]SUPERNERD[]::..&quot;):<br />
	&quot;kick&amp; nerd&quot; kicks &quot;..::[]SUPERNERD[]::..&quot; because his nick contains &quot;nerd&quot;<br />
	&quot;getcash&amp; super&quot; fails because there are multiple character names containing &quot;super&quot;</p>
<p>all commands return &quot;OK&quot; when successful or &quot;ERR &lt;errortext&gt;&quot; when error occured</p>
<p>================================================================================<br />
	== RIGHTS ======================================================================<br />
	================================================================================<br />
	rights may be seperated by a comma (e.g. setadmin playerxy cash,kickban,msg)<br />
	superadmin        -&gt; everything<br />
	cash              -&gt; cash commands<br />
	kickban           -&gt; kick/ban commands<br />
	beam              -&gt; beam/kill/resetrep/setrep command<br />
	msg               -&gt; msg commands<br />
	savechar          -&gt; savechar command<br />
	cargo             -&gt; cargo commands<br />
	chars             -&gt; rename/deletechar/readcharfile/writecharfile<br />
	eventmode         -&gt; eventmode (only when connected via socket)<br />
	all other commands except setadmin/getadmin/deladmin may be executed by all admins</p>
<p>================================================================================<br />
	== XMLTEXT =====================================================================<br />
	================================================================================</p>
<p>the fmsg* commands allow you to format text in several ways(like in the exe\misctext.dll)<br />
	text is enclosed in &lt;TEXT&gt;&lt;/TEXT&gt; tags while the format can be changed with &lt;TRA .../&gt;<br />
	nodes-names must be written in capital chars! <br />
	be sure to replace the following characters within a text-node:<br />
	&lt; -&gt; &amp;#60; <br />
	&gt; -&gt; &amp;#62;<br />
	&amp; -&gt; &amp;#38;</p>
<p>- &lt;TRA .../&gt; NODE SYNTAX -<br />
	the data field of a TRA node consists of an RGB value along with format specifications:<br />
	&lt;TRA data=&quot;0xBBGGRRFF&quot; mask=&quot;-1&quot;/&gt;<br />
	BB is the blue value<br />
	GG is the green value<br />
	RR is the red value<br />
	FF is the format value<br />
	(all in hexadecimal representation)</p>
<p>format flags are:<br />
	bin      hex  dec  effect<br />
	00000001 1    1    bold<br />
	00000010 2    2    italic<br />
	00000100 4    4    underline<br />
	00001000 8    8    big<br />
	00010000 10   16   big&amp;wide<br />
	00100000 20   32   very big<br />
	01000000 40   64   smoothest?<br />
	10000000 80   128  smoother?<br />
	10010000 90   144  small<br />
	simply add the flags to combine them (e.g. 7 = bold/italic/underline)</p>
<p>examples:<br />
	fmsgu &lt;TRA data=&quot;0x1919BD01&quot; mask=&quot;-1&quot;/&gt;&lt;TEXT&gt;A player has died: Player&lt;/TEXT&gt;<br />
	this is similar to the standard die-msg(which is shown in bold)<br />
	fmsgu &lt;TRA data=&quot;0xFF000003&quot; mask=&quot;-1&quot;/&gt;&lt;TEXT&gt;Hello&lt;/TEXT&gt;&lt;TRA data=&quot;0x00FF0008&quot; mask=&quot;-1&quot;/&gt; &lt;TEXT&gt;World&lt;/TEXT&gt;<br />
	this will show &quot;Hello World&quot; (&quot;Hello&quot; will be blue/bold/italic and &quot;World&quot; green/big)</p>
<p>================================================================================<br />
	== EVENTMODE ===================================================================<br />
	================================================================================<br />
	socket connections may be set to eventmode by entering &quot;eventmode&quot;. from then on <br />
	you will receive several event-notifications listed below. once activated, <br />
	eventmode runs until you close the connection.</p>
<p>- NOTIFICATIONS -<br />
	chat from=&lt;player&gt; id=&lt;client-id&gt; type=&lt;type&gt; [to=&lt;recipient&gt; idto=&lt;recipient-client-id&gt;] text=&lt;text&gt;<br />
	&lt;player&gt;: charname sending the message<br />
	&lt;client-id&gt;: client-id of sender<br />
	&lt;type&gt;: either universe,system or player<br />
	&lt;recipient&gt;/&lt;recipient-client-id&gt;: only sent when type=player<br />
	&lt;text&gt;: guess ...</p>
<p>kill victim=&lt;player&gt; type=&lt;type&gt; [by=&lt;killer&gt;]<br />
	&lt;player&gt;: charname of the victim<br />
	&lt;type&gt;: selfkill,player,npc,suicide<br />
	&lt;killer&gt;: charname of the killer</p>
<p>login char=&lt;player&gt; accountdirname=&lt;dirname&gt; id=&lt;client-id&gt; ip=&lt;ip&gt;<br />
	occurs when player selects a character in the character-select menu</p>
<p>launch char=&lt;player&gt; id=&lt;client-id&gt; base=&lt;basename&gt; system=&lt;systemname&gt;<br />
	occurs when player undocks from a base/planet</p>
<p>baseenter char=&lt;player&gt; id=&lt;client-id&gt; base=&lt;basename&gt; system=&lt;systemname&gt;<br />
	occurs when player enters base<br />
	<br />
	baseexit char=&lt;player&gt; id=&lt;client-id&gt; base=&lt;basename&gt; system=&lt;systemname&gt;<br />
	occurs when player exits base(includes disconnect/f1)</p>
<p>jumpin char=&lt;player&gt; id=&lt;client-id&gt; system=&lt;systemname&gt;<br />
	occurs when player jumps in a system<br />
	<br />
	switchout char=&lt;player&gt; id=&lt;client-id&gt; system=&lt;systemname&gt;<br />
	occurs when player switches out a system</p>
<p>spawn char=&lt;player&gt; id=&lt;client-id&gt; system=&lt;systemname&gt;<br />
	occurs when player selects a character and launches in space</p>
<p>connect id=&lt;client-id&gt; ip=&lt;ip&gt;<br />
	occurs when player connects to the server</p>
<p>disconnect char=&lt;player&gt; id=&lt;client-id&gt;<br />
	occurs when player disonnects from the server</p>
<p>================================================================================<br />
	== USER-COMMANDS ===============================================================<br />
	================================================================================<br />
	user commands may be entered ingame by every player in chat and can be enabled<br />
	or disabled in the ini. enter them ingame to get a description.</p>
<p>/set diemsg xxx<br />
	while xxx must be one of the following values:<br />
	- all = all deaths will be displayed<br />
	- system = only display deaths occuring in the system you are currently in<br />
	- self = only display deaths the player is involved in(either as victim or killer)<br />
	- none = don't show any death-messages<br />
	settings keep saved in flhookuser.ini and affect all characters on the account</p>
<p>/set diemsgsize &lt;small/default&gt;<br />
	- change the size of the diemsgs</p>
<p>/set chatfont &lt;size&gt; &lt;style&gt;<br />
	&lt;size&gt;: small, default or big<br />
	&lt;style&gt;: default, bold, italic or underline<br />
	this let's every user adjust the appearance of the chat-messages</p>
<p>/autobuy &lt;...&gt;<br />
	let ammo be bought automatically whenever you enter a base. enter the command<br />
	ingame to get a description</p>
<p>/ignore &lt;charname&gt; [&lt;flags&gt;]<br />
	ignore chat from certain players</p>
<p>/ignoreid &lt;client-id&gt; [&lt;flags&gt;]<br />
	ignore by client-id<br />
	<br />
	/delignore &lt;id&gt; [&lt;id2&gt; &lt;id3&gt; ...]<br />
	delete ignore entry<br />
	<br />
	/ignorelist<br />
	display ignore list<br />
	<br />
	/ids<br />
	show client-ids of all players</p>
<p>/id<br />
	show own client-id<br />
	<br />
	/i$ &lt;client-id&gt; and /invite$ &lt;client-id&gt;<br />
	invite player to group by client-id</p>
<p>================================================================================<br />
	== LOGGING =====================================================================<br />
	================================================================================<br />
	flhook logfiles are created in &quot;My Documents\My Games\Freelancer\Accts\MultiPlayer&quot;.</p>
<p>flhook_kicks.log:<br />
	idle-/ping-/loss-/corruptedcharfile-/ipban-/hostban-kicks<br />
	flhook_cheaters.log:<br />
	detected cheating</p>
<p>there is also a flhook.log file in the exe dir. it mainly contains debug data.<br />
	so don't care about this one.</p>
<p>================================================================================<br />
	== KNOWN ISSUES ================================================================<br />
	================================================================================<br />
	- crashes/performance:<br />
	FLHook is very resistant to server crashes. we've had it running on hhc for<br />
	weeks without any major problems. however in case you encounter any crashes<br />
	which are obviously related to FLHook please contact me.<br />
	- the beam command causes seldom infrequent problems. i haven't figured out the<br />
	reason for that yet. in this case the player who is about to be beamed will<br />
	be kicked from the server by flhook because the server might crash else.<br />
	i've made some improvements here. i hope it works now.<br />
	- the sender in the standard chat messages appear a little bit smaller when<br />
	&quot;/set chatfont&quot; is enabled<br />
	- calculation of the &quot;loss&quot; has been improved but is still problematic. players with<br />
	low bandwidth tend to have a very high loss while they're loading, so this may<br />
	lead to some problems. i don't recommend using the loss-kick at this moment.</p>
<p>================================================================================<br />
	== SOURCE CODE =================================================================<br />
	================================================================================<br />
	FLHook compiles on both vc7 and vc6<br />
	Note:<br />
	flserver uses string-class arguments in some of its functions(f. e. <br />
	PlayerDB::FindAccountFromCharacterName(...)). when you compile since FLHook with <br />
	vc7, which uses a different stl, you can't simply pass strings. that's why<br />
	i created the FLHookWString.dll which was compiled with vc6 and just exports<br />
	two functions to create/delete flserver compatible strings. if you don't have<br />
	vc6 installed then use the FLHookWString.dll from bin and thats it.</p>
<p>if you want the full header files/libs of all of the relevant flserver dlls then <br />
	take a look at FLCoreSDK(www.skif.be). it contains everything you need.</p>
<p>please note:<br />
	I WILL NOT TEACH YOU HOW TO CODE, I WILL NOT TELL YOU HOW TO REVERSE FLSERVER <br />
	AND I WILL NOT REPLY TO &quot;STUPID&quot; QUESTIONS REGARDING THE SOURCE</p>
<p>================================================================================<br />
	== CREDITS =====================================================================<br />
	================================================================================<br />
	programmed &amp; documented by mc_horst<br />
	BIG THX to w0dk4 and Niwo for testing and the whole Hamburg City Server adminteam <br />
	for the suggestions and feedback</p>
<p>contact: find me on www.freelancerserver.de or #hc-flserver (quakenet)</p>
<p>FLHook uses a slighty modified version of flcodec.c</p>
<p>================================================================================<br />
	== CHANGELOG ===================================================================<br />
	================================================================================</p>
<p>1.5.5 (official)<br />
	=====<br />
	- bug: rename bug fixed</p>
<p>1.5.4<br />
	====<br />
	- bug: /g fixed<br />
	- bug: deletechar fixed</p>
<p>1.5.1<br />
	=====<br />
	- ini: bans added</p>
<p>1.5.0<br />
	=====<br />
	- cmd: setrep added<br />
	- source: LOG_* macros removed<br />
	- source: compiles with vc6 now! (thanks to Mischa)<br />
	- bugfix: FLHookStart works on Win2k now(thx to Mischa)<br />
	- usercmd: /ignoreid, /ids, /id, /i$, /invite$ added</p>
<p>1.4.9<br />
	=====<br />
	- renamebug fixed: renamed chars are now shown in the account list of flserver<br />
	- bugfix: autobuy now checks if player has neccessary rep<br />
	- ini: MultiKillMessages added<br />
	- usercmd: &quot;/set diemsgsize&quot; added<br />
	- cmd: resetrep added<br />
	- cmd: getgroupmembers added<br />
	- ini: maximum groupsize can be altered</p>
<p>1.4.7<br />
	=====<br />
	- autobuy fixed<br />
	- disconnectrelay fixed<br />
	- ChangeCruiseDisruptorBehaviour fixed</p>
<p>1.4.6<br />
	=====<br />
	- usercmd: /autobuy added<br />
	- usercmd: /delignore may be called with multiple ids now</p>
<p>1.4.4<br />
	=====<br />
	- &quot;reserved slots&quot; added<br />
	- ini: DisconnectDelay added<br />
	- cmd: getbasestatus added<br />
	- eventmode: basedestroy added</p>
<p>1.4.3<br />
	=====<br />
	- usercmd: /ignore, /ignorelist, /delignore added</p>
<p>1.4.2 (official)<br />
	=====<br />
	- minor changes</p>
<p>1.4.1<br />
	=====<br />
	- kill command added<br />
	- ini: DeathMsgTextAdminKill added<br />
	- bug: security bug fixed(thx to ET90)<br />
	- fix: memory leak in getplayers/getplayerinfo fixed</p>
<p>1.4.0<br />
	=====<br />
	- typos in death msg fixed<br />
	- ini: new [Style] settings added<br />
	- &quot;connect&quot; event added<br />
	- cmd: serverinfo shows uptime<br />
	- new commands: xgetplayers/xgetplayerinfo<br />
	- ini: AntiF1 added</p>
<p>1.3.9<br />
	=====<br />
	- bugfix: /s bug fixed<br />
	- source-code cleanup<br />
	- anti-cheat check(&quot;Negative good-count&quot;) also when character logs in<br />
	- cmd: new feature called &quot;shortcut&quot;(very useful when command targets ingame player)<br />
	see bottom of &quot;ADMIN-COMMANDS&quot; section for explanation<br />
	- unload automatically kicks players with moneyfixlist<br />
	- cmd: serverinfo added<br />
	- kickmsg added, you can alter the appearance of the reason in the ini<br />
	- you can now enter a reason in the kick/kickban command<br />
	- ini restructured (plz take a look at it!)<br />
	- ini: UserCmdStyle/AdminCmdStyle added to modify the appearance of ingame command-replies<br />
	- new eventmode notifications</p>
<p>1.3.8<br />
	=====<br />
	- flhook tries to detect corrupted charfiles and kicks player(notification will be added to flhook_kicks.log)<br />
	if you have a charfile that still crashes the server then let me know<br />
	- ini: DisableNPCSpawns added</p>
<p>1.3.7<br />
	=====<br />
	- kicks get logged to flhook_kicks.log<br />
	- lossdata measuring-intervall set to 4sec<br />
	- rename bug fixed</p>
<p>1.3.6<br />
	=====<br />
	- cmd: rename/deletechar added<br />
	- anticheat: &quot;selling more good than possible&quot; detected(notification will be added to flhook_cheaters.log and player will get banned)<br />
	- ini: pingkick/losskick added<br />
	- cmd: &quot;loss=&quot; in getplayers now shows a reasonable result(it's an average value calculated by LossKickFrame setting)</p>
<p>1.3.5 (official)<br />
	=====<br />
	- bugfix: deathmsg was shown twice when &quot;/set diemsg&quot; was disabled</p>
<p>1.3.4<br />
	=====<br />
	- /u universe message bug fixed</p>
<p>1.3.3<br />
	=====<br />
	- rights: &quot;setting&quot; removed(was equal to superadmin)<br />
	- closing the flhook console will unload flhook(no more crashes)<br />
	- ini: wport option added for unicode socket connections<br />
	- ini: user commands may be enabled/disabled</p>
<p>1.3.2<br />
	=====<br />
	- cmd: getplayerinfo added<br />
	- cmd: getplayers shows ip/loss (not tested yet)<br />
	- beam exception leads to player kick(the cmd is save now)<br />
	- cruise disruptor behaviour may be changed(see ini)</p>
<p>1.3.0<br />
	=====<br />
	- IServerImpl now entirely hooked in HkIServerImpl.cpp<br />
	- cmd: getplayers shows ping</p>
<p>1.2.9<br />
	=====<br />
	- usercmd: &quot;/set chatfont&quot; added<br />
	- submitchat exception fixed?<br />
	- killmsg: death-fuse issue solved<br />
	- savechar after trade (to prevent cheating when server crashes)<br />
	- anti-baseidle added<br />
	- cmd: addcargo/removecargo/enumcargo added<br />
	- source-code cleanup<br />
	- bug: addcash/getcash now work with clientid as argument</p>
<p>1.2.8<br />
	=====<br />
	- ingame admin-command replies shown in a new format<br />
	- new readme.txt<br />
	- cmd: ban/unban changed<br />
	- ini changed<br />
	- print functions enhanced<br />
	- cmd: moneyfixlist added</p>
<p>1.2.7<br />
	=====<br />
	- bug: getcash bug(player in charmenu) fixed</p>
<p>1.2.6<br />
	=====<br />
	- bug: /leave bug in msg-cmd fixed <br />
	- bug: special-char bug in socket connection fixed <br />
	- killmsg: shows &quot;xxx has died&quot; when freighter with death-fuse was destroyed<br />
	- cmd: addcash/setcash now work flawlessly without kicks</p>
<p>1.2.5<br />
	=====<br />
	- xml format docu enhancements (however color=&quot;#...&quot; doesnt work correctly)<br />
	- eventmode: login shows clientid<br />
	- diemsg bug fixed(player with &lt;,&gt; or &amp; in their name had no die-msgs)<br />
	- cmd: isloggedin now returns false when player is in charmenu<br />
	- cmd: addcash/setcash now kick when player is logged in with a different char from same the account<br />
	- socket: bugfix, more than 1 cmd in one tcp packet now allowed (seperated by \n or \r\n)<br />
	- improved kill detection(now works with death-fuses?)</p>
<p>1.2.4<br />
	=====<br />
	- charfile encryption disabled</p>
<p>1.2.3<br />
	=====<br />
	- die-msg suppress fixed<br />
	- cmd: isloggedin added<br />
	- cmd: isonserver changed<br />
	- usercmd: /set diemsg added</p>
<p>1.2.2<br />
	=====<br />
	- fmsg added with xml-syntax<br />
	- eventmode: login added<br />
	- eventmode: chat spams id= and idto=<br />
	- try-catch statements added in callbacks<br />
	- release-mode-compilation finally works<br />
	- readme.txt added</p>
<p></p>
</body>
</html>