Nieechi
-
Posts
5 -
Joined
-
Last visited
Content Type
Profiles
Forums
Articles
Posts posted by Nieechi
-
-
Awesome, thanks Gr8Boi
The code I listed in my last post does that ("trying to add a medic animation and stop it so it doesn't take too long to trade") although its not very clean, it doesn't let you move and cancel until the 2 second timer is up and so from the middle of the trade till then end of that cycle you have to hold a direction in preparation for it, again, not sure why.
I can imagine some panicky moments for first time users of the server when buying high value items in that scenario lol I think I might prefer the no animation option so I'll try that out but if you can get a clean, shorter animation to work that would be perfect :)
-
hmm, did the guide instructions in the OP work for you without any modification? I wonder what was different on mine then :/
-
HMM, have got it to work with a 2 second delay using the medic animation combination:
private ["_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_textPartIn","_textPartOut","_bos","_needed","_started","_finished","_animState","_isStarted","_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"]; [1,1] call dayz_HungerThirst; player playActionNow "Medic"; //_dis=20; //_sfx = "repair"; //[player,_sfx,0,false,_dis] call dayz_zombieSpeak; //[player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; r_doLoop = true; _started = false; _finished = false; while {r_doLoop} do { _animState = animationState player; _isMedic = ["medic",_animState] call fnc_inString; if (_isMedic) then { _started = true; sleep 2; [objNull, player, rSwitchMove,""] call RE; player playActionNow "PlayerStand"; }; if (_started && !_isMedic) then { r_doLoop = false; _finished = true; }; if (r_interrupt) 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 { //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;
Weird thing is if I change the variables to PutDown / _isPutDown / putdown following the same formatting rules and capitalisation as for the medic one it doesn't work, Is the action in the DB capitalised differently from what I have listed do you think or doesn't matter?
At a loss really but at least it works with the medic animation at the moment. Obviously the "sleep 2;" line in the "r_doLoop" section can be changed to whatever you want the delay to be ^^
-
Hey,
Thanks for all the work so far, this is something i would really love on my server :) I can't get it to work though, i believe i have the latest files but it just kneels down and no trades occur, i had a bash at editing it myself but i tend to do round in circles logic wise till i forget where i am :/ i though t the error was:
while {r_doLoop} do { _animState = animationState player; _isStarted = ["putdown",_animState] call fnc_inString; if (_isStarted) then {_started = true;}; if(!_isStarted && !r_interrupt ) then { player playActionNow "PutDown"; _isStarted = true; }; if (_started && !_isStarted ) then { r_doLoop = false; sleep 1; // the amount of secs u want it to take to trade. _finished = true; }; if (r_interrupt) then { r_doLoop = false; }; sleep 0.1; };
As in if you follow it down:
_animState = hasvalue
_isStarted = true
_started = true
then the following 3 if statements in this r_doLoop dont address the case for both started and isstarted to be true and so nothing ever happens until you cancel out with an inturrupt. Also just trying to get my head around the reason for all this. When running this script i kneel down to do the putdown action but then never stand up again, i know medic animation is a loop, as in, the starting position for your character is the same as the ending one but this doesn't seem to be the case for the put down animation?
Is this possibly causing the line:
_isStarted = ["PutDown",_animState] call fnc_inString;
to always give a value and therefore this line:
if (_started && !_isStarted ) then {
to never be satisfied?
I thought this might be the case so i tried:
while {r_doLoop} do { _animState = animationState player; _isStarted = ["PutDown",_animState] call fnc_inString; if (_isStarted) then {_started = true;}; if(!_isStarted && !r_interrupt ) then { player playActionNow "PutDown"; sleep 2; [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; }; if (_started && !_isStarted ) then { _finished = true; r_doLoop = false; }; if (r_interrupt) then { r_doLoop = false; }; if (_started && _isStarted ) then { sleep 2; [objNull, player, rSwitchMove,""] call RE; player playActionNow "stop"; _finished = true; r_doLoop = false; }; sleep 0.1; };
To make it manually get up again after a certain amount of time like i think you were aiming for but now mine doesnt kneel in the first place lol, still says im trading though and never inturrupts...
Rambling aside I don't really know what i'm doing here, first attempt but i would love for this feature to work! :D
[TUTORIAL] Remove/Change Trading Animations (for faster trading)
in A2: Epoch Mods (1.0.5.1)
Posted
It is working, Gr8Boi's version, the one in the OP download link currently works with a timer but no animation i believe, timer set to 1.5 seconds (correct me if im wrong).
The code i posted abovehas a shortened animation but is still buggy and i wouldn't recommend using it.