Jump to content

[TUTORIAL] Remove/Change Trading Animations (for faster trading)


Gr8

Recommended Posts

якщо ми видалимо анімації ремесло), зміни в  player_craftItem.sqf

 

1./*
2.        DayZ Epoch Crafting 0.3
3.        Modified By [GG] Gr8Boi for no animation
4.        Made for DayZ Epoch && Unleashed by [VB]AWOL please ask permission to use/edit/distrubute email [email protected].
5.        Thanks to thevisad for help with the spawn call fixes.
6. 
7.USAGE EXAMPLE:
8.class ItemActions
9.{
10.        class Crafting
11.        {
12.                text = "Craft Tent";
13.                script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; // [Class of itemaction,CfgMagazines || CfgWeapons, item]
14.                neednearby[] = {"workshop","fire"};
15.                requiretools[] = {"ItemToolbox","ItemKnife"}; // (cfgweapons only)
16.                output[] = {{"ItemTent",1}}; // (CfgMagazines, qty)
17.                input[] = {{"ItemCanvas",2},{"ItemPole",2}}; // (CfgMagazines, qty)
18.                inputstrict = true; // (CfgMagazines input without inheritsFrom) Optional
19.                inputweapons[] = {"ItemToolbox"}; // consume toolbox (cfgweapons only)
20.                outputweapons[] = {"ItemToolbox"}; // return toolbox (cfgweapons only)
21.        };
22.};
23.*/
24.private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];
25. 
26.if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_63") , "PLAIN DOWN"]; };
27.DZE_ActionInProgress = true;
28. 
29.// This is used to find correct recipe based what itemaction was click allows multiple recipes per item.
30._crafting = _this select 0;
31. 
32.// This tells the script what type of item we are clicking on
33._baseClass = _this select 1;
34. 
35._item =  _this select 2;
36. 
37._abort = false;
38._distance = 3;
39._reason = "";
40._waterLevel = 0;
41._outputWeapons = [];
42._selectedRecipeOutput = [];
43._onLadder =     (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
44._canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
45. 
46.// Need Near Requirements
47._needNear = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "neednearby");
48.if("fire" in _needNear) then {
49.        _isNear = {inflamed _x} count (getPosATL player nearObjects _distance);
50.        if(_isNear == 0) then {
51.                _abort = true;
52.                _reason = "fire";
53.        };
54.};
55.if("workshop" in _needNear) then {
56.        _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
57.        if(_isNear == 0) then {
58.                _abort = true;
59.                _reason = "workshop";
60.        };
61.};
62.if(_abort) exitWith {
63.        cutText [format[(localize "str_epoch_player_149"),_reason,_distance], "PLAIN DOWN"];
64.        DZE_ActionInProgress = false;
65.};
66. 
67.// diag_log format["Checking for fire: %1", _isFireNear];
68. 
69.if (_canDo) then {
70. 
71.        _selectedRecipeTools = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "requiretools");
72.        _selectedRecipeOutput = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "output");
73.        _selectedRecipeInput = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "input");
74.        _selectedRecipeInputStrict = if ((isNumber (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputstrict")) && (getNumber (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputstrict") > 0)) then {true} else {false};
75.        _outputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "outputweapons");
76.        _inputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputweapons");
77. 
78.        _sfx = getText(configFile >> _baseClass >> _item >> "sfx");
79.        if(_sfx == "") then {
80.                _sfx = "repair";
81.        };
82. 
83.        _randomOutput = 0;
84.        if(isNumber (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "randomOutput")) then {
85.                _randomOutput = getNumber(configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "randomOutput");
86.        };
87. 
88.        _craft_doLoop = true;
89.        _tradeComplete = 0;
90. 
91.        while {_craft_doLoop} do {
92. 
93.                _temp_removed_array = [];
94. 
95.                _missing = "";
96.                _missingTools = false;
97.                {
98.                        _hastoolweapon = _x in weapons player;
99.                        if(!_hastoolweapon) exitWith { _craft_doLoop = false; _missingTools = true; _missing = _x; };
100.                } forEach _selectedRecipeTools;
101. 
102.                if(!_missingTools) then {
103. 
104. 
105.                        // Dry run to see if all parts are available.
106.                        _proceed = true;
107.                        if (count _selectedRecipeInput > 0) then {
108.                                {
109.                                        _itemIn = _x select 0;
110.                                        _countIn = _x select 1;
111. 
112.                                        _qty = { (_x == _itemIn) || (!_selectedRecipeInputStrict && configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
113. 
114.                                        if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
115. 
116.                                } forEach _selectedRecipeInput;
117.                        };
118. 
119.                        // If all parts proceed
120.                        if (_proceed) then {
121. 
122.                                cutText [(localize "str_epoch_player_62"), "PLAIN DOWN"];
123. 
124. 
125.                                        _removed_total = 0; // count total of removed items
126.                                        _tobe_removed_total = 0; // count total of all to be removed items
127.                                        _waterLevel_lowest = 0; // find the lowest _waterLevel
128.                                        // Take items
129.                                        {
130.                                                _removed = 0;
131.                                                _itemIn = _x select 0;
132.                                                _countIn = _x select 1;
133.                                                // diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
134.                                                _tobe_removed_total = _tobe_removed_total + _countIn;
135. 
136.                                                // Preselect the item
137.                                                {
138.                                                        _configParent = configName(inheritsFrom(configFile >> "cfgMagazines" >> _x));
139.                                                        if ((_x == _itemIn) || (!_selectedRecipeInputStrict && _configParent == _itemIn)) then {
140.                                                                // Get lowest waterlevel
141.                                                                if ((_x == "ItemWaterbottle") ||( _configParent == "ItemWaterbottle")) then {
142.                                                                        _waterLevel = floor((getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz")) - 1);
143.                                                                        if (_waterLevel_lowest == 0 || _waterLevel < _waterLevel_lowest) then {
144.                                                                                _waterLevel_lowest = _waterLevel;
145.                                                                        };
146.                                                                };
147.                                                        };
148.                                                } forEach magazines player;
149. 
150.                                                {
151.                                                        _configParent = configName(inheritsFrom(configFile >> "cfgMagazines" >> _x));
152.                                                        if( (_removed < _countIn) && ((_x == _itemIn) || (!_selectedRecipeInputStrict && _configParent == _itemIn))) then {
153.                                                                if ((_waterLevel_lowest == 0) || ((_waterLevel_lowest > 0) && (getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz") == _waterLevel_lowest))) then {
154.                                                                        _num_removed = ([player,_x] call BIS_fnc_invRemove);
155.                                                                }
156.                                                                else {
157.                                                                        _num_removed = 0;
158.                                                                };
159.                                                                _removed = _removed + _num_removed;
160.                                                                _removed_total = _removed_total + _num_removed;
161.                                                                if(_num_removed >= 1) then {
162.                                                                        //diag_log format["debug remove: %1 of: %2", _configParent, _x];
163.                                                                        if (_x == "ItemWaterbottle" || _configParent == "ItemWaterbottle") then {
164.                                                                                _waterLevel = floor((getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz")) - 1);
165.                                                                        };
166.                                                                        _temp_removed_array set [count _temp_removed_array,_x];
167.                                                                };
168.                                                        };
169.                                                } forEach magazines player;
170. 
171.                                        } forEach _selectedRecipeInput;
172. 
173.                                        //diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];
174. 
175.                                        // Only proceed if all parts were removed successfully
176.                                        if(_removed_total == _tobe_removed_total) then {
177.                                                _num_removed_weapons = 0;
178.                                                {
179.                                                        _num_removed_weapons = _num_removed_weapons + ([player,_x] call BIS_fnc_invRemove);
180.                                                } forEach _inputWeapons;
181.                                                if (_num_removed_weapons == (count _inputWeapons)) then {
182.                                                        if(_randomOutput == 1) then {
183.                                                                if (!isNil "_outputWeapons" && count _outputWeapons > 0) then {
184.                                                                        _selectedWeapon = _outputWeapons call BIS_fnc_selectRandom;
185.                                                                        _outputWeapons = [_selectedWeapon];
186.                                                                };
187.                                                                if (!isNil "_selectedRecipeOutput" && count _selectedRecipeOutput > 0) then {
188.                                                                        _selectedMag = _selectedRecipeOutput call BIS_fnc_selectRandom;
189.                                                                        _selectedRecipeOutput = [_selectedMag];
190.                                                                };
191.                                                                // exit loop
192.                                                                _craft_doLoop = false;
193.                                                        };
194.                                                        {
195.                                                                player addWeapon _x;
196.                                                        } forEach _outputWeapons;
197.                                                        {
198. 
199.                                                                _itemOut = _x select 0;
200.                                                                _countOut = _x select 1;
201. 
202.                                                                if (_itemOut == "ItemWaterbottleUnfilled") then {
203. 
204.                                                                        if (_waterLevel > 0) then {
205.                                                                                _itemOut = format["ItemWaterbottle%1oz",_waterLevel];
206.                                                                        };
207. 
208.                                                                };
209. 
210.                                                                // diag_log format["Checking for water level: %1", _waterLevel];
211. 
212.                                                                for "_x" from 1 to _countOut do {
213.                                                                        player addMagazine _itemOut;
214.                                                                };
215. 
216.                                                                _textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
217. 
218.                                                                // Add crafted item
219.                                                                cutText [format[(localize "str_epoch_player_150"),_textCreate,_countOut], "PLAIN DOWN"];
220.                                                                // sleep here
221.                                                                sleep 1;
222. 
223.                                                        } forEach _selectedRecipeOutput;
224. 
225.                                                        _tradeComplete = _tradeComplete+1;
226.                                                };
227. 
228.                                        } else {
229.                                                // Refund parts since we failed
230.                                                {player addMagazine _x; } forEach _temp_removed_array;
231. 
232.                                                cutText [format[(localize "str_epoch_player_151"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];
233.                                        };
234. 
235.                        } else {
236.                                _textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
237.                                cutText [format[(localize "str_epoch_player_152"),_missingQty, _textMissing,_tradeComplete], "PLAIN DOWN"];
238.                                _craft_doLoop = false;
239.                        };
240.                } else {
241.                        _textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
242.                        cutText [format[(localize "STR_EPOCH_PLAYER_137"),_textMissing], "PLAIN DOWN"];
243.                        _craft_doLoop = false;
244.                };
245.        };
246.} else {
247.        cutText [(localize "str_epoch_player_64"), "PLAIN DOWN"];
248.};
249.DZE_ActionInProgress = false;

 

Link to comment
Share on other sites

 

now i try copy the trade_items.sqf to trade_items_old.sqf but it doesn't work.

Trade start write the trade-letters but nothing change in inventory.

 

Here is my copy

private ["_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_textPartIn","_textPartOut","_bos","_needed","_started","_finished","_animState","_isMedic","_total_parts_out","_abort","_removed","_activatingPlayer","_traderID","_done"];
// [part_out,part_in, qty_out, qty_in,];
 
if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_103") , "PLAIN DOWN"] };
DZE_ActionInProgress = true;
 
_activatingPlayer = player;
 
_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;
if(_buy_o_sell == "sell") then {
        _bos = 1;
};
 
_abort = false;
 
// perform number of total trades
r_autoTrade = true;
while {r_autoTrade} do {
 
        _removed = 0;
        cutText [(localize "str_epoch_player_105"), "PLAIN DOWN"];
         
      r_interrupt = false;
        r_doLoop = true;
        _started = false;
        _finished = false;
       
 
        //////////////
       
            _position = getPos player; // gets the position [x,y,z]
        _posX = _position select 0; // 1th element -> x
        _posY = _position select 1; // 2nd element -> y
 
        _counter = 0.0; // animation duration checker
       
        while {r_doLoop} do {
                _positionCheck = getPos player;
                _newX = _positionCheck select 0; // 1th element -> x
                _newY = _positionCheck select 1; // 2nd element -> y
 
                _counter = _counter + 0.1; // same as the sleep timer: 0.1 sec
 
                if (_counter >  1.5) then { // amount of secs the animation takes estimated ? 2 secs?
                        r_doLoop = false;
                                                _counter = 0.0;
                        _finished = true;
                                               
                };
                if (_newX != _posX || _newY != _posY) then {
                                               
                        r_doLoop = false;
                };
                sleep 0.1;
        };
        r_doLoop = false;
 
        if (!_finished) exitWith {
                r_interrupt = false;
                if (vehicle player == player) then {
                        [objNull, player, rSwitchMove,""] call RE;
                        player playActionNow "stop";
                };
                cutText [(localize "str_epoch_player_106") , "PLAIN DOWN"];
        };
 
        if (_finished) then {
               
                _canAfford = false;
                if(_bos == 1) then {
                       
                        //sell
                        _qty = {_x == _part_in} count magazines player;
                        if (_qty >= _qty_in) then {
                                _part_inClass =  configFile >> "CfgMagazines" >> _part_in;
                                _removed = _removed + ([player,_part_inClass,_qty_in] call BIS_fnc_invRemove);
                                if (_removed == _qty_in) then {
                                        _canAfford = [[[_part_out,_qty_out]],1] call epoch_returnChange;
                                };
                        };
 
                } else {
                       
                        //buy
                        _trade_total = [[_part_in,_qty_in]] call epoch_itemCost;
                        _total_currency = call epoch_totalCurrency;
                        _return_change = _total_currency - _trade_total;
                        if (_return_change >= 0) then {
                                _canAfford = true;
                        };
                };
 
                diag_log format["DEBUG TRADER DONE?: %1", _canAfford];
               
                if (_canAfford) then {
                       
                        // Continue with trade.
                        if (isNil "_part_in") then { _part_in = "Unknown Item" };
                        if (isNil "inTraderCity") then { inTraderCity = "Unknown Trader City" };
                        if(_bos == 1) then {
                                // Selling
                                PVDZE_obj_Trade = [_activatingPlayer,_traderID,_bos,_part_in,inTraderCity,_part_out,_qty_out];
                        } else {
                                // Buying
                                PVDZE_obj_Trade = [_activatingPlayer,_traderID,_bos,_part_out,inTraderCity,_part_in,_qty_in];
                        };
                        publicVariableServer  "PVDZE_obj_Trade";
 
                        if(_bos == 0) then {
                                // only wait for result when buying
                                waitUntil {!isNil "dayzTradeResult"};
                                if(dayzTradeResult == "PASS") then {
                                        _done = [[[_part_in,_qty_in]],0] call epoch_returnChange;
                                        if (_done) then {
                                                for "_x" from 1 to _qty_out do {
                                                        player addMagazine _part_out;
                                                };
                                                cutText [format[(localize "str_epoch_player_186"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
                                        };
                                } else {
                                        _abort = true;
                                        cutText [format[(localize "str_epoch_player_183"),_textPartOut] , "PLAIN DOWN"];
                                };
                        } else {
                                cutText [format[(localize "str_epoch_player_186"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
                        };
                        dayzTradeResult = nil;
                       
                } else {
                        _qty = {_x == _part_in} count magazines player;
                        _needed =  _qty_in - _qty;
                        cutText [format[(localize "str_epoch_player_184"),_needed,_textPartIn] , "PLAIN DOWN"];
                        _abort = true;
                };
        };
        if(_abort) exitWith {r_autoTrade = false};
       
        sleep 1;
};
 
DZE_ActionInProgress = false;

Kann noone help me? Please !!!

Link to comment
Share on other sites

Kann noone help me? Please !!!

 

You dont copy your trade_items.sqf to trade_items_old.sqf, you simply copy the original trade_items_old.sqf and paste it in the mission file with all the other trade files

Link to comment
Share on other sites

  • 2 weeks later...

Maybe good to know for people who use Config Traders.

Don't use the Player_TradingMenuHive, but get the Player_TradingMenuConfig.

 

Maybe most of you know this already, but i have bin struggeling for hours to get my traders to show up newly added items and prices until i found this in the original compiles.sqf:

if (DZE_ConfigTrader) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuConfig.sqf";
}else{
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_traderMenuHive.sqf";
Link to comment
Share on other sites

  • 3 weeks later...

I'm really confused right now.. 

To sell the Trade_Items_Old which file to i need to copy, where or what i need to add?

If any could explain me that would be much appreciated!

 

Search for Trade_Items_Old File in your dayz_code, copy the exact file in your trade folder in your mission pbo

Link to comment
Share on other sites

  • 2 weeks later...

Okay thanks it works fine but now another problem occurs 

as example selling an lapua to hero everything works great sells it without animation but won't receive money from trader. 

 

Then There a problem with your trader Files, make sure they are what i provided you with

Link to comment
Share on other sites

This is how i have done the trade_items.sqf,

private ["_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_textPartIn","_textPartOut","_bos","_needed","_started","_finished","_animState","_isMedic","_total_parts_out","_abort","_removed","_activatingPlayer","_traderID","_done"];
// [part_out,part_in, qty_out, qty_in,];

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_103") , "PLAIN DOWN"] };
DZE_ActionInProgress = true;

_activatingPlayer = player;

_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;
if(_buy_o_sell == "sell") then {
	_bos = 1;
};

_abort = false;

// perform number of total trades
r_autoTrade = true;
while {r_autoTrade} do {

	_removed = 0;

	// check if current magazine count is greater than 20

	if ((count (magazines player)) > 20) exitWith { cutText [(localize "STR_DAYZ_CODE_2"), "PLAIN DOWN"]; r_autoTrade = false};
	
	_canAfford = false;
	if(_bos == 1) then {
		
		//sell
		_qty = {_x == _part_in} count magazines player;
		if (_qty >= _qty_in) then {
			_canAfford = true;
		};

	} else {
		
		//buy
		_trade_total = [[_part_in,_qty_in]] call epoch_itemCost;
		_total_currency = call epoch_totalCurrency;
		_return_change = _total_currency - _trade_total; 
		if (_return_change >= 0) then {
			_canAfford = true;
		};
	};
	
	if(!_canAfford) exitWith {
		_qty = {_x == _part_in} count magazines player;
		_needed =  _qty_in - _qty;
		cutText [format[(localize "str_epoch_player_184"),_needed,_textPartIn] , "PLAIN DOWN"];
		r_autoTrade = false
	};
	
	cutText [(localize "str_epoch_player_105"), "PLAIN DOWN"];

	
	//_dis=20;
	//_sfx = "repair";
	//[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
	//[player,_dis,true,(getPosATL player)] spawn player_alertZombies;

	r_interrupt = false;
	r_doLoop = true;
	_finished = false;
	
	while {r_doLoop} do {
		sleep 1.2;
		r_doLoop = false;
		_finished = true;
	};

	if (r_interrupt) exitWith {
		r_interrupt = false;
		cutText [(localize "str_epoch_player_106") , "PLAIN DOWN"];
	};

	if (_finished) then {

		//diag_log format["DEBUG TRADER DONE?: %1", _canAfford];
		
		// Continue with trade.
		if (isNil "_part_in") then { _part_in = "Unknown Item" };
		if (isNil "inTraderCity") then { inTraderCity = "Unknown Trader City" };
		if(_bos == 1) then {
			// Selling
			PVDZE_obj_Trade = [_activatingPlayer,_traderID,_bos,_part_in,inTraderCity,_part_out,_qty_out];
		} else {
			// Buying
			PVDZE_obj_Trade = [_activatingPlayer,_traderID,_bos,_part_out,inTraderCity,_part_in,_qty_in];
		};
		publicVariableServer  "PVDZE_obj_Trade";

		if(_bos == 0) then {
			// only wait for result when buying
			waitUntil {!isNil "dayzTradeResult"};
			if(dayzTradeResult == "PASS") then {
				_done = [[[_part_in,_qty_in]],0] call epoch_returnChange;
				if (_done) then {
					for "_x" from 1 to _qty_out do {
						player addMagazine _part_out;
					};
					cutText [format[(localize "str_epoch_player_186"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
				};
			} else {
				_abort = true;
				cutText [format[(localize "str_epoch_player_183"),_textPartOut] , "PLAIN DOWN"];
			};
		} else {
			_part_inClass =  configFile >> "CfgMagazines" >> _part_in;
			_removed = _removed + ([player,_part_inClass,_qty_in] call BIS_fnc_invRemove);
			if (_removed == _qty_in) then {
				[[[_part_out,_qty_out]],1] call epoch_returnChange;
			};
			cutText [format[(localize "str_epoch_player_186"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
		};
		dayzTradeResult = nil;
	};
	if(_abort) exitWith {r_autoTrade = false};
	
	sleep 1;
};

DZE_ActionInProgress = false;

There is no animation, it still does the loop in 1.2 seconds, meanwhile if you move the trade cancels so works fine as i wanted :D

 

To clarifiy the changed lines:

	if(!_canAfford) exitWith {
		_qty = {_x == _part_in} count magazines player;
		_needed =  _qty_in - _qty;
		cutText [format[(localize "str_epoch_player_184"),_needed,_textPartIn] , "PLAIN DOWN"];
		r_autoTrade = false
	};
	
	cutText [(localize "str_epoch_player_105"), "PLAIN DOWN"];

	r_interrupt = false;
	r_doLoop = true;
	_finished = false;
	
	while {r_doLoop} do {
		sleep 1.2;
		r_doLoop = false;
		_finished = true;
	};

	if (r_interrupt) exitWith {
		r_interrupt = false;
		cutText [(localize "str_epoch_player_106") , "PLAIN DOWN"];
	};

	if (_finished) then {
Link to comment
Share on other sites

  • 1 month later...
  • 2 weeks later...

not working for me.

Did everything thats in install notes, but not for ...Hive, changed to ...Config - because im using ZSC_traders

 

No errors in rpt's...

 

Any info about that ? :>

 

This Script is not compatible with 3.0 SC

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...