Jump to content

[RELEASE] Status Bar With Icons & Server FPS display v1.36


Darth_Rogue

Recommended Posts

09.05.2015 18:04:44: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:07:00: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #21 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:09:21: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #98 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:12:22: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #98 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:15:45: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 " 1 "mpmissions\__CUR_MP.Altis\init.sqf"

if (isServer) then {

execVM "\q\addons\traderATMs\init.sqf";

};

if(hasInterface) then{"

09.05.2015 18:27:34: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #23 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:30:36: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #23 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:33:57: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:45:45: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:47:30: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:48:44: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:52:39: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #24 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:55:01: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #23 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:56:58: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #23 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 18:58:58: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 19:02:09: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #21 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 19:05:20: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #21 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

09.05.2015 19:08:25: Nathaniel (72.227.109.0:2704) f74c5b050d9591502c69b73c6ccba882 - #22 "display 49 && isnil {uinamespace getvariable "RscDebugConsole_execute"}) then {

if (random 1 > (1 - 0.24 / diag_fps)) then {_ppS"

Link to comment
Share on other sites

Hi, i've added eveything as it has asked and the server will not start.

author = "Epoch Mod Team";
class Header
{
 gameType = Sandbox;
 minPlayers = 1;
 maxPlayers = 100;
};
respawn = "BASE";
respawnDelay = 600;
respawnDialog = 0;

onLoadMission= "Epoch";
OnLoadIntro = "Welcome to Epoch Mod";
loadScreen = "\x\addons\a3_epoch_assets\pictures\loadScreen_ca.paa"; 
OnLoadIntroTime = False;
OnLoadMissionTime = False;
onLoadName = "Epoch Mod";
disabledAI = true;
scriptedPlayer = 1;
disableChannels[]={0,1,2,6};
enableItemsDropping = 0;
briefing = 0;
debriefing = 0;
enableDebugConsole = 0;
joinUnassigned = 0;
respawnOnStart = 0;
forceRotorLibSimulation = 1;

corpseManagerMode = 1;
corpseLimit = 10;
corpseRemovalMinTime = 1200;
corpseRemovalMaxTime = 3600;

wreckManagerMode = 1;
wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;

class CfgRemoteExecCommands {};

class CfgEpochClient
{
	buildingNearbyMilitary = 0; //1 to allow building nearby
	buildingNearbyMilitaryRange = 300; //Define radius of blocked area

	buildingRequireJammer = 0; // 1 = to allow building without a jammer 
	buildingCountLimit = 200; // how many objects can be built within range of a jammer 
	buildingJammerRange = 75; // jammer range in meters 
	
	EPOCH_news[] = {"Word is that Sappers have a new boss.","Dogs will often lure them monsters away.","My dog was blown up. I miss him.."};
	
	class Altis
	{
		blockedArea[] = { //[POS],radius
				{ { 16085, 16997, 0 }, 250 }, //South Telos
				{ { 12844, 16714, 0 }, 120 }, //Soldner Base 
				{ { 3085, 13184, 0 }, 300 }, //Kavalar Carstel
				{ { 13493, 12013, 0 }, 450 }, //Makrynisi (Island)
				{ { 17439, 13165, 0 }, 165 }, //Pyrgorsk Military
				{ { 20084, 6728, 0 }, 55 }, //West of Selakano
				{ { 25303, 21807, 0 }, 100 } //Sofia	
		};
	};
	class Chernarus
	{
		blockedArea[] = {
				{ { 10203, 1886, 0 }, 430 }, //South Electro
				{ { 6822, 2498, 0 }, 600 }, //Cherno
				{ { 4612, 9670, 0 }, 140 }, //NWAF south barack
				{ { 4907, 10117, 0 }, 250 }, //NWAF NE hangas
				{ { 4707, 10384, 0 }, 200 }, //NWAF north barack
				{ { 4069, 10778, 0 }, 75 }, //NWAF west hangas
				{ { 4553, 10722, 0 }, 150 }, //NWAF NW hangas
				{ { 12279, 9505, 0 }, 350 }, //Berenzino Mid
				{ { 12816, 9816, 0 }, 400 }, //Berenzino SE
				{ { 12991, 10147, 0 }, 375 }, //Berenzino Docs
				{ { 2693, 5138, 0 }, 200 }, //Zeleno
				{ { 11467, 7508, 0 }, 150 }, //Polana Factory
				{ { 13092, 7096, 0 }, 140 } //Solnichniy Factory
		};
	};
};

class CfgEpochSapper
{
	detonateDistMax = 8; //Random distance between 3m and this number at which sapper detonates. Min value = 4
	groanTrig = 16; //Percentage chance of a groan. Min value = 4
	sRange = 300; //Distance from target over which sapper will dispose. Range within which sapper code will be aware of targets. Distance up to which sapper will attempt to find a spot to hide in. Min Value = 150.
	smellDist = 24; //Distance up to which sapper can smell. Used to decide if sapper can see target when deciding to charge and influences target selection. Is influenced by wind direction. Min Value = 8.
};

class CfgEpochUAV
{
	UAVMinDist = 48; //Minimum distance to choose next position when roaming. Min Value = 8.
	UAVMaxDist = 180; //Maximum distance to choose next position when roaming. Min Value = 42 / Max Value = 400.
	UAVHeight = 100; //Set height when roaming, slight randomness is applied to this value. UAV will choose own height when locked onto target. Min Value = 42 / Max Value = 280. UAV can still spot targets from height !
};

class CfgEpochAirDrop
{
	AirDropFreq = 1200; //AirDropChance, to decide if Air drop occurs, will only be checked once per AirDropFreq time period, for each player. Min value = 120.
	AirDropChance = 6; //Percentage chance of air drop, for current player. Checked every AirDropFreq and upon antagonists spawn trigger. -1 To disable.
};

class RscTitles
{

	#include "addons\status_bar\statusBar.hpp"

};

That is my description.ext

 

If i take out the class RscTitles it starts up fine, but then i get kicked for battleye restriction Scripts #22. I have edited the BE scripts like you asked. confused on where im going wrong

Link to comment
Share on other sites

The only reason that could be the case is if the statusBar.hpp file isn't where the path says it is in description.ext.  Check and make sure you have copied the files into the correct folder in your mission PBO.  If you have moved them then you will need to update the path to the hpp file in the RscTitles section.

Link to comment
Share on other sites

Just and FYI in the install instructions on the Git page. under the 

 

 

  1. Open description.ext and add this to the last line

    class RscTitles {

    include "addons\Status_Bar\statusBar.hpp"

    };

    NOTE: IF you already have an RscTitles section in description.ext, simply add '#include "addons\Status_Bar\statusBar.hpp"' between the brackets.

 next to the large text version  of "INCLUDE" there is no "#". now i am a noob when it comes to installing scripts so just copy and pasted that section to the description.ext file. it took about an hour to realize my mistake. if thats a noob and me only mistake disregard this message. if you think others could make this mistake please update the text. Thanks again for the awesome addon!!!

Link to comment
Share on other sites

Just and FYI in the install instructions on the Git page. under the 

 next to the large text version  of "INCLUDE" there is no "#". now i am a noob when it comes to installing scripts so just copy and pasted that section to the description.ext file. it took about an hour to realize my mistake. if thats a noob and me only mistake disregard this message. if you think others could make this mistake please update the text. Thanks again for the awesome addon!!!

 

 

Good catch!  I'll update the instructions.  Thank you.

Link to comment
Share on other sites

If your UID has been added to the admins list in the status bar init then the FPS display in the status bar is a reading of the servers FPS. Not your client FPS. I added that to allow admins to monitor their server performance in game without having to use any special tools or a second monitor.

Link to comment
Share on other sites

I run a very populated server ( About 50-70 ) players a day. So I get a lot of request and bug reports. Well one thing that has been driving my players insane is that the status bar appears cut off because "Most" people have their interface size set to large. I understand it is very easy to just correct it to the small or normal size but telling every player to do so is not reasonable. What I am getting to is could you (Darth) or someone configure to appear in the right hand side of the screen. I am not familiar with GUI placement yet. That is why I come asking assistance.

Thank you,

Joe Hills

(CEO- Falcon Gaming Entertainment)

P.S. Darth we have spoken before on your teamspeak. I can join it again if you need me to explain better.

Link to comment
Share on other sites

I'll play with the settings and see what can be done.  My initial suspicions though are that in order for it to work properly you will have to remove some display items.  With the interface size set to large there just isn't enough screen real estate to be able to fit all the things in that need to be there.  You can change the sizes of the fonts and the icons in the hpp file, but when you change it like that you'll be changing it for everyone who connects to the server, meaning that folks who use the small interface size will end up with icons and text too small to read.  The other option is that you can add a new section in the hpp file for specific players whose UIDs match an array, but that array could get quite large and difficult to manage in a hurry.  

 

I'm happy to take a look but I'm of the mind that you're not going to be able to please everyone, regardless of which way you go on this.

Link to comment
Share on other sites

Agreed, the menus are made for full resolution gamers, which I believe is the majority at this day and age.

However I think a few ideas thrown in front of Darth and we can make this happen.

I'll be back working on my menu getting it ready for a 3 option status bar with possibly on and off setup

Link to comment
Share on other sites

I've gotten it all installed but it's not showing up on the server. No error codes. 

 

Here's my init and description:

 

DESCRIPTION.EXT

 

#include "scripts\infiSTAR_AdminMenu.hpp"

#include "scripts\R3F_ARTY_AND_LOG\desc_include.h"
author = "HosteD";
class Header
{
 gameType = Sandbox;
 minPlayers = 1;
 maxPlayers = 100;
};
respawn = "BASE";
respawnDelay = 600;
respawnDialog = 0;
 
onLoadMission= "Epoch";
OnLoadIntro = "Welcome to Epoch";
loadScreen = "load.jpg"; 
OnLoadIntroTime = False;
OnLoadMissionTime = False;
onLoadName = "Epoch";
disabledAI = true;
scriptedPlayer = 1;
disableChannels[]={0,2,6};
enableItemsDropping = 0;
briefing = 0;
debriefing = 0;
enableDebugConsole = 0;
joinUnassigned = 0;
respawnOnStart = 0;
forceRotorLibSimulation = 0;
 
corpseManagerMode = 1;
corpseLimit = 10;
corpseRemovalMinTime = 1200;
corpseRemovalMaxTime = 3600;
 
wreckManagerMode = 1;
wreckLimit = 2;
wreckRemovalMinTime = 60;
wreckRemovalMaxTime = 360;
 
class CfgRemoteExecCommands {};
 
class CfgSounds
{
sounds[] = {};
 
class intro
{
name = "intro";
sound[] = {"\sounds\intro.ogg", 1.0, 1};
titles[] = {};
};
class denied
{
name = "denied";
sound[] = {"\sounds\denied.ogg", 1.0, 1};
titles[] = {};
};
class granted
{
name = "granted";
sound[] = {"\sounds\granted.ogg", 1.0, 1};
titles[] = {};
};
};
#define CT_PROGRESS         8 
class RscTitles 
 { 
    #include "scripts\R3F_ARTY_AND_LOG\desc_rsct_include.h"
    class RscProgress 
    { 
        type = 8; 
        style = 0; 
        shadow = 2; 
        colorFrame[] = {0,0,0,1}; 
        colorBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"};  
        texture = "\A3\ui_f\data\GUI\RscCommon\RscProgress\progressbar_ca.paa";  
        w = 0.25; 
        h = 0.03; 
 
#include "addons\Status_Bar\statusBar.hpp"
    };     
        class CLOAK_BAR 
        { 
            idd = 10000; 
            onload ="((_this select 0) displayCtrl -1) progressSetPosition 1;uiNamespace setVariable [""TAG_CLOAKBAR"", _this select 0];_this ExecVM 'Cloak\Cloak_ProgressBar.sqf';"; 
            duration = 10000000; 
            class Controls 
            { 
                class Progress: RscProgress  
                    { 
                        idc = -1; 
                        x = 0.849 * safezoneW + safezoneX; 
                        y = 0.9350 * safezoneH + safezoneY; 
                    }; 
            }; 
        }; 
  };
#include "trader\tradedialog.hpp"
#include "trader\CfgPricing.hpp"
#include "bon_recruit_units\dialog\common.hpp"
#include "bon_recruit_units\dialog\recruitment.hpp"
#include "scripts\cfgFunctions.hpp"
#include "scripts\cfgHints.hpp"
 
 

 

 

 

INIT.SQF

 

[] ExecVM "scripts\R3F_ARTY_AND_LOG\init.sqf";

//[] execVM "Cloak\Activatecloak.sqf";
[] execVM "bon_recruit_units\Activate.sqf";
cutRsc ["CLOAK_BAR","PLAIN"];
[] execVM "scripts\tags.sqf";
[] execVM "bon_recruit_units\init.sqf";
execVM "scripts\txt.sqf";
execVM "scripts\zone.sqf";
execVM "scripts\fn_welcome.sqf";
[] execVM "wai\remote.sqf";
[] execVM "trader\init.sqf";
[] execVM "trader\resetvehicleammo.sqf";
[] execVM "trader\HALV_takegive_crypto_init.sqf"; 
if (isServer) then {
    execVM "\q\addons\traderATMs\init.sqf";
};
if (isServer) then {
fn_getBuildingstospawnLoot = compile preProcessFileLineNumbers "LSpawner\fn_LSgetBuildingstospawnLoot.sqf"; 
LSdeleter = compile preProcessFileLineNumbers "LSpawner\LSdeleter.sqf";
execVM "LSpawner\Lootspawner.sqf";
};
 
 
if (!isDedicated and hasInterface) then 
{
// EnergyBoost
[] execVM "EnergyBoost.sqf";
systemchat("EnergyBoost activated...");
 
};
 
 
// --->
// Copy & paste the below into your mission init.sqf
// <---
 
// Debug
DMC_DEBUG_MAPCENTER = FALSE;
DMC_DEBUG_NEARESTLOCATIONS = FALSE;
DMC_DEBUG_STARTINGPOSITIONS = FALSE;
DMC_DEBUG_PATROLWAYPOINTS = FALSE;
 
// Now whenever you want to spawn air patrols just call the precompiled function like this
private ["_air_patrol"];
_air_patrol = [
5000, // Search radius for patrol locations (Starting from map center position)
  [ // Array of air patrol starting positions (Use whatever you like. Just make sure the result is a 2D position in format [x,y])
  getMarkerPos "air",
  getMarkerPos "cloak"
],
  // "B_Heli_Light_01_F", // MH-9 Hummingbird
"B_Heli_Light_01_armed_F", // AH-9 Pawnee
  // "B_Heli_Transport_01_F", // UH-80 Ghost Hawk
  // "B_Heli_Transport_01_camo_F", // UH-80 Ghost Hawk
  //"B_Heli_Attack_01_F", // AH-99 Blackfoot
GUER, // Side of air patrol (West,East,Guer,Civ)
  150, // Patrol altitude (Meters above ground)
  "RED", // Patrol combat mode (Blue / Green / White / Yellow / Red)
  "COMBAT", // Patrol behaviour (Careless / Safe / Aware / Combat)
  "FULL", // Patrol speed (Limited / Normal / Full)
  "DESTROY", // Waypoint type (Move / Sad / Destroy)
1.0, // Skill of the crew steering the patrol vehicle (0.0 - 1.0)
4, // Amount of air patrols to spawn (spawn positions will be randomized based on above defined marker locations)
  3600, // Minimum patrol time (used as timer for alive / canMove check)
  TRUE // Randomize waypoints (True / False)
] call DMC_fnc_spawnAirPatrol;
 
// --->
// Copy & paste the above into your mission init.sqf
// <---
 
//Status Bar
if(hasInterface) then{[] execVM "addons\Status_Bar\init_statusBar.sqf"};

 

Link to comment
Share on other sites

Hi

 

#include "addons\Status_Bar\statusBar.hpp"...

 

Need to looks like in description:

 

class RscTitles
{

    #include "addons\Status_Bar\statusBar.hpp"

};

 

and

 

//Status Bar
if(hasInterface) then{[] execVM "addons\Status_Bar\init_statusBar.sqf"};
 
Needs to look like in init:
 
if(hasInterface) then [] execVM "addons\Status_Bar\init_statusBar.sqf";
Link to comment
Share on other sites

Try using this for your init.sqf

 

if (isServer) then {
    execVM "\q\addons\traderATMs\init.sqf";
    fn_getBuildingstospawnLoot = compile preProcessFileLineNumbers "LSpawner\fn_LSgetBuildingstospawnLoot.sqf"; 
    Sdeleter = compile preProcessFileLineNumbers "LSpawner\LSdeleter.sqf";
    execVM "LSpawner\Lootspawner.sqf";
};

[] ExecVM "scripts\R3F_ARTY_AND_LOG\init.sqf";
//[] execVM "Cloak\Activatecloak.sqf";
[] execVM "bon_recruit_units\Activate.sqf";
cutRsc ["CLOAK_BAR","PLAIN"];
[] execVM "scripts\tags.sqf";
[] execVM "bon_recruit_units\init.sqf";
execVM "scripts\txt.sqf";
execVM "scripts\zone.sqf";
execVM "scripts\fn_welcome.sqf";
[] execVM "wai\remote.sqf";
[] execVM "trader\init.sqf";
[] execVM "trader\resetvehicleammo.sqf";
[] execVM "trader\HALV_takegive_crypto_init.sqf"; 

//Status Bar
if(hasInterface) then {

[] execVM "addons\Status_Bar\init_statusBar.sqf";

};



 
 
if (!isDedicated and hasInterface) then 
{
// EnergyBoost
[] execVM "EnergyBoost.sqf";
systemchat("EnergyBoost activated...");
 
};
 
 
// --->
// Copy & paste the below into your mission init.sqf
// <---
 
// Debug
DMC_DEBUG_MAPCENTER = FALSE;
DMC_DEBUG_NEARESTLOCATIONS = FALSE;
DMC_DEBUG_STARTINGPOSITIONS = FALSE;
DMC_DEBUG_PATROLWAYPOINTS = FALSE;
 
// Now whenever you want to spawn air patrols just call the precompiled function like this
private ["_air_patrol"];
_air_patrol = [
5000, // Search radius for patrol locations (Starting from map center position)
  [ // Array of air patrol starting positions (Use whatever you like. Just make sure the result is a 2D position in format [x,y])
  getMarkerPos "air",
  getMarkerPos "cloak"
],
  // "B_Heli_Light_01_F", // MH-9 Hummingbird
"B_Heli_Light_01_armed_F", // AH-9 Pawnee
  // "B_Heli_Transport_01_F", // UH-80 Ghost Hawk
  // "B_Heli_Transport_01_camo_F", // UH-80 Ghost Hawk
  //"B_Heli_Attack_01_F", // AH-99 Blackfoot
GUER, // Side of air patrol (West,East,Guer,Civ)
  150, // Patrol altitude (Meters above ground)
  "RED", // Patrol combat mode (Blue / Green / White / Yellow / Red)
  "COMBAT", // Patrol behaviour (Careless / Safe / Aware / Combat)
  "FULL", // Patrol speed (Limited / Normal / Full)
  "DESTROY", // Waypoint type (Move / Sad / Destroy)
1.0, // Skill of the crew steering the patrol vehicle (0.0 - 1.0)
4, // Amount of air patrols to spawn (spawn positions will be randomized based on above defined marker locations)
  3600, // Minimum patrol time (used as timer for alive / canMove check)
  TRUE // Randomize waypoints (True / False)
] call DMC_fnc_spawnAirPatrol;
 
// --->
// Copy & paste the above into your mission init.sqf
// <---
 

 

 

You may have to play with the positioning of the execVM line.  Sometimes certain scripts have to be placed before or after certain if(isServer) statements.  Also, you should really consider cleaning up your init to remove unnecessary lines, and the loot spawner script can be moved server side to help reduce the mission file size.  Check the scripts forum for the necessary PBO download.  

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...