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
Fr: 13 Juni 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. Hilfeforum

    Datenbank abfrage für eigenes Skript

    • Samero
    • 26. September 2018 um 23:42
    • Geschlossen
    • Erledigt
    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 26. September 2018 um 23:42
      • #1

      Moin zusammen,

      bin nun doch endlich am verzweifeln und weiß echt nicht mehr weiter.

      Entweder sehe ich den Code vor lauter Code nicht mehr oder ich habe einfach Tomaten auf den Augen. :/

      Ich bin dabei ein eigenes kleines Versicherungsscript zu basteln. Wenn jemand fragt warum, weil es ja schon welche gibt?

      Weil ich Spaß dran habe und mich weiterbilden möchte ;)

      Nun mal eben zu meinem Problem:

      Ich habe eine Datei zum abfragen eines Wertes in der Datenbank angelegt. Der Wert existiert auch in der DB und sollte eine einfach 0 zurück geben.

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_fetchInsurance.sqf
          Author: Samero Richter @RP-INFINITY
      
          Description:
          Fetch the insurancestatus
      */
      private ["_vehicle","_vehicleLife","_vid","_pid"];
      disableSerialization;
      if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
      _vehicle = lbData[2802,(lbCurSel 2802)];
      _vehicle = (call compile format ["%1",_vehicle]) select 0;
      _vehicleLife = _vehicle;
      _vid = lbValue[2802,(lbCurSel 2802)];
      _pid = getPlayerUID player;
      _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
      
      //Fetch
      if (life_HC_isActive) then {
          _statusReq = [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
      } else {
          _statusReq = [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
          _status = _return;
          
          diag_log "----------------------------";
          diag_log format ["Status %1",_status];
          diag_log format ["StatusReq %1",_statusReq];
          diag_log format ["RETURN %1",_return];
          diag_log "----------------------------";
          
          if (isNil "_status") then {
              
              hint format ["%1",(_status select 0)];
              diag_log "----------------------------";
              diag_log format ["Status %1",_status];
              diag_log format ["StatusReq %1",_statusReq];
              diag_log "----------------------------";
              
          } else {
              hint format ["Komisch ... %1",_status];
          };
      };
      Alles anzeigen

      Die hint's habe ich einfach nur mal provisorisch eingefügt, damit ich eine kleine Rückmeldung der Werte habe. Dazu später mehr ^^


      Dann habe ich eine Datei im life_server erstellt um die Datenbank abfrage zu machen und mir einen return zu liefern.

      Code
      #include "\life_server\script_macros.hpp"
      /*
      
          FETCH Insurance Status
      
      */
      private ["_vid", "_pid", "_unit", "_type"];
      _vid = [_this,0,-1,[0]] call BIS_fnc_param;
      _pid = [_this,1,"",[""]] call BIS_fnc_param;
      _unit = [_this,2,objNull,[objNull]] call BIS_fnc_param;
      _type = [_this,3,"",[""]] call BIS_fnc_param;
      
      if (_vid isEqualTo -1 || _pid isEqualTo "" || isNull _unit || _type isEqualTo "") exitWith {};
      _unit = owner _unit;
      
      _query = format ["SELECT insurance_status FROM vehicles WHERE pid='%1' AND id='%2'",_pid,_vid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (_queryResult isEqualTo "") exitWith {};
      _return = (_queryResult select 0);
      
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
          _tickTime = diag_tickTime;
          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 - Status: %2",(_queryResult),_return];
          diag_log "------------------------------------------------";
      };
      
      _return;
      Alles anzeigen

      Mein Problem ist nun, dass ich nicht den korrekten Wert von dem _return abfragen kann.

      Als Ausgabe bekomme ich immer folgendes:

      für den ersten Quellcode:

      Code
      23:20:40 "----------------------------"
      23:20:40 "Status any"
      23:20:40 "StatusReq "
      23:20:40 "RETURN any"
      23:20:40 "----------------------------"
      23:20:40 "----------------------------"
      23:20:40 "Status any"
      23:20:40 "StatusReq "
      23:20:40 "----------------------------"

      für den 2. :

      Code
      "------------- Client Query Request -------------"
      "QUERY: SELECT insurance_status FROM vehicles WHERE pid='76561198202839964' AND id='25'"
      "Time to complete: 0 (in seconds)"
      "Result: [0] - Status: 0"
      "------------------------------------------------"

      Die Dateien sind auch korrekt in der CfgRemoteExec.hpp und in der config.cpp hinzugefügt.

      Hat da jemand eine Idee und kann mir weiter helfen? Würde mich MEGA freuen, wenn das dann doch mal funktioniert ^^

      Grund und vielen Dank

      Samero

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 27. September 2018 um 08:43
      • #2

      Moin,

      das funktioniert so nicht ^^ .

      Code
      //Fetch
      if (life_HC_isActive) then {
       _statusReq = [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
      } else {
       _statusReq = [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
       _status = _return;

      Du musst das anders lösen.

      Versuche es mal damit

      Mission: Beim Aufruf der Funktion musst Du noch einen zusätzlichen Parameter mit übergeben

      [0,_class,-1] call life_fnc_fetchInsurance;

      Code
      #include "..\..\script_macros.hpp"
      /*
       File: fn_fetchInsurance.sqf
       Author: Samero Richter @RP-INFINITY
      
       Description:
       Fetch the insurancestatus
      */
      params [
          ["_mode",-1,[0]]
          ,["_class",""[""]]
          ,["_return",-1,[0]]
      ];
      disableSerialization;
      if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
      private _vehicle = lbData[2802,(lbCurSel 2802)];
      _vehicle = (call compile format ["%1",_vehicle]) select 0;
      private _vehicleLife = _vehicle;
      private _vid = lbValue[2802,(lbCurSel 2802)];
      private _pid = getPlayerUID player;
      
      
      if (_class isEqualTo "") exitWith {[]}; //Bad class passed.
      if (!isClass (configFile >> "CfgVehicles" >> _class)) exitWith {[]}; //Class doesn't exist in CfgVehicles
      
      //Fetch send to life_server
      if (_mode isEqualTo 0) exitWith {
          if (life_HC_isActive) then {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
          } else {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
          }; 
      };
      
      //receive Result from life_server
      if (_mode isEqualTo 1) exitWith {
          private _statusReq = _return;
          diag_log "----------------------------";
          diag_log format ["Status %1",_status];
          diag_log format ["StatusReq %1",_statusReq];
          diag_log format ["RETURN %1",_return];
          diag_log "----------------------------";
      
          hint format ["Komisch ... %1",_status];
      };
      Alles anzeigen

      life_server:

      Code
      #include "\life_server\script_macros.hpp"
      /*
      
       FETCH Insurance Status
      
      */
      params [
          ["_vid",-1,[0]]
          ,["_pid","",[""]]
          ,["_unit",objNull,[objNull]]
          ,["_type","",[""]]
      ];
      
      if (_vid isEqualTo -1 || _pid isEqualTo "" || isNull _unit || _type isEqualTo "") exitWith {};
      _unit = owner _unit;
      
      _query = format ["SELECT insurance_status FROM vehicles WHERE pid='%1' AND id='%2'",_pid,_vid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (_queryResult isEqualTo "") exitWith {};
      _return = (_queryResult select 0);
      
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
       _tickTime = diag_tickTime;
       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 - Status: %2",(_queryResult),_return];
       diag_log "------------------------------------------------";
      };
      
      //Send Result to player
      [1,"",_return] remoteExecCall ["life_fnc_fetchInsurance",_unit];
      Alles anzeigen

      Damit sollte es funktionieren, wenn ich mich nicht vertippt hab ^^ .

      Gruß,

      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 27. September 2018 um 09:01
      • #3

      Danke dir!

      Da hatte ich wohl einen Knoten im Kopf :rolleyes:

      Werde ich mal testen!

      Kannst du mir und der Zukunft vllt. erklären warum da noch zusätzlich Parameter mit übergeben werden müssen?

      Danke und Gruß

      Samero

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 27. September 2018 um 09:18
      • #4

      Moin,

      ja klar. In der fn_fetchInsurance.sqf sind 2 Funktionen drin. Mit dem Parameter _mode wird gesteuert welche der beiden Funktionen verwendet wird. Mit _mode = 0 wird die DB Abfrage gestartet und mit _mode = 1 wird das Ergebnis entgegen genommen. Schau Dir mal die letzte Zeile in der life_server Datei an

      [1,"",_return] remoteExecCall ["life_fnc_fetchInsurance",_unit];

      Gruß,

      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 27. September 2018 um 19:52
      • #5

      Moin,

      habe es getestet und es gab einen kleinen Fehler!

      Bei ,["_class",""[""]] fehlt ein komma ,["_class","",[""]]

      Code
      params [
       ["_mode",-1,[0]]
       ,["_class","",[""]]
       ,["_return",-1,[0]]
      ];

      Ansonsten habe ich nur das Problem dass der geänderte Mode nicht erkannt wird, und das script nicht weiter ausgeführt wird.

      Hast du da eine Lösung?

      Die Logs sind beide clean!


      So rufe ich das Script auf:

      Code
      _vehicleInsuranceStatus_NUM = [0,_className,-1] call life_fnc_fetchInsurance;

      Dann in der fn_fetchInsurance.sqf

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_fetchInsurance.sqf
          Author: Samero Richter @RP-INFINITY
          
          Description:
          Fetch the insurancestatus
      */
      params [
       ["_mode",-1,[0]]
       ,["_class","",[""]]
       ,["_return",-1,[0]]
      ];
      disableSerialization;
      if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
      private _vehicle = lbData[2802,(lbCurSel 2802)];
      _vehicle = (call compile format ["%1",_vehicle]) select 0;
      private _vehicleLife = _vehicle;
      private _vid = lbValue[2802,(lbCurSel 2802)];
      private _pid = getPlayerUID player;
      
      if (_class isEqualTo "") exitWith {[]}; //Bad class passed.
      if (!isClass (configFile >> "CfgVehicles" >> _class)) exitWith {[]}; //Class doesn't exist in CfgVehicles
      
      //Fetch send to life_server
      if (_mode isEqualTo 0) exitWith {
          if (life_HC_isActive) then {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
          } else {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
          }; 
      };
      
      //receive Result from life_server
      if (_mode isEqualTo 1) exitWith {
          private _statusReq = _return;
          
          hint format ["Status: %1",_statusReq];
          diag_log "----------------------------";
          diag_log format ["Status %1",_status];
          diag_log format ["StatusReq %1",_statusReq];
          diag_log format ["RETURN %1",_return];
          diag_log "----------------------------";
          
      };
      Alles anzeigen


      in der life_server:

      Code
      #include "\life_server\script_macros.hpp"
      /*
          FETCH Insurance Status
      */
      params [
       ["_vid",-1,[0]]
       ,["_pid","",[""]]
       ,["_unit",objNull,[objNull]]
       ,["_type","",[""]]
      ];
      
      if (_vid isEqualTo -1 || _pid isEqualTo "" || isNull _unit || _type isEqualTo "") exitWith {};
      _unit = owner _unit;
      
      _query = format ["SELECT insurance_status FROM vehicles WHERE pid='%1' AND id='%2'",_pid,_vid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (_queryResult isEqualTo "") exitWith {};
      _return = (_queryResult select 0);
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
          _tickTime = diag_tickTime;
          
          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 - Status: %2",(_queryResult),_return];
          diag_log "------------------------------------------------";
      };
      
      //Send Result to player
      [1,"",_return] remoteExecCall ["life_fnc_fetchInsurance",_unit];
      Alles anzeigen

      :/:/

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 27. September 2018 um 20:01
      • #6

      so und wo sind die logs 8o

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 27. September 2018 um 20:04
      • #7
      Zitat von Samero

      Die Logs sind beide clean!

      Vergessen an zu hängen aber bitte und nochmals danke für deine Hilfe! :)

      Dateien

      arma3server_x64_2018-09-27_19-17-21.rpt 76,52 kB – 171 Downloads Client.rpt 29,75 kB – 184 Downloads
    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 27. September 2018 um 20:11
      • #8

      so in den logs finde ich jetzt ausser dem fehlenden Eintrag im stringtable nix. und schaue mal in deine pn's

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 27. September 2018 um 21:49
      • #9

      Fehler gefixt:

      Code
      #include "..\..\script_macros.hpp"
      /*
       File: fn_fetchInsurance.sqf
       Author: Samero Richter @RP-INFINITY
       
       Description:
       Fetch the insurancestatus
      */
      params [
       ["_mode",-1,[0]]
       ,["_class","",[""]]
       ,["_return",-1,[0]]
      ];
      disableSerialization;
      if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
      private _vehicle = lbData[2802,(lbCurSel 2802)];
      _vehicle = (call compile format ["%1",_vehicle]) select 0;
      private _vehicleLife = _vehicle;
      private _vid = lbValue[2802,(lbCurSel 2802)];
      private _pid = getPlayerUID player;
      
      //Fetch send to life_server
      if (_mode isEqualTo 0) exitWith {
       
       if (_class isEqualTo "") exitWith {[]}; //Bad class passed.
       if (!isClass (configFile >> "CfgVehicles" >> _class)) exitWith {[]}; //Class doesn't exist in CfgVehicles
      
       if (life_HC_isActive) then {
       [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
       } else {
       [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
       }; 
      };
      
      //receive Result from life_server
      if (_mode isEqualTo 1) exitWith {
       private _statusReq = _return;
       
       hint format ["Status: %1",_statusReq];
       diag_log "----------------------------";
       diag_log format ["Status %1",_status];
       diag_log format ["StatusReq %1",_statusReq];
       diag_log format ["RETURN %1",_return];
       diag_log "----------------------------";
       
      };
      Alles anzeigen
    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 29. September 2018 um 14:17
      • #10

      Moin zusammen,

      nun hänge ich am nächsten vermutlich kleinen Problem:

      Ich versuche mir eine Zahl an mein Script zurück zugeben aber wenn ich diese verarbeiten will gibt es immer eine Fehlermeldung: Error Params: Typ Zeichenfolge, erwartet Zahl

      zwar verstehe ich schon was er mir damit sagen möchte, aber ich finde den Fehler einfach nicht.

      Meine fn_garageLBChange habe ich entsprechend umgeschrieben:

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_garageLBChange.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Can't be bothered to answer it.. Already deleted it by accident..
      */
      params [
          ["_mode",0,[0]],
          ["_statusReq",0,[0]]
      ];
      disableSerialization;
      private ["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor",
      "_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_price",
      "_storageFee","_purchasePrice", "_vehicleInsuranceStatus", "_InsuranceMultiplier", 
      "_vehicleInsurancePrice","_statusReq"
      ];
      
      diag_log format ["STATUS: %1",_statusReq];
      
      _control = _this select 0;
      _index = _this select 1;
      
      //Fetch some information.
      _dataArr = CONTROL_DATAI(_control,_index);
      _dataArr = call compile format ["%1",_dataArr];
      _className = (_dataArr select 0);
      _classNameLife = _className;
      
      if (_mode isEqualTo 0) then {
      
          if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _classNameLife)) then {
              _classNameLife = "Default"; //Use Default class if it doesn't exist
              diag_log format ["%1: LifeCfgVehicles class doesn't exist",_className];
          };
      
          _vehicleColor = ((M_CONFIG(getArray,"LifeCfgVehicles",_classNameLife,"textures") select (_dataArr select 1)) select 0);
          if (isNil "_vehicleColor") then {_vehicleColor = "Default";};
      
          _vehicleInfo = [_className] call life_fnc_fetchVehInfo;
          _trunkSpace = [_className] call life_fnc_vehicleWeightCfg;
      
          _price = M_CONFIG(getNumber,"LifeCfgVehicles",_classNameLife,"price");
          _storageFee = LIFE_SETTINGS(getNumber,"vehicle_storage_fee_multiplier");
          
          [0,_className,-1] call life_fnc_fetchInsurance;
      };
      
      if (_mode isEqualTo 1) then {
          
          if (_statusReq isEqualTo 0) then {
              _vehicleInsuranceStatus = "Nicht Versichert";
          } else {
              _vehicleInsuranceStatus = "Versichert";
          };
      
          switch (playerSide) do {
              case civilian: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN");
              };
              case west: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP");
              };
              case independent: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC");
              };
              case east: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR");
              };
          };
          _retrievePrice = _purchasePrice * _storageFee;
          _sellPrice = _purchasePrice * _sellMultiplier;
          _vehicleInsurancePrice = _price * _InsuranceMultiplier;
      
          if (!(_sellPrice isEqualType 0) || _sellPrice < 1) then {_sellPrice = 500;};
          if (!(_retrievePrice isEqualType 0) || _retrievePrice < 1) then {_retrievePrice = 500;};
      
          (CONTROL(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_Insurance_Price")+ " <t color='#8cff9b'>$%9</t><br/>
              " +(localize "STR_Insurance_Status")+ " %10<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
              ",
          [_retrievePrice] call life_fnc_numberText,
          [_sellPrice] call life_fnc_numberText,
          (_vehicleInfo select 8),
          (_vehicleInfo select 11),
          (_vehicleInfo select 10),
          if (_trunkSpace isEqualTo -1) then {"None"} else {_trunkSpace},
          (_vehicleInfo select 12),
          _vehicleColor,
          [_vehicleInsurancePrice] call life_fnc_numberText,
          _vehicleInsuranceStatus
          ];
      
          ctrlShow [2803,true];
          ctrlShow [2830,true];
          
      };
      Alles anzeigen

      in der fn_fetchInsurance ist dann folgendes:

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_fetchInsurance.sqf
          Author: Samero Richter @RP-INFINITY
          
          Description:
          Fetch the insurancestatus
      */
      params [
          ["_mode",0,[0]],
          ["_class","",[""]],
          ["_return",-1,[0]]
      ];
      disableSerialization;
      if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
      private _vehicle = lbData[2802,(lbCurSel 2802)];
      _vehicle = (call compile format ["%1",_vehicle]) select 0;
      private _vehicleLife = _vehicle;
      private _vid = lbValue[2802,(lbCurSel 2802)];
      private _pid = getPlayerUID player;
      
      //Fetch send to life_server
      if (_mode isEqualTo 0) exitWith {
          if (_class isEqualTo "") exitWith {[]}; //Bad class passed.
          if (!isClass (configFile >> "CfgVehicles" >> _class)) exitWith {[]}; //Class doesn't exist in CfgVehicles
      
          if (life_HC_isActive) then {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
          } else {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
          }; 
      };
      
      //receive Result from life_server
      if (_mode isEqualTo 1) exitWith {
          private _statusReq = _return;
          
          //return
          [1,_class,_statusReq] call life_fnc_garageLBChange;
      };
      Alles anzeigen

      kann mir jmd. verraten wo mein Denkfehler ist? :/

      Wäre echt super und schon einmal vielen Dank im voraus!

      P.S. im Anhang einmal der Client und Server Log

      Dateien

      Arma3_x64_2018-09-29_10-00-52.rpt 23,15 kB – 175 Downloads arma3server_x64_2018-09-29_14-07-03.rpt 76,27 kB – 221 Downloads
    • br1zey
      Meister
      Reaktionen
      881
      Trophäen
      11
      Beiträge
      2.458
      Dateien
      2
      Bilder
      58
      • 29. September 2018 um 18:07
      • #11

      dein fehler ist an dem punkt wo du von

      fn_fetchInsurance.sqf wieder an fn_garageLBChange.sqf zurück gibst

      und zwar machst du

      [1,_class,_statusReq] call life_fnc_garageLBChange;

      aber GarageLBChange erwartet nur

      params [ ["_mode",0,[0]], ["_statusReq",0,[0]] ];

      ReallifeRPG Admin, Scripter, Technischer Helfer, und Manchmal auch Spieler

      realliferpg128x128.png?resize=128%2C128&ssl=1

    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 29. September 2018 um 18:58
      • #12
      Zitat von br1zey

      dein fehler ist an dem punkt wo du von

      fn_fetchInsurance.sqf wieder an fn_garageLBChange.sqf zurück gibst

      und zwar machst du

      [1,_class,_statusReq] call life_fnc_garageLBChange;

      aber GarageLBChange erwartet nur

      params [ ["_mode",0,[0]], ["_statusReq",0,[0]] ];

      Alles anzeigen

      schon nicht schlecht und schon einmal vielen Dank dafür!

      Aber funktioniert immer noch nicht :(

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_fetchInsurance.sqf
          Author: Samero Richter @RP-INFINITY
          
          Description:
          Fetch the insurancestatus
      */
      params [
          ["_mode",0,[0]],
          ["_class","",[""]],
          ["_return",-1,[0]]
      ];
      disableSerialization;
      if ((lbCurSel 2802) isEqualTo -1) exitWith {hint localize "STR_Global_NoSelection"};
      private _vehicle = lbData[2802,(lbCurSel 2802)];
      _vehicle = (call compile format ["%1",_vehicle]) select 0;
      private _vehicleLife = _vehicle;
      private _vid = lbValue[2802,(lbCurSel 2802)];
      private _pid = getPlayerUID player;
      
      //Fetch send to life_server
      if (_mode isEqualTo 0) exitWith {
          if (_class isEqualTo "") exitWith {[]}; //Bad class passed.
          if (!isClass (configFile >> "CfgVehicles" >> _class)) exitWith {[]}; //Class doesn't exist in CfgVehicles
      
          if (life_HC_isActive) then {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["HC_fnc_vehicleInsuranceStatus",HC_Life];
          } else {
              [_vid,_pid,player,life_garage_type] remoteExecCall ["TON_fnc_vehicleInsuranceStatus",RSERV];
          }; 
      };
      
      //receive Result from life_server
      if (_mode isEqualTo 1) exitWith {
          private _statusReq = _return;
          
          //return
          [1,_class,_statusReq] call life_fnc_garageLBChange;
      };
      Alles anzeigen
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_garageLBChange.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Can't be bothered to answer it.. Already deleted it by accident..
      */
      params [
          ["_mode",0,[0]],
          ["_class","",[""]],
          ["_statusReq",0,[0]]
      ];
      disableSerialization;
      private ["_control","_index","_className","_classNameLife","_dataArr","_vehicleColor",
      "_vehicleInfo","_trunkSpace","_sellPrice","_retrievePrice","_sellMultiplier","_price",
      "_storageFee","_purchasePrice", "_vehicleInsuranceStatus", "_InsuranceMultiplier", 
      "_vehicleInsurancePrice","_statusReq"
      ];
      
      diag_log format ["STATUS: %1",_statusReq];
      
      _control = _this select 0;
      _index = _this select 1;
      
      //Fetch some information.
      _dataArr = CONTROL_DATAI(_control,_index);
      _dataArr = call compile format ["%1",_dataArr];
      _className = (_dataArr select 0);
      _classNameLife = _className;
      
      if (_mode isEqualTo 0) then {
      
          if (!isClass (missionConfigFile >> "LifeCfgVehicles" >> _classNameLife)) then {
              _classNameLife = "Default"; //Use Default class if it doesn't exist
              diag_log format ["%1: LifeCfgVehicles class doesn't exist",_className];
          };
      
          _vehicleColor = ((M_CONFIG(getArray,"LifeCfgVehicles",_classNameLife,"textures") select (_dataArr select 1)) select 0);
          if (isNil "_vehicleColor") then {_vehicleColor = "Default";};
      
          _vehicleInfo = [_className] call life_fnc_fetchVehInfo;
          _trunkSpace = [_className] call life_fnc_vehicleWeightCfg;
      
          _price = M_CONFIG(getNumber,"LifeCfgVehicles",_classNameLife,"price");
          _storageFee = LIFE_SETTINGS(getNumber,"vehicle_storage_fee_multiplier");
          
          [0,_className,-1] call life_fnc_fetchInsurance;
      };
      
      if (_mode isEqualTo 1) then {
          
          if (_statusReq isEqualTo 0) then {
              _vehicleInsuranceStatus = "Nicht Versichert";
          } else {
              _vehicleInsuranceStatus = "Versichert";
          };
      
          switch (playerSide) do {
              case civilian: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_CIVILIAN");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_CIVILIAN");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_CIVILIAN");
              };
              case west: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_COP");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_COP");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_COP");
              };
              case independent: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_MEDIC");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_MEDIC");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_MEDIC");
              };
              case east: {
                  _purchasePrice = _price * LIFE_SETTINGS(getNumber,"vehicle_purchase_multiplier_OPFOR");
                  _sellMultiplier = LIFE_SETTINGS(getNumber,"vehicle_sell_multiplier_OPFOR");
                  _InsuranceMultiplier = LIFE_SETTINGS(getNumber,"vehicle_insurance_multiplier_OPFOR");
              };
          };
          _retrievePrice = _purchasePrice * _storageFee;
          _sellPrice = _purchasePrice * _sellMultiplier;
          _vehicleInsurancePrice = _price * _InsuranceMultiplier;
      
          if (!(_sellPrice isEqualType 0) || _sellPrice < 1) then {_sellPrice = 500;};
          if (!(_retrievePrice isEqualType 0) || _retrievePrice < 1) then {_retrievePrice = 500;};
      
          (CONTROL(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_Insurance_Price")+ " <t color='#8cff9b'>$%9</t><br/>
              " +(localize "STR_Insurance_Status")+ " %10<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
              ",
          [_retrievePrice] call life_fnc_numberText,
          [_sellPrice] call life_fnc_numberText,
          (_vehicleInfo select 8),
          (_vehicleInfo select 11),
          (_vehicleInfo select 10),
          if (_trunkSpace isEqualTo -1) then {"None"} else {_trunkSpace},
          (_vehicleInfo select 12),
          _vehicleColor,
          [_vehicleInsurancePrice] call life_fnc_numberText,
          _vehicleInsuranceStatus
          ];
      
          ctrlShow [2803,true];
          ctrlShow [2830,true];
          
      };
      Alles anzeigen

      Dateien

      Arma3_x64_2018-09-29_10-00-52.rpt 69,55 kB – 180 Downloads arma3server_x64_2018-09-29_18-51-34.rpt 76,26 kB – 240 Downloads
    • br1zey
      Meister
      Reaktionen
      881
      Trophäen
      11
      Beiträge
      2.458
      Dateien
      2
      Bilder
      58
      • 29. September 2018 um 20:26
      • #13

      guck dir bitte mal dein Code genau an und füge nicht einfach so sachen ein

      in Zeile 23-24

      Code
      _control = _this select 0;
      _index = _this select 1;

      wobei _this select 1 = _class währe und das ist ein String aber dort wird wieder eine Zahl erwartet -.-

      ReallifeRPG Admin, Scripter, Technischer Helfer, und Manchmal auch Spieler

      realliferpg128x128.png?resize=128%2C128&ssl=1

    • Samero
      Anfänger
      Reaktionen
      6
      Trophäen
      10
      Beiträge
      77
      • 3. Oktober 2018 um 13:22
      • #14

      Das Problem war auch damit nicht behoben.

      Einfach so Sachen habe ich nicht eingefügt, sondern mir was dabei gedacht.

      Der oben genannte Fehler kam aus mehreren Test versuchen zustande ;)

      Da ich das Problem nun anders gelöst habe, kann das Thema geschlossen werden.

      #close

    Registrieren oder Einloggen

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

    Registrieren

    Ähnliche Themen

    • Dienstantritt als Zivilist

      • ProteusSpectrum
      • 28. April 2018 um 21:26
      • Tutorials & Releases

    Tags

    • script
    • Datenbank
    • Datenbankabfrage #
    • Life-Server

    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™