Added Player Marker, Flip Vehicle, and Status Bar

This commit is contained in:
Zepheris 2020-02-18 12:42:12 -07:00
parent b4d690d949
commit 2873104a00
19 changed files with 775 additions and 2 deletions

View File

@ -0,0 +1,203 @@
waitUntil {!(isNull (findDisplay 46))};
disableSerialization;
_rscLayer = "statusBar" call BIS_fnc_rscLayer;
_rscLayer cutRsc["statusBar","PLAIN"];
systemChat format["Loading Admin info...", _rscLayer];
[] spawn {
sleep 5;
//set the color values.
//Additional color codes can be found here: http://html-color-codes.com/
_colourDefault = parseText "#ADADAD"; //set your default colour here
_colour100 = parseText "#336600";
_colour90 = parseText "#339900";
_colour80 = parseText "#33CC00";
_colour70 = parseText "#33FF00";
_colour60 = parseText "#66FF00";
_colour50 = parseText "#CCFF00";
_colour40 = parseText "#CCCC00";
_colour30 = parseText "#CC9900";
_colour20 = parseText "#CC6600";
_colour10 = parseText "#CC3300";
_colour0 = parseText "#CC0000";
_colourDead = parseText "#000000";
while {true} do
{
sleep 1;
//moved the creation of the status bar inside the loop and create it if it is null,
//this is to handle instance where the status bar is disappearing
if(isNull ((uiNamespace getVariable "statusBar")displayCtrl 55555)) then
{
diag_log "statusbar is null create";
disableSerialization;
_rscLayer = "statusBar" call BIS_fnc_rscLayer;
_rscLayer cutRsc["statusBar","PLAIN"];
};
//initialize variables and set values
_unit = _this select 0;
_damage = round ((1 - (damage player)) * 100);
_hunger = round((EPOCH_playerHunger/5000) * 100);
_thirst = round((EPOCH_playerThirst/2500) * 100);
_wallet = EPOCH_playerCrypto;
_stamina = round(EPOCH_playerStamina * 100) / 100;
_energy = round(EPOCH_playerEnergy);
_toxPercent = round (EPOCH_playerToxicity);
_energyPercent = floor((_energy / 2500 ) * 100);
_serverFPS = if (typeName EPOCH_diag_fps == "SCALAR") then [{EPOCH_diag_fps},{"MANIPULATED"}],
_pos = getPosATL player; //switch to this below if you want to have world space coords displayed instead of gridref
_dir = getDir (vehicle player);
_grid = mapGridPosition player;
_xx = (format[_grid]) select [0,3];
_yy = (format[_grid]) select [3,3];
_time = (round(240-(serverTime)/60)); //edit the '240' value (60*4=240) to change the countdown timer if your server restarts are shorter or longer than 4 hour intervals
_hours = (floor(_time/60));
_minutes = (_time - (_hours * 60));
_players = (count playableUnits -1);
switch(_minutes) do {
case 9: {_minutes = "09"};
case 8: {_minutes = "08"};
case 7: {_minutes = "07"};
case 6: {_minutes = "06"};
case 5: {_minutes = "05"};
case 4: {_minutes = "04"};
case 3: {_minutes = "03"};
case 2: {_minutes = "02"};
case 1: {_minutes = "01"};
case 0: {_minutes = "00"};
};
//Colour coding
//Damage
_colourDamage = _colourDefault;
switch true do {
case(_damage >= 100) : {_colourDamage = _colour100;};
case((_damage >= 90) && (_damage < 100)) : {_colourDamage = _colour90;};
case((_damage >= 80) && (_damage < 90)) : {_colourDamage = _colour80;};
case((_damage >= 70) && (_damage < 80)) : {_colourDamage = _colour70;};
case((_damage >= 60) && (_damage < 70)) : {_colourDamage = _colour60;};
case((_damage >= 50) && (_damage < 60)) : {_colourDamage = _colour50;};
case((_damage >= 40) && (_damage < 50)) : {_colourDamage = _colour40;};
case((_damage >= 30) && (_damage < 40)) : {_colourDamage = _colour30;};
case((_damage >= 20) && (_damage < 30)) : {_colourDamage = _colour20;};
case((_damage >= 10) && (_damage < 20)) : {_colourDamage = _colour10;};
case((_damage >= 1) && (_damage < 10)) : {_colourDamage = _colour0;};
case(_damage < 1) : {_colourDamage = _colourDead;};
};
//Hunger
_colourHunger = _colourDefault;
switch true do {
case(_hunger >= 100) : {_colourHunger = _colour100;};
case((_hunger >= 90) && (_hunger < 100)) : {_colourHunger = _colour90;};
case((_hunger >= 80) && (_hunger < 90)) : {_colourHunger = _colour80;};
case((_hunger >= 70) && (_hunger < 80)) : {_colourHunger = _colour70;};
case((_hunger >= 60) && (_hunger < 70)) : {_colourHunger = _colour60;};
case((_hunger >= 50) && (_hunger < 60)) : {_colourHunger = _colour50;};
case((_hunger >= 40) && (_hunger < 50)) : {_colourHunger = _colour40;};
case((_hunger >= 30) && (_hunger < 40)) : {_colourHunger = _colour30;};
case((_hunger >= 20) && (_hunger < 30)) : {_colourHunger = _colour20;};
case((_hunger >= 10) && (_hunger < 20)) : {_colourHunger = _colour10;};
case((_hunger >= 1) && (_hunger < 10)) : {_colourHunger = _colour0;};
case(_hunger < 1) : {_colourHunger = _colourDead;};
};
//Thirst
_colourThirst = _colourDefault;
switch true do{
case(_thirst >= 100) : {_colourThirst = _colour100;};
case((_thirst >= 90) && (_thirst < 100)) : {_colourThirst = _colour90;};
case((_thirst >= 80) && (_thirst < 90)) : {_colourThirst = _colour80;};
case((_thirst >= 70) && (_thirst < 80)) : {_colourThirst = _colour70;};
case((_thirst >= 60) && (_thirst < 70)) : {_colourThirst = _colour60;};
case((_thirst >= 50) && (_thirst < 60)) : {_colourThirst = _colour50;};
case((_thirst >= 40) && (_thirst < 50)) : {_colourThirst = _colour40;};
case((_thirst >= 30) && (_thirst < 40)) : {_colourThirst = _colour30;};
case((_thirst >= 20) && (_thirst < 30)) : {_colourThirst = _colour20;};
case((_thirst >= 10) && (_thirst < 20)) : {_colourThirst = _colour10;};
case((_thirst >= 1) && (_thirst < 10)) : {_colourThirst = _colour0;};
case(_thirst < 1) : {_colourThirst = _colourDead;};
};
//Energy
_colourEnergy = _colourDefault;
switch true do{
case(_energyPercent >= 100) : {_colourEnergy = _colour100;};
case((_energyPercent >= 90) && (_energyPercent < 100)) : {_colourEnergy = _colour90;};
case((_energyPercent >= 80) && (_energyPercent < 90)) : {_colourEnergy = _colour80;};
case((_energyPercent >= 70) && (_energyPercent < 80)) : {_colourEnergy = _colour70;};
case((_energyPercent >= 60) && (_energyPercent < 70)) : {_colourEnergy = _colour60;};
case((_energyPercent >= 50) && (_energyPercent < 60)) : {_colourEnergy = _colour50;};
case((_energyPercent >= 40) && (_energyPercent < 50)) : {_colourEnergy = _colour40;};
case((_energyPercent >= 30) && (_energyPercent < 40)) : {_colourEnergy = _colour30;};
case((_energyPercent >= 20) && (_energyPercent < 30)) : {_colourEnergy = _colour20;};
case((_energyPercent >= 10) && (_energyPercent < 20)) : {_colourEnergy = _colour10;};
case((_energyPercent >= 1) && (_energyPercent < 10)) : {_colourEnergy = _colour0;};
case(_energyPercent < 1) : {_colourEnergy = _colour0;};
};
//Toxicity
_colourToxicity = _colourDefault;
switch true do{
case(_toxPercent >= 100) : {_colourToxicity = _colourDead;};
case((_toxPercent >= 90) && (_toxPercent < 100)) : {_colourToxicity = _colour0;};
case((_toxPercent >= 80) && (_toxPercent < 90)) : {_colourToxicity = _colour10;};
case((_toxPercent >= 70) && (_toxPercent < 80)) : {_colourToxicity = _colour20;};
case((_toxPercent >= 60) && (_toxPercent < 70)) : {_colourToxicity = _colour30;};
case((_toxPercent >= 50) && (_toxPercent < 60)) : {_colourToxicity = _colour40;};
case((_toxPercent >= 40) && (_toxPercent < 50)) : {_colourToxicity = _colour50;};
case((_toxPercent >= 30) && (_toxPercent < 40)) : {_colourToxicity = _colour60;};
case((_toxPercent >= 20) && (_toxPercent < 30)) : {_colourToxicity = _colour70;};
case((_toxPercent >= 10) && (_toxPercent < 20)) : {_colourToxicity = _colour80;};
case((_toxPercent >= 1) && (_toxPercent < 10)) : {_colourToxicity = _colour90;};
case(_toxPercent < 1) : {_colourToxicity = _colour100;};
};
//Stamina
_colourStamina = _colourDefault;
((uiNamespace getVariable "statusBar")displayCtrl 55555)ctrlSetStructuredText parseText
format["
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\players.paa' color='%10'/> %2</t>
<t shadow='1' shadowColor='#000000' color='%11'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\damage.paa' color='%11'/> %3%1</t>
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\krypto.paa' color='%10'/> %4</t>
<t shadow='1' shadowColor='#000000' color='%12'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\hunger.paa' color='%12'/> %5%1</t>
<t shadow='1' shadowColor='#000000' color='%13'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\thirst.paa' color='%13'/> %6%1</t>
<t shadow='1' shadowColor='#000000' color='%15'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\stamina.paa' color='%15'/>%9</t>
<t shadow='1' shadowColor='#000000' color='%17'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\toxicity.paa' color='%17'/>%18</t>
<t shadow='1' shadowColor='#000000' color='%14'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\energy.paa' color='%14'/>%8%1</t>
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\restart.paa' color='%10'/>%19:%20</t>
<t shadow='1' shadowColor='#000000' color='%10'>FPS: %7</t>
<t shadow='1' shadowColor='#000000' color='%10'>GRIDREF: %16</t>",
"%",
_players,
_damage,
_wallet,
_hunger,
_thirst,
_serverFPS,
_energyPercent,
_stamina,
_colourDefault,
_colourDamage,
_colourHunger,
_colourThirst,
_colourEnergy,
_colourStamina,
format["%1/%2",_xx,_yy],
_colourToxicity,
_toxPercent,
_hours,
_minutes
];
};
};

View File

@ -0,0 +1,203 @@
waitUntil {!(isNull (findDisplay 46))};
disableSerialization;
_rscLayer = "statusBar" call BIS_fnc_rscLayer;
_rscLayer cutRsc["statusBar","PLAIN"];
systemChat format["Loading Admin info...", _rscLayer];
[] spawn {
sleep 5;
//set the color values.
//Additional color codes can be found here: http://html-color-codes.com/
_colourDefault = parseText "#ADADAD"; //set your default colour here
_colour100 = parseText "#336600";
_colour90 = parseText "#339900";
_colour80 = parseText "#33CC00";
_colour70 = parseText "#33FF00";
_colour60 = parseText "#66FF00";
_colour50 = parseText "#CCFF00";
_colour40 = parseText "#CCCC00";
_colour30 = parseText "#CC9900";
_colour20 = parseText "#CC6600";
_colour10 = parseText "#CC3300";
_colour0 = parseText "#CC0000";
_colourDead = parseText "#000000";
while {true} do
{
sleep 1;
//moved the creation of the status bar inside the loop and create it if it is null,
//this is to handle instance where the status bar is disappearing
if(isNull ((uiNamespace getVariable "statusBar")displayCtrl 55555)) then
{
diag_log "statusbar is null create";
disableSerialization;
_rscLayer = "statusBar" call BIS_fnc_rscLayer;
_rscLayer cutRsc["statusBar","PLAIN"];
};
//initialize variables and set values
_unit = _this select 0;
_damage = round ((1 - (damage player)) * 100);
_hunger = round((EPOCH_playerHunger/5000) * 100);
_thirst = round((EPOCH_playerThirst/2500) * 100);
_wallet = EPOCH_playerCrypto;
_stamina = round(EPOCH_playerStamina * 100) / 100;
_energy = round(EPOCH_playerEnergy);
_toxPercent = round (EPOCH_playerToxicity);
_energyPercent = floor((_energy / 2500 ) * 100);
_serverFPS = if (typeName EPOCH_diag_fps == "SCALAR") then [{EPOCH_diag_fps},{"MANIPULATED"}],
_pos = getPosATL player; //switch to this below if you want to have world space coords displayed instead of gridref
_dir = getDir (vehicle player);
_grid = mapGridPosition player; _xx = (format[_grid]) select [0,3];
_yy = (format[_grid]) select [3,3];
_time = (round(240-(serverTime)/60)); //edit the '240' value (60*4=240) to change the countdown timer if your server restarts are shorter or longer than 4 hour intervals
_hours = (floor(_time/60));
_minutes = (_time - (_hours * 60));
_players = (count playableunits -1);
switch(_minutes) do {
case 9: {_minutes = "09"};
case 8: {_minutes = "08"};
case 7: {_minutes = "07"};
case 6: {_minutes = "06"};
case 5: {_minutes = "05"};
case 4: {_minutes = "04"};
case 3: {_minutes = "03"};
case 2: {_minutes = "02"};
case 1: {_minutes = "01"};
case 0: {_minutes = "00"};
};
//Colour coding
//Damage
_colourDamage = _colourDefault;
switch true do {
case(_damage >= 100) : {_colourDamage = _colour100;};
case((_damage >= 90) && (_damage < 100)) : {_colourDamage = _colour90;};
case((_damage >= 80) && (_damage < 90)) : {_colourDamage = _colour80;};
case((_damage >= 70) && (_damage < 80)) : {_colourDamage = _colour70;};
case((_damage >= 60) && (_damage < 70)) : {_colourDamage = _colour60;};
case((_damage >= 50) && (_damage < 60)) : {_colourDamage = _colour50;};
case((_damage >= 40) && (_damage < 50)) : {_colourDamage = _colour40;};
case((_damage >= 30) && (_damage < 40)) : {_colourDamage = _colour30;};
case((_damage >= 20) && (_damage < 30)) : {_colourDamage = _colour20;};
case((_damage >= 10) && (_damage < 20)) : {_colourDamage = _colour10;};
case((_damage >= 1) && (_damage < 10)) : {_colourDamage = _colour0;};
case(_damage < 1) : {_colourDamage = _colourDead;};
};
//Hunger
_colourHunger = _colourDefault;
switch true do {
case(_hunger >= 100) : {_colourHunger = _colour100;};
case((_hunger >= 90) && (_hunger < 100)) : {_colourHunger = _colour90;};
case((_hunger >= 80) && (_hunger < 90)) : {_colourHunger = _colour80;};
case((_hunger >= 70) && (_hunger < 80)) : {_colourHunger = _colour70;};
case((_hunger >= 60) && (_hunger < 70)) : {_colourHunger = _colour60;};
case((_hunger >= 50) && (_hunger < 60)) : {_colourHunger = _colour50;};
case((_hunger >= 40) && (_hunger < 50)) : {_colourHunger = _colour40;};
case((_hunger >= 30) && (_hunger < 40)) : {_colourHunger = _colour30;};
case((_hunger >= 20) && (_hunger < 30)) : {_colourHunger = _colour20;};
case((_hunger >= 10) && (_hunger < 20)) : {_colourHunger = _colour10;};
case((_hunger >= 1) && (_hunger < 10)) : {_colourHunger = _colour0;};
case(_hunger < 1) : {_colourHunger = _colourDead;};
};
//Thirst
_colourThirst = _colourDefault;
switch true do{
case(_thirst >= 100) : {_colourThirst = _colour100;};
case((_thirst >= 90) && (_thirst < 100)) : {_colourThirst = _colour90;};
case((_thirst >= 80) && (_thirst < 90)) : {_colourThirst = _colour80;};
case((_thirst >= 70) && (_thirst < 80)) : {_colourThirst = _colour70;};
case((_thirst >= 60) && (_thirst < 70)) : {_colourThirst = _colour60;};
case((_thirst >= 50) && (_thirst < 60)) : {_colourThirst = _colour50;};
case((_thirst >= 40) && (_thirst < 50)) : {_colourThirst = _colour40;};
case((_thirst >= 30) && (_thirst < 40)) : {_colourThirst = _colour30;};
case((_thirst >= 20) && (_thirst < 30)) : {_colourThirst = _colour20;};
case((_thirst >= 10) && (_thirst < 20)) : {_colourThirst = _colour10;};
case((_thirst >= 1) && (_thirst < 10)) : {_colourThirst = _colour0;};
case(_thirst < 1) : {_colourThirst = _colourDead;};
};
//Energy
_colourEnergy = _colourDefault;
switch true do{
case(_energyPercent >= 100) : {_colourEnergy = _colour100;};
case((_energyPercent >= 90) && (_energyPercent < 100)) : {_colourEnergy = _colour90;};
case((_energyPercent >= 80) && (_energyPercent < 90)) : {_colourEnergy = _colour80;};
case((_energyPercent >= 70) && (_energyPercent < 80)) : {_colourEnergy = _colour70;};
case((_energyPercent >= 60) && (_energyPercent < 70)) : {_colourEnergy = _colour60;};
case((_energyPercent >= 50) && (_energyPercent < 60)) : {_colourEnergy = _colour50;};
case((_energyPercent >= 40) && (_energyPercent < 50)) : {_colourEnergy = _colour40;};
case((_energyPercent >= 30) && (_energyPercent < 40)) : {_colourEnergy = _colour30;};
case((_energyPercent >= 20) && (_energyPercent < 30)) : {_colourEnergy = _colour20;};
case((_energyPercent >= 10) && (_energyPercent < 20)) : {_colourEnergy = _colour10;};
case((_energyPercent >= 1) && (_energyPercent < 10)) : {_colourEnergy = _colour0;};
case(_energyPercent < 1) : {_colourEnergy = _colour0;};
};
//Toxicity
_colourToxicity = _colourDefault;
switch true do{
case(_toxPercent >= 100) : {_colourToxicity = _colourDead;};
case((_toxPercent >= 90) && (_toxPercent < 100)) : {_colourToxicity = _colour0;};
case((_toxPercent >= 80) && (_toxPercent < 90)) : {_colourToxicity = _colour10;};
case((_toxPercent >= 70) && (_toxPercent < 80)) : {_colourToxicity = _colour20;};
case((_toxPercent >= 60) && (_toxPercent < 70)) : {_colourToxicity = _colour30;};
case((_toxPercent >= 50) && (_toxPercent < 60)) : {_colourToxicity = _colour40;};
case((_toxPercent >= 40) && (_toxPercent < 50)) : {_colourToxicity = _colour50;};
case((_toxPercent >= 30) && (_toxPercent < 40)) : {_colourToxicity = _colour60;};
case((_toxPercent >= 20) && (_toxPercent < 30)) : {_colourToxicity = _colour70;};
case((_toxPercent >= 10) && (_toxPercent < 20)) : {_colourToxicity = _colour80;};
case((_toxPercent >= 1) && (_toxPercent < 10)) : {_colourToxicity = _colour90;};
case(_toxPercent < 1) : {_colourToxicity = _colour100;};
};
//Stamina
_colourStamina = _colourDefault;
//display the information
((uiNamespace getVariable "statusBar")displayCtrl 55555)ctrlSetStructuredText parseText
format["
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\players.paa' color='%10'/> %2</t>
<t shadow='1' shadowColor='#000000' color='%11'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\damage.paa' color='%11'/> %3%1</t>
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\krypto.paa' color='%10'/> %4</t>
<t shadow='1' shadowColor='#000000' color='%12'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\hunger.paa' color='%12'/> %5%1</t>
<t shadow='1' shadowColor='#000000' color='%13'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\thirst.paa' color='%13'/> %6%1</t>
<t shadow='1' shadowColor='#000000' color='%15'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\stamina.paa' color='%15'/>%9</t>
<t shadow='1' shadowColor='#000000' color='%18'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\toxicity.paa' color='%18'/>%19</t>
<t shadow='1' shadowColor='#000000' color='%14'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\energy.paa' color='%14'/>%8%1</t>
<t shadow='1' shadowColor='#000000' color='%10'>FPS: %7</t>
<t shadow='1' shadowColor='#000000' color='%10'>POS: %16</t>
<t shadow='1' shadowColor='#000000' color='%10'>DIR: %17</t>",
"%",
_players,
_damage,
_wallet,
_hunger,
_thirst,
_serverFPS,
_energyPercent,
_stamina,
_colourDefault,
_colourDamage,
_colourHunger,
_colourThirst,
_colourEnergy,
_colourStamina,
_pos,
_dir,
_colourToxicity,
_toxPercent
];
};
};

View File

@ -0,0 +1,32 @@
waitUntil {!isNuLL(uiNameSpace getVariable ["EPOCH_loadingScreen",displayNull])};
waitUntil {isNuLL(uiNameSpace getVariable ["EPOCH_loadingScreen",displayNull])};
waitUntil {!isNull player};
waitUntil {!(isNull (findDisplay 46))};
//Status Bar Config and Startup Options
//Choose Options
//--------------------------------------------------------------------------------------------------------------------------------------
_WSC = false; //Option whether to use and display world space coords in the admin status bar (true or false)
_sb_admin_list = ["76561198031039372"];
//--------------------------------------------------------------------------------------------------------------------------------------
//Start the Status Bar
if ((getPlayerUID player) in _sb_admin_list) then //admins id here
{
if (_WSC) then
{
[] execVM "addons\status_bar\adminbar_ws.sqf";
}
else
{
[] execVM "addons\status_bar\adminbar.sqf";
};
}
else
{
[] execVM "addons\status_bar\PlayerBar.sqf";
};

View File

@ -0,0 +1,209 @@
waitUntil {!(isNull (findDisplay 46))};
disableSerialization;
_rscLayer = "statusBar" call BIS_fnc_rscLayer;
_rscLayer cutRsc["statusBar","PLAIN"];
systemChat format["Loading Player info...", _rscLayer];
[] spawn {
sleep 5;
//set the color values.
//Additional color codes can be found here: http://html-color-codes.com/
_colourDefault = parseText "#ADADAD"; //set your default colour here
_colour100 = parseText "#336600";
_colour90 = parseText "#339900";
_colour80 = parseText "#33CC00";
_colour70 = parseText "#33FF00";
_colour60 = parseText "#66FF00";
_colour50 = parseText "#CCFF00";
_colour40 = parseText "#CCCC00";
_colour30 = parseText "#CC9900";
_colour20 = parseText "#CC6600";
_colour10 = parseText "#CC3300";
_colour0 = parseText "#CC0000";
_colourDead = parseText "#000000";
while {true} do
{
sleep 1;
//moved the creation of the status bar inside the loop and create it if it is null,
//this is to handle instance where the status bar is disappearing
if(isNull ((uiNamespace getVariable "statusBar")displayCtrl 55555)) then
{
diag_log "statusbar is null create";
disableSerialization;
_rscLayer = "statusBar" call BIS_fnc_rscLayer;
_rscLayer cutRsc["statusBar","PLAIN"];
};
//initialize variables and set values
_unit = _this select 0;
_damage = round ((1 - (damage player)) * 100);
//_damage = (round(_damage * 100));
_hunger = round((EPOCH_playerHunger/5000) * 100);
_thirst = round((EPOCH_playerThirst/2500) * 100);
_wallet = EPOCH_playerCrypto;
_stamina = round(EPOCH_playerStamina * 100) / 100;
_toxPercent = round (EPOCH_playerToxicity);
_energy = round(EPOCH_playerEnergy);
_energyPercent = floor((_energy / 2500 ) * 100);
_fps = format["%1", diag_fps];
_grid = mapGridPosition player;
_xx = (format[_grid]) select [0,3];
_yy = (format[_grid]) select [3,3];
_time = (round(240-(serverTime)/60)); //edit the '240' value (60*4=240) to change the countdown timer if your server restarts are shorter or longer than 4 hour intervals
_hours = (floor(_time/60));
_minutes = (_time - (_hours * 60));
_players = (count playableUnits -1);
switch(_minutes) do {
case 9: {_minutes = "09"};
case 8: {_minutes = "08"};
case 7: {_minutes = "07"};
case 6: {_minutes = "06"};
case 5: {_minutes = "05"};
case 4: {_minutes = "04"};
case 3: {_minutes = "03"};
case 2: {_minutes = "02"};
case 1: {_minutes = "01"};
case 0: {_minutes = "00"};
};
//Colour coding
//Damage
_colourDamage = _colourDefault;
switch true do {
case(_damage >= 100) : {_colourDamage = _colour100;};
case((_damage >= 90) && (_damage < 100)) : {_colourDamage = _colour90;};
case((_damage >= 80) && (_damage < 90)) : {_colourDamage = _colour80;};
case((_damage >= 70) && (_damage < 80)) : {_colourDamage = _colour70;};
case((_damage >= 60) && (_damage < 70)) : {_colourDamage = _colour60;};
case((_damage >= 50) && (_damage < 60)) : {_colourDamage = _colour50;};
case((_damage >= 40) && (_damage < 50)) : {_colourDamage = _colour40;};
case((_damage >= 30) && (_damage < 40)) : {_colourDamage = _colour30;};
case((_damage >= 20) && (_damage < 30)) : {_colourDamage = _colour20;};
case((_damage >= 10) && (_damage < 20)) : {_colourDamage = _colour10;};
case((_damage >= 1) && (_damage < 10)) : {_colourDamage = _colour0;};
case(_damage < 1) : {_colourDamage = _colourDead;};
};
//Hunger
_colourHunger = _colourDefault;
switch true do {
case(_hunger >= 100) : {_colourHunger = _colour100;};
case((_hunger >= 90) && (_hunger < 100)) : {_colourHunger = _colour90;};
case((_hunger >= 80) && (_hunger < 90)) : {_colourHunger = _colour80;};
case((_hunger >= 70) && (_hunger < 80)) : {_colourHunger = _colour70;};
case((_hunger >= 60) && (_hunger < 70)) : {_colourHunger = _colour60;};
case((_hunger >= 50) && (_hunger < 60)) : {_colourHunger = _colour50;};
case((_hunger >= 40) && (_hunger < 50)) : {_colourHunger = _colour40;};
case((_hunger >= 30) && (_hunger < 40)) : {_colourHunger = _colour30;};
case((_hunger >= 20) && (_hunger < 30)) : {_colourHunger = _colour20;};
case((_hunger >= 10) && (_hunger < 20)) : {_colourHunger = _colour10;};
case((_hunger >= 1) && (_hunger < 10)) : {_colourHunger = _colour0;};
case(_hunger < 1) : {_colourHunger = _colourDead;};
};
//Thirst
_colourThirst = _colourDefault;
switch true do{
case(_thirst >= 100) : {_colourThirst = _colour100;};
case((_thirst >= 90) && (_thirst < 100)) : {_colourThirst = _colour90;};
case((_thirst >= 80) && (_thirst < 90)) : {_colourThirst = _colour80;};
case((_thirst >= 70) && (_thirst < 80)) : {_colourThirst = _colour70;};
case((_thirst >= 60) && (_thirst < 70)) : {_colourThirst = _colour60;};
case((_thirst >= 50) && (_thirst < 60)) : {_colourThirst = _colour50;};
case((_thirst >= 40) && (_thirst < 50)) : {_colourThirst = _colour40;};
case((_thirst >= 30) && (_thirst < 40)) : {_colourThirst = _colour30;};
case((_thirst >= 20) && (_thirst < 30)) : {_colourThirst = _colour20;};
case((_thirst >= 10) && (_thirst < 20)) : {_colourThirst = _colour10;};
case((_thirst >= 1) && (_thirst < 10)) : {_colourThirst = _colour0;};
case(_thirst < 1) : {_colourThirst = _colourDead;};
};
//Energy
_colourEnergy = _colourDefault;
switch true do{
case(_energyPercent >= 100) : {_colourEnergy = _colour100;};
case((_energyPercent >= 90) && (_energyPercent < 100)) : {_colourEnergy = _colour90;};
case((_energyPercent >= 80) && (_energyPercent < 90)) : {_colourEnergy = _colour80;};
case((_energyPercent >= 70) && (_energyPercent < 80)) : {_colourEnergy = _colour70;};
case((_energyPercent >= 60) && (_energyPercent < 70)) : {_colourEnergy = _colour60;};
case((_energyPercent >= 50) && (_energyPercent < 60)) : {_colourEnergy = _colour50;};
case((_energyPercent >= 40) && (_energyPercent < 50)) : {_colourEnergy = _colour40;};
case((_energyPercent >= 30) && (_energyPercent < 40)) : {_colourEnergy = _colour30;};
case((_energyPercent >= 20) && (_energyPercent < 30)) : {_colourEnergy = _colour20;};
case((_energyPercent >= 10) && (_energyPercent < 20)) : {_colourEnergy = _colour10;};
case((_energyPercent >= 1) && (_energyPercent < 10)) : {_colourEnergy = _colour0;};
case(_energyPercent < 1) : {_colourEnergy = _colour0;};
};
//Toxicity
_colourToxicity = _colourDefault;
switch true do{
case(_toxPercent >= 100) : {_colourToxicity = _colourDead;};
case((_toxPercent >= 90) && (_toxPercent < 100)) : {_colourToxicity = _colour0;};
case((_toxPercent >= 80) && (_toxPercent < 90)) : {_colourToxicity = _colour10;};
case((_toxPercent >= 70) && (_toxPercent < 80)) : {_colourToxicity = _colour20;};
case((_toxPercent >= 60) && (_toxPercent < 70)) : {_colourToxicity = _colour30;};
case((_toxPercent >= 50) && (_toxPercent < 60)) : {_colourToxicity = _colour40;};
case((_toxPercent >= 40) && (_toxPercent < 50)) : {_colourToxicity = _colour50;};
case((_toxPercent >= 30) && (_toxPercent < 40)) : {_colourToxicity = _colour60;};
case((_toxPercent >= 20) && (_toxPercent < 30)) : {_colourToxicity = _colour70;};
case((_toxPercent >= 10) && (_toxPercent < 20)) : {_colourToxicity = _colour80;};
case((_toxPercent >= 1) && (_toxPercent < 10)) : {_colourToxicity = _colour90;};
case(_toxPercent < 1) : {_colourToxicity = _colour100;};
};
//Stamina
_colourStamina = _colourDefault;
//display the information
((uiNamespace getVariable "statusBar")displayCtrl 55555)ctrlSetStructuredText parseText
format["
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\players.paa' color='%10'/> %2</t>
<t shadow='1' shadowColor='#000000' color='%11'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\damage.paa' color='%11'/> %3%1</t>
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\krypto.paa' color='%10'/> %4</t>
<t shadow='1' shadowColor='#000000' color='%12'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\hunger.paa' color='%12'/> %5%1</t>
<t shadow='1' shadowColor='#000000' color='%13'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\thirst.paa' color='%13'/> %6%1</t>
<t shadow='1' shadowColor='#000000' color='%15'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\stamina.paa' color='%15'/>%9</t>
<t shadow='1' shadowColor='#000000' color='%19'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\toxicity.paa' color='%19'/>%20</t>
<t shadow='1' shadowColor='#000000' color='%14'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\energy.paa' color='%14'/>%8%1</t>
<t shadow='1' shadowColor='#000000' color='%10'>FPS: %7</t>
<t shadow='1' shadowColor='#000000' color='%10'>GRIDREF: %16</t>
<t shadow='1' shadowColor='#000000' color='%10'><img size='1.6' shadowColor='#000000' image='addons\status_bar\images\restart.paa' color='%10'/>%17:%18</t>",
"%",
_players,
_damage,
_wallet,
_hunger,
_thirst,
round diag_fps,
_energyPercent,
_stamina,
_colourDefault,
_colourDamage,
_colourHunger,
_colourThirst,
_colourEnergy,
_colourStamina,
format["%1/%2",_xx,_yy],
_hours,
_minutes,
_colourToxicity,
_toxPercent
];
};
};

View File

@ -0,0 +1,34 @@
#define ST_RIGHT 0x01
class statusBar {
idd = -1;
onLoad = "uiNamespace setVariable ['statusBar', _this select 0]";
onUnload = "uiNamespace setVariable ['statusBar', objNull]";
onDestroy = "uiNamespace setVariable ['statusBar', objNull]";
fadein = 0;
fadeout = 0;
duration = 10e10;
movingEnable = 0;
controlsBackground[] = {};
objects[] = {};
class controls {
class statusBarText {
idc = 55555;
x = 0.185 * safezoneW + safezoneX;
y = 0.940044 * safezoneH + safezoneY;
w = 0.65 * safezoneW;
h = 0.0330033 * safezoneH;
shadow = 1;
colorBackground[] = { 0, 0, 0, 0.5 }; // make the last number in the array 0 to get rid of the background
font = "PuristaSemibold";
size = "0.02 * safezoneH";
type = 13;
style = 2;
text="loading player stats ...";
class Attributes {
align="center";
color = "#ffffff";//#5fe60c
};
};
};
};

View File

@ -3,6 +3,7 @@
class RscTitles
{
#include "addons\Status_Bar\statusBar.hpp"
#include "VEMFr_client\gui\RscDisplayVEMFrClient.hpp"
#include "VEMFr_client\gui\RscDisplayBaseAttack.hpp"
};

View File

@ -13,6 +13,16 @@
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_config/Configs/CfgActionMenu/CfgActionMenu_target.hpp
*/
//added by Zepheris
class flip_vic
{
condition = "dyna_isVehicle && !dyna_locked";
action = "[dyna_cursorTarget] call FlipVic;";
icon = "x\addons\a3_epoch_code\Data\UI\buttons\build_upgrade.paa";
tooltip = "Flip Vehicle";
};
//end added by Zepheris
class build_upgrade
{
condition = "dyna_buildMode select 0";
@ -615,5 +625,3 @@ class Defuse_Bomb
icon = "x\addons\a3_epoch_code\Data\UI\buttons\Defuse.paa";
tooltip = "Defuse Bomb";
};

View File

@ -5,5 +5,15 @@ execVM "debug\blckClient.sqf";
if hasInterface then
{
[] ExecVM "addons\Status_Bar\init_statusBar.sqf";
[] ExecVM "VEMFr_client\sqf\initClient.sqf"; // Client-side part of VEMFr
FlipVic = compileFinal preProcessFileLineNumbers "scripts\flip.sqf";
execVM "scripts\playermarker.sqf";
};
//#include "A3EAI_Client\A3EAI_initclient.sqf";
//Advanced towing only tow 1 car
SA_MAX_TOWED_CARGO = 1;

View File

@ -0,0 +1,22 @@
private _flpVcl = _this select 0;
//if (local _flpVcl) then
//{
_bbr = boundingBoxReal _flpVcl;
_p1 = _bbr select 0;
_p2 = _bbr select 1;
_maxHeight = abs ((_p2 select 2) - (_p1 select 2));
_flpVcl allowDamage false;
_pos = getPosATL _flpVcl;
_pos set [2,(_pos select 2) + (_maxHeight)];
_flpVcl setPosATL _pos;
_flpVcl setVectorUp [0, 0, 1];
_flpVcl setVelocity [0,0,0];
_flpVcl allowDamage true;
["Flipped vehicle",5] call epoch_message;
//} else {
// ["You were not the driver of this vehicle",5] call epoch_message;
//};

View File

@ -0,0 +1,51 @@
/*
playerMarker.sqf
*/
if (isServer) exitWith {};
private["_markers","_members"];
_markers = [];
_members = [];
while {true} do {
private["_hasGPS","_hasRadio"];
sleep 1;
//diag_log format["assignedItems includes %1", assignedItems player];
//diag_log format["Items includes %1", Items player];
//diag_log format["magazines includes %1", magazines player];
//diag_log format["weapons includes %1", weapons player];
//_hasGPS = 'ItemGPS' in (assignedItems player);
//_hasRadio = "ItemRadio" in assignedItems player;
//diag_log format["_hasGPS = %1 and _hasRadio = %2",_hasGPS,_hasRadio];
if(visibleMap) then {
_members = units (group player);
//Create markers
{
_marker = createMarkerLocal [format["%1_marker",_x],visiblePosition _x];
_marker setMarkerColorLocal "ColorYellow";
_marker setMarkerTypeLocal "Mil_dot";
_marker setMarkerTextLocal format["%1", _x getVariable["realname",name _x]];
_markers pushBack [_marker,_x];
} foreach _members;
while {visibleMap} do {
{
private["_marker","_unit"];
_marker = _x select 0;
_unit = _x select 1;
if(!isNil "_unit") then {
if(!isNull _unit) then {
_marker setMarkerPosLocal (visiblePosition _unit);
};
};
} foreach _markers;
if(!visibleMap) exitWith {};
sleep 0.02;
};
{deleteMarkerLocal (_x select 0);} foreach _markers;
_markers = [];
_members = [];
};
};