-
Posts
308 -
Joined
-
Last visited
-
Days Won
31
Content Type
Profiles
Forums
Events
Articles
Everything posted by GraveYard
-
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;
-
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; };
-
[1,"ALARM! - Radio Tower: %1 is being hacked!"_shop] remoteExec ["life_fnc_broadcast",west];
-
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]] ];
-
#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];
-
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.
-
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
-
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.
-
@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.
-
You could easily port Altis Life over as it really does not take much to change the map.
-
Can confirm that is works on 5.0
-
Anything in the RPT? Cuz I just added Zeus to my test server and had no issues.
-
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?
-
Well, you're using custom files not default altis life. you do have life_server Erros, as well EXTDB3 is saying file not found.
-
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;
-
Just tested 5.0 on my test server no issues. https://github.com/AsYetUntitled/Framework/archive/refs/tags/v5.0.0.zip
-
@KllTA in case 3 addLauncherItem is not part of Arma 3
-
Do you get any error?
-
The file that dose this is fn_handleItem.sqf. Are you running a modded server?
-
[Tutorial] Altis Life 5.0 | Insert Opfor Fraction | by Kuchenplatte
GraveYard replied to Kuchenplatte's topic in 4.x
Altis Life Framework 5.0 Opfor Faction (Updated) - Native-Network.net - deine Next Generation Gameserver- und Gaming Community -
Script \life_server\fix_headgear.sqf not found
GraveYard replied to jamba_juice's topic in Server & Scripting Help Desk
Please share full server RPT and Client RPT Pastebin.com - #1 paste tool since 2002! -
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
-
C:\Users\yourname\AppData\Local\Arma 3