Need help updating W4rgo's Smelting Script

Constrictor

Member
Can someone with fresh eyes look at where I may be going wrong with this? It does start to smelt but is not outputting tank traps, and is not taking away all of the cans?!
Code:
/*
 
Smelting script : player_smelt.sqf 1.2 - By W4rGo
 
Changelog:
 
1.3 - Fixed dupe bug removing the action, on player_addActions.sqf i added a global var smeltAction
1.2 - Added more time to smelt.
1.1 - Added glass smelting
1.0 - Basic smelting
 
 
*/
 
private ["_wait1","_wait2","_wait3","_tier11Count","_tier12Count","_tier13Count","_tier14Count","_tier15Count","_tier16Count","_tier17Count","_tier18Count","_tier19Count","_smeltedItem","_smelt","_removeTier1","_removeTier2","_removeTier3","_result","_tier11","_tier12","_tier13","_tier14","_tier15","_tier16","_tier17","_tier18","_tier19","_tier2","_tier3","_tier4","_countT1to2","_countT1to3","_countT2to3","_countT1to4","_countT2to4","_countT3to4","_mags","_tier1Count","_tier2Count","_tier3Count","_glassItemCount","_removeGlass","_glassItem","_glassResult","_glassCountNeeded","_prepareSmelt","_timeLeft","_animationCount","_sleepTime"];
 
_removeTier1=false;
_removeTier2=false;
_removeTier3=false;
_removeGlass=false;
 
_wait1=false;
_wait2=false;
_wait3=false;
_smelt=false;
 
_prepareSmelt=false;
 
 
/*
EXPLANATION OF THE SCRIPT:
 
(Tier 1 Metal Item)x N ---smelt--> Tier 2 Metal Item
(Tier 1 Metal Item)x N + (Tier 2 Metal Item)x M ---smelt--> Tier 3 Metal Item
(Tier 1 Metal Item)x N + (Tier 2 Metal Item)x M  + (Tier 1 Metal Item)x P---smelt--> Tier 4 Metal Item
 
(Glass Item) x N ----smelt----> Glass item Result
 
Renwault Suggestion for example -
8 tin cans = tank trap -
6 tin cans + 2 tank traps = scrap metal
4 tin cans + 1 scrap metal + 1 tank trap = wire kit
 
Tier 1: TrashTinCan
Tier 1: ItemSodaEmpty
Tier 2: ScrapMetal
Tier 3: Wire Fences
 
*/
 
//----------------------- YOU CAN CHANGE THE CONFIG IN THIS VARS-------------------
//Metal Tier Setup:
_tier11 = "TrashTinCan";
_tier12 = "ItemSodaEmpty";
_tier13 = "FoodCanUnlabeledEmpty";
_tier14 = "FoodCanRusUnlabeledEmpty";
_tier15 = "FoodCanRusPorkEmpty";
_tier16 = "FoodCanRusPeasEmpty";
_tier17 = "FoodCanRusMilkEmpty";
_tier18 = "FoodCanRusCornEmpty";
_tier19 = "FoodCanRusStewEmpty";
_tier2 = "ItemTankTrap";
_tier3 = "PartGeneric";
_tier4 = "ItemWire";
//----------
 
//Tier 1 to tier 2 count
_countT1to2 = 8;//8
 
//Tier 2 to tier 3 count
_countT1to3 = 6;
_countT2to3 = 2;
 
//Tier 3 to tier 4 count
_countT1to4 = 4;
_countT2to4 = 1;
_countT3to4 = 1;
 
//Glass smelting:
_glassItem = "TrashJackDaniels";
_glassResult = "PartGlass";
//Number of bottles to smelt
_glassCountNeeded = 6;
 
 
//---------------------------------END CONFIG---------------------------------------
 
//Material Count
_mags = magazines player;
if(_tier11 in _mags) then {
    _tier11Count = {_x == _tier11} count magazines player;
} else {
    _tier11Count = 0;
};
 
if(_tier12 in _mags) then {
    _tier12Count = {_x == _tier12} count magazines player;
} else {
    _tier12Count = 0;
};
 
if(_tier13 in _mags) then {
    _tier13Count = {_x == _tier13} count magazines player;
} else {
    _tier13Count = 0;
};
 
if(_tier14 in _mags) then {
    _tier14Count = {_x == _tier14} count magazines player;
} else {
    _tier14Count = 0;
};
 
if(_tier15 in _mags) then {
    _tier15Count = {_x == _tier15} count magazines player;
} else {
    _tier15Count = 0;
};
 
if(_tier16 in _mags) then {
    _tier16Count = {_x == _tier16} count magazines player;
} else {
    _tier16Count = 0;
};
 
if(_tier17 in _mags) then {
    _tier17Count = {_x == _tier17} count magazines player;
} else {
    _tier17Count = 0;
};
 
if(_tier18 in _mags) then {
    _tier18Count = {_x == _tier18} count magazines player;
} else {
    _tier18Count = 0;
};
 
if(_tier19 in _mags) then {
    _tier19Count = {_x == _tier19} count magazines player;
} else {
    _tier19Count = 0;
};
 
_tier1Count = _tier11Count + _tier12Count + _tier13Count + _tier14Count + _tier15Count + _tier16Count + _tier17Count + _tier18Count + _tier19Count;
 
if(_tier2 in _mags) then {
    _tier2Count = {_x == _tier2} count magazines player;
} else {
    _tier2Count = 0;
};
 
if(_tier3 in _mags) then {
    _tier3Count = {_x == _tier3} count magazines player;
} else {
    _tier3Count = 0;
};
 
if(_glassItem in _mags) then {
    _glassItemCount = {_x == _glassItem} count magazines player;
} else {
    _glassItemCount = 0;
};
 
 
//Tier 1 to 2
switch(true) do {
    //Tier 1 to 2
    case(_tier1Count == _countT1to2):
    {
        _smeltedItem=_tier2;
        _prepareSmelt=true;
        _removeTier1=true;
        _wait1=true;
    //Tier 2 to 3
    };
   
    case(_glassItemCount == _glassCountNeeded):
    {
        _smeltedItem=_glassResult;
        _prepareSmelt=true;
        _removeGlass=true;
        _wait1=true;
    //glass
    };
   
    case((_tier1Count == _countT1to3) && (_tier2Count == _countT2to3)) :
    {
        _smeltedItem=_tier3;
        _prepareSmelt=true;
        _removeTier1=true;
        _removeTier2=true;
        _wait2=true;
    //Tier 3 to 4
    };
    case ((_tier1Count == _countT1to4) && (_tier2Count == _countT2to4) && (_tier3Count == _countT3to4)):
    {
        _smeltedItem=_tier4;
        _prepareSmelt=true;
        _removeTier1=true;
        _removeTier2=true;
        _removeTier3=true;
        _wait3=true;
 
    };
    default
    {
        _prepareSmelt=false;
    };
};
 
//Begin smelt.
 
 
   
if(_prepareSmelt) then {
 
    //Remove the action. (PREVENT DUPE)
    player removeAction smeltAction;
 
    _sleepTime = 5;
    switch(true) do {
        case(_wait1):
        {
            _timeLeft=_sleepTime;
            _animationCount=1;
        };
        case(_wait2):
        {
            _timeLeft=_sleepTime*2;
            _animationCount=2;
        };
        case(_wait3):
        {
            _timeLeft=_sleepTime*3;
            _animationCount=3;
        };
        default
        {
            _timeLeft=_sleepTime;
            _animationCount=1;
        };
    };
   
    cutText [format["You begin smelting. %1 seconds left.",_timeLeft], "PLAIN DOWN"];
    for "_i" from 0 to _animationCount do {
        player playActionNow "Medic";
        [player,"repair",0,false] call dayz_zombieSpeak;
        sleep _sleepTime;
        _timeLeft = _timeLeft - 5;
       
        if(_timeLeft >0 ) then {
            cutText [format["You continue smelting. %1 seconds left.",_timeLeft], "PLAIN DOWN"];
        };
    };
    //Check again to see if the player didnt took any item away
   
    //Tier 1 to 2
    switch(true) do {
    //Tier 1 to 2
        case(_tier1Count == _countT1to2):
        {
            _smelt=true;
        //Tier 2 to 3
        };
       
        case(_glassItemCount == _glassCountNeeded):
        {
            _smelt=true;
        //glass
        };
       
        case((_tier1Count == _countT1to3) && (_tier2Count == _countT2to3)) :
        {
            _smelt=true;
        //Tier 3 to 4
        };
        case ((_tier1Count == _countT1to4) && (_tier2Count == _countT2to4) && (_tier3Count == _countT3to4)):
        {
            _smelt=true;
        };
        default
        {
            _smelt=false;
        };
    };   
   
    if(_smelt) then {   
   
   
    //Remove tier 1 items
        if(_tier1Count>0 && _removeTier1 ) then {
            for "_i" from 0 to _tier11Count do {
                player removeMagazine _tier11;
            };
            for "_i" from 0 to _tier12Count do {
                player removeMagazine _tier12;
            };
        };
            for "_i" from 0 to _tier13Count do {
                player removeMagazine _tier13;
            };
        };
            for "_i" from 0 to _tier14Count do {
                player removeMagazine _tier14;
            };
        };       
            for "_i" from 0 to _tier15Count do {
                player removeMagazine _tier15;
            };
        };
            for "_i" from 0 to _tier16Count do {
                player removeMagazine _tier16;
            };
        };
            for "_i" from 0 to _tier17Count do {
                player removeMagazine _tier17;
            };
        };
            for "_i" from 0 to _tier18Count do {
                player removeMagazine _tier18;
            };
        };
            for "_i" from 0 to _tier19Count do {
                player removeMagazine _tier19;
            };
        };
        //Remove tier 2 items
        if(_tier2Count>0 && _removeTier2) then {
            for "_i" from 0 to _tier2Count do {
                player removeMagazine _tier2;
            };
        };
        //Remove tier 3 items
        if(_tier3Count>0 && _removeTier3) then {
            for "_i" from 0 to _tier3Count do {
                player removeMagazine _tier3;
            };
        };
       
        //Remove glass items
        if(_glassItemCount>0 && _removeGlass) then {
            for "_i" from 0 to _glassItemCount do {
                player removeMagazine _glassItem;
            };
        };
       
        _result = [player,_smeltedItem] call BIS_fnc_invAdd;
        if (_result) then {
            cutText ["Your items were smelted sucessfully!", "PLAIN DOWN"];
        } else {
            cutText ["Oops! Your smelting was canceled. Try again!", "PLAIN DOWN"];
        };
   
    } else {
        cutText ["You need the exact ammount of items to smelt. Dont take items away!!", "PLAIN DOWN"];
        sleep 1;
    };
   
    //Give the action back. (PREVENT DUPE)
    smeltAction = player addaction[("<t color=""#F01313"">" + ("Smelt Items") +"</t>"),"tweaks\player_smelt.sqf","",1,true,true,"",
"remProc && (inflamed cursorTarget && cursorTarget distance player < 5)"];
 
   
} else {
    cutText ["You need the exact ammount of items to smelt.", "PLAIN DOWN"];
    sleep 1;
};
 
Back
Top