1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Do: 22 Mai 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Tutorials & Releases

    [TUTORIAL] Fahrzeug-Schaden und Tankfüllung speichern

      • Altis Life
    • stolzerrabe
    • 17. Juni 2016 um 17:14
    1. offizieller Beitrag
    • stolzerrabe
      Schüler
      Reaktionen
      90
      Trophäen
      11
      Beiträge
      92
      Dateien
      1
      • 17. Juni 2016 um 17:14
      • #1

      Eins vorweg:
      Hier wird in die Datenbank eingegriffen!
      BACKUPS SIND PFLICHT!
      Weder ich, noch Native-Network sind für eure Fehler verantwortlich!
      Einbau auf EIGENE GEFAHR :D


      Dieses Tutorial sorgt dafür, dass ihr euren Schaden am Auto, sowie die Tankfüllung in der Datenbank speichert.
      ES IST NUR AUF "LANDVEHICLE" anwendbar.
      Helicopter / Flugzeuge / Boote sind unbetroffen.
      Diese nutzen andere Hitpoints
      Mir selber waren nur Autos wichtig!


      Schritt eins:
      Die Datenbank muss erweitert werden:

      SQL
      ALTER TABLE `vehicles` 
      ADD `fuelstand` float(20,5) NOT NULL DEFAULT '1.00000',
      ADD  `HitBody` float(20,5) NOT NULL,
      ADD  `HitEngine` float(20,5) NOT NULL,
      ADD  `HitFuel` float(20,5) NOT NULL,
      ADD  `HitLFWheel` float(20,5) NOT NULL,
      ADD  `HitRFWheel` float(20,5) NOT NULL,
      ADD  `HitLF2Wheel` float(20,5) NOT NULL,
      ADD  `HitRF2Wheel` float(20,5) NOT NULL,
      ADD  `HitLMWheel` float(20,5) NOT NULL,
      ADD  `HitRMWheel` float(20,5) NOT NULL,
      ADD  `HitLBWheel` float(20,5) NOT NULL,
      ADD  `HitRBWheel` float(20,5) NOT NULL
      AFTER `inventory`;
      Alles anzeigen



      Schritt zwei:
      ACHTUNG! - FUNKTIONIERT NUR, WENN DIESE DATEIEN NOCH NICHT ANGEPASST WURDEN!
      Solltet ihr diese Dateien schon bearbeitet haben, schaut euch die Querys an.
      Im Grunde ist es alles was ich mit den  ***********************************  markiert habe.

      Öffne life_server\Functions\System\fn_getVehicles.sqf und ersetzt den Inhalt mit diesem

      Spoiler anzeigen
      SQL: fn_getVehicles.sqf
      /*
      	File: fn_getVehicles.sqf
      	Author: Bryan "Tonic" Boardwine
      	Description:
      	Sends a request to query the database information and returns vehicles.
      */
      private["_pid","_side","_type","_unit","_ret","_tickTime","_queryResult","_vFuel","_vHitBody","_vHitEngine","_vHitFuel","_vHitLFWheel","_vHitRFWheel","_vHitLF2Wheel","_vHitRF2Wheel","_vHitLMWheel","_vHitRMWheel","_vHitLBWheel","_vHitRBWheel"];
      _pid = [_this,0,"",[""]] call BIS_fnc_param;
      _side = [_this,1,sideUnknown,[west]] call BIS_fnc_param;
      _type = [_this,2,"",[""]] call BIS_fnc_param;
      _unit = [_this,3,ObjNull,[ObjNull]] call BIS_fnc_param;
      
      
      
      
      //Error checks
      if(_pid == "" OR _side == sideUnknown OR _type == "" OR isNull _unit) exitWith
      {
      	if(!isNull _unit) then
      	{
      		[[[]],"life_fnc_impoundMenu",(owner _unit),false] spawn life_fnc_MP;
      	};
      };
      
      
      
      
      _unit = owner _unit;
      _side = switch(_side) do
      {
      	case west:{"cop"};
      	case civilian: {"civ"};
      	case independent: {"med"};
      	default {"Error"};
      };
      
      
      
      
      if(_side == "Error") exitWith {
      	[[[]],"life_fnc_impoundMenu",(owner _unit),false] spawn life_fnc_MP;
      };
      
      
      
      
      
      
      
      /*
      	**************************
      	* DATENBANK 
      	* ORIGINAL QUERY
      	* _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",_pid,_side,_type];
      	**************************
      */	
      	_query = format[
      	"SELECT 
      		id,
      		side,
      		classname,
      		type,
      		pid,
      		alive,
      		active,
      		plate,
      		color,
      		fuelstand,
      		HitBody,
      		HitEngine,
      		HitFuel,
      		HitLFWheel,
      		HitRFWheel,
      		HitLF2Wheel,
      		HitRF2Wheel,
      		HitLMWheel,
      		HitRMWheel,
      		HitLBWheel,
      		HitRBWheel
      	FROM vehicles 
      	WHERE pid='%1' AND alive='1' AND active='0' AND side='%2' AND type='%3'",
      	_pid,
      	_side,
      	_type
      	];
      
      
      
      
      
      
      
      
      
      
      waitUntil{sleep (random 0.3); !DB_Async_Active};
      _tickTime = diag_tickTime;
      _queryResult = [_query,2,true] call DB_fnc_asyncCall;
      
      
      
      
      diag_log "------------- Client Query Request -------------";
      diag_log format["QUERY: %1",_query];
      diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
      diag_log format["Result: %1",_queryResult];
      diag_log "------------------------------------------------";
      
      
      
      
      if(typeName _queryResult == "STRING") exitWith {
      	[[[]],"life_fnc_impoundMenu",(owner _unit),false] spawn life_fnc_MP;
      };
      
      
      
      
      [[_queryResult],"life_fnc_impoundMenu",_unit,false] spawn life_fnc_MP;
      Alles anzeigen


      Öffne life_server\Functions\System\fn_vehicleStore.sqf und ersetzt den Inhalt mit diesem

      Spoiler anzeigen
      SQL: fn_vehicleStore.sqf
      /*
      	File: fn_vehicleStore.sqf
      	Author: Bryan "Tonic" Boardwine
      	Description:
      	Stores the vehicle in the 'Garage'
      */
      private["_vehicle","_impound","_vInfo","_vInfo","_plate","_uid","_query","_sql","_unit","_vFuel","_vHitBody","_vHitEngine","_vHitFuel","_vHitLFWheel","_vHitRFWheel","_vHitLF2Wheel","_vHitRF2Wheel","_vHitLMWheel","_vHitRMWheel","_vHitLBWheel","_vHitRBWheel"];
      _vehicle = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
      _impound = [_this,1,false,[true]] call BIS_fnc_param;
      _unit = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param;
      
      
      
      
      if(isNull _vehicle OR isNull _unit) exitWith {life_impound_inuse = false; (owner _unit) publicVariableClient "life_impound_inuse";life_garage_store = false;(owner _unit) publicVariableClient "life_garage_store";}; //Bad data passed.
      
      
      
      
      _vInfo = _vehicle getVariable["dbInfo",[]];
      if(count _vInfo > 0) then
      {
      	_plate = _vInfo select 1;
      	_uid = _vInfo select 0;
      };
      
      
      
      
      /*
      	**************************
      	* SPRIT
      	**************************
      */
      _vFuel = fuel _vehicle;
      
      
      
      
      /*
      	**************************
      	* DAMAGE ZUWEISUNG
      	**************************
      */
      if (_vehicle isKindOf "LandVehicle") then
      {		
      	_vHitBody 		= _vehicle getHitPointDamage "HitBody";
      	_vHitEngine 	= _vehicle getHitPointDamage "HitEngine";
      	_vHitFuel 		= _vehicle getHitPointDamage "HitFuel";
      	_vHitLFWheel 	= _vehicle getHitPointDamage "HitLFWheel";
      	_vHitRFWheel 	= _vehicle getHitPointDamage "HitRFWheel";
      	_vHitLF2Wheel 	= _vehicle getHitPointDamage "HitLF2Wheel";
      	_vHitRF2Wheel 	= _vehicle getHitPointDamage "HitRF2Wheel";
      	_vHitLMWheel 	= _vehicle getHitPointDamage "HitLMWheel";
      	_vHitRMWheel 	= _vehicle getHitPointDamage "HitRMWheel";
      	_vHitLBWheel 	= _vehicle getHitPointDamage "HitLBWheel";
      	_vHitRBWheel 	= _vehicle getHitPointDamage "HitRBWheel";	
      }else{
      	_vHitBody 		= 0;
      	_vHitEngine 	= 0;
      	_vHitFuel		= 0;
      	_vHitLFWheel	= 0;
      	_vHitRFWheel	= 0;
      	_vHitLF2Wheel	= 0;
      	_vHitRF2Wheel	= 0;
      	_vHitLMWheel	= 0;
      	_vHitRMWheel	= 0;
      	_vHitLBWheel	= 0;
      	_vHitRBWheel	= 0;
      };
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if(_impound) then
      {
      	if(count _vInfo == 0) then 
      	{
      		life_impound_inuse = false;
      		(owner _unit) publicVariableClient "life_impound_inuse";
      		if(!isNil "_vehicle" && {!isNull _vehicle}) then {
      			deleteVehicle _vehicle;
      		};
      	} 
      		else
      	{
      /*
      	**************************
      	* DATENBANK EINTRAG
      	* ORIGINAL QUERY
      	* _query = format["UPDATE vehicles SET active='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
      	**************************
      */	
      	_query = format[
      		"UPDATE vehicles SET 
      		active='0', 
      		fuelstand='%3',
      		HitBody='%4',
      		HitEngine='%5',
      		HitFuel='%6',
      		HitLFWheel='%7',
      		HitRFWheel='%8',
      		HitLF2Wheel='%9',
      		HitRF2Wheel='%10',
      		HitLMWheel='%11',
      		HitRMWheel='%12',
      		HitLBWheel='%13',
      		HitRBWheel='%14'		
      		WHERE pid='%1' AND plate='%2'",
      		_uid,
      		_plate,
      		_vFuel,
      		_vHitBody,
      		_vHitEngine,
      		_vHitFuel,
      		_vHitLFWheel,
      		_vHitRFWheel,
      		_vHitLF2Wheel,
      		_vHitRF2Wheel,
      		_vHitLMWheel,
      		_vHitRMWheel,
      		_vHitLBWheel,
      		_vHitRBWheel
      		];
      
      
      
      
      		waitUntil {!DB_Async_Active};
      		_thread = [_query,1] call DB_fnc_asyncCall;
      		//waitUntil {scriptDone _thread};
      		if(!isNil "_vehicle" && {!isNull _vehicle}) then {
      			deleteVehicle _vehicle;
      		};
      		life_impound_inuse = false;
      		(owner _unit) publicVariableClient "life_impound_inuse";
      	};
      }
      	else
      {
      	if(count _vInfo == 0) exitWith
      	{
      		[[1,(localize "STR_Garage_Store_NotPersistent")],"life_fnc_broadcast",(owner _unit),false] spawn life_fnc_MP;
      		life_garage_store = false;
      		(owner _unit) publicVariableClient "life_garage_store";
      	};
      	if(_uid != getPlayerUID _unit) exitWith
      	{
      		[[1,(localize "STR_Garage_Store_NoOwnership")],"life_fnc_broadcast",(owner _unit),false] spawn life_fnc_MP;
      		life_garage_store = false;
      		(owner _unit) publicVariableClient "life_garage_store";
      	};
      /*
      	**************************
      	* DATENBANK EINTRAG
      	* ORIGINAL QUERY
      	* _query = format["UPDATE vehicles SET active='0' WHERE pid='%1' AND plate='%2'",_uid,_plate];
      	**************************
      */	
      		_query = format[
      		"UPDATE vehicles SET 
      		active='0', 
      		fuelstand='%3',
      		HitBody='%4',
      		HitEngine='%5',
      		HitFuel='%6',
      		HitLFWheel='%7',
      		HitRFWheel='%8',
      		HitLF2Wheel='%9',
      		HitRF2Wheel='%10',
      		HitLMWheel='%11',
      		HitRMWheel='%12',
      		HitLBWheel='%13',
      		HitRBWheel='%14'		
      		WHERE pid='%1' AND plate='%2'",
      		_uid,
      		_plate,
      		_vFuel,
      		_vHitBody,
      		_vHitEngine,
      		_vHitFuel,
      		_vHitLFWheel,
      		_vHitRFWheel,
      		_vHitLF2Wheel,
      		_vHitRF2Wheel,
      		_vHitLMWheel,
      		_vHitRMWheel,
      		_vHitLBWheel,
      		_vHitRBWheel
      		];
      	waitUntil {!DB_Async_Active};
      	_thread = [_query,1] call DB_fnc_asyncCall;
      	//waitUntil {scriptDone _thread};
      	if(!isNil "_vehicle" && {!isNull _vehicle}) then {
      		deleteVehicle _vehicle;
      	};
      	life_garage_store = false;
      	(owner _unit) publicVariableClient "life_garage_store";
      	[[1,(localize "STR_Garage_Store_Success")],"life_fnc_broadcast",(owner _unit),false] spawn life_fnc_MP;
      };
      Alles anzeigen


      Öffne life_server\Functions\System\fn_spawnVehicle.sqf und ersetzt den Inhalt mit diesem

      Spoiler anzeigen
      SQL: fn_spawnVehicle.sqf
      /*
      	File: fn_spawnVehicle.sqf
      	Author: Bryan "Tonic" Boardwine
      	Description:
      	Sends the query request to the database, if an array is returned then it creates
      	the vehicle if it's not in use or dead.
      */
      private["_vid","_sp","_pid","_query","_sql","_vehicle","_nearVehicles","_name","_side","_tickTime","_dir","_vFuel","_vHitBody","_vHitEngine","_vHitFuel","_vHitLFWheel","_vHitRFWheel","_vHitLF2Wheel","_vHitRF2Wheel","_vHitLMWheel","_vHitRMWheel","_vHitLBWheel","_vHitRBWheel"];
      _vid = [_this,0,-1,[0]] call BIS_fnc_param;
      _pid = [_this,1,"",[""]] call BIS_fnc_param;
      _sp = [_this,2,[],[[],""]] call BIS_fnc_param;
      _unit = [_this,3,ObjNull,[ObjNull]] call BIS_fnc_param;
      _price = [_this,4,0,[0]] call BIS_fnc_param;
      _dir = [_this,5,0,[0]] call BIS_fnc_param;
      _unit_return = _unit;
      _name = name _unit;
      _side = side _unit;
      _unit = owner _unit;
      
      
      
      
      if(_vid == -1 OR _pid == "") exitWith {};
      if(_vid in serv_sv_use) exitWith {};
      serv_sv_use pushBack _vid;
      
      
      
      
      
      
      
      /*
      	**************************
      	* ORIGINAL QUERY
      	* _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
      	**************************
      */
      _query = format["SELECT id, side, classname, type, pid, alive, active, plate, color, fuelstand, HitBody, HitEngine, HitFuel, HitLFWheel, HitRFWheel, HitLF2Wheel, HitRF2Wheel, HitLMWheel, HitRMWheel, HitLBWheel,HitRBWheel FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
      
      
      
      
      
      
      
      
      
      
      
      
      
      waitUntil{sleep (random 0.3); !DB_Async_Active};
      _tickTime = diag_tickTime;
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      
      
      
      diag_log "------------- Client Query Request -------------";
      diag_log format["QUERY: %1",_query];
      diag_log format["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
      diag_log format["Result: %1",_queryResult];
      diag_log "------------------------------------------------";
      
      
      
      
      if(typeName _queryResult == "STRING") exitWith {};
      
      
      
      
      _vInfo = _queryResult;
      if(isNil "_vInfo") exitWith {serv_sv_use = serv_sv_use - [_vid];};
      if(count _vInfo == 0) exitWith {serv_sv_use = serv_sv_use - [_vid];};
      
      
      
      
      if((_vInfo select 5) == 0) exitWith
      {
      	serv_sv_use = serv_sv_use - [_vid];
      	[[1,format[(localize "STR_Garage_SQLError_Destroyed"),_vInfo select 2]],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
      };
      
      
      
      
      if((_vInfo select 6) == 1) exitWith
      {
      	serv_sv_use = serv_sv_use - [_vid];
      	[[1,format[(localize "STR_Garage_SQLError_Active"),_vInfo select 2]],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
      };
      if(typeName _sp != "STRING") then {
      	_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
      } else {
      	_nearVehicles = [];
      };
      if(count _nearVehicles > 0) exitWith
      {
      	serv_sv_use = serv_sv_use - [_vid];
      	[[_price,_unit_return],"life_fnc_garageRefund",_unit,false] spawn life_fnc_MP;
      	[[1,(localize "STR_Garage_SpawnPointError")],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
      };
      
      
      
      
      _query = format["UPDATE vehicles SET active='1' WHERE pid='%1' AND id='%2'",_pid,_vid];
      
      
      
      
      waitUntil {!DB_Async_Active};
      [_query,false] spawn DB_fnc_asyncCall;
      if(typeName _sp == "STRING") then {
      	_vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
      	waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
      	_vehicle allowDamage false;
      	_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
      	_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
      	sleep 0.6;
      } else {
      	_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
      	waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
      	_vehicle allowDamage false;
      	_vehicle setPos _sp;
      	_vehicle setVectorUp (surfaceNormal _sp);
      	_vehicle setDir _dir;
      };
      _vehicle allowDamage true;
      
      
      
      
      
      
      
      
      
      
      /*
      	**************************
      	* TANK FÜLLUNG
      	**************************
      */
      _vehicle setFuel (_vInfo select 9);
      /*
      	**************************
      	* DAMAGE ZUWEISUNG
      	**************************
      */
      _vHitBody 		= (_vInfo select 10); 
      _vHitEngine 	= (_vInfo select 11);
      _vHitFuel 		= (_vInfo select 12);
      _vHitLFWheel 	= (_vInfo select 13);
      _vHitRFWheel 	= (_vInfo select 14);
      _vHitLF2Wheel 	= (_vInfo select 15);
      _vHitRF2Wheel 	= (_vInfo select 16);
      _vHitLMWheel 	= (_vInfo select 17);
      _vHitRMWheel 	= (_vInfo select 18);
      _vHitLBWheel 	= (_vInfo select 19);
      _vHitRBWheel 	= (_vInfo select 20);
      
      
      
      
      /*
      	***********************************
      	* DAMAGE ZUWEISUNG 
      	* NUR BEI FAHRZEUGEN
      	* FLUGZEUGE / BOOTE / HUBSCHRAUBER
      	* SIND NICHT INBEGRIFFEN!!
      	* DEREN DAMAGEPOINTS SIND ANDERS!
      	***********************************
      */
      if (_vehicle isKindOf "LandVehicle") then
      {
      	_vehicle setHitPointDamage ["HitBody",_vHitBody];
      	_vehicle setHitPointDamage ["HitEngine",_vHitEngine];
      	_vehicle setHitPointDamage ["HitFuel",_vHitFuel];
      	_vehicle setHitPointDamage ["HitLFWheel",_vHitLFWheel];
      	_vehicle setHitPointDamage ["HitRFWheel",_vHitRFWheel];
      	_vehicle setHitPointDamage ["HitLF2Wheel",_vHitLF2Wheel];
      	_vehicle setHitPointDamage ["HitRF2Wheel",_vHitRF2Wheel];
      	_vehicle setHitPointDamage ["HitLMWheel",_vHitLMWheel];
      	_vehicle setHitPointDamage ["HitRMWheel",_vHitRMWheel];
      	_vehicle setHitPointDamage ["HitLBWheel",_vHitLBWheel];
      	_vehicle setHitPointDamage ["HitRBWheel",_vHitRBWheel];
      };
      
      
      
      
      
      
      
      
      
      
      
      
      
      //Send keys over the network.
      [[_vehicle],"life_fnc_addVehicle2Chain",_unit,false] spawn life_fnc_MP;
      [_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
      _vehicle lock 2;
      //Reskin the vehicle 
      [[_vehicle,_vInfo select 8],"life_fnc_colorVehicle",nil,false] spawn life_fnc_MP;
      _vehicle setVariable["vehicle_info_owners",[[_pid,_name]],true];
      _vehicle setVariable["dbInfo",[(_vInfo select 4),_vInfo select 7]];
      //_vehicle addEventHandler["Killed","_this spawn TON_fnc_vehicleDead"]; //Obsolete function?
      [_vehicle] call life_fnc_clearVehicleAmmo;
      
      
      
      
      //Sets of animations
      if((_vInfo select 1) == "civ" && (_vInfo select 2) == "B_Heli_Light_01_F" && _vInfo select 8 != 13) then
      {
      	[[_vehicle,"civ_littlebird",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
      };
      
      
      
      
      if((_vInfo select 1) == "cop" && (_vInfo select 2) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F"]) then
      {
      	[[_vehicle,"cop_offroad",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
      };
      
      
      
      
      if((_vInfo select 1) == "med" && (_vInfo select 2) == "C_Offroad_01_F") then
      {
      	[[_vehicle,"med_offroad",true],"life_fnc_vehicleAnimate",_unit,false] spawn life_fnc_MP;
      };
      [[1,"Your vehicle is ready!"],"life_fnc_broadcast",_unit,false] spawn life_fnc_MP;
      serv_sv_use = serv_sv_use - [_vid];
      Alles anzeigen

      PMC Earpiece: https://goo.gl/zS9U8
      @Admins: Falls nicht gestattet, bitte entfernen...

      Einmal editiert, zuletzt von stolzerrabe (19. Juni 2016 um 23:00) aus folgendem Grund: Hatte die Zuweisung der Variablen nach Private vergessen ["_vFuel","_vHitBody","_vHitEngine","_vHitFuel","_vHitLFWheel","_vHitRFWheel","_vHitLF2Wheel","_vHitRF2Wheel","_vHitLMWheel","_vHitRMWheel","_vHitLBWheel","_vHitRBWheel"];

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 18. Juni 2016 um 13:15
      • #2

      Nice!
      Hatte es damals viel zu kompliziert gemacht xD

      Fehlt nur noch die info in der Garage :)

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 19. Juni 2016 um 12:00
      • #3

      Hab n kleinen Fehler drin.

      11:56:52 Error in expression < AND plate='%2'", _uid, _plate, _vFuel, _vHitBody, _vHitEngine, _vHitFuel, _vHit>
      11:56:52 Error position: <_vHitBody, _vHitEngine, _vHitFuel, _vHit>
      11:56:52 Error Undefined variable in expression: _vhitbody
      11:56:52 File life_server\Functions\Systems\fn_vehicleStore.sqf, line 119

      mfg Risk

      https://www.twitch.tv/theriskarma

    • SilentF0x
      Profi
      Reaktionen
      266
      Trophäen
      10
      Beiträge
      1.246
      Dateien
      5
      • 23. Juni 2016 um 21:06
      • #4

      #1060 - Duplicate column name 'HitRBWheel'

      Diese Fehlermeldung bekomme ich wenn ich die Spalten einfügen möchte. Ich benutze zur Zeit die Version 4.4
      Muss ich dort etwas ändern?

      Danke im Voraus!

      ✌

      Aktuelle Dateien:

      Altis | Krankenhaus | Modded

      Mercedes E Klasse | Rettungswagen | Mod

      Altis | Kupferhandel | No Mods

      Altis Markplatz | No Mods

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 25. Juni 2016 um 22:00
      • #5

      Hab es mal zum Garagendialog hinzugefügt...
      diesen müsst ihr allerdings abändern.

      impound.hpp

      Spoiler anzeigen
      Code
      class Life_impound_menu
      {
      	idd = 2800;
      	name="life_vehicle_shop";
      	movingEnabled = 0;
      	enableSimulation = 1;
      	onLoad = "ctrlShow [2330,false];";
      
          class controlsBackground {
      		class garage_Header: Life_RscText
              {
                  idc = -1;
                  text = "Garage";
                  x = 0.04375 * safezoneW + safezoneX;
                  y = 0.182252 * safezoneH + safezoneY;
                  w = 0.582812 * safezoneW;
                  h = 0.030555 * safezoneH;
                  ColorBackground[] = {0,0,0,1};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.035;
              };
      
              class background_info: Life_RscText
              {
                  idc = -1;
                  text = "";
                  x = 0.363020 * safezoneW + safezoneX;
                  y = 0.219752 * safezoneH + safezoneY;
                  w = 0.263541 * safezoneW;
                  h = 0.614814 * safezoneH;
                  ColorBackground[] = {0,0,0,0.705882};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.035;
              };
      
      
      
      
      		class CloseBtn : Life_RscButtonMenu
      		{
                  idc = -1;
                  text = "X";
                  onButtonClick = "closeDialog 0;";
                  x = 0.043229 * safezoneW + safezoneX;
                  y = 0.797530 * safezoneH + safezoneY;
                  w = 0.057291 * safezoneW;
                  h = 0.037037 * safezoneH;
                  ColorBackground[] = {0,0,0,0.627450};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.4;
                  colorFocused[] = {0,0,0,1};
                  colorDisabled[] = {0,0,0,1};
      		};
      
      
      
      
      		class RentCar : Life_RscButtonMenu
      		{
      			idc = -1;
      			text = "$STR_Global_Retrieve";
      			onButtonClick = "[] call life_fnc_unimpound;";
                  x = 0.103645 * safezoneW + safezoneX;
                  y = 0.797530 * safezoneH + safezoneY;
                  w = 0.125 * safezoneW;
                  h = 0.037037 * safezoneH;
                  ColorBackground[] = {0,0,0,0.627450};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.4;
                  colorFocused[] = {0,0,0,1};
                  colorDisabled[] = {0,0,0,1};
      		};
      
      
      
      
      		class BuyCar : life_RscButtonMenu
      		{
                  idc = -1;
      			text = "$STR_Global_Sell";
      			onButtonClick = "[] call life_fnc_sellGarage;";
                  x = 0.232812 * safezoneW + safezoneX;
                  y = 0.797530 * safezoneH + safezoneY;
                  w = 0.125 * safezoneW;
                  h = 0.037037 * safezoneH;
                  ColorBackground[] = {0,0,0,0.627450};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.4;
                  colorFocused[] = {0,0,0,1};
                  colorDisabled[] = {0,0,0,1};
      		};
      	};
      
      
      
      
      	class controls
      	{
      		class VehicleList : Life_RscListBox
      		{
                  idc = 2802;
      			text = "";
      			onLBSelChanged = "_this call life_fnc_garageLBChange;";
                  x = 0.04375 * safezoneW + safezoneX;
                  y = 0.219752 * safezoneH + safezoneY;
                  w = 0.314062 * safezoneW;
                  h = 0.572222 * safezoneH;
                  ColorBackground[] = {0,0,0,0.705882};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.035;
                  colorSelectBackground[] = {0,0,0,1};
                  colorSelect[] = {0,0,0,1};
      		};
      
      
      
      
      		class vehicleInfomationList : Life_RscStructuredText
      		{
                  idc = 2803;
                  text = "";
                  x = 0.363020 * safezoneW + safezoneX;
                  y = 0.219752 * safezoneH + safezoneY;
                  w = 0.263541 * safezoneW;
                  h = 0.614814 * safezoneH;
                  ColorBackground[] = {0,0,0,0.705882};
                  ColorText[] = {1,1,1,1};
                  font = TahomaB;
                  SizeEx = 0.4;
      		};
      	};
      };
      Alles anzeigen


      fn_impoundMenu.sqf

      Spoiler anzeigen
      Code
      #include <macro.h>
      /*
      	File: fn_impoundMenu.sqf
      	Author: Bryan "Tonic" Boardwine
      	Description:
      	Not actually a impound menu, may act as confusion to some but that is what I wanted.
      	The purpose of this menu is it is now called a 'Garage' where vehicles are stored (persistent ones).
      */
      private["_vehicles","_control"];
      disableSerialization;
      _vehicles = [_this,0,[],[[]]] call BIS_fnc_param;
      
      
      
      
      ctrlShow[2803,false];
      ctrlShow[2830,false];
      waitUntil {!isNull (findDisplay 2800)};
      
      
      
      
      if(count _vehicles == 0) exitWith
      {
      	ctrlSetText[2811,localize "STR_Garage_NoVehicles"];
      };
      
      
      
      
      _control = ((findDisplay 2800) displayCtrl 2802);
      lbClear _control;
      
      
      
      
      
      
      
      {
      	_vehicleInfo = [_x select 2] call life_fnc_fetchVehInfo;
      	_control lbAdd (_vehicleInfo select 3);
      	_tmp = [_x select 2,_x select 8,_x select 9/*fuelstand*/,_x select 10/*HitBody*/,_x select 11/*HitEngine*/,_x select 12/*HitFuel*/,_x select 13/*HitLFWheel*/,_x select 14/*HitRFWheel*/,_x select 15/*HitLF2Wheel*/,_x select 16/*HitRF2Wheel*/,_x select 17/*HitLMWheel*/,_x select 18/*HitRMWheel*/,_x select 19/*HitLBWheel*/,_x select 20/*HitRBWheel*/];
      	_tmp = str(_tmp);
      	_control lbSetData [(lbSize _control)-1,_tmp];
      	_control lbSetPicture [(lbSize _control)-1,_vehicleInfo select 2];
      	_control lbSetValue [(lbSize _control)-1,_x select 0];
      } foreach _vehicles;
      
      
      
      
      ctrlShow[2810,false];
      ctrlShow[2811,false];
      /*
      {
      	_displayName = getText(configFile >> "CfgVehicles" >> (_x select 2) >> "displayName");
      	_picture = getText(configFile >> "CfgVehicles" >> (_x select 2) >> "picture");
      	_price = [_x select 2,__GETC__(life_garage_prices)] call TON_fnc_index;
      	_sPrice = [_x select 2,__GETC__(life_garage_sell)] call TON_fnc_index;
      	if(_price == -1) then {_price = 1000;} else {_price = (__GETC__(life_garage_prices) select _price) select 1;};
      	if(_sPrice == -1) then {_sPrice = 1500;} else {_sPrice = (__GETC__(life_garage_sell) select _sPrice) select 1;};
      	_control lbAdd format["%1 - %4 Fee: $%2 || %5: $%3", _displayName,[_price] call life_fnc_numberText,[_sPrice] call life_fnc_numberText,localize "STR_Garage_SFee",localize "STR_Garage_SellPrice"];
      	_control lbSetData [(lbSize _control)-1,(_x select 2)];
      	_control lbSetValue [(lbSize _control)-1,(call compile format["%1", _x select 0])];
      	_control lbSetPicture [(lbSize _control)-1,_picture];
      } foreach _vehicles;
      */
      Alles anzeigen

      fn_garageLBChange

      Spoiler anzeigen
      Code
      #include <macro.h>
      /*
      	File: fn_garageLBChange.sqf
      	Author: Bryan "Tonic" Boardwine
      	Description:
      	Can't be bothered to answer it.. Already deleted it by accident..
      */
      disableSerialization;
      private["_control","_index","_className","_dataArr","_vehicleColor","_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_tank"];
      _control = _this select 0;
      _index = _this select 1;
      
      
      
      
      //Fetch some information.
      _dataArr = _control lbData _index;
      _dataArr = call compile format["%1",_dataArr];
      _className = _dataArr select 0;
      _vehicleColor = [_className,_dataArr select 1] call life_fnc_vehicleColorStr;
      _vehicleInfo = [_className] call life_fnc_fetchVehInfo;
      _trunkSpace = [_className] call life_fnc_vehicleWeightCfg;
      _tank = _dataArr select 2;
      _HitBody = _dataArr select 3;
      _HitEngine = _dataArr select 4;
      _HitFuel = _dataArr select 5;
      _HitLFWheel = _dataArr select 6;
      _HitRFWheel = _dataArr select 7;
      _HitLF2Wheel = _dataArr select 8;
      _HitRF2Wheel = _dataArr select 9;
      _HitLMWheel = _dataArr select 10;
      _HitRMWheel = _dataArr select 11;
      _HitLBWheel = _dataArr select 12;
      _HitRBWheel = _dataArr select 13;
      
      
      
      
      _retrievePrice = 5;
      _sellPrice = 5;
      
      
      
      
      (getControl(2800,2803)) ctrlSetStructuredText parseText format[
      	(localize "STR_Shop_Veh_UI_RetrievalP")+ " <t color='#8cff9b'>$%1</t><br/>
      	" +(localize "STR_Shop_Veh_UI_SellP")+ " <t color='#8cff9b'>$%2</t><br/>
      	" +(localize "STR_Shop_Veh_UI_Color")+ " %8<br/>
      	" +(localize "STR_Shop_Veh_UI_MaxSpeed")+ " %3 km/h<br/>
      	" +(localize "STR_Shop_Veh_UI_HPower")+ " %4<br/>
      	" +(localize "STR_Shop_Veh_UI_PSeats")+ " %5<br/>
      	" +(localize "STR_Shop_Veh_UI_Trunk")+ " %6<br/>
      	" +(localize "STR_Shop_Veh_UI_Fuel")+ " %7<br/>
      
      
      
      
      	" +("Tankanzeige:")+ " %9 Prozent<br/>
      	" +("Hülle:")+ " %10 Schaden<br/>
      	" +("Motor:")+ " %11 Schaden<br/>
          " +("Tank:")+ " %12 Schaden<br/>
      	" +("Reifen L. Vorne:")+ " %13 Schaden<br/>
      	" +("Reifen R. Vorne:")+ " %14 Schaden<br/>
      	" +("Reifen L. Vorne 2:")+ " %15 Schaden<br/>
      	" +("Reifen R. Vorne 2::")+ " %16 Schaden<br/>
      	" +("Reifen L. Mitte:")+ " %17 Schaden<br/>
      	" +("Reifen R. Mitte:")+ " %18 Schaden<br/>
      	" +("Reifen L. Hinten:")+ " %19 Schaden<br/>
      	" +("Reifen R. Hinten:")+ " %20 Schaden
      	",
      
      
      
      
      [_retrievePrice] call life_fnc_numberText,
      [_sellPrice] call life_fnc_numberText,
      _vehicleInfo select 8,
      _vehicleInfo select 11,
      _vehicleInfo select 10,
      if(_trunkSpace == -1) then {"None"} else {_trunkSpace},
      _vehicleInfo select 12,
      _vehicleColor,
      _tank * 100,
      _HitBody * 100,
      _HitEngine * 100,
      _HitFuel * 100,
      _HitLFWheel * 100,
      _HitRFWheel  * 100,
      _HitLF2Wheel * 100,
      _HitRF2Wheel * 100,
      _HitLMWheel  * 100,
      _HitRMWheel  * 100,
      _HitLBWheel  * 100,
      _HitRBWheel  * 100
      ];
      
      
      
      
      ctrlShow [2803,true];
      ctrlShow [2830,true];
      Alles anzeigen

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Tashin1988
      Frischling
      Trophäen
      10
      Beiträge
      2
      • 26. Juni 2016 um 21:27
      • #6

      hi

      @Risk

      Die idee mit der garage find ich Super aber iwie krieg ich da ne fehler meldung wo ich grad ned weis wie ich die weg krieg
      wäre sau nett wenn du dir das mal anschaun kannst

      MfG Tashin1988

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 26. Juni 2016 um 21:39
      • #7

      @stolzerrabe wäre es auch möglich das du das Script in die 4.4 umschreiben könntest ?

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • Online
      nox
      Administrator
      Reaktionen
      1.861
      Trophäen
      11
      Artikel
      2
      Beiträge
      1.866
      Dateien
      36
      Bilder
      11
      • 26. Juni 2016 um 23:19
      • Offizieller Beitrag
      • #8
      Zitat von GamerTV

      @stolzerrabe wäre es auch möglich das du das Script in die 4.4 umschreiben könntest ?


      Vielleicht probierste das mal selbst...?^^

      Wichtige Links:

      [Erklärung|Leitfaden] Arma 3 Logs - Client, Server & extDB Log
      [Tutorial] ArmA 3 Altis Life RPG & Tanoa Life RPG Server einrichten unter Windows (mit extDB & BEC)
      BattlEye Filter - Guide und Erklärungen

      • Nächster offizieller Beitrag
    • D.Tanne
      Anfänger
      Reaktionen
      11
      Trophäen
      9
      Beiträge
      57
      • 26. Juni 2016 um 23:27
      • #9
      Zitat von GamerTV

      @stolzerrabe wäre es auch möglich das du das Script in die 4.4 umschreiben könntest ?

      selber lernen ist manchmal besser ;)

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 26. Juni 2016 um 23:52
      • #10
      Zitat von Tashin1988

      hi

      @Risk

      Die idee mit der garage find ich Super aber iwie krieg ich da ne fehler meldung wo ich grad ned weis wie ich die weg krieg
      wäre sau nett wenn du dir das mal anschaun kannst

      MfG Tashin1988

      vllt was verändert?

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Tashin1988
      Frischling
      Trophäen
      10
      Beiträge
      2
      • 1. Juli 2016 um 15:08
      • #11

      @ risk

      nein genau von dir übernommen

    • Shinji
      Profi
      Reaktionen
      576
      Trophäen
      10
      Beiträge
      778
      • 1. Juli 2016 um 15:11
      • #12
      Zitat von Tashin1988

      hi

      @Risk

      Die idee mit der garage find ich Super aber iwie krieg ich da ne fehler meldung wo ich grad ned weis wie ich die weg krieg
      wäre sau nett wenn du dir das mal anschaun kannst

      MfG Tashin1988

      Magst du uns eventuell noch eine RPT geben? Denn auf dem Bild erkennt man nicht viel außer das dein Array keine Daten enthält. (oder falsche...)

      Software Entwickler -
      Präzises Rätselraten, basierend auf unzuverlässigen Daten und fragwürdigem Wissen der Auftraggeber.

    • Reiner Zufall
      Amateur
      Reaktionen
      6
      Trophäen
      11
      Beiträge
      206
      • 26. Juli 2016 um 20:22
      • #13

      mal so ne dumme frage wie mach ich das mit der DB erweitern ?

    • Online
      nox
      Administrator
      Reaktionen
      1.861
      Trophäen
      11
      Artikel
      2
      Beiträge
      1.866
      Dateien
      36
      Bilder
      11
      • 26. Juli 2016 um 20:27
      • Offizieller Beitrag
      • #14
      Zitat von Reiner Zufall

      mal so ne dumme frage wie mach ich das mit der DB erweitern ?


      Schwierigkeitsgrad für Tutorials

      ^^

      Wichtige Links:

      [Erklärung|Leitfaden] Arma 3 Logs - Client, Server & extDB Log
      [Tutorial] ArmA 3 Altis Life RPG & Tanoa Life RPG Server einrichten unter Windows (mit extDB & BEC)
      BattlEye Filter - Guide und Erklärungen

      • Vorheriger offizieller Beitrag
    • Reiner Zufall
      Amateur
      Reaktionen
      6
      Trophäen
      11
      Beiträge
      206
      • 26. Juli 2016 um 20:35
      • #15

      @nox nur wo muss ich mit dem sachen "

      • ALTER TABLE `vehicles`
      • ADD `fuelstand` float(20,5) NOT NULL DEFAULT '1.00000',
      • ADD `HitBody` float(20,5) NOT NULL,
      • ADD `HitEngine` float(20,5) NOT NULL,
      • ADD `HitFuel` float(20,5) NOT NULL,
      • ADD `HitLFWheel` float(20,5) NOT NULL,
      • ADD `HitRFWheel` float(20,5) NOT NULL,
      • ADD `HitLF2Wheel` float(20,5) NOT NULL,
      • ADD `HitRF2Wheel` float(20,5) NOT NULL,
      • ADD `HitLMWheel` float(20,5) NOT NULL,
      • ADD `HitRMWheel` float(20,5) NOT NULL,
      • ADD `HitLBWheel` float(20,5) NOT NULL,
      • ADD `HitRBWheel` float(20,5) NOT NULL
      • AFTER `inventory`; "

      hin einfach eine .sql machen und die rein oder via navicat

    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 26. Juli 2016 um 20:37
      • #16
      Zitat von Reiner Zufall

      ALTER TABLE `vehicles`

      Sagt doch schon alles :D

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • Reiner Zufall
      Amateur
      Reaktionen
      6
      Trophäen
      11
      Beiträge
      206
      • 26. Juli 2016 um 20:39
      • #17

      schon gut ^^

    • Reiner Zufall
      Amateur
      Reaktionen
      6
      Trophäen
      11
      Beiträge
      206
      • 26. Juli 2016 um 21:27
      • #18

      ++ und jetzt speichert er nicht mehr die autos

    • Reiner Zufall
      Amateur
      Reaktionen
      6
      Trophäen
      11
      Beiträge
      206
      • 26. Juli 2016 um 21:49
      • #19

      ich habe eine sql gemacht und die importet und dann nur noch die life_server

    • ChickenWeed
      Kenner
      Reaktionen
      63
      Trophäen
      9
      Beiträge
      528
      Bilder
      7
      • 27. Juli 2016 um 11:47
      • #20

      Hey du musst den ersten Code direkt in die Datenbank importieren! Wenn du eine Fehlermeldung bekommst, dann musst du die jetzige Auto Garage Speichern und löschen und dann versuchst du es nochmal. ^^ Good Luck ;)

      Mfg Pius von Team-Wings

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Benutzer online in diesem Thema

    • 1 Besucher

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™