Jump to content

GraveYard

Members
  • Posts

    308
  • Joined

  • Last visited

  • Days Won

    31

Everything posted by GraveYard

  1. GraveYard

    Dyn Drug Fields

    A simple script that will automatically move your drug fields around. * Client Side * 1.) Inside Altis_Life.Altis\config folder create a file Config_DrugFields.hpp add inside: /* Master settings for various features and functionality */ class CfgDynMarkers { class DynMarkers_Settings { fields_position_time = 10; // Time in minutes between field position changes weed_locations[] = { {11556.4,7048.07,0}, {4219.25,20464.5,0}, {15880.5,18843.8,0}, {2735.36,10018.5,0.00145149} }; heroin_locations[] = { {19879,17006.7,0}, {8331.38,20787.2,0}, {9659.47,8852.26,9.53674e-007} }; cocaine_locations[] = { {13462.2,20630.8,0}, {5188.2,20872.7,0}, {25915.7,20678,0} }; }; }; 2.)Inside Altis_Life.Altis\config\Config_Master.hpp Add at the bottom: #include "Config_DrugFields.hpp" 3.) Now open your mission.sqm in the editor and remove all drug field markers 4.) Now open your Config_Gather.hpp Replace: class heroin_unprocessed { amount = 3; zones[] = { "heroin_1" }; item = ""; zoneSize = 30; }; class cocaine_unprocessed { amount = 3; zones[] = { "cocaine_1" }; item = ""; zoneSize = 30; }; class cannabis { amount = 3; zones[] = { "weed_1" }; item = ""; zoneSize = 30; }; With: class heroin_unprocessed { amount = 3; zones[] = { "heroin_field" }; item = ""; zoneSize = 30; }; class cocaine_unprocessed { amount = 3; zones[] = { "cocaine_field" }; item = ""; zoneSize = 30; }; class cannabis { amount = 3; zones[] = { "weed_field" }; item = ""; zoneSize = 30; }; * Server Side * 1.) Inside life_server\Functions\Systems make a new file fn_dynDrugFields.sqf add inside: /* File: fn_dynDrugFields.sqf Author: Your Mom /(.)(.)\ */ diag_log "--------------------------------------"; diag_log "Drug Fields Init: Initializing..."; diag_log "--------------------------------------"; // Lets Make them waite sleep(1*60); diag_log "--------------------------------------"; diag_log "Dyn Drug Fields: Initializing..."; diag_log "--------------------------------------"; private _drugLocations = [ ["weed", "Weed Field", "ColorRed", "mil_dot"], ["heroin", "Heroin Field", "ColorRed", "mil_dot"], ["cocaine", "Cocaine Field", "ColorRed", "mil_dot"] ]; private _stayTime = getNumber(missionConfigFile >> "CfgDynMarkers" >> "DynMarkers_Settings" >> "fields_position_time"); if (_stayTime == 0) exitWith { diag_log "--------------------------------------"; diag_log "Error: fields_position_time is set to 0!"; diag_log "--------------------------------------"; }; private ["_createDrugFieldMarker", "_createDrugFieldAreaMarker"]; //Used for marking Field on the Map _createDrugFieldMarker = { private ["_drugType", "_drugName", "_color", "_markerType", "_location", "_markerName", "_drugFieldMarker", "_locationArray"]; _params = params [ ["_drugType", "", [""]], ["_drugName", "", [""]], ["_color", "", [""]], ["_markerType", "", [""]] ]; _locationArray = getArray(missionConfigFile >> "CfgDynMarkers" >> "DynMarkers_Settings" >> format ["%1_locations", _drugType]); if (count _locationArray == 0) exitWith { diag_log format ["Error: No %1 locations defined!", _drugType]; }; _location = selectRandom _locationArray; _markerName = format ["%1_field", _drugType]; _drugFieldMarker = createMarker [_markerName, _location]; _drugFieldMarker setMarkerColor _color; _drugFieldMarker setMarkerType _markerType; _drugFieldMarker setMarkerText _drugName; format ["%1_field", _drugType] setMarkerPos _location; diag_log format ["Server Created %1 Map Marker At: %2", _drugType, _location]; }; //Main Marker Used for Config_Gather.hpp _createDrugFieldAreaMarker = { private ["_drugType", "_areaMarkerName", "_areaMarkerPos", "_drugFieldAreaMarker","_zoneMarkerName"]; _params = params [ ["_drugType", "", [""]] ]; _areaMarkerName = format ["%1_field", _drugType]; _zoneMarkerName = format ["%1_zone", _drugType]; _areaMarkerPos = getMarkerPos _areaMarkerName; _drugFieldAreaMarker = createMarker [_zoneMarkerName, _areaMarkerPos]; _drugFieldAreaMarker setMarkerColor "ColorWhite"; _drugFieldAreaMarker setMarkerType "empty"; _drugFieldAreaMarker setMarkerShape "ELLIPSE"; _drugFieldAreaMarker setMarkerSize [30, 30]; format ["%1_zone", _drugType] setMarkerPos _areaMarkerPos; if(_areaMarkerName in allMapMarkers)then{ diag_log format ["Server Created %1 Gather Zone At: %2", _drugType, _areaMarkerPos]; }; }; { _x call _createDrugFieldMarker; _x call _createDrugFieldAreaMarker; } forEach _drugLocations; sleep (_stayTime * 60); { private _drugType = _x select 0; private _markerName = format ["%1_field", _drugType]; private _areaMarkerName = format ["%1_zone", _drugType]; deleteMarker _markerName; deleteMarker _areaMarkerName; diag_log format ["Server Removed %1 field marker and area marker", _drugType]; } forEach _drugLocations; diag_log "---------------------------"; diag_log "Dyn Drug Fields: Removed..."; diag_log "---------------------------"; //Repsawn the drug fields { _x call _createDrugFieldMarker; _x call _createDrugFieldAreaMarker; } forEach _drugLocations; diag_log "--------------------------------------"; diag_log "Dyn Drug Fields: Respawning..."; diag_log "--------------------------------------"; 2.) Inside life_server\config.cpp add inside class Systems class dynDrugFields {}; 3.) Inside life_server\init.sqf at the end of file: /* Spawn The Drug Fields */ [] spawn TON_fnc_dynDrugFields;
  2. I know a lot of people have been asking how to add auto gather, well here is a very easy way to do it. At the end of fn_gather.sqf below: sleep 1; life_action_inUse = false; Add the following: // Automatically gather again if there are resources nearby _ie585895 = -1; _zoneSizeCfg = getNumber(_resourceCfg >> "zoneSize"); if (_zone != "") then { waitUntil { if (speed player > 0)exitWith{_ie585895 = 0;true}; //moved if (life_interrupted) exitWith {_ie585895 = 1;true}; //interrupted key press if ((player distance (getMarkerPos _zone)) < _zoneSizeCfg) exitWith {_ie585895 = 2;true}; // left area true }; if (_ie585895 >= 0) exitWith{ switch _ie585895 do { case 0 : {hint "You moved so you stoped gathering"}; case 1 : {hint "Dont do anything <life_interrupted>"}; case 2 : {hint "You left the gathering area";}; }; }; [] spawn life_fnc_gather; }; At the end of fn_mine.sqf below: sleep 1; life_action_inUse = false; Add the following: // Automatically gather again if there are resources nearby _ie585895 = -1; _zoneSizeCfg = getNumber(_resourceCfg >> "zoneSize"); if (_zone != "") then { waitUntil { if (speed player > 0)exitWith{_ie585895 = 0;true}; //moved if (life_interrupted) exitWith {_ie585895 = 1;true}; //interrupted key press if ((player distance (getMarkerPos _zone)) < _zoneSizeCfg) exitWith {_ie585895 = 2;true}; // left area true }; if(_ie585895 >= 0)exitWith{ switch _ie585895 do { case 0 : {hint "Stay still <player speed>"}; case 1 : {hint "Dont do anything <life_interrupted>"}; case 2 : {hint "You left the mining area";}; }; }; [] spawn life_fnc_mine; };
  3. [1,"ALARM! - Radio Tower: %1 is being hacked!"_shop] remoteExec ["life_fnc_broadcast",west];
  4. Well, it looks like you moved the fed and did not move the cameras correctly. Open file fn_fedCamDisplay.sqf You need to edit the following code for your fed: private _mTwPositions = [ ["side",[16.9434,-0.300781,-7.20004],[27.0693,-0.390625,-10.2474]], ["vault",[19.9775,-0.0078125,-1.90735e-006],[-5.00684,0.59375,-9.57164]], ["front",[0.972656,78.8281,15.617],[-0.657227,22.9082,-10.4033]], ["back",[28.9248,-42.0977,-3.8896],[-1.33789,-24.6035,-10.2108]] ];
  5. #include "..\..\script_macros.hpp" /* File: fn_impoundMenu.sqf Author: Bryan "Tonic" Boardwine Description: Not actually a impound menu, may act as confusion to some but that is what I wanted// The purpose of this menu is it is now called a 'Garage' where vehicles are stored (persistent ones). */ private ["_vehicles","_control"]; disableSerialization; _vehicles = param [0,[],[[]]]; ctrlShow[2803,false]; ctrlShow[2830,false]; waitUntil {!isNull (findDisplay 2800)}; if (count _vehicles isEqualTo 0) exitWith { ctrlSetText[2811,localize "STR_Garage_NoVehicles"]; }; _control = CONTROL(2800,2802); lbClear _control; { _vehicleInfo = [(_x select 2)] call life_fnc_fetchVehInfo; _control lbAdd (_vehicleInfo select 3); _tmp = [(_x select 2),(_x select 8),(_x select 9),(_x select 10)]; // 2 = Vehicle Classname | 8 = Vehicle Color | 9 Vehicle Insurance | 10 = Vehicle Trunk Inventory _tmp = str(_tmp); _control lbSetData [(lbSize _control)-1,_tmp]; _control lbSetPicture [(lbSize _control)-1,(_vehicleInfo select 2)]; _control lbSetValue [(lbSize _control)-1,(_x select 0)]; } forEach _vehicles; ctrlShow[2810,false]; ctrlShow[2811,false];
  6. Here is your fn_garageLBChange.sqf #include "..\..\script_macros.hpp" /* File: fn_garageLBChange.sqf Author: Bryan "Tonic" Boardwine Description: Can't be bothered to answer it.. Already deleted it by accident.. */ disableSerialization; private ["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor","_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_price","_storageFee","_purchasePrice","_inventory","_inventoryShow"]; _control = _this select 0; _index = _this select 1; //Fetch some information. _dataArr = CONTROL_DATAI(_control,_index); _dataArr = call compile format ["%1",_dataArr]; _className = (_dataArr select 0); _classNameLife = _className; _inventory = (_dataArr select 2); _inventoryShow = ""; if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _classNameLife)) then { _classNameLife = "Default"; //Use Default class if it doesn't exist diag_log format ["%1: LifeCfgVehicles class doesn't exist",_className]; }; _vehicleColor = ((M_CONFIG(getArray,"LifeCfgVehicles",_classNameLife,"textures") select (_dataArr select 1)) select 0); if (isNil "_vehicleColor") then {_vehicleColor = "Default";}; _vehicleInfo = [_className] call life_fnc_fetchVehInfo; _trunkSpace = [_className] call life_fnc_vehicleWeightCfg; _inventory = [_className] call life_fnc_inventoryGarage; _price = M_CONFIG(getNumber,"LifeCfgVehicles",_classNameLife,"price"); _storageFee = LIFE_SETTINGS(getNumber,"vehicle_storage_fee_multiplier"); _insuranceMultiplier = 0.2; _insurance = (_dataArr select 2); switch (playerSide) do { case civilian: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN"); }; case west: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP"); }; case independent: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC"); }; case east: { _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR"); _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR"); _insuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR"); }; }; _retrievePrice = _purchasePrice * _storageFee; _sellPrice = _purchasePrice * _sellMultiplier; _insurancePrice = _purchasePrice * _insuranceMultiplier; if (!(_sellPrice isEqualType 0) || _sellPrice < 1) then {_sellPrice = 500;}; if (!(_retrievePrice isEqualType 0) || _retrievePrice < 1) then {_retrievePrice = 500;}; if (!(_insurancePrice isEqualType 0) || _insurancePrice < 1) then {_insurancePrice = 500;}; if(str(_inventory) in ["[]","[[],0]",'"[[],0]"','"[]"']) then { _inventoryShow = localize "STR_Shop_Veh_Trunk_Empty"; } else { _inventory = toArray(_inventory); for "_i" from 0 to (count _inventory)-1 do { _sel = _inventory select _i; if(_sel == 96) then { _inventory set[_i,39]; }; }; _inventory = toString(_inventory); _inventory = call compile format["%1", _inventory]; if(typeName _inventory == "STRING") then {_inventory = call compile format["%1", _inventory];}; if(count _inventory != 0) then {_inventory = _inventory select 0;}; { _name = M_CONFIG(getText,"VirtualItems",(_x select 0,0),"displayName"); _val = (_x select 1); if (_val > 0) then { _inventoryShow = _inventoryShow + format ["%1 x%2",localize _name,_val] + ", "; }; } forEach _inventory; }; (CONTROL(2800,2803)) ctrlSetStructuredText parseText format [ (localize "STR_Shop_Veh_UI_RetrievalP")+ " <t color='#8cff9b'>$%1</t><br/> " +(localize "STR_Shop_Veh_UI_SellP")+ " <t color='#8cff9b'>$%2</t><br/> Prix de l'assurance: <t color='#8cff9b'>%9€</t><br/> Etat de l'assurance: %10 <br/> " +(localize "STR_Shop_Veh_UI_Color")+ " %8<br/> " +(localize "STR_Shop_Veh_UI_MaxSpeed")+ " %3 km/h<br/> " +(localize "STR_Shop_Veh_UI_HPower")+ " %4<br/> " +(localize "STR_Shop_Veh_UI_PSeats")+ " %5<br/> " +(localize "STR_Shop_Veh_UI_Trunk")+ " %6<br/> " +(localize "STR_Shop_Veh_UI_Fuel")+ " %7 " +(localize "STR_Shop_Veh_Trunk")+ " %11 ", [_retrievePrice] call life_fnc_numberText, [_sellPrice] call life_fnc_numberText, (_vehicleInfo select 8), (_vehicleInfo select 11), (_vehicleInfo select 10), if (_trunkSpace isEqualTo -1) then {"None"} else {_trunkSpace}, (_vehicleInfo select 12), _vehicleColor, [_insurancePrice] call life_fnc_numberText, if (_insurance isEqualTo 1) then {"<t color='#8cff9b'>Assuré</t>"} else {"<t color='#FF0000'>Pas d'assurance</t>"}, _inventoryShow ]; ctrlShow [2803,true]; ctrlShow [2830,true]; if (_insurance isEqualTo 1) then { ctrlShow [2804,false]; } else { ctrlShow [2804,true]; }; Here is your fn_getVehicles.sqf #include "\life_server\script_macros.hpp" /* File: fn_getVehicles.sqf Author: Bryan "Tonic" Boardwine Description: Sends a request to query the database information and returns vehicles. */ private ["_pid","_side","_type","_unit","_ret","_tickTime","_queryResult"]; _pid = [_this,0,"",[""]] call BIS_fnc_param; _side = [_this,1,sideUnknown,[west]] call BIS_fnc_param; _type = [_this,2,"",[""]] call BIS_fnc_param; _unit = [_this,3,objNull,[objNull]] call BIS_fnc_param; //Error checks if (_pid isEqualTo "" || _side isEqualTo sideUnknown || _type isEqualTo "" || isNull _unit) exitWith { if (!isNull _unit) then { [[]] remoteExec ["life_fnc_impoundMenu",(owner _unit)]; }; }; _unit = owner _unit; _side = switch (_side) do { case west:{"cop"}; case civilian: {"civ"}; case independent: {"med"}; default {"Error"}; }; if (_side == "Error") exitWith { [[]] remoteExec ["life_fnc_impoundMenu",(owner _unit)]; }; /* 0 1 2 3 4 5 6 7 8 9 10 */ _query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color, insure, inventory FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type]; _tickTime = diag_tickTime; _queryResult = [_query,2,true] call DB_fnc_asyncCall; if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then { diag_log "------------- Client Query Request -------------"; diag_log format ["QUERY: %1",_query]; diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)]; diag_log format ["Result: %1",_queryResult]; diag_log "------------------------------------------------"; }; if (_queryResult isEqualType "") exitWith { [[]] remoteExec ["life_fnc_impoundMenu",(owner _unit)]; }; [_queryResult] remoteExec ["life_fnc_impoundMenu",_unit]; Do me a favor and share your fn_impoundMenu.sqf with me so I can fix it.
  7. I asked for your fn_garageLBChange.sqf and fn_getVehicles.sqf files
  8. Share your fn_garageLBChange.sqf and fn_getVehicles.sqf @artois If installed on a fresh server it would look like this _tmp = [(_x select 2),(_x select 8),(_x select 9)]; // 2 = Vehicle Classname | 8 = Vehicle Color | 9 = Vehicle Trunk Inventory As well /* 0 1 2 3 4 5 6 7 8 9 */ _query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type]; As I confirm it works https://i.ibb.co/vPJzwyR/107410-20230625070737-1.png
  9. Just saying it's not working is pointless, provide us with logs and give us more details on what's wrong with it. As well _tmp = [(_x select 2),(_x select 8)]; Is default altis life and yours clearly is not so you will need to make some changes to get it to work.
  10. @Ogion Here you go https://www.dropbox.com/s/hgq54lkmf6uj913/Livonia Life.rar?dl=0 All you really have to do is go into editor and move everything to where you want it. I even updated spyglass so you're not flagged. You also need to setup the fed where you want it and change the pos inside life_server\init.sqf /* Setup the federal reserve building(s) */ private _vaultHouse = "Land_Research_house_V1_F"; private _pos = [16019.5,16952.9,0]; _dome = nearestObject [_pos, "Land_Dome_Big_F"]; _rsb = nearestObject [_pos,_vaultHouse]; You will also have to setup the new Fed Cam's inside fn_fedCamDisplay.sqf There are more little changes you will have to do but I did most of the leg work for you to get it working.
  11. You could easily port Altis Life over as it really does not take much to change the map.
  12. Anything in the RPT? Cuz I just added Zeus to my test server and had no issues.
  13. I know by default it's Y key to open Zeus, but also in Altis life Y is for the menu, have you tried changing your key bind?
  14. Well, you're using custom files not default altis life. you do have life_server Erros, as well EXTDB3 is saying file not found.
  15. inside life_server/init.sqf there is { if (!isPlayer _x) then { _npc = _x; { if (_x != "") then { _npc removeWeapon _x; }; } forEach [primaryWeapon _npc,secondaryWeapon _npc,handgunWeapon _npc]; }; } forEach allUnits;
  16. Just tested 5.0 on my test server no issues. https://github.com/AsYetUntitled/Framework/archive/refs/tags/v5.0.0.zip
  17. @KllTA in case 3 addLauncherItem is not part of Arma 3
  18. The file that dose this is fn_handleItem.sqf. Are you running a modded server?
  19. Altis Life Framework 5.0 Opfor Faction (Updated) - Native-Network.net - deine Next Generation Gameserver- und Gaming Community
  20. Please share full server RPT and Client RPT Pastebin.com - #1 paste tool since 2002!
  21. First off make sure you fix your errors in the rpt 15:22:10 Item STR_Process_kokain listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Shops_glas listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_adm_fnc_trunkunlock listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Item_wein listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Process_cannabis listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Process_glas listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Process_kupfer listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Process_schmuck listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_Process_uran listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Item STR_GUI_VehInfo listed twice 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:10 Unsupported language English in stringtable 15:22:10 ➥ Context: mpmissions\__CUR_MP.Altis\stringtable.xml 15:22:43 Warning Message: Picture texture\misc\hud\food.paa not found 15:22:43 Warning Message: Picture texture\misc\hud\water.paa not found 15:22:43 Warning Message: Picture texture\misc\hud\health.paa not found 15:22:43 Warning Message: Picture texture\misc\random_logo.paa not found
  22. C:\Users\yourname\AppData\Local\Arma 3
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.