diff --git a/SQF/dayz_code/Configs/CfgParticles.hpp b/SQF/dayz_code/Configs/CfgParticles.hpp
new file mode 100644
index 000000000..5a9d3aa2f
--- /dev/null
+++ b/SQF/dayz_code/Configs/CfgParticles.hpp
@@ -0,0 +1,26 @@
+//need to remove the spray, submarine is not a speedboat,
+//so create an empty particle effect
+class CfgCloudlets
+{
+ class Default;
+ class subpart: Default
+ {
+ interval = 0;
+ sizeCoef = 0;
+ colorCoef[] = {1,1,1,1};
+ animationName = "";
+ animationSpeedCoef = 0;
+ lifetime = 0;
+ position[] = {0,0,0};
+ };
+};
+
+//need to remove the spray, submarine is not a speedboat
+class subspray
+{
+ class subspray
+ {
+ simulation = "particles";
+ type = "subpart";
+ };
+};
\ No newline at end of file
diff --git a/SQF/dayz_code/Configs/CfgServerTrader/Category/Boats.hpp b/SQF/dayz_code/Configs/CfgServerTrader/Category/Boats.hpp
index fee858179..24306ec2f 100644
--- a/SQF/dayz_code/Configs/CfgServerTrader/Category/Boats.hpp
+++ b/SQF/dayz_code/Configs/CfgServerTrader/Category/Boats.hpp
@@ -8,6 +8,7 @@ class Category_48 {
//Unarmed Boats
class Category_49 {
+ class Submarine_DZE {type = "trade_any_boat";buy[] = {2,"ItemBriefcase100oz"};sell[] = {1,"ItemBriefcase100oz"};};
class Smallboat_1_DZE {type = "trade_any_boat";buy[] = {2,"ItemGoldBar10oz"};sell[] = {1,"ItemGoldBar10oz"};};
class Smallboat_2_DZE {type = "trade_any_boat";buy[] = {2,"ItemGoldBar10oz"};sell[] = {1,"ItemGoldBar10oz"};};
class Fishing_Boat_DZE {type = "trade_any_boat";buy[] = {4,"ItemGoldBar10oz"};sell[] = {2,"ItemGoldBar10oz"};};
diff --git a/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Boats.hpp b/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Boats.hpp
index a0576cb45..bbae7878f 100644
--- a/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Boats.hpp
+++ b/SQF/dayz_code/Configs/CfgServerTraderZSC/Category/Boats.hpp
@@ -8,6 +8,7 @@ class Category_48 {
//Unarmed Boats
class Category_49 {
+ class Submarine_DZE {type = "trade_any_boat";buy[] = {20000,"worth"};sell[] = {10000,"worth"};};
class Smallboat_1_DZE {type = "trade_any_boat";buy[] = {2000,"worth"};sell[] = {1000,"worth"};};
class Smallboat_2_DZE {type = "trade_any_boat";buy[] = {2000,"worth"};sell[] = {1000,"worth"};};
class Fishing_Boat_DZE {type = "trade_any_boat";buy[] = {4000,"worth"};sell[] = {2000,"worth"};};
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Boat/Submarine.hpp b/SQF/dayz_code/Configs/CfgVehicles/Boat/Submarine.hpp
new file mode 100644
index 000000000..ebcd6b7ec
--- /dev/null
+++ b/SQF/dayz_code/Configs/CfgVehicles/Boat/Submarine.hpp
@@ -0,0 +1,281 @@
+class ship;
+class Submarine: ship
+{
+ scope = 0;
+ class HitPoints;
+ class ViewPilot;
+};
+
+class Submarine_DZE_base: Submarine
+{
+ displayName = "Submarine";
+ model = "\z\addons\dayz_epoch_v\vehicles\sub\epoch_sub_01.p3d";
+ picture = "\ca\water\data\ico\pbx_CA.paa";
+ Icon = "\Ca\water\Data\map_ico\icomap_rubber_CA.paa";
+ mapSize = 6;
+ vehicleClass = "DayZ Epoch Vehicles";
+//vehicle characteristics
+ maxSpeed = 125;
+ brakeDistance = 20;
+ armor = 20;
+ damageResistance = 0.00318;
+ crewVulnerable = 1;
+ castDriverShadow = 0;
+ castCargoShadow = 0;
+ supplyRadius = 5;
+ hasGunner = 0;
+ enableManualFire = 0;
+ weapons[] = {};
+ magazines[] = {};
+ precision = 10;
+ enableGPS = false;
+ memoryPointsGetInDriver = "pos driver";
+ memoryPointsGetInDriverDir = "pos driver dir";
+ memoryPointsGetInCargo = "pos cargo";
+ memoryPointsGetInCargoDir = "pos cargo dir";
+//need to remove the spray, submarine is not a speedboat
+ leftWaterEffect = "subspray";
+ rightWaterEffect = "subspray";
+ leftEngineEffect = "subspray";
+ rightEngineEffect = "subspray";
+ destrType = DestructWreck;
+ class DestructionEffects;
+ //driverForceOptics = 1;
+ //driverOpticsModel = "\ca\Tracked\optika_M1A1_commander";
+
+//based on fishing boat
+ transportMaxMagazines = 500;
+ transportMaxWeapons = 50;
+ transportMaxBackpacks = 10;
+// unitInfoType = UnitInfoCar; //By default no hud information
+//crew
+ getInAction = GetInLow;
+ getOutAction = GetOutLow;
+ transportSoldier = 3;
+ typicalCargo[] = {RU_Soldier,RU_Soldier_AR,RU_Soldier_AR};
+ driverAction = PBX_Driver;
+ cargoAction[] = {Truck_Cargo04,Truck_Cargo01,Truck_Cargo01};
+// FB_Cargo01,FB_Cargo02,FB_Cargo03,FB_Cargo03,FB_Cargo03,FB_Cargo03,FB_Cargo04
+ cargoGetInAction[] = {"GetInLow"};
+ cargoGetOutAction[] = {"GetOutLow"};
+ extCameraPosition[] = {0,4.0,-14.0};
+
+//ensure no turrets active
+ class turrets{};
+//anim sources
+ class AnimationSources
+ {
+ class dive
+ {
+ AnimPeriod = 12;
+ source = "user";
+ InitPhase = 0;
+ };
+ class peri_trans
+ {
+ AnimPeriod = 3;
+ source = "user";
+ InitPhase = 0;
+ };
+ class IndicatorSonar
+ {
+ AnimPeriod = 1;
+ source = "user";
+ InitPhase = 0;
+ };
+ };
+//in vehicle actions
+ class UserActions
+ {
+ class dive
+ {
+ displayName = "Dive";
+ displayNameDefault = "";
+ onlyforplayer = true;
+ position = "zamerny";
+ radius = 1;
+ priority = 99;
+ condition = "(player == (driver this)) && {(surfaceIsWater position this) && {(((getPosATL this) select 2) > 10) && (this animationphase ""dive"" <= 0.5)}}";
+ statement = "this animate [""dive"", 1]";
+ };
+ class surface : dive
+ {
+ displayName = "Surface";
+ condition = "(player == (driver this)) && {(this animationphase ""dive"" > 0.5)}";
+ statement = "this animate [""dive"", 0];";
+ };
+ /*
+ class periscope_up
+ {
+ displayName = "Periscope Up";
+ displayNameDefault = "";
+ onlyforplayer = true;
+ position = "zamerny";
+ radius = 3;
+ priority = 99;
+ condition = "(player == driver this) && (this animationphase ""peri_trans"" < 0.5)";
+ statement = "this animate [""peri_trans"", 1]";
+ };
+ class periscope_down : periscope_up
+ {
+ displayName = "Periscope Down";
+ condition = "(player == driver this) && (this animationphase ""peri_trans"" > 0.5)";
+ statement = "this animate [""peri_trans"", 0];";
+ };
+ */
+ };
+//damage
+ class HitPoints: HitPoints
+ {
+ class HitHull
+ {
+ armor = 0.85;
+ material = -1;
+ name = "telo";
+ visual = "zbytek";
+ passThrough = 1;
+ };
+ class HitEngine
+ {
+ armor = 1.2;
+ material = 60;
+ name = "motor";
+ visual = "zbytek";
+ passThrough = 1;
+ };
+ };
+ class Damage
+ {
+ tex[] = {};
+ mat[] =
+ {
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_01.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_01_damage.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_01_destruct.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_02.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_02_damage.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_02_destruct.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_03.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_03_damage.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_03_destruct.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_details.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_details_damage.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_details_destruct.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_int.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_int_damage.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_int_destruct.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_shell.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_shell_damage.rvmat",
+ "z\addons\dayz_epoch_v\vehicles\sub\data\sub_shell_destruct.rvmat"
+ };
+ };
+//sounds
+ insideSoundCoef = 1;
+ soundEngineOnInt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-start-01", db-20, 1.0};
+ soundEngineOnExt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-start-01", db0, 1.0, 150};
+ soundEngineOffInt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-stop-01", db-20, 1.0};
+ soundEngineOffExt[] = {"ca\sounds\vehicles\water\rhib\ext-boat-stop-01", db0, 1.0, 150};
+ class Sounds
+ {
+ class Engine
+ {
+ sound[] = {"ca\sounds\vehicles\water\rhib\ext-boat-engine-low-01", db0, 0.9, 300};
+ frequency = "(randomizer*0.05+0.95)*rpm";
+ volume = "engineOn*(rpm factor[0.5, 0.1])";
+ };
+ class EngineHighOut
+ {
+ sound[] = {"ca\sounds\vehicles\water\rhib\ext-boat-engine-high-01", db0, 0.8, 300};
+ frequency = "(randomizer*0.05+0.95)*rpm";
+ volume = "engineOn*(rpm factor[0.4, 1.3])";
+ };
+ class IdleOut
+ {
+ sound[] = {"ca\sounds\vehicles\water\rhib\ext-boat-engine-idle-03", db-5, 1.0, 150};
+ frequency = "1";
+ volume = "engineOn*(rpm factor[0.3, 0])";
+ };
+ class WaternoiseOutW0
+ {
+ sound[] = {"ca\sounds\vehicles\water\water_sfx\ext-water-noise-nospeed", db-8, 1.0, 100};
+ frequency = "1";
+ volume = "(speed factor[7, 0])";
+ };
+ class WaternoiseOutW1
+ {
+ sound[] = {"ca\sounds\vehicles\water\water_sfx\ext-boat-lospd-noise-02", db-8, 1.0, 100};
+ frequency = "1";
+ volume = "((speed factor[2, 12]) min (speed factor[12, 2]))";
+ };
+ class WaternoiseOutW2
+ {
+ sound[] = {"ca\sounds\vehicles\water\water_sfx\ext-boat-hispd-noise-02", db-8, 1.0, 100};
+ frequency = "1";
+ volume = "(speed factor[9, 18.7])";
+ };
+ };
+ class ViewPilot: ViewPilot
+ {
+ initFov = 0.7;
+ minFov = 0.25;
+ maxFov = 1.4;
+ initAngleX = 0;
+ minAngleX = -65;
+ maxAngleX = 85; //Rg
+ initAngleY = 0;
+ minAngleY = -150;
+ maxAngleY = 150; //Rg
+ };
+//searchlight
+ class Reflectors
+ {
+ class main_reflector
+ {
+ color[] = {0.8, 0.8, 0.9, 1.0};
+ ambient[] = {0.1, 0.1, 0.1, 1.0};
+ position = "light";
+ direction = "lightEnd";
+ hitpoint = "light";
+ selection = "light";
+ size = 1.0;
+ brightness = 5.0;
+ };
+ };
+//blinkers
+ class MarkerLights
+ {
+ class RedStill
+ {
+ name = "red_light";
+ color[] = {1.0, 0.1, 0.1, 1};
+ ambient[] = {0.1, 0.01, 0.01, 1};
+ brightness = 0.01;
+ blinking = false;
+ };
+ class GreenStill
+ {
+ name = "green_light";
+ color[] = {0.1, 1.0, 0.1, 1};
+ ambient[] = {0.01, 0.1, 0.01, 1};
+ brightness = 0.01;
+ blinking = false;
+ };
+ class WhiteStill
+ {
+ name = "white_light";
+ color[] = {1.0, 1.0, 1.0, 1};
+ ambient[] = {0.1, 0.1, 0.1, 1};
+ brightness = 0.01;
+ blinking = false;
+ };
+ };
+};
+
+class Submarine_DZE: Submarine_DZE_base
+{
+ scope = 2;
+ displayName = $STR_VEH_NAME_SUBMARINE;
+ transportMaxMagazines = 360;
+ transportMaxWeapons = 80;
+ transportMaxBackpacks = 20;
+};
\ No newline at end of file
diff --git a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp
index 90efa4765..7609b527c 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp
@@ -707,6 +707,7 @@ class CfgVehicles
#include "Boat\smallboat.hpp"
#include "Boat\JetSkiYanahui.hpp"
#include "Boat\Seafox.hpp"
+ #include "Boat\Submarine.hpp"
//Epoch Parachute
#include "Parachute.hpp"
diff --git a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayBackpackInfo.sqf b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayBackpackInfo.sqf
index 2125db50d..d2cf13652 100644
--- a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayBackpackInfo.sqf
+++ b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayBackpackInfo.sqf
@@ -32,23 +32,23 @@ if (Z_SingleCurrency) then {
"![]()
" +
"%9: %2
" +
"%10: %3
" +
- "%12: %6 %4
" +
- "%11: %5 %7
" +
+ "%12: %6 %7
" +
+ "%11: %5 %4
" +
"%14:
%8
",
_picture,
_display,
_class,
CurrencyName,
if (_sellPrice >= 0) then {[_sellPrice] call BIS_fnc_numberText;} else {"";},
- if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {"";},
- CurrencyName,
+ if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
+ if (_buyPrice >= 0) then {CurrencyName} else {""},
_transportMaxMagazines,
localize "STR_EPOCH_NAME",
localize "STR_EPOCH_CLASS",
localize "STR_EPOCH_PLAYER_292",
localize "STR_EPOCH_PLAYER_291",
"\z\addons\dayz_code\gui\gear\gear_ui_slots_items_white.paa",
- localize "STR_EPOCH_CARGO_SPACE"
+ localize "STR_EPOCH_CARGO_SPACE"
];
} else {
_picSell = "";
@@ -60,6 +60,8 @@ if (Z_SingleCurrency) then {
if (_buyPrice >= 0) then {
_picBuy = getText (configFile >> 'CfgMagazines' >> _buyCurrency >> 'picture');
_buyCurrency = getText (configFile >> 'CfgMagazines' >> _buyCurrency >> 'displayName');
+ } else {
+ _buyCurrency = "";
};
_formattedText = format [
@@ -74,7 +76,7 @@ if (Z_SingleCurrency) then {
_class,
_buyCurrency,
if (_sellPrice >= 0) then {_sellPrice} else {"";},
- if (_buyPrice >= 0) then {_buyPrice} else {"";},
+ if (_buyPrice >= 0) then {_buyPrice} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
_sellCurrency,
_transportMaxMagazines,
localize "STR_EPOCH_NAME",
diff --git a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayItemInfo.sqf b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayItemInfo.sqf
index 1aac58bbc..546dec199 100644
--- a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayItemInfo.sqf
+++ b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayItemInfo.sqf
@@ -57,19 +57,20 @@ if (Z_SingleCurrency) then {
"![]()
" +
"%8: %2
" +
"%9: %3
" +
- "%11: %6 %7
" +
+ "%11: %6 %12
" +
"%10: %5 %7
",
_picture,
_display,
_class,
'lazy',
if (_sellPrice >= 0) then {[_sellPrice] call BIS_fnc_numberText;} else {"";},
- if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {"";},
+ if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
CurrencyName,
localize "STR_EPOCH_NAME",
localize "STR_EPOCH_CLASS",
localize "STR_EPOCH_PLAYER_292",
- localize "STR_EPOCH_PLAYER_291"
+ localize "STR_EPOCH_PLAYER_291",
+ if (_buyPrice >= 0) then {CurrencyName} else {""}
];
} else {
_picSell = "";
@@ -81,7 +82,10 @@ if (Z_SingleCurrency) then {
if (_buyPrice >= 0) then {
_picBuy = getText (configFile >> "CfgMagazines" >> _buyCurrency >> "picture");
_buyCurrency = getText (configFile >> "CfgMagazines" >> _buyCurrency >> "displayName");
+ } else {
+ _buyCurrency = "";
};
+
_formattedText = format [
"![]()
" +
"%11: %2
" +
@@ -93,7 +97,7 @@ if (Z_SingleCurrency) then {
_class,
'lazy',
if (_sellPrice >= 0) then {_sellPrice} else {"";},
- if (_buyPrice >= 0) then {_buyPrice} else {"";},
+ if (_buyPrice >= 0) then {_buyPrice} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
_sellCurrency,
_picSell,
_buyCurrency,
diff --git a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayVehicleInfo.sqf b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayVehicleInfo.sqf
index faed7eabd..054e0ffab 100644
--- a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayVehicleInfo.sqf
+++ b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayVehicleInfo.sqf
@@ -117,7 +117,7 @@ if (Z_SingleCurrency) then {
"![]()
" +
"%10: %2
" +
"%11: %3
" +
- "%13: %6 %7
" +
+ "%13: %6 %27
" +
"%12: %5 %7
" +
"%14:
%8
%9
%4
" +
"%17: %18 %24: %25
" + // Armor / Seats
@@ -127,7 +127,7 @@ if (Z_SingleCurrency) then {
_class,
_transportmaxBackpacks,
if (_sellPrice >= 0) then {[_sellPrice] call BIS_fnc_numberText;} else {"";},
- if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {"";},
+ if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
CurrencyName,
_transportMaxWeapons,
_transportMaxMagazines,
@@ -147,7 +147,8 @@ if (Z_SingleCurrency) then {
_maxSpeed,
localize "STR_EPOCH_SEATS",
_seats,
- "\z\addons\dayz_code\gui\gear\gear_ui_slots_backpacks_white.paa"
+ "\z\addons\dayz_code\gui\gear\gear_ui_slots_backpacks_white.paa",
+ if (_buyPrice >= 0) then {CurrencyName} else {""}
];
} else {
_picSell = "";
@@ -159,6 +160,8 @@ if (Z_SingleCurrency) then {
if (_buyPrice >= 0) then {
_picBuy = getText (configFile >> 'CfgMagazines' >> _buyCurrency >> 'picture');
_buyCurrency = getText (configFile >> 'CfgMagazines' >> _buyCurrency >> 'displayName');
+ } else {
+ _buyCurrency = "";
};
_formattedText = format [
@@ -175,7 +178,7 @@ if (Z_SingleCurrency) then {
_class,
_transportmaxBackpacks,
if (_sellPrice >= 0) then {_sellPrice} else {"";},
- if (_buyPrice >= 0) then {_buyPrice} else {"";},
+ if (_buyPrice >= 0) then {_buyPrice} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
_buyCurrency,
_transportMaxWeapons,
_transportMaxMagazines,
diff --git a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayWeaponInfo.sqf b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayWeaponInfo.sqf
index 497ae2a91..47ff426d4 100644
--- a/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayWeaponInfo.sqf
+++ b/SQF/dayz_code/actions/AdvancedTrading/functions/z_at_displayWeaponInfo.sqf
@@ -66,19 +66,20 @@ if (Z_SingleCurrency) then {
"![]()
" +
"%8: %2
" +
"%9: %3
" +
- "%11: %6 %7
" +
+ "%11: %6 %12
" +
"%10: %5 %7
",
_picture,
_display,
_class,
_magText,
if (_sellPrice >= 0) then {[_sellPrice] call BIS_fnc_numberText;} else {"";},
- if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {"";},
+ if (_buyPrice >= 0) then {[_buyPrice] call BIS_fnc_numberText;} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
CurrencyName,
localize "STR_EPOCH_NAME",
localize "STR_EPOCH_CLASS",
localize "STR_EPOCH_PLAYER_292",
- localize "STR_EPOCH_PLAYER_291"
+ localize "STR_EPOCH_PLAYER_291",
+ if (_buyPrice >= 0) then {CurrencyName} else {""}
];
} else {
_picSell = "";
@@ -90,7 +91,10 @@ if (Z_SingleCurrency) then {
if (_buyPrice >= 0) then {
_picBuy = getText (configFile >> 'CfgMagazines' >> _buyCurrency >> 'picture');
_buyCurrency = getText (configFile >> 'CfgMagazines' >> _buyCurrency >> 'displayName');
+ } else {
+ _buyCurrency = "";
};
+
_formattedText = format [
"![]()
" +
"%11: %2
" +
@@ -102,7 +106,7 @@ if (Z_SingleCurrency) then {
_class,
_magText,
if (_sellPrice >= 0) then {_sellPrice} else {"";},
- if (_buyPrice >= 0) then {_buyPrice} else {"";},
+ if (_buyPrice >= 0) then {_buyPrice} else {localize "STR_EPOCH_TRADE_UNBUYABLE";},
_sellCurrency,
_buyCurrency,
_picSell,
diff --git a/SQF/dayz_code/compile/player_forceSave.sqf b/SQF/dayz_code/compile/player_forceSave.sqf
index 59a9ecdef..8259f8ba5 100644
--- a/SQF/dayz_code/compile/player_forceSave.sqf
+++ b/SQF/dayz_code/compile/player_forceSave.sqf
@@ -7,10 +7,10 @@ Opens player inventory to save
_magazineArray = [] call player_countMagazines;
if ((count _magazineArray) > 0) then {
- PVDZ_plr_Save = [player, if (player isKindOf "PZombie_VB") then {nil} else {_magazineArray},dayz_onBack];
+ PVDZ_plr_Save = [player, if (player isKindOf "PZombie_VB") then {nil} else {_magazineArray},dayz_onBack,weapons player];
publicVariableServer "PVDZ_plr_Save";
};
//diag_log format["Player_forceSave with magazines: %1",_magazineArray];
-
+
dayz_lastSave = diag_tickTime;
diff --git a/SQF/dayz_code/compile/player_regularSave.sqf b/SQF/dayz_code/compile/player_regularSave.sqf
index f0605d789..1f63a5bca 100644
--- a/SQF/dayz_code/compile/player_regularSave.sqf
+++ b/SQF/dayz_code/compile/player_regularSave.sqf
@@ -4,7 +4,7 @@
Email: N/A
Creation date: 2020-12-30 17:20:00
- Last modified time: 2020-12-30 17:34:00
+ Last modified time: 2021-03-08 14:04:00
Description:
Requests a simple save for the player object.
Example:
@@ -13,5 +13,5 @@
Nothing
*/
-PVDZ_plr_Save = [player,nil,dayz_onBack];
+PVDZ_plr_Save = [player,nil,dayz_onBack,weapons player];
publicVariableServer "PVDZ_plr_Save";
\ No newline at end of file
diff --git a/SQF/dayz_code/config.cpp b/SQF/dayz_code/config.cpp
index 5997e3d0a..50a6ab9f5 100644
--- a/SQF/dayz_code/config.cpp
+++ b/SQF/dayz_code/config.cpp
@@ -114,6 +114,7 @@ class DefaultEventhandlers {
#include "Configs\CfgGlasses.hpp"
#include "Configs\CfgArma.hpp"
#include "Configs\CfgRecoils.hpp"
+#include "Configs\CfgParticles.hpp"
//#include "Configs\RadioProtocol.hpp"
//#include "gui\padlock\padlock_ui.hpp"
diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml
index 5bf0c5e8d..429efe683 100644
--- a/SQF/dayz_code/stringtable.xml
+++ b/SQF/dayz_code/stringtable.xml
@@ -13471,6 +13471,11 @@
Motorrad M1030 (Grün)
Мотоцикл M1030 (Зелёный)
+
+ Submarine
+ U-Boot
+ Подводная лодка
+
RHIB (M2)
НЛЖК (M2)
@@ -13478,7 +13483,7 @@
RHIB (MK 19)
НЛЖК (MK 19)
-
+
PBX Rubber Boat
Моторная лодка ПВХ
@@ -28943,6 +28948,11 @@
Etwas Wechselgeld ist in deinem Inventar verborgen. Reduziere die Gegenstände in deinem Inventar, um das Wechselgeld sichtbar zu machen!
Некоторые изменения скрыты в вашем инвентаре. Уменьшите количество предметов в инвентаре, чтобы увидеть изменения!
+
+ Unbuyable
+ Nicht kaufbar
+ Невозможно купить
+
diff --git a/SQF/dayz_server/compile/server_playerSync.sqf b/SQF/dayz_server/compile/server_playerSync.sqf
index 3ae756a3d..1ef129ebb 100644
--- a/SQF/dayz_server/compile/server_playerSync.sqf
+++ b/SQF/dayz_server/compile/server_playerSync.sqf
@@ -3,6 +3,7 @@
local _character = _this select 0;
local _magazines = _this select 1;
local _dayz_onBack = _this select 2;
+local _weapons = _this select 3;
local _characterID = _character getVariable ["characterID","0"];
local _playerUID = getPlayerUID _character;
local _charPos = getPosATL _character;
@@ -53,7 +54,7 @@ local _charPosLen = count _charPos;
local _magTemp = [];
if (!isNil "_magazines") then {
- _playerGear = [weapons _character,_magazines,_dayz_onBack];
+ _playerGear = [_weapons,_magazines,_dayz_onBack];
_character setVariable["ServerMagArray",[_magazines,_dayz_onBack], false];
} else {
//check Magazines everytime they aren't sent by player_forceSave
@@ -78,7 +79,7 @@ if (!isNil "_magazines") then {
_magazines = _magTemp - ["0"];
_magazines = [_magazines, (_lastMagazines select 1)];
_character setVariable["ServerMagArray",_magazines, false];
- _playerGear = [weapons _character,_magazines select 0,_magazines select 1];
+ _playerGear = [_weapons,_magazines select 0,_magazines select 1];
};
};
diff --git a/SQF/dayz_server/compile/updateObject_functions.sqf b/SQF/dayz_server/compile/updateObject_functions.sqf
index 5a27c372c..a85bf7498 100644
--- a/SQF/dayz_server/compile/updateObject_functions.sqf
+++ b/SQF/dayz_server/compile/updateObject_functions.sqf
@@ -88,8 +88,8 @@ server_obj_dam = {
_array set [count _array,[(_hit select 1),0]];
};
} count _hitpoints;
-
- if (_allFixed && {!_totalDmg}) then {_object setDamage 0;};
+
+ if (_allFixed && !_totalDmg) then {_object setDamage 0;};
if (_forced) then {
if (_object in needUpdate_objects) then {needUpdate_objects = needUpdate_objects - [_object];};
diff --git a/SQF/dayz_server/system/dynamic_vehicle.sqf b/SQF/dayz_server/system/dynamic_vehicle.sqf
index 0f4d64ad0..ab34c26d3 100644
--- a/SQF/dayz_server/system/dynamic_vehicle.sqf
+++ b/SQF/dayz_server/system/dynamic_vehicle.sqf
@@ -216,7 +216,8 @@ if (toLower worldName in ["caribou","chernarus","cmr_ovaron","dayznogova","dingo
["RHIB2Turret_DZE",_Ratio1],
["Smallboat_1_DZE",_Ratio3],
["Smallboat_2_DZE",_Ratio3],
- ["Zodiac_DZE",_Ratio3]
+ ["Zodiac_DZE",_Ratio3],
+ ["Submarine_DZE",_Ratio3]
];
};