Jump to content

RimBlock

Member
  • Posts

    1140
  • Joined

  • Last visited

  • Days Won

    3

Reputation Activity

  1. Like
    RimBlock got a reaction from Cherdenko in [Release] - A Plot for life v2.5. Keep your buildables on death. Take plot ownership   
    Plot For Life v2.5 with Snap Pro v1.4.1 & Precise Base Building 1.0.4 (Built for Epoch 1.0.5.1)   Current Version Note: If you are also going to use other building mods (Vector build etc) then please check the other mods have been updated to work with v2.5 before installing.  If they have not then please use A Plot for Life v2.35 which can be downloaded from the links further down this post.   Dropbox: A Plot for Life v2.5 GitHub: A Plot for Life v2.5   V2.4 -> 2.5 upgrade.    1. Download and replace the following files in MPMissions\[Mapname]\Custom\Compile. fn_check_owner.sqf fn_find_plots.sqf 2. Download and merge (see the diffmerge tutorial links further down) the server files found in $SERVERHOME\custom (changes are fairly minimal).   That is it.   New features. Merged in Precise Base Building from his kind permission.  Please show your appreciation to him as well.
      Core Features. The whole system is is switchable between characterID and PlayerUID by setting a variable. All items built after the mod is installed with have the PlayerUID and the characterID stored for ownership checking (locked buildables will only have the PlayerUID stored as the characterID field is used for the lock code). Includes the 1.0.5.2. code to allow either SteamID or BIS PUID (written by icomrade). You can turn on the plot boundary from the plot pole and remove it.  Currently I am using the road cones with lights on top which are also visible at night.  They can be changed. Take Ownership is available from the plot pole to the plot poles owner and allows them to take ownership of all buildables in range excluding  locked storage (safes / lockboxes), tents, locked doors.  This can be changed as it is all controlled via variables.  The core idea is that this will align peoples bases to the new system for steamID storage on legacy bases.  It also means that raiders can raid a base, replace the plot pole, take ownership and not get full access to locked areas but not have 6 cycles to remove stuff etc after taking over.  Depending on the size of the base, number of objects etc this could put a bit of load on the server / DB.  It is also turn off or on-able via a variable so you can set it only to allow players to realign their bases and then disable the option. New function to check ownership or friendly status of a given object. Merged with Snap Pro and Modular build framework with permission from Raymix Please show you appreciation to Raymix as well). Uses the modular build system.
    New functions to reduce instances of common code in the building system.  Both are small and precompiled.
    fn_check_owner.sqf to check ownership and friendly status
    fn_find_plots to get all nearby plot poles and return a count and the nearest alive one (if one exists).
    Optimised code changing nearestobjects to nearEntities.
    Added delay in the Take Ownership function so the Hiveext / DB does not get spammed when taking ownership of large bases.
    Player_build.sqf is no longer used at all and had been removed from the distribution.
    Optimised code what has saved between 20k & 30k in the mission package size.
      Install Instructions are in the zip file (A Plot for Life v2.5).   Guides on how to use Diffmerge and how to integrate scripts together.   Please backup your databases and thoroughly test before putting live.   Report any bugs / suggestions in the thread.   Previous version 2.35 Dropbox: A Plot for Life v2.35 & Snap Pro (by Raymix) v1.4.1 GitHub (v2.35 stable): A Plot for Life v2.35 & Snap Pro (by Raymix) v1.4.1   Outstanding issues None reported. Next Version: 3.0
    Include a action menu (scroll wheel menu) for plot options and builder / owner management ()  
    Beta Testing
    As it seems theres no with an interest to do any beta testing I need to sweeten the deal.  Anyone who helps with beta testing will get access to boobytrapping doors 4 weeks before it is released publicly.  The 4 weeks will start from the v2.4 release date and will include any bug fixing period.  
     
    Boobytrapping Doors - If you have a hand grenade then you can upgrade a locked door to boobytrap it.  If the incorrect door code is entered then the hand grenade will be dropped at the position the player was when they boobytrapped the door (make sure you are on the correct side of the door when setting the trap  ;) ).
     
     
    Releases   Naming convention  

     
    Previous releases (Majors)
     


      Use and Distribution License details.   This mod is licensed under the DayZ Mod License Share Alike (DML) license.   Usage For people wishing to use the mod for their own servers, please use away.  If advertising the mod as a feature of your servers then a shoutout and a linkback to here would be appreciated but is not a requirement.   Distribution For people wishing to modify and distribute my code for this mod, the requirements are different. 1. You contact me and ask (common courtesy really). 2. You make it clear who the original creator is and provide a link to this thread.   Included mods. A Plot for Life v2.35 (Rimblock). <- is fine.
     
    Included mods.
    A Plot for Life
     
    "credits to each addon / script creator" <- is not.
     
    3. The person distributing the mod explicitly states that they are responsible for any issues with their modified version of the mod and not the original creator (i.e. me).
     
    4. Any other requirements under the  DayZ Mod License Share Alike (DML) license.
     
  2. Like
    RimBlock reacted to ebayShopper in Compact Editor Ouput   
    https://raw.githubusercontent.com/ebayShopper/TestKit/master/testkit/scripts/compact.sqf
  3. Like
    RimBlock got a reaction from raymix in [Suggestion] New way to delete Zeds   
    When working on something like this I tend to step back and put down some design goals, needs, nice to haves and don't cares.
     
    For this, off the top of my head, I would put down...
     
    Goal: Increase FPS via better wild zombie safe zone protection method.
    Needs: Remove zombies in / at the trader marker.
    Nice to haves: Fairly quick removal.
    Don't cares: Instant removal, any zombies not near the trader zones, anything at trader zones when players are not around.
     
    So from that and our knowledge of Epoch / DayZ we know we do not need to check that often and we only need to check zombies in the vicinity of the trader cities as other zombies are unlikely to be able to move so fast. To this end I would setup a tracking zone (lets call it the amberZone) where we want to track the zombies. There would also be a redZone for zombie removal and a greenZone for "Don't care" level zombies. Large arrays can be slow so multiple arrays (one for each zone) would be prefered.
     
    We can then build some rules / actions (not a fully comprehensive list);
    We need to track amberZone zombies more often than greenZone zombies. We need an amberZone marker (invisible) for each trader city. We need to record wild zombie agents and their positions.  
    I would put all wild zombies spawned in to one of the 'Zone' arrays based on their location when spawned. Have a process running every 15 minutes checking position of zombies in greenZone and 2-5 minutes (fine tune based on zombie speed) checking position of zombies in amberZone.
     
    The theory is that you are checking a smaller number of targetted objects (wild zombies) much more infrequently thus reducing server load.
     
    Raymix has suggested the code to sort the zombies in to the zone arrays on completion.
     
    Possible enhancements
     
    As the checks are not so time sensitive, you could slow the scripts down and put a uisleep to put a pause of 0.001 or something between each zombie check. The script will take longer to complete but will not be fighting so hard for resources. Just need to make sure the script completed before another cycle is due to complete or build in a system to check to see if it is already running before kicking of another instance.
     
    'On demand' checks based on clients positions. If the client is xx mtrs from the trader safezone then send a PVS to start the anit-zombie safezone check. Server receives the PVS and kicks off the safe zone anti zombie script and adds the client to a list of clients in the area of the safe zone. The server runs the script until the list of clients is empty and then stops. Clients are removed via the client sending a PVS when they leave the safezone. This means the scripts only run when there are clients in the arear near the safe zone (again fine tune the range). There is a little more PVS traffic but... with some throttling check to make sure no-one looks to abuse it and swamp the server buy finding the threshold and jumping in and out, it should be fine.
     
    We will likely be implementing something like these 'On demand'' checks in Dominion as the 'always on' checks are really quite wasteful on CPU cycles.
  4. Like
    RimBlock got a reaction from Andy.txt in Scare your players   
    Why not leverage object_speak.sqf already used for playing sounds in A2 Epoch.
     
    It will accept
    _unit
    _type
    _chance
    _dis (distance) 
     
    and is called with (for example)
    [player,"tentpack",0,false] call dayz_zombieSpeak; If you have a process running on the server which 'selects' a player then it can calls it with a 100% chance.  If any units in range are non local (to the server) it will fire a RE: to play the sound on the other players clients so everyone in the area gets the sound.
     
    Now, _unit need not be an actual player but could be some coords [x,y,z] so the sound could be played to anyone in range of a specific place.
     
    Wolf howl in the center of a dark forest, for example, for anyone close to hear.
     
    Detail on the RE (Remote Execution) framework can also be found here if you are interested.
     
    If the mechanisum is already there, why not use it.
  5. Like
    RimBlock got a reaction from Gr8 in Scare your players   
    Why not leverage object_speak.sqf already used for playing sounds in A2 Epoch.
     
    It will accept
    _unit
    _type
    _chance
    _dis (distance) 
     
    and is called with (for example)
    [player,"tentpack",0,false] call dayz_zombieSpeak; If you have a process running on the server which 'selects' a player then it can calls it with a 100% chance.  If any units in range are non local (to the server) it will fire a RE: to play the sound on the other players clients so everyone in the area gets the sound.
     
    Now, _unit need not be an actual player but could be some coords [x,y,z] so the sound could be played to anyone in range of a specific place.
     
    Wolf howl in the center of a dark forest, for example, for anyone close to hear.
     
    Detail on the RE (Remote Execution) framework can also be found here if you are interested.
     
    If the mechanisum is already there, why not use it.
  6. Like
    RimBlock got a reaction from cring0 in X-CAM 1.0 released!   
    Had a play for the day with it over last weekend.  It very much feels like more of a Photoshop level of editor than a Lightroom level.  Of course the downside is the learning curve but the videos help.  There seemed to be a few bugs with the sqf export code but they were easily fixed (missing } and ; in one or two places).
     
    Need to be careful not to use the X-Cam obects so as not to create a dependancy on having to include X-Cam with the map but most translate to ARMA 3 objects easily enough or you can choose not to generate them on first run.
     
    Makes 'dressing' the map and more importantly, exporting the results much easier although it is still quite a task that takes a lot of time.
     
    I now need to go through the tutorials so I can start to leverage the more advanced features as that will speed stuff up greatly. 
     
    Highly recommended editor.
  7. Like
    RimBlock got a reaction from megaz in [Release] - A Plot for life v2.5. Keep your buildables on death. Take plot ownership   
    Striker is just finishing testing a new version of Vector Build which is compatible with A Plot for Life v2.5.  Hope to see the release shortly.
  8. Like
    RimBlock got a reaction from RC_Robio in X-CAM 1.0 released!   
    Had a play for the day with it over last weekend.  It very much feels like more of a Photoshop level of editor than a Lightroom level.  Of course the downside is the learning curve but the videos help.  There seemed to be a few bugs with the sqf export code but they were easily fixed (missing } and ; in one or two places).
     
    Need to be careful not to use the X-Cam obects so as not to create a dependancy on having to include X-Cam with the map but most translate to ARMA 3 objects easily enough or you can choose not to generate them on first run.
     
    Makes 'dressing' the map and more importantly, exporting the results much easier although it is still quite a task that takes a lot of time.
     
    I now need to go through the tutorials so I can start to leverage the more advanced features as that will speed stuff up greatly. 
     
    Highly recommended editor.
  9. Like
    RimBlock got a reaction from SchwEde in Dash - SQF Editor   
    Another question from me :) .  Will you be adding the functionality to parse classes as well (cfgmusic / cfgVehicles etc) from config.cpp / XXXXX.hpp and possibly even config.bin files (presumabily after de bin'ing them with cfgconvert in the background) ?.
     
    That would be pretty helpful as class defs are not as well known as common sqf script commands.
  10. Like
    RimBlock got a reaction from Salutesh in [WIP] Targets Name and Weapon Information   
    Have rewritten it for you (untested and probably has a few errors).
     
    Will cover some of the changes below.
    if (isDedicated) exitWith {}; //#define _debug true //UNCOMMENT TO RUN DEBUG, WILL SHOW TIME TAKEN AND ANY LOSS OF FRAMES #define _refresh 0.34 #define _distance 300 #define _blank " " // =========================================================== // Presumption that this should only be against other players. // =========================================================== while{true}do{ if !(isNil "_debug") then { _initTime = diag_tickTime; _frameNo = diag_frameNo; }; // PLAYER NAME CHECK AND DISPLAY _target = cursorTarget; _isTargetPlayer = (isPlayer _target); _isPlayerInVehicle = (Player = vehicle Player); if ((_isTargetPlayer) && {_isPlayerInVehicle}) then{ if(((side _target) == (side player)) && {((player distance _target) < _distance)})then{ _targetName = name _target; _targetRank = [_target,"displayNameShort"] call BIS_fnc_rankParams; _targetWeaponName = (weaponstate _target) select 0;    _targetWeaponClass = (weaponstate _target) select 1; _targetWeaponPic = getText (configFile >> "CfgWeapons" >> _targetWeaponClass >> "picture"); // PRINT THE RANK/NAME/WEAPON ONSCREEN //_nameString = format ["<t size='0.6' color='#1c75e4'>%1</t><br/>",_targetName]; _nameString = format ["Name: %1, Rank: %2, Weapon [%3]: %3",_targetName, _targetRank, _targetWeaponPic, _targetWeaponName]; [_nameString,0.5,0.9,_refresh,0,0,3] spawn bis_fnc_dynamicText; }; if !(isNil "_debug") then { // only display if target isMan. player sidechat format["time: %1, frames: %2",_initTime - diag_tickTime,_frameNo - diag_frameNo]; }; }; uiSleep _refresh; }; #IFDEF is fine but quite old Skool ;) .  isNil works just as well.
     
    If statements seemed to have a number of brackets missing and if you have the 2nd and subsequent condition evaluations wrapped in {} then it uses lazy evaluation.
     
    I personally prefer to get values and then test conditions separately as if statements can sometime be a bit funny if the evaluations are running commands.
     
    Playerside returns the players initial side when the mission started which can change over the course of the mission.  Side player give the current player side.
     
    WeaponState provides an array fo the current weapon.
     
    Have grouped the info gathering together (get name, get rank, get weapon info) more for readibility.
     
    Debug only reports to sidechat only if a player is in the crosshairs and not for every object.
     
    This only reports for players and not for AI (not sure if that is what you wanted).
     
    Not sure why you were defining _nameString twice, removed one definition as it was being overwritten later anyway.
     
    Changed sleep to UISleep which is more accurate.
     
    I have commented out the formatting for differnet colours / styles and you can add them back in as desired.  I have rewritten the line to define nameString as you didn't include the rank of weapon name originally.
     
    Some commands may not work remotely (i.e. if your client is not the owner of the object you are running the command against).  In the BIS Wiki a lot of the commands show if they need to be run agains local or global objects and if the effect is local or global.  Not all of the commands have this info though including weaponState (or weapons for that matter).  
     
    Not sure if you can add a weapon pic to a text line as have no experience of trying to do so.
     
    The code above is meant to provide a starting point for you to build on.  I will be happy to provide direction on errors and alternative commands but will not be writing, debugging and providing a fully working custom script (well, anymore than I may have already above).  Very busy on writing the A3 total conversion I am doing and don't really have much more spare time.
     
    Also, people program in different ways and styles depending on what that particular through process makes easier for them.  The changes above are mainly suggestions and advice meant to help and not intended as criticism.  Everyone starts somewhere and luckily the community here, for the most part, is pretty supportive of new scripters :) .
  11. Like
    RimBlock got a reaction from Gr8 in Nothing save to hive after install a plot for life and vetcor building   
    Take another look at your log file.  These lines are most probably the issue.
    19:06:42 Warning Message: Script custom\compile\KK_Functions.sqf not found 19:06:42 Warning Message: Script custom\compile\server_updateObject.sqf not found 19:06:42 Warning Message: Script custom\compile\server_publishObject.sqf not found 19:06:42 Warning Message: Script custom\compile\server_swapObject.sqf not found
  12. Like
    RimBlock reacted to maca134 in [suggestion] Database   
    I have made and setup 100s of websites. I have sites that get millions of hits a month. These sites run PHP and use MySQL for storage of information. Some also use redis for storing cached data that normally has a TTL of a few minutes at most.
     
    I can tell you from experience, MySQL AND Redis can both deal with ALOT of data IO, even concurrently. 
    And yes Redis is faster than mysql at pure data IO but were it falls down is trying to manipulate the data once its in there.
     
    The fact that Redis has no scheme/structure so having no data validation, makes it fast. In my opinion this is terrible for a game server like ARMA, were structure is everything, one var datatype miss match and the whole server can go to shit.
     
    Redis IS NOT FASTER than MySQL when you consider the day to day management of an ARMA server, were hackers can and do spawn crap in which is near enough impossible to find in Redis, without an application to load to the data set into memory and search it. (This is were MySQL is faster).
     
    The reason the dev's are using Redis I suspect is because it is easy to change the "database* schema" on the fly and you don't need much additional knowledge to interact with Redis, MySQL is more involved.
     
    * Redis IS NOT a database!
     
    Please don't flame me, I really do have a lot of experience with this crap :P
  13. Like
    RimBlock got a reaction from mgm in SmartGit (& GitLab) strongly recommended!   
    Personally I use Source Tree which is also free and powerful.  May not be quite as simple to get in to but does not require much work to get up to speed.  It is also free.
     
    It is much better than the standard Git Desktop app :) .
     
    Will take a look at GitLab, thanks.
  14. Like
    RimBlock got a reaction from cring0 in allow other DB options such as SQL   
    Again, no-one has provided any info to show the DB (rather than the DB and then network combination) was causing the issue. Having the trader data loaded and managed locally takes out both and removed the 'world' scope of traders.
     
    Maybe the sqf and DB code sould have been improved so it was loading the deltas then rather than trying to reload the entire trader inventory when people opened the trader menu ;) .  Less data to load and less to transmit.  Maybe a trigger could have refreshed the data when a player entered the trading area (max once / minute) and only transmit changed values to clients of players in the area.  I am sure there are a number of ways it could have been inproved with a bit of focus.
     
     
    Some hope for people wanting to make the change then.  Presumabily distributing the code is not allowed but distributing a patch with instructions on how to apply wouldn't be ?.  Don't know and have not really got time to do anything on this anyhow.
     
     
    Yeah, ours is moving on ... slowly.  After doing the PoC on trader guard hostility against 'naughty' players I will be looking at getting a trader market working with the DB backend.  Will see how doable it is at that point.  I have a number of ways to explore and with extDBs MySQL and ReDis ability, the two combined may work very well for this with ReDis doing what it is designed for (caching) between DB refreshes.  Probably a discussion for another time, in another thread, probably on some other forum ;) .
     
    For those reading and who may not be aware, TornDeco is the person behind extDB (*why are there still no thumbsup icons*) :D .
  15. Like
    RimBlock got a reaction from cring0 in allow other DB options such as SQL   
    Redis is a cache rather than a DB.  Fast in and out but less functionality as it is not needed for the job it was designed to perform.
     
    The devs decision to use ReDIs is theirs to make although using it because MySQL was not fast enough does not seem to be particularly valid especially as no one has been able / willing to show the MySQL DB backend was causing problems with A2 Epoch, for example.  Some people have provided some evidence from their experiences showing that MySQL was not a bottleneck (search for MySQL and you will find a number of threads on the subject).
     
    Now extDB supports both ReDis and MySQL, the devs could move over to using it and allow the server owners / mod makers to build up the SQL calls to enable MySQL usage.
     
    I don't expect this to happen as;
    It would be another level of control given over to the users rather than fixing the core of A3 Epoch as a 'Standard build' as the Dev team have stated they wanted to do. It would not add much to the end user, only make some server owners happier (easier for them to maintain with current skill sets). The Dev team have been very resistant in the past in making changes to backend storage connectivity (ie. Hiveext.dll in A2 EPoch). The mod is still in Alpha and they want to test new features rather than re-engineer the backend storage. Personally I feel some of these points are very valid but extDB does not open up the possibility for the ReDis and MySQL backends to be used if the Dev team wanted to take a look.
     
  16. Like
    RimBlock got a reaction from outseeker in [Release] - A Plot for life v2.5. Keep your buildables on death. Take plot ownership   
    Np,
     
    Yep add the PVDZE_fullobj_Publish in to the PV variables BE filters.  You can copy the entry that is used for PVDZE_obj_Publish.  The PVDZE_fullobj_Publish function just lets you update the info that would take two DB calls with the standard Epoch function in a single DB call.  Apart from that it is exactly the same :) .
  17. Like
    RimBlock got a reaction from steamROLLER in [Tutorial] How to change (Blood,Hunger,Thirst,Temp) GUI   
    NP,
     
    I am currently playing with rscTitles to create a new GUI for the A3 conversion I am working on with Raymix.  1:30 am here and I have finally got something to be displayed on the screen, all be it transparently  :) .  A Problem for tomorrow I think.
  18. Like
    RimBlock got a reaction from steamROLLER in [Tutorial] How to change (Blood,Hunger,Thirst,Temp) GUI   
    Zupa didn't write A Plot for Life  ;).
     
    The only changes made for A Plot for Life in player_updateGUI.sqf are right at the end to determine if the unit under the cursor is friendly to the player or not.
     
    I would not expect it to interfere with this status GUI replacement.
     
    Nice job on producing an easy to follow guide for people to use in changing the stock GUI. 
  19. Like
    RimBlock got a reaction from ElDubya in Has developement on the Arma2 version of Epoch been Abandoned ??   
    Yep, these are related as well
     
    https://github.com/vbawol/DayZ-Epoch/issues/1623
     
    If people want ot help with testing then it is fairly easy to setup a server and to build the test pbo files.
     
    Current progress on the dev team side seems to be nothing for a month, someone rattles the cage then a handful of pull requests get merged then nothing for another month.
     
    Personally I am not inclined to spend much more time on Epoch 1.0.6 either doing general testing or merging in A Plot for Life as there is no real communication from the dev team.  I did it once last year for 1.0.5.2 and that went nowhere.  After recoding my mod again for 1.0.6 and fixing a number of other qwerks with some Epoch code within the building system it seems to have gone the same way.
     
    A3 Epoch is the next big thing and even a large percentage of the modders have moved over to it now with the A2 mods left as they stand.  Even the DayZEvolved splinter mod seems dead (website / forums inacessable, Git not updated since Dec).
     
    TL:Dnr - If it appears it will be a massive shock to the community ;) .
  20. Like
    RimBlock got a reaction from computermancer in [TUTORIAL] How to use Public Variables   
    Nope.
     
    Both iterate through an array and use _x as the current array element inside the loop.
     
    forEach allows a second special variable called _forEachIndex which contains the index of the current array element in the loop.  Count does not have this special vairiable but runs faster.  If you do not use this second special variable then they are both interchangable.
  21. Like
    RimBlock got a reaction from computermancer in [TUTORIAL] How to use Public Variables   
    Late to the party as usual but just a couple of suggestions on the code.
     
    In the _playersToSend loop, count is faster than forEach if you don't need to use the _forEachIndex special variable in the loop code.
     
    nearentities is also faster than nearestObjects.
     
    if (isPlayer _x) then {}; will detect if the player is a human player.
     
    Hope this helps.
  22. Like
    RimBlock got a reaction from hambeast in [TUTORIAL] How to use Public Variables   
    Late to the party as usual but just a couple of suggestions on the code.
     
    In the _playersToSend loop, count is faster than forEach if you don't need to use the _forEachIndex special variable in the loop code.
     
    nearentities is also faster than nearestObjects.
     
    if (isPlayer _x) then {}; will detect if the player is a human player.
     
    Hope this helps.
  23. Like
    RimBlock got a reaction from bualdoot in Elevator Script for Players and Vehicles [WIP/Prototype]   
    Should be pretty easy.
     
    For fuel, call update_object.sqf -> update position to save the objects fuel (via a PV).  Amend Server_monitor.sqf to read data from the fuel field on object load and if the object is of a particular class.  Just make sure the DB field is the correct Type for the data that needs to be stored.
     
    I did the same in A Plot for Life when saving the owners PlayerUID in the worldpace field of the buildable objects.
     
    Feel free to take a look at the code if it would be of any help.
  24. Like
    RimBlock got a reaction from raymix in Dayz Epoch v1.0.6 Test current bugs list.   
    Think they fixed it as I didn't need to disable the version check this time.
  25. Like
    RimBlock got a reaction from McToots in [Release] - A Plot for life v2.5. Keep your buildables on death. Take plot ownership   
    Open fn_selfactions
     
    Search for the following in the sections that deal with vaults (search the file for "vault").
    if(_characterID == dayz_combination || _ownerID == _playerUID) then { and change to
    if(_characterID == dayz_combination) then {
×
×
  • Create New...