Advertisement
Jens_Rudolph

Untitled

May 10th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQF 8.10 KB | None | 0 0
  1. #include "..\..\script_macros.hpp"
  2. /*
  3.     File: fn_processAction.sqf
  4.     Author: Bryan "Tonic" Boardwine
  5.     Edit: Jonas, xjoniassx, MineFactory (2018)
  6. */
  7. private["_vendor","_type","_itemInfo","_oldItem","_newItem","_cost","_upp","_hasLicense","_itemName","_oldVal","_ui","_progress","_pgText","_cP"];
  8. _vendor = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
  9. _type = [_this,3,"",[""]] call BIS_fnc_param;
  10. //Error check
  11. if(isNull _vendor OR EQUAL(_type,"") OR (player distance _vendor > 10)) exitWith {};
  12.  
  13. //unprocessed item,processed item, cost if no license,Text to display (I.e Processing  (percent) ..."
  14. _itemInfo = switch (_type) do {
  15.     case "oil": {[[["oil_unprocessed",1]],[["oil_processed",1]],20510,( "Öl wird raffiniert")];};
  16.     case "diamond": {[[["diamond_uncut",1]],[["diamond_cut",1]],10875,( "Diamanten werden geschliffen")];};
  17.     case "heroin": {[[["heroin_unprocessed",1]],[["heroin_processed",1]],68450,( "Heroin wird verarbeitet")];};
  18.     case "copper": {[[["copper_unrefined",1]],[["copper_refined",1]],65750,( "Kupfer wird verarbeitet")];};
  19.     case "iron": {[[["iron_unrefined",1]],[["iron_refined",1]],25250,( "Eisen wird geschmolzen")];};
  20.     case "sand": {[[["sand",1]],[["glass",1]],20000,( "Sand wird verarbeitet")];};
  21.     case "salt": {[[["salt_unrefined",1]],[["salt_refined",1]],15000,( "Salz wird raffiniert")];};
  22.     case "cocaine": {[[["cocaine_unprocessed",1]],[["cocaine_processed",1]],53500,( "Kokain wird verarbeitet")];};
  23.     case "marijuana": {[[["cannabis",1]],[["marijuana",1]],80450,( "Marihuana wird verarbeitet")];};
  24.     case "cement": {[[["rock",1]],[["cement",1]],36400,( "Zement wird gemischt")];};
  25.     case "lsd": {[[["lsdu",1]],[["lsdp",1]],80430,( "LSD wird gemischt")];};
  26.     case "uran": {[[["uranu",1]],[["uranp",1]],30450,( "Uran wird angereichert")];};
  27.     case "coal": {[[["coalu",1]],[["coalp",1]],15800,( "Kohle wird verkohlt")];};
  28.     case "carbon": {[[["carbonunrefined",1]],[["carbonRefined",1]],18000,( "Carbon werden verarbeitet")];};
  29.     case "holz": {[[["holzunrefined",1]],[["holzRefined",1]],19000,( "Holz wird geschnitzt")];};
  30.     case "schwarz": {[[["schwarzunrefined",1]],[["schwarzRefined",1]],14400,( "Schwarzpulver wird verarbeitet")];};
  31.     case "blei": {[[["bleiunrefined",1]],[["bleiRefined",1]],16750,( "Blei wird geschmolzen")];};
  32.     case "frosch": {[[["frosch_unprocessed",1]],[["frosch_processed",1]],16750,( "Frosch wird zerstückelt")];};
  33.     case "ExempleMultiProcess": {[[["peach",2],["cannabis",3],["cocaine_unprocessed",2]],[["diamond_cut",2],["marijuana",5]],350,( "Zement wird gemischt")];};
  34.     default {[];};
  35. };
  36.  
  37. //Error checking
  38. if(EQUAL(count _itemInfo,0)) exitWith {};
  39.  
  40. //Setup vars.
  41. _oldItem = SEL(_itemInfo,0);
  42. _newItem = SEL(_itemInfo,1);
  43. _cost = SEL(_itemInfo,2);
  44. _upp = SEL(_itemInfo,3);
  45. _exit = false;
  46.  
  47. _ArrayItem = [];
  48. _ItemName = [];
  49. {
  50.     _ItemSelected = _x select 0;
  51.     _ItemName pushBack _ItemSelected;
  52. } forEach _oldItem;
  53.  
  54. _itemNameInv = [];
  55. {
  56.     _item = _x select 0;
  57.     _var = ITEM_VARNAME(_item);
  58.     _itemNameInv pushBack [_var];
  59. } forEach _oldItem;
  60.  
  61. _ItemNumber = [];
  62. {
  63.     _itemNumberNow = _x select 1;
  64.     _ItemNumber pushback [_itemNumberNow];
  65. } forEach _oldItem;
  66.  
  67.  
  68. _IndexNow = -1;
  69. {
  70.     _IndexNow = _IndexNow + 1;
  71.     _ItemNameLife = (_itemNameInv select _IndexNow) select 0;
  72.     _var = ITEM_VALUE2(_ItemNameLife);
  73.     if(EQUAL(_var,0)) exitWith {
  74.         _exit = true;
  75.     };
  76.     _ItemNumberLife = (_ItemNumber select _IndexNow) select 0;
  77.     if (_var < _ItemNumberLife) exitWith {
  78.         _exit = true;
  79.     };
  80. } forEach _itemNameInv;
  81. if (_exit) exitWith {life_is_processing = false;[ "Du hast kein Item"] spawn life_fnc_nachricht;};  
  82.  
  83. _hasLicense = LICENSE_VALUE(_type,"civ");
  84.  
  85. _oldVal = count _ItemName;
  86.  
  87. _cost = _cost * _oldVal;
  88. //Some more checks
  89. if(EQUAL(_oldVal,0)) exitWith {};
  90.  
  91. //Setup our progress bar.
  92. disableSerialization;
  93. 5 cutRsc ["life_progress","PLAIN"];
  94. _ui = uiNamespace getVariable "life_progress";
  95. _progress = _ui displayCtrl 38201;
  96. _pgText = _ui displayCtrl 38202;
  97. _pgText ctrlSetText format["%2 (1%1)...","%",_upp];
  98. _progress progressSetPosition 0.01;
  99. _cP = 0.01;
  100.  
  101. life_is_processing = true;
  102.  
  103. if(_hasLicense) then {
  104.     while {true} do {
  105.         sleep  0.6;
  106.         _cP = _cP + 0.01;
  107.         _progress progressSetPosition _cP;
  108.         _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
  109.         if(_cP >= 1) exitWith {};
  110.         if(player distance _vendor > 4) exitWith {life_interrupted = true;};
  111.         if(life_interrupted) exitWith {life_interrupted = true;};
  112.         if(speed player > 1) exitWith {life_interrupted = true;};
  113.         if(animationState player != "AinvPknlMstpsnonWnonDnon_medic_1" ) then {
  114.             player action ["SwitchWeapon", player, player, 100];
  115.             player playMove "AinvPknlMstpsnonWnonDnon_medic_1";
  116.             player playActionNow "stop";
  117.             player playMove "AinvPknlMstpsnonWnonDnon_medic_1";
  118.             player playActionNow "stop";
  119.             player playMove "AinvPknlMstpsnonWnonDnon_medic_1";
  120.         };
  121.     };
  122.     if((player distance _vendor) > 4) exitWith {life_interrupted = true;[ "Du musst innerhalb von 4m bleiben, um verarbeiten zu können."] spawn life_fnc_nachricht; 5 cutText ["","PLAIN"]; life_is_processing = false;};
  123.     if(life_interrupted isEqualTo true) exitWith {life_interrupted = false; ["Verarbeiten Abgebrochen"] spawn life_fnc_nachricht; life_action_inUse = false; life_is_processing = false;};
  124.     _IndexNow = -1;
  125.     _ItemMax = [];
  126.     {
  127.         _IndexNow = _IndexNow + 1;
  128.         _ItemNameLife = (_itemNameInv select _IndexNow) select 0;
  129.         _var = ITEM_VALUE2(_ItemNameLife);
  130.         _ItemNumberLife = (_ItemNumber select _IndexNow) select 0;
  131.         _calcul = (floor ((_var)/(_ItemNumberLife)));
  132.         _ItemMax pushBack _calcul;
  133.     } forEach _itemNameInv;
  134.     _ItemMin = _ItemMax select 0;
  135.     {
  136.         if (_x<_ItemMin) then {_ItemMin=_x};
  137.     } forEach _ItemMax;
  138.     _IndexNow = -1;
  139.     {
  140.         _IndexNow = _IndexNow + 1;
  141.         _ItemNameHandle = _x select 0;
  142.         _ItemNumberHandle = _x select 1;
  143.         [false,_ItemNameHandle,((_ItemNumberHandle)*(_ItemMin))] call life_fnc_handleInv;
  144.     } forEach _oldItem;
  145.     {
  146.         _ItemNameHandle = _x select 0;
  147.         _ItemNumberHandle = _x select 1;
  148.         [true,_ItemNameHandle,((_ItemNumberHandle)*(_ItemMin))] call life_fnc_handleInv;
  149.     } forEach _newItem;
  150.     5 cutText ["","PLAIN"];
  151.     ["Fertig verarbeitet.....",false,"fast"] call life_fnc_NachrichtSys;
  152.     life_is_processing = false;
  153. } else {
  154.     ["Ohne Lizenz dauert das etwas.....",false,"fast"] call life_fnc_NachrichtSys;
  155.     while{true} do {
  156.         sleep  2;
  157.         _cP = _cP + 0.01;
  158.         _progress progressSetPosition _cP;
  159.         _pgText ctrlSetText format["%3 (%1%2)...",round(_cP * 100),"%",_upp];
  160.         if(_cP >= 1) exitWith {};
  161.         if(player distance _vendor > 4) exitWith {};
  162.         if(animationState player != "AinvPknlMstpsnonWnonDnon_medic_1" ) then {
  163.             player action ["SwitchWeapon", player, player, 100];
  164.             player playMove "AinvPknlMstpsnonWnonDnon_medic_1";
  165.             player playActionNow "stop";
  166.             player playMove "AinvPknlMstpsnonWnonDnon_medic_1";
  167.             player playActionNow "stop";
  168.             player playMove "AinvPknlMstpsnonWnonDnon_medic_1";
  169.         };
  170.     };
  171.     if(life_interrupted) exitWith {life_interrupted = false; ["Verarbeiten Abgebrochen"] spawn life_fnc_nachricht; life_action_inUse = false;};
  172.     if(player distance _vendor > 4) exitWith {[ "Du musst innerhalb von 4m bleiben, um verarbeiten zu können."] spawn life_fnc_nachricht; 5 cutText ["","PLAIN"]; life_is_processing = false;};
  173.     _IndexNow = -1;
  174.     _ItemMax = [];
  175.     {
  176.         _IndexNow = _IndexNow + 1;
  177.         _ItemNameLife = (_itemNameInv select _IndexNow) select 0;
  178.         _var = ITEM_VALUE2(_ItemNameLife);
  179.         _ItemNumberLife = (_ItemNumber select _IndexNow) select 0;
  180.         _calcul = (floor ((_var)/(_ItemNumberLife)));
  181.         _ItemMax pushBack _calcul;
  182.     } forEach _itemNameInv;
  183.     _ItemMin = _ItemMax select 0;
  184.     {
  185.         if (_x<_ItemMin) then {_ItemMin=_x};
  186.     } forEach _ItemMax;
  187.     _IndexNow = -1;
  188.     {
  189.         _IndexNow = _IndexNow + 1;
  190.         _ItemNameHandle = _x select 0;
  191.         _ItemNumberHandle = _x select 1;
  192.         [false,_ItemNameHandle,((_ItemNumberHandle)*(_ItemMin))] call life_fnc_handleInv;
  193.     } forEach _oldItem;
  194.     {
  195.         _ItemNameHandle = _x select 0;
  196.         _ItemNumberHandle = _x select 1;
  197.         [true,_ItemNameHandle,((_ItemNumberHandle)*(_ItemMin))] call life_fnc_handleInv;
  198.     } forEach _newItem;
  199.     5 cutText ["","PLAIN"];
  200.     ["Fertig verarbeitet.....",false,"fast"] call life_fnc_NachrichtSys;
  201.     life_is_processing = false;
  202. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement