Jump to content

Search the Community

Showing results for tags 'Maintenance'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General
    • Announcements
  • DayZ
    • Discussion
    • Public Servers
    • DayZ SA Resources
    • Q&A Section
  • ArmA 3
    • Epoch Survival
    • Community Projects
    • Q&A Section
    • Terrain Discussion
    • Resources
  • Arma 3 Resources
  • ArmA 2
    • General Discussion.
    • Q&A Section
    • Resources
    • Legacy Resources
    • A2: Community Projects
    • A2 Community Servers
  • Space Engineers
    • General Discussion.
    • Public Servers
  • Other Games
    • Discussion
  • Off Topic
    • Off Topic

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start





Website URL







Found 8 results

  1. A while ago there was a wonderful tutorial on how one can use lua scripts to 'restock' or completely remove the invetory for traders which I have been using for some time. Included in that was a script to replace vehicles with vehicle repair kits or other goodies. I wondered if anyone who is more adept at these things would be willing to share an lua script that deletes vehicles altogether. Any assistance would be much appreciated.
  2. In 1.0.6 the doors and plotpoles are not being removed by the maintenance system. Walls and ceilings look to be getting removed properly. The "setDamageOnAge" Database event included with the 1.0.6 server install is adding the 0.1 damage but the doors and plotpoles are still not being removed. This looks to be the same issue that happens on only when a name has been added to the door or plotpole, even with the 0.1 damage added. Since 1.0.6 automatically adds the player ID to the Inventory column of doors and plotpoles, I suspect this is happening to all of them now. If there is a fix for this could we get it added to
  3. Not sure if this has ever come up before but maintenance and maintaining bases currently is only aimed at a very specific set of Epoch players at the exclusion of players like myself. I play regularly on Epoch, 3-4 times a week after work for an hour or two a night (full time job and a family) Playing as a lone wolf sniper as well as not being able to play every day, pretty much excludes me completely from any form of meaningful base building as I simply cannot maintain any form of base as I cannot play often enough to do so. Has there been any discussion within the dev team about this? What about other forms of deterioration of building materials such as an 'age' value whereby say a wooden wall section 1 day old would require a satchel to destroy, whereas after 7 days, it would require only a grenade, something like that. Or just remove maintenance and degradation completely and give each building component a damage value, and add new base building components such as reinforced concrete (scrap metal and Cinder block) that has a huge damage value (almost indestructible, but can only be used for walls and not for floors/roofs) Right now, I am missing out on a significant part of Epoch simply because I have a full time job and family and cannot play the hours required to maintain base parts. That to me seems like a poor way of implementing that mechanic of the game that excludes a certain % of your player base from ever building anything that will last with any meaning. At least add in an alternative to the maintenance system so that server admins can choose between the two?
  4. Hey folks, as of today I have set up a new A3 Epoch server and have some "minor" trouble with it. 1) Maintenance I play singleplayer and therefor the maintenance feature is just annoying, so I wanted to disable it by setting the "expiresBuilding" to "-1", however this deleted all my base structures immediately. I did the same for players and bank accounts, however my player could be loaded just fine (Phew!). Also storage devices (Tipis and Shelves) are all fine. How can I properly disable the maintenance feature? 2) Building Limit I set the requirement for a jammer off, and now I have the issue that I can build max. 5 shelves and 2 tipis (although the last one of them cannot be placed properly!). I want to raise that limit drastically, since this makes a well-sorted base impossible! Anyone can help me with that? Thank you guys in advance, Thief <3
  5. Since Epoch version 1.0.4 this script is included in the default Epoch client. So you don't need to install it yourself anymore! :) Hey guys, another script release from me. :P This time area based maintenance for player bases, you know it can be a pain to maintain every single building part in your base, fear no more with this "simple" script. ;) With the default options it works like this: players will get an option to "Maintain Area" if they look at a plot pole (item can be changed but plot poles make sense I guess), then the script will maintain all base building parts within a specified range (default 50m around the plot pole), the same way as you would maintain every single part by hand. Because of the amount of affected parts admins can define other requirements to actually maintain the whole area (like a briefcase for more then 100 building parts or whatever you like there is an example in the script with some requirements for different amounts of building parts). This is just my first release, I had other plans with making the maintain requirements based on the actual building parts in the area. e.g. every part gets a value (similar then it is now but with items you can stack easily like gold), so it would calculate the exact costs like 2 gold for each wooden wall, 5 gold for metal floors etc.. just an idea there might be other problems with that and it may not be easy to implement this with ArmA scripts as far as my knowledge goes at least. So for now the maintain cost is only dependent on the amount of items to maintain, no matter what parts you use. But there can be multiple items defined for each amount, maybe someone of you have a better way of doing this, that's one reason I publish it here for all to use and improve on it (hopefully). There is also a preview option ("Maintain Area Preview") to see how many building parts would be affected and what the exact costs for that would be. This option does nothing and it won't remove anything from your gear, it only displays an information text on the screen. If you use the real "Maintain Area" option the required items will be removed from your gear, if you don't own them you get a message with the missing parts like with the default maintain option. Ok here comes the installation steps, it is pretty easy, similar to including self bloodbag to your server. Step 1: Add this to your fn_selfActions.sqf file right after the line with "_canDo = ..." around line 16 (I assume you already have the file set up for other changes, if not there are many topics with how to do that): // ---------------------------------------Maintain Area Start------------------------------------ if (_canDo && (speed player <= 1) && (cursorTarget isKindOf "Plastic_Pole_EP1_DZ")) then { if (s_player_maintain_area < 0) then { s_player_maintain_area = player addAction ["<t color=""#ffffff"">Maintain Area</t>", "scripts\maintain_area.sqf", "maintain", 5, false]; s_player_maintain_area_preview = player addAction ["<t color=""#ccffffff"">Maintain Area Preview</t>", "scripts\maintain_area.sqf", "preview", 5, false]; }; } else { player removeAction s_player_maintain_area; s_player_maintain_area = -1; player removeAction s_player_maintain_area_preview; s_player_maintain_area_preview = -1; }; // ---------------------------------------Maintain Area End------------------------------------ If you want change the item where your players can activate the "Maintain Area" option (default plot pole - "Plastic_Pole_EP1_DZ"). You can also change the color of the menu (default white - #ffffff) and the path where you want to safe the actual script (default "scripts\maintain_area.sqf" in your mission.pbo). Step 2: Here is the complete maintain area script: private ["_missing","_missingQty","_proceed","_itemIn","_countIn","_qty","_num_removed","_removed","_removed_total","_tobe_removed_total","_obj","_objectID","_objectUID","_classname","_location","_dir","_objectCharacterID","_object","_temp_removed_array","_textMissing","_target","_objectClasses","_range","_objects","_requirements","_count","_cost","_itemText","_option"]; if (TradeInprogress) exitWith { cutText ["Maintenance already in progress." , "PLAIN DOWN"]; }; TradeInprogress = true; player removeAction s_player_maintain_area; s_player_maintain_area = 1; player removeAction s_player_maintain_area_preview; s_player_maintain_area_preview = 1; _target = cursorTarget; // Plastic_Pole_EP1_DZ _objectClasses = ["ModularItems", "DZE_Housebase"]; _range = 50; // set the max range for the maintain area _objects = nearestObjects [_target, _objectClasses, _range]; // TODO dynamic requirements based on used building parts? _count = count _objects; _requirements = []; switch true do { case (_count <= 10): {_requirements = [["ItemGoldBar10oz",1]]}; case (_count <= 50): {_requirements = [["ItemGoldBar10oz",4],["ItemGoldBar",2]]}; // 42 gold case (_count <= 100): {_requirements = [["ItemBriefcase100oz",1]]}; case (_count <= 200): {_requirements = [["ItemBriefcase100oz",2]]}; case (_count <= 300): {_requirements = [["ItemBriefcase100oz",3]]}; case (_count <= 400): {_requirements = [["ItemBriefcase100oz",4]]}; case (_count > 400): {_requirements = [["ItemBriefcase100oz",5]]}; }; _option = _this select 3; switch _option do { case "maintain": { _missing = ""; _missingQty = 0; _proceed = true; { _itemIn = _x select 0; _countIn = _x select 1; _qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player; if (_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; }; } forEach _requirements; if (_proceed) then { player playActionNow "Medic"; [player,_range,true,(getPosATL player)] spawn player_alertZombies; _temp_removed_array = []; _removed_total = 0; _tobe_removed_total = 0; { _removed = 0; _itemIn = _x select 0; _countIn = _x select 1; _tobe_removed_total = _tobe_removed_total + _countIn; { if ((_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then { _num_removed = ([player,_x] call BIS_fnc_invRemove); _removed = _removed + _num_removed; _removed_total = _removed_total + _num_removed; if (_num_removed >= 1) then { _temp_removed_array set [count _temp_removed_array,_x]; }; }; } forEach magazines player; } forEach _requirements; // all required items removed from player gear if (_tobe_removed_total == _removed_total) then { { _obj = _x; // Find objectID _objectID = _obj getVariable ["ObjectID","0"]; // Find objectUID _objectUID = _obj getVariable ["ObjectUID","0"]; if (_objectID == "0" && _objectUID == "0") exitWith { cutText ["At least one building part is not setup yet.", "PLAIN DOWN"];}; // Get classname _classname = typeOf _obj; // Get position _location = _obj getVariable["OEMPos",(getposATL _obj)]; // Get direction _dir = getDir _obj; // Find CharacterID _objectCharacterID = _obj getVariable ["CharacterID","0"]; // Create new object _object = createVehicle [_classname, [0,0,0], [], 0, "CAN_COLLIDE"]; // Set direction _object setDir _dir; // Set location _object setPosATL _location; PVDZE_obj_Swap = [_objectCharacterID,_object,[_dir,_location],_classname,_obj,_objectID,_objectUID]; publicVariableServer "PVDZE_obj_Swap"; player reveal _object; } forEach _objects; cutText [format["You have maintained %1 building parts.", _count], "PLAIN DOWN", 5]; // uncomment the next 2 lines if you want logging of area maintenance to the server report file (Arma2OAserver.RPT) //maintainArea_log = [player, _target, _count]; //publicVariableServer "maintainArea_log"; } else { {player addMagazine _x;} forEach _temp_removed_array; cutText [format["Missing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"]; }; } else { _textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName"); cutText [format["Missing %1 more of %2", _missingQty, _textMissing], "PLAIN DOWN"]; }; }; case "preview": { _cost = ""; { _itemIn = _x select 0; _countIn = _x select 1; _itemText = getText(configFile >> "CfgMagazines" >> _itemIn >> "displayName"); if (_cost != "") then { _cost = _cost + " and "; }; _cost = _cost + (str(_countIn) + " of " + _itemText); } forEach _requirements; cutText [format["%1 building parts in range, maintenance would cost %2.", _count, _cost], "PLAIN DOWN"]; }; }; TradeInprogress = false; s_player_maintain_area = -1; s_player_maintain_area_preview = -1; Save it as "scripts\maintain_area.sqf" in your mission.pbo or whatever you have defined in the menu before. Step 3 (optional): change the default options in the script: _range (line 13): sets the maximum range for the maintain area around the plot pole (default 50m). _requirements (line 18+): defines the required items for the amount of affected base building parts, there are some examples just take a look it should be easy to extend/modify. Step 4 (optional): logging of area maintenance to the server report file (Arma2OAserver.RPT): Since the script runs on the client (player computer who starts the maintenance) it can be desirable to log additional info in the server report file to keep track what player did the maintenance at what time and position on the map and how many building parts were affected, to do this the script has to send that info to the server. This can be done with the "publicVariableServer" command, just uncomment (remove the leading //) the 2 lines in the script where it says so for logging (line 110+111). For the server to receive that variable and log the info you have to add an public variable event handler with "addPublicVariableEventHandler", this can be done at any place in the mission.pbo, but usually all event handlers are handled in the file "dayz_code\init\publicEH.sqf", copy that file to your mission.pbo and change the reference to it in the init.sqf if you haven't already and add the following to the "Server only" block (after the line with "PVDZE_plr_DeathB" is fine): "maintainArea_log" addPublicVariableEventHandler { _val = _this select 1; _player = _val select 0; _playerName = name _player; _playerID = getPlayerUID _player; _target = _val select 1; _position = position _target; _count = _val select 2; diag_log format["MAINTAIN_AREA: Player %1 (%2) has maintained %3 building parts at position %4", _playerName, _playerID, _count, _position]; }; This will log a line like this every time a player runs the maintenance script: 14:33:01 "MAINTAIN_AREA: Player Axe Cop (12345678) has maintained 245 building parts at position [4937,9421.44,-0.796936]" If you are lazy your can add the event handler to your init.sqf after the line "_serverMonitor = ... " without changing the file publicEH.sqf :P That's it, should be easy enough to get the script working on your server. ;) One major problem with the whole maintenance thing in Epoch (not this script) is the fact, that you can't visually see if your base needs to be maintained or when it was last maintained, I hope that will be fixed with the next Epoch updates because I don't see any way of even accessing the last maintain date form the script itself. What Epoch does is just set a small damage value to every part to indicate that it needs to be maintained soon, but you can't see that damage in game (yet). For now my script just maintains every single part within range, no matter when it was last maintained. I could change it so it only affects damaged parts like Epoch does when maintenance is needed (just to decrease the maintenance cost for players). Also keep in mind the maintain process replaces the objects rather then just removing the damage and resetting the date, don't ask me why but I guess there is a reason for it so I did it the same way in my script. At last sorry for the long text, as always if you have any questions or ideas to make this script better please tell me or improve the script. :) Edit: logging of area maintenance (see step 4)
  6. Hello! I'm setting up a epoch server with a collegue and we have some troubles with the mantain function, we want to activate this function for 14 days. Our problem is that dagamed objetcs / walls can be mantained normaly but in the next server restart they are fine again ( you get no mantain option either in the objets or just the plot pole). It also seems that time doesnt affect on structures dagame. We are using Plot for Life and Plot Management on the server. This is our setup on hive: ;This is a comment ;Comments above a certain setting will provide it's description ;The format for a setting is ;Variable = Value ;If you see a commented line of that form, it means that the setting is optional, and the Value shows the default ;To change from the default, simply uncomment the line and change the Value [Time] Type = Custom Offset = +1 [Database] ;Currently, only MySQL is supported Type = MySQL ;Hostname or IP of the server to connect to Host = xxxxxxxxxxxxxxxxxx ;Port to connect to. The default is the default listening port of a server of the selected Type ;Instead of specifying Port, you can specify Socket and set Value to the socket name Port = xxxxxxxxxxxxxxxxxx ;Database name to connect to. Database = ;Username to connect with Username = xxxxxxxxxxxxxxx ;Password to authenticate with (default is blank) Password = xxxxxxxxxxxxxxxxxxxx [Characters] ;The field name that Player's IDs are stored in (unique per game license) ;IDField = PlayerUID ;The field name that Player's World Position and rotation is stored in ;Enables you to run multiple different maps (different instances) off the same character table ;WSField = Worldspace [Objects] ;Flag indicating whether hiveext should detect vehicles out of map boundaries (X < 0, or Y > 15360) and reset their position to [] ;Note: YOU MUST have a proper dayz_server.pbo that supports this feature, otherwise you will get script errors ;You can find that file under the SQF directory for your server version ;ResetOOBObjects = false ;EPOCH SETTINGS ;Which table should the objects be stored and fetched from Table = Object_DATA CleanupPlacedAfterDays = 14 ;Negative values will disable this feature ;0 means that ALL empty placed items will be deleted every server restart ;A positive number is how old (in days) a placed empty item must be, in order for it to be deleted [ObjectDB] ;Setting this to true separates the Object fetches from the Character fetches ;That means that the Object Table must be on this other database ;Use = false ;The settings here have the same meaning as in [Database], and are only used if the setting above is set to true ;Type = MySQL ;Host = localhost ;Port = xxxxxxxxxxxxxx ;Database = xxxxxxxxxxx ;Username = xxxxxxxxxx ;Password = xxxxxxxxx
  7. Hey guys, I would like to improve my current base maintenance set up. First, copied below is what I have at the moment. My current setDamageOnAge.sql which is executed every 3 hours after server is automatically shutdown via script and just before it is automatically restarted. -- EXECUTION FREQUENCY: To be executed before each server restart. -- SUMMARY: Sets minor damage to walls so the game can identify when a maintain option should be available. -- It it recommended to have this set to half of your CleanupPlacedAfterDays value. -- The default is 6 days so "INTERVAL 3 DAY" should be used as shown below. UPDATE `object_data` SET `Damage`=0.1 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') ) AND ( (`Classname` NOT LIKE '%Vault%') AND (`Classname` NOT LIKE '%Lockbox%') ) From what I understand the above code checks the Datestamp of any buildables and then sets Damage to "0.1" if it is older than 24 hours. (I added the last line it might be unnecessary - I'm not sure). Goal: The above being the current setup, what I would like to do next is, update my SQL query so that setDamage adds 10% every day, so that, if a user does not maintain for: 1 day, the damage will be 10% 2 days, the damage will be 20% 3 days, the damage will be 30% ... ... 9 days, the damage will be 90% 10 days, the damage will be 100% << from what I read in the forums here, then it will be automatically removed because the damage will be '1'. (Furthermore, my "CleanupPlacedAfterDays" is set to 10 days so it will definitely go - exactly what I want). Question #1: (SQL) So how can I accomplish this goal? Is there a simple SQL trigger such as "Damage = +0.1"? Question #2: (Epoch) Once the SQL side is sorted, how can I setup an Epoch system to charge players skipping maintenance accordingly AND reward (not punish) diligent players paying daily? Just to clarify with an example ( a ) Let's imagine a diligent player who logs in every day & maintains his base so he will be paying the maintenance fee for his items every day.In a 10 day period, he obviously will pay 10 times daily maintenance. ( b ) Let's also imagine a lazy-slash-busy player who (as you can guess) doesn't even log in to do any maintenance but logs in just before 10th day, so maintains every 9 days, thus pays 1 time daily maintenance every 10 days. This guy will be getting unfair discount which also means diligent dude will be getting punished for his diligence! If anything, I would like to give the diligent players a discount (nothing much -business slow already!-, let's say 5% discount for first day maintenance, 4% for second day, 3% for third day, 2% for fourth day, and only 1% for fifth day)... Let me add: I acknowledge the tiny (5% to 1%) discounts won't matter with gold bar payment system but I am still hoping we will reach our day, so it will make a difference when the day comes. Today, while we're at it I'd like to update maintenance related SQL queries in a way that the bonus code is active even though it won't matter for the next few week/months. Thanks in advance for any input...
  8. Plot pole maintenance is no longer updating objects in the database. This worked as intended prior to the update, but now appears broken and is likely related to this issue as well.
  • Create New...