DayZ Chenarus Auto Refuel! All stations!

Cikez

Well-Known Member
I modified the code of the script left only refuel in Gas Stations equal to what was posted by Seven and Muddr.(Thanks Seven, for correcting me.)

here is:

kh_actions.sqf
PHP:
    private ["_vehicle", "_vehicle_refuel_id"];
    //Awesomely Edited by Seven, Then modified by Muddr, Then modified by Davison
    _vehicle = objNull;
    diag_log "Running ""kh_actions"".";

    _distance = 15; // Distance from object to display Refuel Message
    _amount= 0.02; // Amount of fuel to add per loop. Default was 0.005

    while {true} do
    {
        if (!isNull player) then {
            private ["_currentVehicle", "_isNearFeed", "_countFuel"];
                    _currentVehicle = vehicle player;
                    _countFuel = (count ((position _currentVehicle) nearObjects ["Land_A_FuelStation_Feed", _distance]));
                    _countFuel = _countFuel + (count ((position _currentVehicle) nearObjects ["Land_A_FuelStation_Feed", _distance]));
                    _isNearFeed = _countFuel > 0;

            if (_vehicle != _currentVehicle) then {
                if (!isNull _vehicle) then {
                    _vehicle removeAction _vehicle_refuel_id;
                    _vehicle = objNull;
                };

                if (_currentVehicle != player && _isNearFeed && !(_currentVehicle isKindof "Bicycle")) then {
                    _vehicle = _currentVehicle;

                    _vehicle_refuel_id = _vehicle addAction ["Refuel", "Scripts\kh_vehicle_refuel.sqf", [_amount], -1, false, true, "", "vehicle _this == _target && local _target"];
                };
            };

            if (!_isNearFeed) then {
                _vehicle removeAction _vehicle_refuel_id;
                _vehicle = objNull;
            };
        };
        sleep 2;
    }

kh_vehicle_refuel.sqf

PHP:
    private ["_target", "_caller", "_id","_object"];

    _object = _this select 0;
    _target = _this select 0;
    _caller = _this select 1;
    _id = _this select 2;
    _args = _this select 3;
    _amount = _args select 0;
    _object engineOn false;

    if (isNil "ib_refueling_in_progress") then { ib_refueling_in_progress = false; };

    if (!ib_refueling_in_progress) then {

            ib_refueling_in_progress = true;

            titleText ["Refueling", "PLAIN DOWN", 3];

            while {(vehicle _caller == _target) and (local _target)} do {
                    private ["_velocity", "_cfcust"];

                    _velocity = velocity _target;
                    _cfcust = fuel _target;

                    if ((_velocity select 0 > 1) or (_velocity select 1 > 1) or (_velocity select 2 > 1)) exitWith {
                            titleText ["Refueling Stopped", "PLAIN DOWN", 3];
                    };
                    if (_cfcust >= 1.0) exitWith {
                            titleText ["Done Refueling", "PLAIN DOWN", 3];
                    };

                    sleep 0.5;

                    _cfcust = _cfcust + _amount;

                    if (_cfcust >= 1.0) then { _cfcust = 1.0; };

                    _target setFuel _cfcust;
            };

            titleFadeOut 1;

            ib_refueling_in_progress = false;
    };

reedited by Dávison. added new parameter to turn off the car engine when refueling

Does this still work on 1.8.1? Thanks!
 

muggerfugger

Well-Known Member
I modified the script that Seven posted to work with all the fuel tanks you can use with jerry cans and the gas pumps. I removed some code that wasn't needed and added messages for when the vehicle moves while fueling and when fueling is done. Added some variables to the kh_actions.sqf file (lines 6 & 7) for distance from tanks/pumps and amount of fuel per loop so it can be changed easily.

kh_actions.sqf - http://pastebin.com/rCW8sWCC
kh_vehicle_refuel.sqf - http://pastebin.com/6AmSQB8w
thanks. still working great.
 
Top