I don't think we should allow selling backpacks from vehicles because we
can not get backpack contents.
We can only remove all backpacks with clearBackpackCargo and then add
back new empty backpacks for ones that weren't sold.
This means players may unintentionally wipe all contents of all other
backpacks in their vehicle when they only want to sell one.
Thanks @AirwavesMan for catching this.
Also made changes discussed in #1718 @oiad
- Added proper handling of pistol mags and regular mags in gear to
prevent magazine overflow
- Added pre-check if return change will overflow gear + backpack free
space. If change will not fit in gear + backpack free space then buy is
prevented with a message notifying the player. In the case of a sale it
proceeds anyway, but notifies player if overflow occurs (see comments in
returnChange)
- Consolidated duplicate code for calculating free space and returning
cargo of an object into new calcFreeSpace
- Old calculateFreeSpace renamed to displayFreeSpace
- Added Weps/Mags/Bags icons to free slot numbers display
@icomrade - In regex character classes only match each single character.
So a range with more than one character on one end (20) won't work:
http://www.regular-expressions.info/charclass.html
You can see that by running this code in-game with your old filter and
it will kick you:
player setVariable ["hit_glass3",1,true];
Adding the + on the end makes it match the character class one or more
times, so now it will match any integer >= 0.
When switching back to category view the item count was overwritten
from:
https://github.com/EpochModTeam/DayZ-Epoch/commit/12a9e9f83edc78c4ec147d86e6b1d77f91323250
It is no longer needed to set it in changeBuySell since calcPrice runs
every time changeBuySell does. The one exception is when switching back
to category view, but in that case it stays in buy mode anyway.
You forgot to add it for single currency as well @oiad
There is no point in setting inTraderCity = "Any"; since you can use the
isInTraderCity variable to check if a player is in any trader city. Also
"Any" will return false for isNil, so the only time "Unknown Trader
City" was being used was when the player had not entered any city yet.
If they left a known trader and went to an unknown one the RPT message
would say "bought x at Any". Now it will correctly say "Unknown Trader"
anytime a purchase is made without inTraderCity being set.
The menu already says "Buying in" or "Selling from" Gear in the top left
so having it again in the top right is redundant. It was my mistake
adding it there originally.
The buying list now acts like a shopping cart. It is no longer cleared
when switching between categories or containers. Closing the dialog or
switching to sell mode still clears it.
Also fixed:
- Filter button in sell mode
- Bug where filtering sellable list readded items already moved to
selling list
- Visual price display not clearing when remove all button is used on
buying list
- Gear container picture showing rank instead of portrait in buy mode
- Dialog is no longer closed when trying to sell zero items
- LbCurSel is now reset when the buyable list is cleared
- Category is no longer opened onLbSelChanged. Instead you need to
double click or use the "View" button, so the arrow keys can be used for
selecting too.
Since we changed the alignment back to default the ctrlSetPosition I
added is no longer needed. #1709. With the alignment changed it would
actually run off the background if the category list was too long.
Thanks @oiad
When localizing vanilla strings please do not put "EPOCH" in their name
or include them in the dayz_epoch package of the stringtable. This
creates more work to backport common translation updates and vice versa.
Vanilla development commit:
https://github.com/DayZMod/DayZ/commit/af9e009bae1c1b6446d610338019d6c0446845b8
- renamed magazines for better sorting
- renamed attachments for better sorting ([A] prefix added) some fixes,
some strings moved to proper section
- Remington 870 added to new attachment system (weapon flashlight)
- Double-barrel shotgun will now spawns with pellets and has Doubleshot
option (maybe this will make it more popular?)
Access control for upgrade and downgrade is now included in
fn_selfActions as per #1706
I moved _upgrade down in fn_selfActions so it is only checked it if the
right conditions are met.
Since door management uses the inventory field to store doorFriends the
last condition was always returning false and locked doors would never
get damage set on them.
@AirwavesMan - For future reference, if you notice any more new stuff we
forgot to add to the traders we probably forgot to add them to R3F
weight too.
I did not realize lootPosSmall positions can only fit small objects like
soda cans etc., so it is not okay to merge them with the main lootPos
arrays. This separates them back out.
This solution will work like 1.0.5.1 CfgLootSmall. <GroupName>Small is
used to spawn additional loot if the building type has lootPosSmall
positions available. It is not necessary to add a <GroupName>Small for
types that do not have lootPosSmall positions.
Some of these objects may still be too big or too small (knife,
binoculars, matchbox, etc.) for the positions and look out of place. If
that is the case please submit a pull with any problematic ones removed
from the <GroupName>Small groups (check if they aren't in 1051
CfgLootSmall first). Balance and rates may need adjustment as I just
took the normal groups and removed large objects from them while trying
to keep similar items to 1.0.5.1 CfgLootSmall.
Epoch has custom loot positions for many buildings. Most lootPos have
not changed in vanilla since pre 1.7.x.
The vanilla lootPos are now commented out and custom Epoch ones are
added back. LootPosSmall positions are now included in lootPos and
marked with //DZE EXTRA
LootPosSmall are included and used by default in 1051, so it is simpler
to add them to the main lootPos lists instead of having a separate loop
in buildingSpawnLoot.sqf for them.
Passing false as the second parameter to fnc_find_plots always returns
DZE_PlotPole select 0. In dze_buildchecks we want to use DZE_PlotPole
select 1 if the classname is a plot pole.
_distance is already defined as DZE_PlotPole select 0 in the other three
files, so it is redundant to redefine it as the return value.
In player_upgrade.sqf the check for DZE_permanentPlot is not necessary,
because FNC_check_access handles both cases.
It is unnecessary to specify default values in configVariables.sqf
comments. All values in this file will be defaults at release. It can't
be edited by admins directly. They need to copy the variables to their
mission to change them, so they will always be able to reference it for
the defaults.
Fn_check_access provides the same functionality and more.
Removed folders that only contained a single file to clean things up.
Also added epoch tag friendly code to vanilla player_updateGui for now.
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).
The big list of removals in setvariableval.txt and publicvariableval.txt
were duplicates. Other removals are covered by the new regex filter.
Still needs work. If you encounter kicks please post the restriction
type and number along with the log line in the 1.0.6 testing issue.
Vanilla development commit:
https://github.com/DayZMod/DayZ/commit/b038a1762bc90828c3598af3d06b3e51677b01a1
Fixes RPT error "Unsupported language English (or whatever language you
selected) in stringtable" on load.
We do not have <Original> tags on any other strings in the table, so
there is no reason to use them here. They are not needed. If the game is
set to use a language that does not have an entry it uses the first
available entry for that string (which is English for every string in
the table). Keys should not contain only <Original> tags with no other
languages, as it will cause this error.
Updates that were in the 1.0.5.1 release are now included in the main
epoch.sql file, since all servers should have applied them by now.
All new updates since 1.0.5.1 release are now in 1.0.6_Updates.sql.
Also disable abort and respawn immediately in pause menu onLoad. New
function fn_pauseMenuChecks allows admins to run unscheduled code in
pause menu onLoad.
Since typed bags spawn in bulk (usually 2x 4 different bag types) this
reduces bloodbag output slightly when classic system is enabled.
Medboxes were spawning with 3-8 blood bags, this reduces it to about 1-6
which should be similar to 1051 values IIRC. Feel free to adjust this up
or down if needed.
The whole point of a global variable is you do not need to pass it.
DZE_plotManagement and DZE_plotmanagementAdmins are always defined and
do not change, so there is no need to pass them as parameters.
@icomrade - configFile and missionConfigFile are in different scopes.
Admins can overwrite any dialog in RscDisplay with their own version
included in the mission without getting "class already defined" errors.
I tested to make sure it is possible. So there is no benefit to having
these includes in description.ext.
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.