mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-17 17:20:26 +03:00
added cancel to repair and salvage menus, added message to salvage when player does not, fixed bulk crates selling of weapons and backpacks, Can no longer place vaults on roads or within 50m of trader citys, Added now entering/leaving messages to trader citys, Added kill messages from f0rt and stapo.
150 lines
3.5 KiB
Plaintext
150 lines
3.5 KiB
Plaintext
private ["_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_traderID","_bos","_bulkItem","_bulkqty","_gold_out","_gold_qty_out","_partial_qty_out","_silver_qty_out","_needed","_activatingPlayer","_textPartIn","_textPartOut"];
|
|
// [part_out,part_in, qty_out, qty_in,"buy"];
|
|
|
|
_activatingPlayer = _this select 1;
|
|
|
|
_part_out = (_this select 3) select 0;
|
|
_part_in = (_this select 3) select 1;
|
|
_qty_out = (_this select 3) select 2;
|
|
_qty_in = (_this select 3) select 3;
|
|
_buy_o_sell = (_this select 3) select 4;
|
|
_textPartIn = (_this select 3) select 5;
|
|
_textPartOut = (_this select 3) select 6;
|
|
_traderID = (_this select 3) select 7;
|
|
_bos = 0;
|
|
_bulkqty = 0;
|
|
|
|
if(_buy_o_sell == "buy") then {
|
|
_qty = {_x == _part_in} count magazines player;
|
|
|
|
} else {
|
|
// SELL ONLY check if item is bulk
|
|
_bulkItem = "bulk_" + _part_in;
|
|
_bulkqty = {_x == _bulkItem} count magazines player;
|
|
|
|
diag_log format["DEBUG bulk: %1", _bulkItem];
|
|
|
|
|
|
_qty = {_x == _part_in} count weapons player;
|
|
_bos = 1;
|
|
};
|
|
|
|
if (_bulkqty >= 1) then {
|
|
|
|
|
|
// TODO: optimize for one db call only
|
|
|
|
_part_in = "bulk_" + _part_in;
|
|
player removeMagazine _part_in;
|
|
diag_log format["DEBUG remove magazine %1", _part_in];
|
|
|
|
// increment trader for each
|
|
for "_x" from 1 to 12 do {
|
|
["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure;
|
|
|
|
waitUntil {!isNil "dayzTradeResult"};
|
|
|
|
if(dayzTradeResult == "PASS") then {
|
|
diag_log format["DEBUG Complete Trade: %1", dayzTradeResult];
|
|
};
|
|
};
|
|
|
|
_qty_out = _qty_out * 12;
|
|
|
|
// gold = 36 copper
|
|
// gold = 6 silver
|
|
//
|
|
|
|
if (_part_out == "ItemSilverBar") then {
|
|
|
|
if (_qty_out >= 6) then {
|
|
|
|
// find number of gold
|
|
_gold_out = _qty_out / 6;
|
|
|
|
// whole number of gold bars
|
|
_gold_qty_out = floor _gold_out;
|
|
|
|
_part_out = "ItemGoldBar";
|
|
for "_x" from 1 to _gold_qty_out do {
|
|
player addMagazine _part_out;
|
|
};
|
|
|
|
// Find remainder
|
|
_partial_qty_out = (_gold_out - _gold_qty_out) * 6;
|
|
|
|
// whole number of gold bars
|
|
_silver_qty_out = floor _partial_qty_out;
|
|
|
|
_part_out = "ItemSilverBar";
|
|
for "_x" from 1 to _silver_qty_out do {
|
|
player addMagazine _part_out;
|
|
};
|
|
|
|
|
|
} else {
|
|
|
|
for "_x" from 1 to _qty_out do {
|
|
player addMagazine _part_out;
|
|
};
|
|
};
|
|
|
|
} else {
|
|
|
|
for "_x" from 1 to _qty_out do {
|
|
player addMagazine _part_out;
|
|
};
|
|
};
|
|
|
|
cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
|
|
|
|
dayzTradeResult = nil;
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (_qty >= _qty_in) then {
|
|
|
|
["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure;
|
|
|
|
waitUntil {!isNil "dayzTradeResult"};
|
|
|
|
diag_log format["DEBUG Complete Trade: %1", dayzTradeResult];
|
|
|
|
if(dayzTradeResult == "PASS") then {
|
|
|
|
for "_x" from 1 to _qty_in do {
|
|
if(_buy_o_sell == "buy") then {
|
|
player removeMagazine _part_in;
|
|
} else {
|
|
player removeWeapon _part_in;
|
|
};
|
|
};
|
|
|
|
for "_x" from 1 to _qty_out do {
|
|
if(_buy_o_sell == "buy") then {
|
|
player addWeapon _part_out;
|
|
} else {
|
|
player addMagazine _part_out;
|
|
};
|
|
};
|
|
|
|
|
|
// [player,"repair",0,false] call dayz_zombieSpeak;
|
|
cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
|
|
|
|
{player removeAction _x} forEach s_player_parts;s_player_parts = [];
|
|
s_player_parts_crtl = -1;
|
|
|
|
} else {
|
|
cutText [format[("Insufficient Stock %1"),_textPartOut] , "PLAIN DOWN"];
|
|
};
|
|
dayzTradeResult = nil;
|
|
|
|
|
|
} else {
|
|
_needed = _qty_in - _qty;
|
|
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
|
|
};
|
|
}; |