Duplicate categories are now marked instead of being listed multiple
times. This makes the configs far easier to maintain. Admins can still
expand each individual category for further customization.
Also moved the dayz_epoch_b stringtable into a dayz_epoch package in the
dayz_code stringtable.
This makes it easier to maintain and search for code strings. Epoch_b
only holds extra models and textures now.
Tool breaking is disabled by default.
Also made all scripts use Epoch sledge, which is a different model from
vanilla sledge.
PK_DZ was a duplicate of the new PKM_DZ.
The hive call in server_publishObject is the same between vanilla and
Epoch. The only difference is vanilla uses the _inventory area for
owner, lock code, etc. variables where as modular Epoch items just store
an empty array there.
The object classname does not need to be sent in the PV because it can
be obtained on the server.
PVDZE_veh_Publish was not used.
Fixes the RPT errors:
Item str_usract_watch_toggle listed twice
Item str_usract_watch listed twice
Item str_itemwatch listed twice
str_itemwatch is in Arma 2\AddOns\language.pbo and the other two are in
Arma 2 Operation Arrowhead\Expansion\dta\languagecore.pbo
Updated loot spawning code for vehicle cargo.
Also it is faster and more efficient to call spawn_vehicles repeatedly
in one thread rather than spawn it hundreds of times (opening hundreds
of simultaneous script threads).
The only difference from the vanilla dayz pbo is the DeathScreen change.
It is better to do that in dayz_code RscTitles. Then the dayz pbo does
not need to be maintained in this repo.
It should no longer be necessary to load dayz_vehicles in the
mission.sqm addons. It was taken out of mission.sqm in vanilla around
1.8.
The dayz_logo_ca.paa file was identical to loadingscreen.paa
The protective box is not needed on Chernarus.
If other maps need it we are better off spawning a permanent box around
the debug area once, instead of constantly creating new boxes every time
a player logs in.
Format has a 2048 character limit:
https://community.bistudio.com/wiki/format
Str() should be used for strings that may exceed that, like object
inventories and vehicle hit point arrays.
Achievements are saved in the state field, so we don't have room to save
friendlies there anymore. DZE_FriendlySaving is removed for now. I will
add it back later with a save to player profile instead.
The dayz_players variable is not used for anything. There were several
other unused variables in server_playerLogin.sqf.
MPHit does not always fire when a player is killed:
https://community.bistudio.com/wiki/ArmA_2:_Event_Handlers#MPHit
Using either MPHit or MPKilled is not a good idea here. There is already
a local 'killed' event handler which fires on player death
(player_death.sqf). That script sends a PV (priority message) to the
server which triggers server_playerDied. That means fnc_plyrHit needed
to finish sending its data to the server via public setVariables
(non-priority messages) before server_playerDied executed. Triggering
both these scripts at the same time was a bad idea.
Instead of sending the data to the server via setVariable I just
included it in PVDZ_plr_Death. This also lets us pass extra information
from the damage handler like ammo type, cause of death, etc. Still need
to test, but it should be more reliable and performant than
fnc_playerHit called from MPHit or MPKilled.
Fnc_veh_handleRepair is a new version of fnc_veh_setFixServer with extra
handling. It is used in salvage and some other scripts, but not
server_monitor.
DayzGearSave is no longer used. I will submit a pull to remove it from
vanilla too.
Player_dumpBackpack is not a good solution to stifle duping. Players can
not see friends backpacks dropped on the ground. That is a problem when
they want to trade backpacks. They don't understand why their friend
can't see it. Also players can still get the "gear" scroll action if
they look where the hidden backpack is.
If it is still a problem after all the updates to current dayz code then
we should submit a pull request with a better solution to vanilla.
It makes no sense to rename the identical DayZ PVs to have an E in their
name. I don't see any good reason it was done in the first place. All it
accomplishes is breaking script compatibility between the two mods and
requiring different publicvariable.txt filters. The only time it makes
sense is for custom Epoch variables that aren't used in vanilla.
All admins have to do to update custom scripts is swap the names
according to the change log.
Note I've submitted a pull request to replace PVDZ_veh_Save with
PVDZ_obj_Save in official too because they are duplicates.
- Moved player_countMagazines to \compile\ folder
- Removed several unused and obsolete files
- Moved some epoch functions out of compiles.sqf into individual files
- Synced order and formatting with 1.8.7. Much easier to compare now.
Any changes I make to official DayZ Mod code and files I also submit as
a pull request to them.
AFAIK there is no benefit to including the optional shortcut and
condition parameters as empty strings:
https://community.bistudio.com/wiki/addAction
All the addActions in fn_damageActions do not include them either. I've
run these changes on a live server for a while and never saw a
difference.
There is no point in having CfgBuildingPos.hpp in dayz_epoch_b too. It
was identical to the one in dayz_code and can be included in the mission
from there.
@icomrade couple questions:
1. Why keep a CfgLootLegacy? I know they are very different formats, but
it will just make things messier and more confusing. Also it will be a
PITA to maintain and update two different sets of loot tables in the
long run. I don't think catering to lazy admins is a good enough reason.
It's not that hard to convert to the new format.
2. Why not use the new _DZ weapon classes in the loot tables like
PDW_DZ, AKM_DZ, etc.?
3. Why not use the new box names like DZ_AmmoBoxRU, DZ_AmmoBoxUS,
DZ_MedBox, etc. in the loot tables?
4. Why remove the attachments from the loot tables?
See:
https://github.com/DayZMod/DayZ/commit/634214570c2a6c3efe53e2b09bf01250fcc3d2e2
@icomrade - IMO we should use the new blood type system and take out the
config variable. It is not something that can be easily switched between
because it requires manually changing the loot tables and traders which
adds some big files to the mission. Some admins will get confused when
they change the config variable and it doesn't change the loot spawns or
traders.
Admins can make bloodBagONEG abundant on their server if they
don't like it. I think most people will want to use it since it is a
nice extra realism feature and consistent with 1.8.7. We can still leave
the ItemBloodbag class defined in cfgMagazines so admins can go back to
using it if they wish. 1.8.7 even took out the class completely.
The only difference between this and the previous version is:
1. Container tags removed
2. Comments added back in
3. str_usract_watch_toggle, str_usract_watch and str_itemwatch are not
commented out. These should not be duplicates if we are using the new
languagecore.xml (according to the comment). If it is a duplicate we
should fix it on 1.8.7 too (after confirming it there).
Using the unmodified file directly from 1.8.7 dayz_code makes it easier
to compare for future updates.
Needed to add it to variables.sqf lists.
@icomrade - Any reason FireBarrel_DZ was removed? I think we still need
it, since it is an epoch buildable class, unless we merge it with
Land_Fire_barrel.
These changes are consistent with the 1.8.7 files.
@icomrade - Why did you change all of the scope = public; to scope = 2;
in dayz_code? They should be identical since that is included in the
basicDefines.hpp above all configs. We should stay consistent with 1.8.7
and use the human readable names if possible.
Also any reason you left out these extra CfgActions?
@icomrade - I'm going to start reviewing and testing the commits you've
done here. I'll commit any fixes and additional 1.8.7 stuff that is
needed to this 1.8.7-Rebase branch. Once we have it in a functional
state we can merge it into master if that's good with you.
Let me know if you are working on any files in particular so we don't
duplicate efforts. I'll be in discord while I'm working here too.
The journal is now functional. Preliminary strings are added for the
1.8.7 crafting system, but it is disabled for now.
I've messaged @marceldev89 (ziellos2k) and @AlbyBDPK on the DayZ forums
to ask permission to use fn_updateCraftUI, player_checkRecipe and
player_craftItemGUI. Are you guys okay with us including these in DayZ
Epoch 1.0.6?
@raymix in most of your helper functions you are using exitWith {}; in
the same way the main player_build uses it. The problem is exitWith
inside of a called function only exits that function, not the parent
script it was called from.
When a helper function exits the main script continues on with undefined
variables and other problems. The easiest solution was to just remove
these helper functions for now. I just directly substituted their code
back into the main modular_build file and removed the passes to and from
them.
We should consolidate player_build and modular_build into one file first
since they are about 80% identical. After that we need to integrate
plot4life. Dividing player_build up into smaller sub functions like this
can be left for last.
I tested this thoroughly and can confirm the undefined errors are fixed
now.
NearObjects "All" counts things like local plot markers, weapon holders,
ambient life, etc. We only want to count buildables. The radius should
also start at the plot pole if available, not the player position.
Thanks to Epoch forums user jOoPs for pointing this out. I will fix this
in modular_build.sqf too.
Tested and confirmed working.
Tested while autorunning:
- getting knocked out
- breaking legs
- running into water
- getting into and out of vehicles
- climbing a ladder
- dying
- antiTP enabled
- running up steep hills
- as player zombie
Everything works as expected. This does allow you to run up and down
pretty steep hills, but if you try to scale something too steep you will
break your legs as expected.
A five minute knockout timer for combat logging is far too long. Most
players will just leave the server and join another. Two and a half
minutes is more bearable.
This is identical to the lingor mission. The only change is "ibr_dingor"
added in mission.sqm. Admins can use the lingor files for dingor. The
two maps are the same apart from the desert skin. There are currently no
servers running dingor at the time of writing this.
This is an exact duplicate of the smd_sahrani_A2 mission. The only
difference is the "oac_core" addon in mission.sqm. That addon is no
longer used in any of the current versions of the map.
I put all the old trader city mission.sqf files from
dayz_server\missions\ in the TraderCitySources folder for reference. I
renamed the folders to instanceNumber.mapName to be more organized.
See: #1103
Made vehicle gear always accessible from inside.
Also added optional variable to prevent stealing from backpacks by
non-friendlies at traders. Thanks to @maca134 for the method.