Jump to content

[Release] HS Blackmarket 1.6 | 'New' Trader System | Special Trader | Blackmarket


Suppe

Recommended Posts

if (isServer) then {
    execVM "\q\addons\traderATMs\init.sqf";
	[] ExecVM "\SDROP\init.sqf";
};

if(isDedicated)exitWith{}; //Everything below this line is only executed on the client (player or local host)

//Wait until these variables are broadcasted to the client (usually happens before the init gets executed)
waitUntil{!isNil {SEM_removeWeaponsFromDeadAI}};
waitUntil{!isNil {SEM_removeMagazinesFromDeadAI}};
//diag_log format["#SEM DEBUG: variables received: Weapons %1 - Magazines %2", SEM_removeWeaponsFromDeadAI, SEM_removeMagazinesFromDeadAI];

fn_createMissionMarker = {	private["_create","_markerPos","_markerName","_marker"];
	_create = _this select 0;
	
	if(!_create)then[{	//delete marker
		if (getMarkerColor "MissionMarker" != "")then{	//Only delete existing Marker
			deleteMarkerLocal "MissionMarker";
		}; 
	},{	//else create marker
	_markerPos = _this select 1;
	_markerName = _this select 2;
	
	_marker = createMarkerLocal ["MissionMarker", _markerPos];
	_marker setMarkerPosLocal _markerPos;
	_marker setMarkerTypeLocal "hd_destroy";  
	_marker setMarkerTextLocal format["%1",_markerName];  
	_marker setMarkerColorLocal "ColorRed";
	_marker setMarkerDirLocal -37;
	_marker setMarkerSizeLocal [0.8,0.8];
	}];
};

fn_AIaddKilledEH = {
	if(isPlayer _this || !local _this)exitWith{systemChat "NEIN!"};

	call compile format["
		_this addEventHandler ['Fired',{
			if(_this select 2 in %1)then{
				_this select 0 addMagazines [_this select 5, 1];
			};
		}];

		_this addEventHandler ['Killed',{ private ['_unit','_z'];
			_unit = _this select 0;
			removeBackpackGlobal _unit;
			{_unit removeWeaponGlobal _x}count (%1 + ['EpochRadio0','ItemMap','ItemRadio','ItemWatch','ItemCompass','ItemGPS']);
			{if(_x in (magazines _unit))then{_unit removeMagazines _x}}count %2;
			
			_unit spawn{
				sleep 1;
				{
				_z = _x;
				if(_x in (getweaponcargo _z))then{deleteVehicle _z}count %1;
				if(_x in (getmagazinecargo _z))then{deleteVehicle _z}count %2;
				}forEach nearestObjects [(getPos _this), ['GroundWeaponHolder','WeaponHolderSimulated','WeaponHolder'], 12];
			};
		}];
	", SEM_removeWeaponsFromDeadAI, SEM_removeMagazinesFromDeadAI];
};

 /* DO NOT CALL "fn_animateAI" because the sleep commands will cause errors when used in a non-scheduled environment */
fn_animateAI = {	private["_group","_pos","_checkPos","_firstLoop","_nearPlayers","_doMove","_dir","_dist","_posX","_posY","_oldPos","_newPos","_z"];
	_group = _this select 0;
	_pos = _this select 1;
	_checkPos = _pos; _checkPos set [2,2];
	
	waitUntil{{owner _x == owner player}forEach units _group};	//Wait until the server gives You the ownership of the AI
	diag_log format["#SEM: Client taking over AI ownership at Pos %1, Distance %2", _pos, (vehicle player) distance _pos];

	{
	_x call fn_AIaddKilledEH;
	_x enableAI "AUTOTARGET";
	//_x enableAI "TARGET";
	_x enableAI "MOVE";
	_x enableAI "ANIM";
	_x enableAI "FSM";
	_x stop false;
	_x setUnitPos "Auto";
	}count units _group;
	_group setCombatMode "YELLOW";
	_group setBehaviour "COMBAT"; //"AWARE";

	//waitUntil{{alive _x}count units _group < 1 || ({owner _x != owner player}forEach units _group)};
	
	while{{alive _x}count units _group > 0 && ({owner _x == owner player}forEach units _group)}do{
		_nearPlayers = _pos nearEntities [["Epoch_Man_base_F","Epoch_Female_base_F","Helicopter","Car","Motorcycle"], 1200];	//"Epoch_Man_base_F","Epoch_Female_base_F"
		{if(alive _x && isPlayer _x)then{	if(!(terrainIntersect [_checkPos, [(getPosATL _x) select 0, (getPosATL _x) select 1, ((getPosATL _x) select 2) + 1]]))then{
			_z = _x; _group reveal _z;
			{if((secondaryWeapon _x) == "")then{
				_x doWatch _z; _x doTarget _z;
				_x commandFire _z; _x suppressFor 10;
			}}count units _group;
			UIsleep (10+(random 10));
		}}}forEach _nearPlayers;
	UIsleep 3;
	};
	
	diag_log format["#SEM: AI ownership lost - Remaining AIs: %1", count units _group];
};

"GlobalHint" addPublicVariableEventHandler { private "_sound";
	_sound = (_this select 1) select 0;
	switch(_sound)do{
		case 0:{playSound "UAV_05"}; //Mission start
		case 1:{playSound "UAV_01"}; //Mission fail (object destroyed)
		case 2:{playSound "UAV_04"}; //Mission fail (time out)
		case 3:{playsound "UAV_03"}; //Mission success
	};
	hint parseText format["%1", (_this select 1) select 1]
};

if(!isNil "GlobalMissionMarker")then{GlobalMissionMarker call fn_createMissionMarker};
"GlobalMissionMarker" addPublicVariableEventHandler {_this select 1 call fn_createMissionMarker};

if(!isNil "takeAIownership")then{takeAIownership call fn_animateAI};
"takeAIownership" addPublicVariableEventHandler {_this select 1 spawn fn_animateAI}; //DO NOT CALL!

if(toLower worldName in ["chernarus","chernarus_summer"])then{
	([4654.62,9593.63,0] nearestObject 145259) setDamage 1;
	([4654.62,9593.63,0] nearestObject 145260) setDamage 1;
};	//Fix for something, find out ;)
//Status Bar
if(hasInterface) then{
[] execVM "addons\status_bar\init_statusBar.sqf";
};
//Earplugs
call compile preProcessFileLineNumbers "cmEarplugs\config.sqf";
//WAI
[] execVM "wai\remote.sqf";
//Trader Addon
[] execVM "trader\init.sqf";
[] execVM "trader\HALV_takegive_crypto_init.sqf";
//Supply Drop Alert Event
"SDROP_Alert" addPublicVariableEventHandler {
hint parseText format["%1", _this select 1];
};
//A3EAI
#include "A3EAI_Client\A3EAI_initclient.sqf";
Link to comment
Share on other sites

if (isServer) then {
    execVM "\q\addons\traderATMs\init.sqf";
	[] ExecVM "\SDROP\init.sqf";
};

if(isDedicated)exitWith{}; //Everything below this line is only executed on the client (player or local host)

//Wait until these variables are broadcasted to the client (usually happens before the init gets executed)
waitUntil{!isNil {SEM_removeWeaponsFromDeadAI}};
waitUntil{!isNil {SEM_removeMagazinesFromDeadAI}};
//diag_log format["#SEM DEBUG: variables received: Weapons %1 - Magazines %2", SEM_removeWeaponsFromDeadAI, SEM_removeMagazinesFromDeadAI];

fn_createMissionMarker = {	private["_create","_markerPos","_markerName","_marker"];
	_create = _this select 0;
	
	if(!_create)then[{	//delete marker
		if (getMarkerColor "MissionMarker" != "")then{	//Only delete existing Marker
			deleteMarkerLocal "MissionMarker";
		}; 
	},{	//else create marker
	_markerPos = _this select 1;
	_markerName = _this select 2;
	
	_marker = createMarkerLocal ["MissionMarker", _markerPos];
	_marker setMarkerPosLocal _markerPos;
	_marker setMarkerTypeLocal "hd_destroy";  
	_marker setMarkerTextLocal format["%1",_markerName];  
	_marker setMarkerColorLocal "ColorRed";
	_marker setMarkerDirLocal -37;
	_marker setMarkerSizeLocal [0.8,0.8];
	}];
};

fn_AIaddKilledEH = {
	if(isPlayer _this || !local _this)exitWith{systemChat "NEIN!"};

	call compile format["
		_this addEventHandler ['Fired',{
			if(_this select 2 in %1)then{
				_this select 0 addMagazines [_this select 5, 1];
			};
		}];

		_this addEventHandler ['Killed',{ private ['_unit','_z'];
			_unit = _this select 0;
			removeBackpackGlobal _unit;
			{_unit removeWeaponGlobal _x}count (%1 + ['EpochRadio0','ItemMap','ItemRadio','ItemWatch','ItemCompass','ItemGPS']);
			{if(_x in (magazines _unit))then{_unit removeMagazines _x}}count %2;
			
			_unit spawn{
				sleep 1;
				{
				_z = _x;
				if(_x in (getweaponcargo _z))then{deleteVehicle _z}count %1;
				if(_x in (getmagazinecargo _z))then{deleteVehicle _z}count %2;
				}forEach nearestObjects [(getPos _this), ['GroundWeaponHolder','WeaponHolderSimulated','WeaponHolder'], 12];
			};
		}];
	", SEM_removeWeaponsFromDeadAI, SEM_removeMagazinesFromDeadAI];
};

 /* DO NOT CALL "fn_animateAI" because the sleep commands will cause errors when used in a non-scheduled environment */
fn_animateAI = {	private["_group","_pos","_checkPos","_firstLoop","_nearPlayers","_doMove","_dir","_dist","_posX","_posY","_oldPos","_newPos","_z"];
	_group = _this select 0;
	_pos = _this select 1;
	_checkPos = _pos; _checkPos set [2,2];
	
	waitUntil{{owner _x == owner player}forEach units _group};	//Wait until the server gives You the ownership of the AI
	diag_log format["#SEM: Client taking over AI ownership at Pos %1, Distance %2", _pos, (vehicle player) distance _pos];

	{
	_x call fn_AIaddKilledEH;
	_x enableAI "AUTOTARGET";
	//_x enableAI "TARGET";
	_x enableAI "MOVE";
	_x enableAI "ANIM";
	_x enableAI "FSM";
	_x stop false;
	_x setUnitPos "Auto";
	}count units _group;
	_group setCombatMode "YELLOW";
	_group setBehaviour "COMBAT"; //"AWARE";

	//waitUntil{{alive _x}count units _group < 1 || ({owner _x != owner player}forEach units _group)};
	
	while{{alive _x}count units _group > 0 && ({owner _x == owner player}forEach units _group)}do{
		_nearPlayers = _pos nearEntities [["Epoch_Man_base_F","Epoch_Female_base_F","Helicopter","Car","Motorcycle"], 1200];	//"Epoch_Man_base_F","Epoch_Female_base_F"
		{if(alive _x && isPlayer _x)then{	if(!(terrainIntersect [_checkPos, [(getPosATL _x) select 0, (getPosATL _x) select 1, ((getPosATL _x) select 2) + 1]]))then{
			_z = _x; _group reveal _z;
			{if((secondaryWeapon _x) == "")then{
				_x doWatch _z; _x doTarget _z;
				_x commandFire _z; _x suppressFor 10;
			}}count units _group;
			UIsleep (10+(random 10));
		}}}forEach _nearPlayers;
	UIsleep 3;
	};
	
	diag_log format["#SEM: AI ownership lost - Remaining AIs: %1", count units _group];
};

"GlobalHint" addPublicVariableEventHandler { private "_sound";
	_sound = (_this select 1) select 0;
	switch(_sound)do{
		case 0:{playSound "UAV_05"}; //Mission start
		case 1:{playSound "UAV_01"}; //Mission fail (object destroyed)
		case 2:{playSound "UAV_04"}; //Mission fail (time out)
		case 3:{playsound "UAV_03"}; //Mission success
	};
	hint parseText format["%1", (_this select 1) select 1]
};

if(!isNil "GlobalMissionMarker")then{GlobalMissionMarker call fn_createMissionMarker};
"GlobalMissionMarker" addPublicVariableEventHandler {_this select 1 call fn_createMissionMarker};

if(!isNil "takeAIownership")then{takeAIownership call fn_animateAI};
"takeAIownership" addPublicVariableEventHandler {_this select 1 spawn fn_animateAI}; //DO NOT CALL!

if(toLower worldName in ["chernarus","chernarus_summer"])then{
	([4654.62,9593.63,0] nearestObject 145259) setDamage 1;
	([4654.62,9593.63,0] nearestObject 145260) setDamage 1;
};	//Fix for something, find out ;)
//Status Bar
if(hasInterface) then{
[] execVM "addons\status_bar\init_statusBar.sqf";
};
//Earplugs
call compile preProcessFileLineNumbers "cmEarplugs\config.sqf";
//WAI
[] execVM "wai\remote.sqf";
//Trader Addon
[] execVM "trader\init.sqf";
[] execVM "trader\HALV_takegive_crypto_init.sqf";
//Supply Drop Alert Event
"SDROP_Alert" addPublicVariableEventHandler {
hint parseText format["%1", _this select 1];
};
//A3EAI
#include "A3EAI_Client\A3EAI_initclient.sqf";

 

if this is your init then you are doing something wrong, most of this should not be in there, but in a seperate script ...

Link to comment
Share on other sites

@ fullaholes

 

no, you dont need the mission.sqm from the download, its the default epoch mission.sqm in it.

 

What is not working with the trader ? any errors ?

 

or do you use stock epoch AH with customVariablesCheck and addActionCheck on true ?

Link to comment
Share on other sites

Stock AH which look like this Suppe...

 

antihack_customVariablesCheck = false; // true enables variable scanning on missionNamespace

antihack_cfgPatchesCheck = true; // cfgPatches (AddOn Check)

antihack_addActionCheck = false; // false to disable addAction checks

 

All need to be false ?

 

 The trader mapmarkers and the traders are not showing on the map. I've been to the coords and found nothing. Install is correct and very easy to follow so no mistakes there.

Link to comment
Share on other sites

Stock AH which look like this Suppe...

 

antihack_customVariablesCheck = false; // true enables variable scanning on missionNamespace

antihack_cfgPatchesCheck = true; // cfgPatches (AddOn Check)

antihack_addActionCheck = false; // false to disable addAction checks

 

All need to be false ?

 

 The trader mapmarkers and the traders are not showing on the map. I've been to the coords and found nothing. Install is correct and very easy to follow so no mistakes there.

 

you really are a retard, but ill repeat so you can understand it ...

 

remove whatever you added from the airdrop and put it in its own file, then everything else below this line will work:

if (!isDedicated) exitWith {};
Link to comment
Share on other sites

Halv go fuck yourself, you're the fuckin retard here. There is nothing wrong with my init as it works perfect arsehole. I asked a simple question and get a load of shit. You think you're superior because you can write a bit of code. Well I'll say it again... GO FUCK YOURSELF Halv and go learn some manners you ignorant fucker.

Link to comment
Share on other sites

Halv go fuck yourself, you're the fuckin retard here. There is nothing wrong with my init as it works perfect arsehole. I asked a simple question and get a load of shit. You think you're superior because you can write a bit of code. Well I'll say it again... GO FUCK YOURSELF Halv and go learn some manners you ignorant fucker.

 

lol, yea i know nothing ... thats why it works for everyone else ...

Link to comment
Share on other sites

Hello i have a problem too The traders are there and i can open up the Menu but there is a lot of text missing 

 

67T26IDKeJ6ViP.png

 

The init file:






if(hasInterface)then{
		[] ExecVM "ScarCode\sMenuInit.sqf";
		execVM "semClient.sqf";
};




	[] execVM "addons\messages\init.sqf";
	execVM "R3F_LOG\init.sqf";
	[] execVM "addons\halv_spawn\init.sqf";
	[] execVM "HC\Init.sqf";

	


#include "A3EAI_Client\A3EAI_initclient.sqf";

//////////////////////////////////////////////////////////////////////////
//cmEARPLUGS CODE START

call compile preProcessFileLineNumbers "cmEarplugs\config.sqf";

//cmEARPLUGS CODE END
//////////////////////////////////////////////////////////////////////////


waitUntil{!isNull (uiNameSpace getVariable ["EPOCH_loadingScreen", displayNull])};
waitUntil{isNull (uiNameSpace getVariable "EPOCH_loadingScreen")};
sleep 5;
Deployaction = player addaction [("<t color=""#00CF11"">" + ("Craft chopper") +"</t>"),"scripts\bike.sqf","",-97,false,false,"",""];

  [] execVM "trader\init.sqf";
  [] execVM "trader\HALV_takegive_crypto_init.sqf";

 

The Descr

#include "infiSTAR_AdminMenu.hpp"


  #include "trader\tradedialog.hpp"
  #include "trader\CfgPricing.hpp"


#include "ScarCode\sMenuCommon.hpp"
#include "ScarCode\sMenuRsc.hpp"

#include "addons\halv_spawn\spawndialog.hpp"

#include "R3F_LOG\desc_include.h"

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,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 CfgEpochClient
{
	buildingNearbyMilitary = 1; //1 to allow building nearby
	buildingNearbyMilitaryRange = 300; //Define radius of blocked area

	buildingRequireJammer = 1; // 1 = to allow building without a jammer 
	buildingCountLimit = 2000; // how many objects can be built within range of a jammer 
	buildingJammerRange = 250; // 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
		};
	};
};


//=====================================================================================================================

#include "ZHB\ZHudBuilder.hpp"
class RscTitles
{
    #include "ZHB\ZHud.hpp"
	
	
	class radioChatterBar {
        idd = -1;
        onLoad = "uiNamespace setVariable ['radioChatterBar', _this select 0]";
        onUnload = "uiNamespace setVariable ['radoiChatterBar', objNull]";
        onDestroy = "uiNamespace setVariable ['radioChatterBar', objNull]";
        fadein = 0;
        fadeout = 10;
        duration = 10e10;
        movingEnable = 0;
        controlsBackground[] = {};
        objects[] = {};
        class controls {
            class statusBarText {
                idc = 1010;
                x = safezoneX;
                y = safezoneY; // upper left hand corner
                //x = safezoneX + safezoneW - 1.5;
                //y = safezoneY + safezoneH - 0.4; //H
                w = 1; 
                h = 0.3;  //hopefully makes it 10 lines tall
                shadow = 2;
                colorBackground[] = { 1, 0.3, 0, 0.0 };  // uncomment and increase 4th number to have a 	background
                font = "PuristaSemibold";
                size = 0.03;
                type = 13;// CT_TYPES = CT_STRUCTURED_TEXT
                style = 1;
                text="Loading server info...";
                class Attributes {
                    align="left";
                    color = "#FFFFFF"; //"#00FF09";BrightGreen   //#FF8700
                };
            };
        };
    };

};
//=====================================================================================================================
class CfgFunctions {
    #include "ZHB\ZHB_Functions.hpp"
};

//=====================================================================================================================




class CfgSounds
{
    sounds[] = {geiger,siren};
   
    class geiger
	{
	name = "geiger_sound";
	sound[] = {\sounds\geiger.ogg,1.8,1};
	titles[] = {""};
	};

   class siren
	{
	// how the sound is referred to in the editor (e.g. trigger effects)
	name = "siren";
	// filename, volume, pitch
	sound[] = {\sounds\siren.ogg,1.5,1};
	titles[] = {""};
	};

	class rscann
	{
		name = "rscann";
		sound[] = {"\HC\Zombies\sounds\police_scanner.ogg", 1, 1};
		titles[] = {};
	};
	class zhorde
	{
		name = "zombie_horde";
		sound[] = {"\HC\Zombies\sounds\horde1.ogg", 1, 1};
		titles[] = {};
	};
	class zhurt1
	{
		name = "zombie_hurt1";
		sound[] = {"\HC\Zombies\sounds\hurt1.ogg", 1, 1};
		titles[] = {};
	};
	class zhurt2
	{
		name = "zombie_hurt2";
		sound[] = {"\HC\Zombies\sounds\hurt2.ogg", 1, 1};
		titles[] = {};
	};
	class zhurt3
	{
		name = "zombie_hurt3";
		sound[] = {"\HC\Zombies\sounds\hurt3.ogg", 1, 1};
		titles[] = {};
	};
	class zpunch1
	{
		name = "zombie_punch1";
		sound[] = {"\HC\Zombies\sounds\punch1.ogg", 1, 1};
		titles[] = {};
	};
	class zpunch2
	{
		name = "zombie_punch2";
		sound[] = {"\HC\Zombies\sounds\punch2.ogg", 1, 1};
		titles[] = {};
	};
	class zpunch3
	{
		name = "zombie_punch3";
		sound[] = {"\HC\Zombies\sounds\punch3.ogg", 1, 1.0};
		titles[] = {};
	};
	class zpunch4
	{
		name = "zombie_punch4";
		sound[] = {"\HC\Zombies\sounds\punch4.ogg", 1, 1};
		titles[] = {};
	};
	class zidle1
	{
		name = "zombie_idle1";
		sound[] = {"\HC\Zombies\sounds\idle1.ogg", 1, 1};
		titles[] = {};
	};
	class zidle2
	{
		name = "zombie_idle2";
		sound[] = {"\HC\Zombies\sounds\idle2.ogg", 1, 1};
		titles[] = {};
	};
	class zidle3
		name = "zombie_idle3";
	{
		sound[] = {"\HC\Zombies\sounds\idle3.ogg", 1, 1};
		titles[] = {};
	};
	class zidle4
	{
		name = "zombie_idle4";
		sound[] = {"\HC\Zombies\sounds\idle4.ogg", 1, 1.0};
		titles[] = {};
	};
	class zidle5
	{
		name = "zombie_idle5";
		sound[] = {"\HC\Zombies\sounds\idle5.ogg", 1, 1};
		titles[] = {};
	};
	
};



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 = 200; //AirDropChance, to decide if Air drop occurs, will only be checked once per AirDropFreq time period, for each player. Min value = 120.
	AirDropChance = 1; //Percentage chance of air drop, for current player. Checked every AirDropFreq and upon antagonists spawn trigger. -1 To disable.
};

 

And the log attached i am sure i did something simple wrong :D

log.txt

Link to comment
Share on other sites

Hello i have a problem too The traders are there and i can open up the Menu but there is a lot of text missing 

 

67T26IDKeJ6ViP.png

 

The init file:






if(hasInterface)then{
		[] ExecVM "ScarCode\sMenuInit.sqf";
		execVM "semClient.sqf";
};




	[] execVM "addons\messages\init.sqf";
	execVM "R3F_LOG\init.sqf";
	[] execVM "addons\halv_spawn\init.sqf";
	[] execVM "HC\Init.sqf";

	


#include "A3EAI_Client\A3EAI_initclient.sqf";

//////////////////////////////////////////////////////////////////////////
//cmEARPLUGS CODE START

call compile preProcessFileLineNumbers "cmEarplugs\config.sqf";

//cmEARPLUGS CODE END
//////////////////////////////////////////////////////////////////////////


waitUntil{!isNull (uiNameSpace getVariable ["EPOCH_loadingScreen", displayNull])};
waitUntil{isNull (uiNameSpace getVariable "EPOCH_loadingScreen")};
sleep 5;
Deployaction = player addaction [("<t color=""#00CF11"">" + ("Craft chopper") +"</t>"),"scripts\bike.sqf","",-97,false,false,"",""];

  [] execVM "trader\init.sqf";
  [] execVM "trader\HALV_takegive_crypto_init.sqf";

 

The Descr

#include "infiSTAR_AdminMenu.hpp"


  #include "trader\tradedialog.hpp"
  #include "trader\CfgPricing.hpp"


#include "ScarCode\sMenuCommon.hpp"
#include "ScarCode\sMenuRsc.hpp"

#include "addons\halv_spawn\spawndialog.hpp"

#include "R3F_LOG\desc_include.h"

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,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 CfgEpochClient
{
	buildingNearbyMilitary = 1; //1 to allow building nearby
	buildingNearbyMilitaryRange = 300; //Define radius of blocked area

	buildingRequireJammer = 1; // 1 = to allow building without a jammer 
	buildingCountLimit = 2000; // how many objects can be built within range of a jammer 
	buildingJammerRange = 250; // 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
		};
	};
};


//=====================================================================================================================

#include "ZHB\ZHudBuilder.hpp"
class RscTitles
{
    #include "ZHB\ZHud.hpp"
	
	
	class radioChatterBar {
        idd = -1;
        onLoad = "uiNamespace setVariable ['radioChatterBar', _this select 0]";
        onUnload = "uiNamespace setVariable ['radoiChatterBar', objNull]";
        onDestroy = "uiNamespace setVariable ['radioChatterBar', objNull]";
        fadein = 0;
        fadeout = 10;
        duration = 10e10;
        movingEnable = 0;
        controlsBackground[] = {};
        objects[] = {};
        class controls {
            class statusBarText {
                idc = 1010;
                x = safezoneX;
                y = safezoneY; // upper left hand corner
                //x = safezoneX + safezoneW - 1.5;
                //y = safezoneY + safezoneH - 0.4; //H
                w = 1; 
                h = 0.3;  //hopefully makes it 10 lines tall
                shadow = 2;
                colorBackground[] = { 1, 0.3, 0, 0.0 };  // uncomment and increase 4th number to have a 	background
                font = "PuristaSemibold";
                size = 0.03;
                type = 13;// CT_TYPES = CT_STRUCTURED_TEXT
                style = 1;
                text="Loading server info...";
                class Attributes {
                    align="left";
                    color = "#FFFFFF"; //"#00FF09";BrightGreen   //#FF8700
                };
            };
        };
    };

};
//=====================================================================================================================
class CfgFunctions {
    #include "ZHB\ZHB_Functions.hpp"
};

//=====================================================================================================================




class CfgSounds
{
    sounds[] = {geiger,siren};
   
    class geiger
	{
	name = "geiger_sound";
	sound[] = {\sounds\geiger.ogg,1.8,1};
	titles[] = {""};
	};

   class siren
	{
	// how the sound is referred to in the editor (e.g. trigger effects)
	name = "siren";
	// filename, volume, pitch
	sound[] = {\sounds\siren.ogg,1.5,1};
	titles[] = {""};
	};

	class rscann
	{
		name = "rscann";
		sound[] = {"\HC\Zombies\sounds\police_scanner.ogg", 1, 1};
		titles[] = {};
	};
	class zhorde
	{
		name = "zombie_horde";
		sound[] = {"\HC\Zombies\sounds\horde1.ogg", 1, 1};
		titles[] = {};
	};
	class zhurt1
	{
		name = "zombie_hurt1";
		sound[] = {"\HC\Zombies\sounds\hurt1.ogg", 1, 1};
		titles[] = {};
	};
	class zhurt2
	{
		name = "zombie_hurt2";
		sound[] = {"\HC\Zombies\sounds\hurt2.ogg", 1, 1};
		titles[] = {};
	};
	class zhurt3
	{
		name = "zombie_hurt3";
		sound[] = {"\HC\Zombies\sounds\hurt3.ogg", 1, 1};
		titles[] = {};
	};
	class zpunch1
	{
		name = "zombie_punch1";
		sound[] = {"\HC\Zombies\sounds\punch1.ogg", 1, 1};
		titles[] = {};
	};
	class zpunch2
	{
		name = "zombie_punch2";
		sound[] = {"\HC\Zombies\sounds\punch2.ogg", 1, 1};
		titles[] = {};
	};
	class zpunch3
	{
		name = "zombie_punch3";
		sound[] = {"\HC\Zombies\sounds\punch3.ogg", 1, 1.0};
		titles[] = {};
	};
	class zpunch4
	{
		name = "zombie_punch4";
		sound[] = {"\HC\Zombies\sounds\punch4.ogg", 1, 1};
		titles[] = {};
	};
	class zidle1
	{
		name = "zombie_idle1";
		sound[] = {"\HC\Zombies\sounds\idle1.ogg", 1, 1};
		titles[] = {};
	};
	class zidle2
	{
		name = "zombie_idle2";
		sound[] = {"\HC\Zombies\sounds\idle2.ogg", 1, 1};
		titles[] = {};
	};
	class zidle3
		name = "zombie_idle3";
	{
		sound[] = {"\HC\Zombies\sounds\idle3.ogg", 1, 1};
		titles[] = {};
	};
	class zidle4
	{
		name = "zombie_idle4";
		sound[] = {"\HC\Zombies\sounds\idle4.ogg", 1, 1.0};
		titles[] = {};
	};
	class zidle5
	{
		name = "zombie_idle5";
		sound[] = {"\HC\Zombies\sounds\idle5.ogg", 1, 1};
		titles[] = {};
	};
	
};



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 = 200; //AirDropChance, to decide if Air drop occurs, will only be checked once per AirDropFreq time period, for each player. Min value = 120.
	AirDropChance = 1; //Percentage chance of air drop, for current player. Checked every AirDropFreq and upon antagonists spawn trigger. -1 To disable.
};

 

And the log attached i am sure i did something simple wrong :D

 

you need to add the stringtables.xml to your mission root or no text is shown ...

Link to comment
Share on other sites

Halv go fuck yourself, you're the fuckin retard here. There is nothing wrong with my init as it works perfect arsehole. I asked a simple question and get a load of shit. You think you're superior because you can write a bit of code. Well I'll say it again... GO FUCK YOURSELF Halv and go learn some manners you ignorant fucker.

HAHA who would have thought a person named aholes here would tell someone providing great scripts and Help to "Go fuck themselves"

You just told the man that wrote this shit to GO FUCK HIMSELF?

LMAO better hope hes not as much of an asshole as you....

Link to comment
Share on other sites

FeaAJyX.jpg

 

I clicked "Confirm Trade" button and i kicked. Sorry for bad English.

 

Publicvariable.log

 


 

#0 "HALV_takegive" = [b Alpha 1-1:1 (nick) REMOTE,6]

 

Publicvariable.txt

 


 

5 "" !="EPOCH_(UP|SAVE|PAINT|MAINT|REM)BUILD" !="EPOCH_(say3D|switchMove|(store|take)Crypto|TEMPOBJ|packJack|selectedGender)_PVS" !="EPOCH_(mineRocks|create(Object|AirDrop)|FillContainer|SapperObjs)_PVS" !="EPOCH_(load|revive|dead|push|force|respawn|check)Player_PVS" !="EPOCH_(build|equipped)Item_PVS" !="EPOCH_GROUP_(Upgrade|Player|create|Delete|Invite)_PVS" !="EPOCH_(lock|pack)Storage_PVS" !="EPOCH_(unlock|lock|fill|repair)Vehicle_PVS" !="EPOCH_(knockDownTree|destroyTrash|MAKETRADEREQ|MAKETRADE|S_S_VEHICLES|MAKENPCTRADE|oneWayTP)" !="EPOCH_Loot(Animal|Container|Building)" !="EPAH_[a-z]{5,10}" !="BIS_fnc_objectVar_obj2_[0-9]{1,10}" !="bis_fnc_sharedObjectives_serverUpdate" !="BIS_fnc_objectVar_obj2_1288"

 

 

Link to comment
Share on other sites

halv and/or suppe, great job on this!! I've been waiting for something like this for awhile now, you guys are totally awesome!  2 quick questions though, I didn't dig deep into the code, but then again i really wouldnt know what i'm looking for, but is there a way i could add these traders as replacements for my trader city traders?  the only reason i ask is because you guys have it setup to build these really nice trader outposts when they spawn in, and i've already spent a few good days creating my own custom trader cities and I wouldn't want them spawning in over top of everything i already have there.  Last question is with your takecrypto script, can I also just run this from the trader folder and it still work with the rearm/repair script as i've already set that up prior to this release.  Thanks in advance, again great job guys!

Link to comment
Share on other sites

is there a way i could add these traders as replacements for my trader city traders?  the only reason i ask is because you guys have it setup to build these really nice trader outposts when they spawn in, and i've already spent a few good days creating my own custom trader cities and I wouldn't want them spawning in over top of everything i already have there

 

in the init.sqf you have this:

//if any static cords are set here, there will be a trader at that exact position and direction
_staticCoords = switch(toLower worldName)do{
	case "altis":{
		[
		/*	[[pos,i,tion],direction,createmarker,props]*/
			[[18459.1,14259.2,0.00141716],340.199], //trader by mine
			[[13319,14523.9,0.00134587],143.067], //trader by stavros
			[[6193.02,16828.7,0.00118256],1.52142] //trader by kore
		]
	};
	case "stratis":{[]};
	case "bornholm":{[]};
	case "chernarus":{[]};
	default{[]};
};

you can use this to either build a complete static trader with props or just build the trader in some position, you can even add a marker aswell, to reflect that he is there ...

 

 

Last question is with your takecrypto script, can I also just run this from the trader folder and it still work with the rearm/repair script as i've already set that up prior to this release.

 

if you already installed it with the repair-rearm script you wont need to install it again, so remove one or the other, or just dont install this one, it wont matter wich one is in your system and waht folder ...

 

edit:

updated stringtables:

http://pastebin.com/t3gYneqE

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...