[Latest] Biocross RC1 - it`s back!
-
Development of my FLHook GUI is going well just to document for those out there who care what is going on, I will pencil in what I got going on in here….
FLHook GUI Design Concept:
There will be two flavours of my FLHook GUI - one that is released with Biocross and one that functions on it’s own, essentially both will do the same thing however the Biocross one will be for the server admin’s to use when using a Remote Desktop Connection and the other (standalone) one will be used by people without RDP access. Perhaps I should describe a little about the interaction of the GUI with FLHook…
How Remote Access Works:
FLHook was coded with a remote socket layer, this basically allows anyone to connect to the FLHook console from pretty much anywhere, you MUST have an authorised password and account however!
Biocross and the standalone version will use this socket layer to connect to FLHook - meaning you can download the standalone version to your local computer and still modify the server in a huge way, basically anything FLHook can do you will be able to (you can also set user permissions in the FLHook.ini to prevent people doing some things you wouldn’t want them to, for example SP’s should only be allowed to remote connect to beam kick and ban).
Note that Biocross will use the ANSII port for connecting to and that UNICODE is NOT supported at this time, nor do I see it being supported in the future…
Also note that plugins will be supported in a small sense, which brings me onto how it will look
How it will look:
Essentially I was aiming for the majority of a GUI element as I could, but due to all these plugins floating about and some different FLHook versions and whatever I decided on another approach, I GUI’d the main elements you see in nearly all modern FLHook installations (beam, kick, ban ip, message, add player cargo, delete admin and so on) but also included an MSN kind of interaction with your FLHook, haha very badly explained let me try harder.
The ‘MSN’ interaction is best described if you simply imagine MSN in your head when I am saying this, imagine the send button and the text box and the list of everything that has been “said”.
You type in your command and it shows up like so:
(DATETIME) Admin Said: Â
<plugincommand>After however long it takes for FLHook to process this command and send it back to you this will show up:(DATETIME)The Hooker Said:
Plugin command could not be accepted as parameter {0} was missingand yes it WILL say The Hooker
Out of interest is anyone out there running this on their server yet?</plugincommand>
-
Unable to test yet, posted some new tracker items for ya.
-
I’ll be very mean and suggest adding GUI plugins for Biocross to support the Hook plugins ;D
-
I’ll be very mean and suggest adding GUI plugins for Biocross to support the Hook plugins ;D
-
I’ll be very mean and suggest adding GUI plugins for Biocross to support the Hook plugins ;D
bahahaha
-
Released a patch via the autoupdater, here are the notes:
**This patch adds full support for language selection and integration, and also excites
you by placing a button called FLHook Configuration on your ribbon bar, and then lets
you down because when you click it, it don’t work- Added language select in Program Configuration (requires restart on language change)
- Fixed the wizard, data importing incorrectly, XML Errors and so on
- Added language select screen to the wizard
- Made sure if one XML File errors you know which one, but then the program will continue with the rest ;)**
hope this helps
-
Finished the config page, a reminder to anyone translating the main interface that this will also need to be translated later so you may need to add some new entries to your list when this portion of the app is complete…
Now onto the difficult part… will post back when it’s complete…
and yes…it does say call the hooker
-
Because FF said so I am coding a plugin interface for the FLHook portion of my program, and to serve as a tutorial to other plugin makers, my main FLHook interface will be a plugin itself.
Just to let potential coders know, here are the functions, properties and subroutines your plugin will be able to utilise:
_**Property Password() As String
Property ServerIP() As String
Property Port() As String
Property FactionsGamedata() As DataSet
Property BasesGamedata() As DataSet
Property SystemsGamedata() As DataSetSub InitiatePlugin()
Event OnPlayerUndock As Freelancer.FLHookEventListener.BaseExitEventHandler
Event OnPlayerDock As Freelancer.FLHookEventListener.BaseEnterEventHandlerEvent OnPlayerDeath As Freelancer.FLHookEventListener.KillEventHandler
Event OnPlayerSpawn As Freelancer.FLHookEventListener.SpawnEventHandlerEvent OnPlayerBeginJump As Freelancer.FLHookEventListener.JumpInEventHandler
Event OnPlayerExitJump As Freelancer.FLHookEventListener.JumpOutEventHandlerEvent OnPlayerLaunch As Freelancer.FLHookEventListener.LaunchEventHandler
Event OnPlayerConnect As Freelancer.FLHookEventListener.PlayerConnectEventHandler
Event OnPlayerDisconnect As Freelancer.FLHookEventListener.PlayerDisconnectEventHandlerEvent OnPlayerLogin As Freelancer.FLHookEventListener.LoginEventHandler
Event OnSuccessfulConnection As Freelancer.FLHookEventListener.ConnectedEventHandler
Event OnConnectionFailed As Freelancer.FLHookEventListener.ConnectFailedEventHandler
Event OnDisconnect As Freelancer.FLHookEventListener.DisconnectedEventHandlerEvent OnMessageSent As Freelancer.FLHookEventListener.ChatMessageEventHandler
Function Connect() As Boolean
Sub Disconnect()Function SendData(ByVal Command As String) As String
Overloads Function AddCargo(ByVal ID As Integer, ByVal Good As String, ByVal Amount As Integer, ByVal IsMission As Boolean) As Boolean
Overloads Function AddCargo(ByVal PlayerName As String, ByVal Good As String, ByVal Amount As Integer, ByVal IsMission As Boolean) As Boolean
Overloads Function ReturnPlayerData(ByVal PlayerName As String) As Freelancer.FLHookControl.OnlinePlayer
Overloads Function ReturnPlayerData(ByVal ID As Integer) As Freelancer.FLHookControl.OnlinePlayerOverloads Function AddCash(ByVal ID As Integer, ByVal Cash As String) As Boolean
Overloads Function AddCash(ByVal PlayerName As String, ByVal Cash As String) As BooleanOverloads Function Ban(ByVal ID As Integer) As Boolean
Overloads Function Ban(ByVal PlayerName As String) As BooleanOverloads Function Beam(ByVal ID As Integer, ByVal Base As String) As Boolean
Overloads Function Beam(ByVal PlayerName As String, ByVal Base As String) As BooleanOverloads Function DeleteAdministrator(ByVal ID As Integer) As Boolean
Overloads Function DeleteAdministrator(ByVal PlayerName As String) As BooleanOverloads Function DeleteCharacter(ByVal ID As Integer) As Boolean
Overloads Function DeleteCharacter(ByVal PlayerName As String) As BooleanOverloads Function GetAccountDirectory(ByVal ID As Integer) As String
Overloads Function GetAccountDirectory(ByVal PlayerName As String) As StringOverloads Function GetAdminRights(ByVal ID As Integer) As String
Overloads Function GetAdminRights(ByVal PlayerName As String) As StringFunction GetBaseStatus(ByVal Base As String) As Freelancer.FLHookControl.BaseStatus
Function GetBaseStatusPercent(ByVal Base As String) As SingleOverloads Function GetCash(ByVal ID As Integer) As Long
Overloads Function GetCash(ByVal PlayerName As String) As LongFunction GetClientID(ByVal PlayerName As String) As String
Overloads Function GetGroupMembers(ByVal ID As Integer) As System.Collections.ObjectModel.Collection(Of Freelancer.FLHookControl.OnlinePlayer)
Overloads Function GetGroupMembers(ByVal PlayerName As String) As System.Collections.ObjectModel.Collection(Of Freelancer.FLHookControl.OnlinePlayer)
Function ReturnPlayerList() As System.Collections.ObjectModel.Collection(Of Freelancer.FLHookControl.OnlinePlayer)Overloads Function GetPlayerCargo(ByVal ID As Integer) As Freelancer.FLHookControl.PlayerCargoHold
Overloads Function GetPlayerCargo(ByVal PlayerName As String) As Freelancer.FLHookControl.PlayerCargoHoldFunction GetServerInfo() As Freelancer.FLHookControl.ServerInfo
Function IsLoggedIn(ByVal PlayerName As String) As Boolean
Overloads Function Kick(ByVal PlayerName As String, ByVal Reason As String) As Boolean
Overloads Function Kick(ByVal ID As Integer, ByVal Reason As String) As BooleanOverloads Function Ban(ByVal PlayerName As String, ByVal Reason As String) As Boolean
Overloads Function Ban(ByVal ID As Integer, ByVal Reason As String) As BooleanOverloads Function Kill(ByVal ID As Integer) As Boolean
Overloads Function Kill(ByVal PlayerName As String) As BooleanOverloads Function Message(ByVal ID As Integer, ByVal Text As String, ByVal Formatted As Boolean) As Boolean
Overloads Function Message(ByVal ID As Integer, ByVal msg As String, ByVal Colour As Color, Optional ByVal Bold As Boolean = False, Optional ByVal Italics As Boolean = False, Optional ByVal Underline As Boolean = False, Optional ByVal Big As Boolean = False)
Overloads Function Message(ByVal PlayerName As String, ByVal Text As String, ByVal Formatted As Boolean) As Boolean
Overloads Function Message(ByVal PlayerName As String, ByVal msg As String, ByVal Colour As Color, Optional ByVal Bold As Boolean = False, Optional ByVal Italics As Boolean = False, Optional ByVal Underline As Boolean = False, Optional ByVal Big As Boolean = False)Overloads Function RemoveCargo(ByVal ID As Integer, ByVal GoodID As Integer, ByVal Amount As Integer) As Boolean
Overloads Function RemoveCargo(ByVal PlayerName As String, ByVal GoodID As Integer, ByVal Amount As Integer) As BooleanOverloads Function RenamePlayer(ByVal ID As Integer, ByVal NewName As String) As Boolean
Overloads Function RenamePlayer(ByVal PlayerName As String, ByVal NewName As String) As BooleanOverloads Function ResetsReputation(ByVal ID As Integer) As Boolean
Overloads Function ResetsReputation(ByVal PlayerName As String) As BooleanOverloads Function SaveCharacter(ByVal ID As Integer) As Boolean
Overloads Function SaveCharacter(ByVal PlayerName As String) As BooleanOverloads Function SetAdministrator(ByVal ID As Integer, ByVal Rights As String) As Boolean
Overloads Function SetAdministrator(ByVal PlayerName As String, ByVal Rights As String) As BooleanOverloads Function SetCash(ByVal ID As Integer, ByVal Cash As String) As Boolean
Overloads Function SetCash(ByVal PlayerName As String, ByVal Cash As String) As BooleanOverloads Function SetReputation(ByVal ID As Integer, ByVal Faction As String, ByVal Value As Single) As Boolean
Overloads Function SetReputation(ByVal PlayerName As String, ByVal Faction As String, ByVal Value As Single) As BooleanOverloads Function SystemMessage(ByVal System As String, ByVal Text As String, ByVal Formatted As Boolean) As Boolean
Overloads Function SystemMessage(ByVal System As String, ByVal Text As String, ByVal Colour As Color, Optional ByVal Bold As Boolean = False, Optional ByVal Italics As Boolean = False, Optional ByVal Underline As Boolean = False, Optional ByVal Big As Boolean = False) As BooleanOverloads Function Unban(ByVal ID As Integer) As Boolean
Overloads Function Unban(ByVal PlayerName As String) As BooleanOverloads Function UniverseMessage(ByVal Text As String, ByVal Formatted As Boolean) As Boolean
Overloads Function UniverseMessage(ByVal Text As String, ByVal Colour As Color, Optional ByVal Bold As Boolean = False, Optional ByVal Italics As Boolean = False, Optional ByVal Underline As Boolean = False, Optional ByVal Big As Boolean = False) As Boolean**_
-
TOO MUCH OVERLOAD!!!
very nice list mate
-
Don’t be disheartened, HazardFN… I may not be around FL too much longer, so may not see your finished project, but keep going for it. ;D
Then you can tell your grandchildren about the blokes here who made your life a misery and made you miss your release deadlines time after time! ::)
-
Good News! The plugin interface works and I have been constructing the “base” plugin which is what will be released with Biocross. Here are some screens of the interface.
The Admin interface allows you to search for, or create admins with any chosen rights.
The message constructor includes a colour picker, and easy choice of format such as bold, underline, italic or big writing.The player chat option allows you to redirect all the players chat to a window so you can see what they are saying, it is effectively an MSN conversation
This window allows you to view the ping of all the players online, it also shows you the ping of the server (NOTE: the ping on the server will always be 0 for local connections, this feature is mainly for remote connections - player pings will show up correctly on local or remote connections)
The main player window allows you to see what players online, you can kick/ban, you can also kill them :P, save their player file - view all players in their group - you can also view other players on their account.It also shows their IP
You can also rename them, beam them to places and many other things.
-
Expect the full official release of Biocross Version 1 tomorrow morning/afternoon - should all go to plan :D.
Hope you are all ready…
I’m not
I have left some functionality out my base plugin to encourage others to learn VB or C# and start making their own so the more the community learns the more this software improves :).
Some ideas:
The base FLHook plugin (and Biocross itself) is unable to ascertain which players were banned using FLHook and as such does not sport a GUI feature for unbanning players - perhaps someone could give this a go?Cargo is an area that needs exploiting - you have all the required functions available to you such as GetCargoHold and SetCargo.
A Faction manipulation tool would be useful - a set rep function is available however there is no get rep, for those looking for a challenge I suggest this one
An FLHook Maintenance tool which monitors players ping automatically and kicks them when over a certain amount…
-
Biocross RC2 is now available for download - it may be best to remove all evidence of your old Biocross installation (by simply running the uninstallation program) and although you don’t have to I would also recommend you delete your SQL Database, if you do not know how or don’t want to then it is not mandatory ;).
There is a lot of stuff on my agenda over the coming week for you guys - because ideally I would like as many server admins as possible to be running my program (naturally as I spent a fair bit of time on it). So first thing is first let’s go through some of the new stuff:
FLHook GUI plugins - plug-ins can be made for Biocross (in either VB.NET or C#.NET) which allow you to add GUI extensibility to FLHook itself. Obviously I will be adding more as time goes on but I would encourage you to pick up the programming language and give it a bash (it is a REALLY simple language)
Biohook - My base plugin included with the installation. It provides you with some functionality to access FLHook and features a graph of players’ ping times - it has a message creator WITH colour picker, it also facilitates easy banning, beaming and general administration of players
I am leaving the functionality to a minimum if only to encourage others to participate in building plugins - all you C++ coders there is no exception C# is fairly similar to C++, similar enough to get by.
This brings me onto the next part of my agenda and that is tutorial writing for making a plug-in with a few demo applications with source and so on, which also brings me to my NEXT point - the Biocross RC2 source code will also be available from The Forge in a manner of minutes from you reading this post. (I just have to zip it and delete already compiled binaries).
please give it a read through and see if you can find any potential problems - please provide all corrections/bug report details through the forge tracker
-
Hey.
I tried this a while back - it didn’t work, I was having trouble with getting this MSSQL thing to work…
See, I’ve only ever used MySQL for DBs before…
All I’m trying to do is get it to work on a private server.
Any chance you could help me a bit?
Thanks,
Alex.