Dynamischer Spritverbrauch und Tankgröße per Config_Vehicle
Hey Leute,
ich stand heute vor dem Problem mit der Tankgröße bei den Fahrzeugen und dadurch ein hoher Spritverbrauch über das emptyFuel Skript. Daher möchte ich die Lösung mit euch Teilen wie Ihr die Tankgröße bei Fahrzeugen anpassen könnt.
Wer das emptyFuel Skript noch nicht hat kann es hier [Tutorial] Benzinverbrauch ändern sehen.
Alternativ das:
player addEventHandler ["GetInMan", {
params ["_unit", "_role", "_vehicle", "_turret"];
if (_role isEqualTo "driver") then {
for "_i" from 0 to 1 step 0 do {
private["_vehicleToFuel","_usageMultiplier","_consumption"];
_vehicleToFuel = (vehicle player);
_usageMultiplier = M_CONFIG(getNumber,"LifeCfgVehicles",(typeOf _vehicleToFuel),"fuelmultiplier");
if !((driver _vehicleToFuel) isEqualTo player) exitWith {};
if (isNull (objectParent player)) exitWith {};
if !(isEngineOn _vehicleToFuel) exitWith {};
_consumption = ((speed _vehicleToFuel) / _usageMultiplier) max 0.002;
_vehicleToFuel setFuel ((fuel _vehicleToFuel) - _consumption);
if(fuel _vehicleToFuel < 0.2 && fuel _vehicleToFuel > 0.18) then {
hint "Dein Tank ist gleich leer, fahre schnell zur nächsten Tankstelle.";
} else {
if(fuel _vehicleToFuel < 0.02) then {
hint "Klopf, Klopf, Dein Tank ist jeden moment leer!";
};
};
};
uiSleep 2;
};
}];
Alles anzeigen
in die setupEVH.sqf im core Ordner.
Nun zum eigentlichen.
SCHRITT 1:
Ihr geht in core\functions und öffnet die fn_fetchVehInfo.sqf
Dort ersetzt ihr in Zeile 54 den Eintrag:
gegen diesen:
Die fn_fetchVehInfo.sqf sollte dann so aussehen:
Spoiler anzeigen
#include "..\..\script_macros.hpp"
/*
File: fn_fetchVehInfo.sqf
Author: Bryan "Tonic" Boardwine
Description:
Used in returning information about a vehicle from Config >> "CfgVehicles"
Return:
0: classname
1: scope
2: picture
3: displayname
4: vehicleclass
5: side
6: faction
7: Base / Superclass
8: Max Speed
9: Armor Rating
10: Passenger Seats
11: Max Horse power
12: Fuel Capacity
*/
private ["_class","_scope","_picture","_displayName","_vehicleClass","_side","_faction","_superClass","_speed","_armor","_seats","_hp","_fuel"];
_class = [_this,0,"",[""]] call BIS_fnc_param;
if (_class isEqualTo "") exitWith {[]}; //Bad class passed.
if (!isClass (configFile >> "CfgVehicles" >> _class)) exitWith {[]}; //Class doesn't exist in CfgVehicles
//Predefine some stuff.
_scope = -1;
_picture = "";
_displayName = "";
_vehicleClass = "";
_side = -1;
_faction = "";
_speed = 0;
_armor = 0;
_seats = 0;
_hp = 0;
_fuel = 0;
//Fetch
_scope = FETCH_CONFIG2(getNumber,"CfgVehicles",_class,"scope");
_picture = FETCH_CONFIG2(getText,"CfgVehicles",_class,"picture");
_displayName = FETCH_CONFIG2(getText,"CfgVehicles",_class,"displayName");
_vehicleClass = FETCH_CONFIG2(getText,"CfgVehicles",_class,"vehicleClass");
_side = FETCH_CONFIG2(getNumber,"CfgVehicles",_class,"side");
_faction = FETCH_CONFIG2(getText,"CfgVehicles",_class,"faction");
_superClass = BASE_CONFIG("CfgVehicles",_class);
_speed = FETCH_CONFIG2(getNumber,"CfgVehicles",_class,"maxSpeed");
_armor = FETCH_CONFIG2(getNumber,"CfgVehicles",_class,"armor");
_seats = FETCH_CONFIG2(getNumber,"CfgVehicles",_class,"transportSoldier");
_hp = FETCH_CONFIG2(getNumber,"CfgVehicles",_class,"enginePower");
_fuel = M_CONFIG(getNumber,"LifeCfgVehicles",_class,"fuelCapacity"); // <-- hier der neue Eintrag
//Return
[_class,_scope,_picture,_displayName,_vehicleClass,_side,_faction,_superClass,_speed,_armor,_seats,_hp,_fuel];
SCHRITT 2:
Dann gehen wir in die Config_Vehicles.hpp und tragen bei jeder Fahrzeug class vor texture folgendes ein:
Das ganze sollte dann so aussehen:
class C_Offroad_02_unarmed_F {
vItemSpace = 65;
conditions = "license_civ_driver || {!(playerSide isEqualTo civilian)}";
price = 200000;
storeLiquid= false;
fuelCapacity = 30; // <--- hier der neue Eintrag
fuelmultiplier = 80000; // <--- hier der neue Eintrag
textures[] = {
{ "Black", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_black_co.paa"
}, "" },
{ "Blue", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_blue_co.paa"
}, "" },
{ "Green", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_green_co.paa"
}, "" },
{ "Orange", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_orange_co.paa"
}, "" },
{ "Red", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_red_co.paa"
}, "" },
{ "White", "civ", {
"\A3\Soft_F_Exp\Offroad_02\Data\offroad_02_ext_white_co.paa"
}, "" },
};
};
Alles anzeigen
Das war es schon. Die Zahl 30 bei fuelCapacity ist die Tankgröße. Die Zahl 80000 bei fuelMultiplier ist der Multiplikator wie schnell Sprit verbraucht werden soll (Da nach bedarf erhöhen oder verringern). Somit passen in den Tank des Offroads 30 Liter Sprit. D Anwendbar auf alle Fahrzeuge, Helikopter und Flugzeuge.
EDIT:
Wer das VIS System von derleon nutzt muss in der fn_visVehInfo.sqf in Zeile 81 das selbe machen wie mit der fn_fetchVehInfo.sqf
Viel Spaß damit.
Grüße CrypteX