in my testing createvehicle non-array is more than 2x as fast as
createvehicle array. Also includes some changes by @ndavalos in the RC1
issues thread.
- Safe inventory arrays are no longer sent over network to all machines
on server startup and on each lock/unlock
- Disabled user input then closed gear dialog during safe
lock/unlock/pack to block various duping methods.
- Moved safe creation, deletion and gear handling to server. This cuts
down on add[Magazine/Weapon/Backpack]Cargo, createVehicle and
deleteVehicle BE logs.
We shouldn't need to check typenames since many of the DB columns don't
accept anything but appropriate values and the hive will check if some
fields are corrupt already.
Intensive commands are processed on the client only, as opposed to
twice. an array of objects, their corresponding UID and ID are sent to
the server. Sending the objects as an array, despite the size the array
can reach, should be better than the way this was set up before.
Needs testing on a full server however.
New variables: DZE_groupManagement = false; //Enable or disable group
management. Enabled by default
DZE_MoneyStorageClasses = []; // If using a Single currency system
(Z_SingleCurrency = true;), this is an array of object classes players
can store coins in
if Z_SingleCurrency = true; the hive is now set up to handle coin
updates on players, characters, and objects.
if DZE_groupManagement = true; the hive is now set up to save groups
group and coin variables are set in player_monitor.fsm, for
vehicles/objects it's set in the server_monitor.sqf file for objects in
the DZE_MoneyStorageClasses array
Also, this commit includes a change to the way the hive spawns in
vehicles. vehicles are now created at [0,0,0] and moved using setPosATL
to their saved position. Thanks for the tip @ndavalos @eraser1
Requires DLL Published in this commit as well as a database update.
Execute the added SQL in the 1.0.6_Updates.sql on your database.
Use Hive child 204 to update the new column
_key = format["CHILD:204:%1:%2:%3:", (getPlayerUID player),
dayZ_instance, [Array of playerUIDs of group members]];
_key call server_hiveWrite;
In the initialize section of the fsm r_player_unconscious and
r_player_timeout return their default values (false and 0). Also, the
Vanilla server-side combat check doesn't appear to work, or it doesn't
work with the antihack disabled (I haven't tested with it enabled).
New variable inCombat is set more quickly than the combatTimeout
variable
DebugBox_DZ appears to cause issues when changing clothes. I haven't
died changing clothes ~100 times since its removal. It also solves the
issue of extreme exposure (brightness) after changing clothes
Note: CombatTimeout variable resets after changing clothes
* Advanced trading fixes/modifcations
This adds combine currency option to the Advanced trading screen since
@Airwaves man noticed it didn't have a way of doing it.
Updated stringtables with correct "paid" spelling and differing text for
buying/selling.
This also addds proper currency checking/reporting for the log system
that has been introduced, it's untidy but it works, instead of getting
"user bought x for 1000 currency" in a non coins server, it will convert
it to the proper 1 brief 5 10oz gold etc system (uses a new function
z_calcDefaultCurrencyNoImg)
This also adds a check to see if the buy list is empty (as per the
selling list) and returns text to the user informing them.
Re-arranged buy and sell so buy is on top of sell, it's a bit easier to
read then.
* Advanced trading logging change
This was missing from my previous commit, this changes the
server_tradeobject to check if it's being passed a number (single
currency) or text (my logging currency changes)
* Advanced trading rework
Fixes all problems @ebaydayz
* Added doorManagement
* Rename FNC_check_owner --> FNC_check_owner_friends
* Fixed typo
* Fixed bug in FNC_check_owner_friends which allowed every user to manage
every plot and door.
* Removed unused DZE_doorManagementHarderPenalty from configVariables.sqf
* Now checking if _playerUID is in _friendlies for both cases.
* DZE_plotforLife should be DZE_permanentPlot
* Fixed case where DZE_permanentPlot is false.
* Forgot to add STR_EPOCH_CANCEL
* Changed translations to suggested string by ebaydayz.
* Renamed EyeScanner to DoorAccess.
* Reworked access rights for door management.
* DZE_doorManagementMustBeClose = true; //Players must be within 10m of
door to be added as a door friend.
* Fixed copy-paste error.
* Replace count with if
* Remove redundant test.
* Also replaced count in door management admins check.
* Change plotManagement and doorManagement to be consistent to
DayZ_UseSteamID (get UID from FNC_GetPlayerUID).
* Use _playerUID and _characterID more consistent.
* Added german translation to
STR_EPOCH_PLOTMANAGEMENT_ADDFRIEND_ALREADYONTHELIST.
Plot for Life and Plot Management work best together. They essentially
provide the same functionality. Both let you keep your plot after death
by using UID instead of CharacterID. Plot Management doesn't even have
an option to save characterID, so by default it is always keeping all
friends and the owner permanently until they are removed. The only major
difference between them is Plot For Life also adds permanent ownership
of built items on the plot, which is behavior most people expect. It
doesn't make sense to keep ownership of the plot after death but not the
other objects built on it. The other functionality it adds (take
ownership) can be toggled with a config variable.
It is rare that someone would want Plot For Life enabled, but Plot
Management disabled or vice versa. If they really want that they can
still do it manually, but consolidating them to a single config option
greatly simplifies things for everyone else.
I removed links to mod githubs because many changes have been made to
the 1.0.6 versions, so outdated information there will likely confuse
people. Authors are already credited in the README and change log.
In variables.sqf "DZ_storage_base" is now the parent class which
includes all tents and stashes. DZE_checkNearbyRadius variable is not
used (identical to DZE_PlotPole select 0).
CursorTarget should always be passed from fn_selfActions, not reacquired
in action scripts. This is to ensure the same object is referenced. Plot
Management maintain_area is called from the dialog button, not
fn_selfactions.
I forgot numbers greater than 1 million are truncated when converted to
string:
http://killzonekid.com/arma-scripting-tutorials-float-to-string-position-to-string/
KeyStartNumber exceeded 6 digits which is why it was being truncated to
"1e+011" and getting stuck on loop (as that string was already in
currentObjectUIDs) as mentioned in 2df7279.
Starting at 10, there should never be more than a couple duplicates
generated, so keyStartNumber will never exceed about 100 max. Added an
exit just for a fail safe.
DB with ~4000 vehicles fails to load since this code runs on nearly
every vehicle for some reason. The code should only be called upon
vehicle purchase to increase load time and simply calling
dayz_objectUID2 has no effect.
With the code removed from line 266-271 the server would reset the slope
of the placed object to match the slope of the ground. Do not re-add the
code unless configs are updated with corresponding canbevertical option.