[Release] Origins Vehicle Upgrades (Updated)

Discussion in 'Script/Addon releases' started by SchwEde, Apr 23, 2015.

  1. SchwEde

    SchwEde OpenDayZ Rockstar!

    Joined:
    Jul 11, 2013
    Messages:
    989
    Likes Received:
    177
    Origins Vehicle Upgrades
    [​IMG]

    what it does?

    This is the vehicle upgrade Script from the Origins Mod for the Origins Vehicles.

    Note: This version lets you upgrade everything with one scrap metal. I will release and update soon where you can decide what materials and tools are required for each upgrade.
    Also, since i dont have too much time on scripting, this version will be without trader support and is only for
    Origins Mod 1.7.9! This also will be covered in the next update, or till someone else tried to get this done, but till then this version is only for spawned vehicles through database!

    What you need?

    files:
    variables
    compiles
    fn_selfactions
    object_setFixServer
    server_monitor
    server_updateObject
    server_publishVehicle

    I'm not very good at making noob frienldy tutorials and I assume you know how to merge files or redirect them.

    Lets Start:

    Mission FIles:

    variables.sqf

    search for
    Code:
    // update objects
    
    add right after
    Code:
    Ori_VehiclesList = ["ori_ScrapBuggy","ori_survivorBus","ori_vil_lada_2105_rust","ori_poldek_black","ori_poldek","ori_rth_originsmod_bathmobile","ori_transit","ori_vil_originsmod_lublin_truck","ori_vil_originsmod_truck_civ","ori_vil_originsmod_truck_civ","ori_originsmod_pickupoldfuel","ori_p85_originsmod_cucv_pickup","ori_originsmod_pickupold"];                        
    Ori_VehicleUpgrades = ["pluhPredni","kolaOchrana","oknaOchrana","predniOknoOchrana"];
    
    
    compiles.sqf

    redirect:
    Code:
    object_setFixServer
    
    and this is the content of the whole file:
    Code:
    private ["_unit","_selection","_strH","_damage","_upgrades"];
    _unit =            _this select 0;
    _selection =    _this select 1;
    _damage =        _this select 2;
    
    if (_selection != "" && local _unit) then {
        if (_selection in Ori_VehicleUpgrades) then {
            _unit setVariable [_selection,_damage,true];
            PVDZE_veh_Update = [_unit,"repair"];
        } else {
            _strH = "hit_" + (_selection);
            _unit setHit[_selection,_damage];
    
            _unit setVariable [_strH,_damage,true];
            if (_damage == 0) then {
                PVDZE_veh_Update = [_unit,"repair"];
            } else {
                PVDZE_veh_Update = [_unit,"damage"];
            };
        };
      
        if (isServer) then {
            PVDZE_veh_Update call server_updateObject;
        } else {
            publicVariableServer "PVDZE_veh_Update";
        };
    };
    
    
    fn_selfaction.sqf

    search for:
    Code:
    s_player_repairActions set [count s_player_repairActions,_menu1];
    
    add right after:
    Code:
          
    if (_typeOfCursorTarget in Ori_VehiclesList) then {
                _cfg = configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "AnimationSources";
                _tc = count _cfg;
                _part = "ItemArmor3";
                for "_mti" from 0 to _tc-1 do {
                    _mt = (_cfg select _mti);
                    _st = configName(_mt);
                    _anim_array = Ori_VehicleUpgrades;
                    if (_st in _anim_array) then {
                        _statuss = _cursorTarget getVariable [_st,1];
                            if (_statuss == 1) then {
                                _num = _anim_array find _st;
                                _upgrade = _anim_array select _num;
                                _upgradeName = "";
                                        switch _upgrade do {
                                        case "pluhPredni" : {_upgradeName = "Front Plow";};
                                        case "kolaOchrana" : {_upgradeName = "Wheel Guards";};
                                        case "oknaOchrana" : {_upgradeName = "Window Guards";};
                                        case "predniOknoOchrana" : {_upgradeName = "Windshield Guards";};
                                    };
                                _color = "color='#ff0000'";
                                _stname = format["Upgrade %1",_upgradeName];
                                _string = format["<t %2>%1</t>", _stname,_color];
                            _handle = dayz_myCursorTarget addAction [_string, "PathTo\ori_upgrade.sqf",[_cursorTarget,_part,_st], 0, false, true, "",""];
                            s_player_repairActions set [count s_player_repairActions,_handle];
                        };
                    };
                };
            };
    
    ----------------------
    create a file called ori_upgrade.sqf and place it whereever you like (dont forget to set this path to your fn_selfactions) with this inside:

    http://pastebin.com/3uhbCNDH

    Server Files

    server_monitor.sqf

    search for
    Code:
    if (_selection in dayZ_explosiveParts && _dam > 0.8) then {_dam = 0.8};
                        [_object,_selection,_dam] call object_setFixServer;
    
    and replace it with
    Code:
                        if (_selection in Ori_VehicleUpgrades) then {
                            _object animate [_selection,_dam];
                            _object setVariable [_selection,_dam,true];
                        } else {  
                            if (_selection in dayZ_explosiveParts and _dam > 0.8) then {_dam = 0.8};
                            [_object,_selection,_dam] call object_setFixServer;
                        };
    
    server_updateVehicle.sqf

    all of this is in the _object_damage = { ...}; section!

    search for:

    Code:
    _selection = getText (configFile >> "CfgVehicles" >> (typeOf _object) >> "HitPoints" >> _x >> "name");
    
    add right after
    Code:
    if (_selection in Ori_VehicleUpgrades) then {_dam = 0;}; //prevent double writtings
    
    after this:
    Code:
    } count _hitpoints;
    
    add this
    Code:
            if (typeOf _object in Ori_VehiclesList) then {
            _cfg = configFile >> "CfgVehicles" >> (typeOf _object) >> "AnimationSources";
            _tc = count _cfg;
                    for "_mti" from 0 to _tc-1 do {
                    _mt = (_cfg select _mti);
                    _st = configName(_mt);
                    if (_st in Ori_VehicleUpgrades) then {
                    _hit = _object getVariable [_st,1];
                    _object animate [_st,_hit];
                    _array set [count _array,[_st,_hit]];
    
                    };
                };
            };
    
    server_publishObject.sqf


    search for:

    Code:
    _selection = getText(configFile >> "cfgVehicles" >> _class >> "HitPoints" >> _x >> "name");
    
    add right after
    Code:
                if (_selection in Ori_VehicleUpgrades) then {_dam = 0;}; //prevent double writtings
    
    
    under this
    Code:
    } count _hitpoints;
    
    add
    Code:
            if (typeOf _object in Ori_VehiclesList) then {
            _cfg = configFile >> "CfgVehicles" >> _class >> "AnimationSources";
            _tc = count _cfg;
                    for "_mti" from 0 to _tc-1 do {
                    _mt = (_cfg select _mti);
                    _st = configName(_mt);
                    if (_st in Ori_VehicleUpgrades) then {
                    _hit = 1;
                    _object setVariable [_st,_hit,true];
                    _object animate [_st,_hit];
                    _array set [count _array,[_st,_hit]];
    
                    };
                };
            };
    
    thats it your are done!


    Add the Origins Vehicles to your dynamic_vehicles.sqf and have fun with it.

    Code:
    ["ori_ScrapBuggy",3],["ori_survivorBus",3],["ori_vil_lada_2105_rust",3],["ori_poldek_black",3],["ori_poldek",3],["ori_rth_originsmod_bathmobile",3],["ori_transit",3],["ori_vil_originsmod_lublin_truck",3],["ori_vil_originsmod_truck_civ",3],["ori_vil_originsmod_truck_civ",3],["ori_originsmod_pickupoldfuel",3],["ori_p85_originsmod_cucv_pickup",3],["ori_originsmod_pickupold",3]
    
    
    Credits:
    Evangelium aka Relict for sponsoring my work
    MajorPainage for Origins Files
    ElDubya for the communtiy idea: http://epochmod.com/forum/index.php?/topic/33620-originsoverpochins/
    Rotzloch for his Origins-Releases: http://epochmod.com/forum/index.php...gins-buildingsystem-for-epoch-origins-server/

    PS: I may have forgotten something, try to isntall this and tell me the results :)
    Also i ask for every critic to get this script a better one ;)

    If you like my work, how about spending me some coffe?
    [​IMG]
     
    Last edited: Jul 13, 2016

Share This Page