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
So: 08 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

    RISK'S EASY EXP SYSTEM Fehler

    • Lucifer Lucius
    • 31. August 2018 um 13:57
    • Erledigt
    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 13:57
      • #1

      Hi NN ich habe leider ein fehler im xp system von Risk der fehler wurde schon mal genant aber es kam nie eine lösung zum fehler die funktioniert der fehler code ist

      Code
      20:11:18 Error in expression <eNumber (_this select 12);
      life_LEVEL = parseNumber (_this select 13);
      player se>
      20:11:18   Error position: <parseNumber (_this select 13);
      player se>
      20:11:18   Error parsenumber: Typ Array, erwartet Bool,Zeichenfolge
      20:11:18 File core\session\fn_requestReceived.sqf [SOCK_fnc_requestReceived], line 127

      Und Ich habe noch mal die frage da ich wegen nem ausweis script schon _this select 12Und _this select 13 habe muss ich das den jetzt beim lvl und exp ändern ?

      Info: benutze 4.4.4, Meine Logs & fn_requestReceived

      Freue mich über jede Hielfe die kommt

      Mfg Lucifer

      Dateien

      Arma3_x64_2018-08-28_20-06-06.rpt 72,66 kB – 150 Downloads arma3server_2018-08-31_13-28-54.rpt 73,71 kB – 142 Downloads fn_requestReceived.sqf 4,86 kB – 164 Downloads
    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 31. August 2018 um 15:04
      • #2

      schick mal deine QueryRequest

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 16:12
      • #3

      Hier Bitte und danke für die hilfe

      Dateien

      fn_queryRequest.sqf 6,85 kB – 176 Downloads
    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 31. August 2018 um 16:59
      • #4
      Spoiler anzeigen
      Code
      #include "\life_server\script_macros.hpp"
      /*
          File: fn_queryRequest.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Handles the incoming request and sends an asynchronous query
          request to the database.
      
          Return:
          ARRAY - If array has 0 elements it should be handled as an error in client-side files.
          STRING - The request had invalid handles or an unknown error and is logged to the RPT.
      */
      private["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
      _ownerID = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param;
      
      if (isNull _ownerID) exitWith {};
      _ownerID = owner _ownerID;
      
      _query = switch (_side) do {
          // West - 12 entries returned
          case west: {format ["SELECT playerid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime, idcard_data_cop FROM players WHERE playerid='%1'",_uid];};
          // Civilian - 13 entries returned
          case civilian: {format ["SELECT playerid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, EXP, LEVEL,idcard_data_civ FROM players WHERE playerid='%1'",_uid];};
          // Independent - 11 entries returned
          case independent: {format ["SELECT playerid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime, idcard_data_med FROM players WHERE playerid='%1'",_uid];};
      };
      
      _tickTime = diag_tickTime;
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
          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 (_queryResult isEqualType "") exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      if (count _queryResult isEqualTo 0) exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      //Blah conversion thing from a2net->extdb
      _tmp = _queryResult select 2;
      _queryResult set[2,[_tmp] call DB_fnc_numberSafe];
      _tmp = _queryResult select 3;
      _queryResult set[3,[_tmp] call DB_fnc_numberSafe];
      
      //Parse licenses (Always index 6)
      _new = [(_queryResult select 6)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format["%1", _new];};
      _queryResult set[6,_new];
      
      //Convert tinyint to boolean
      _old = _queryResult select 6;
      for "_i" from 0 to (count _old)-1 do {
          _data = _old select _i;
          _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
      };
      
      _queryResult set[6,_old];
      
      _new = [(_queryResult select 8)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format["%1", _new];};
      _queryResult set[8,_new];
      //Parse data for specific side.
      switch (_side) do {
          case west: {
              _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
      
              //Parse Stats
              _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[10,_new];
      
              //Playtime
              _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _index = TON_fnc_playtime_values_request find [_uid, _new];
              if (_index != -1) then {
                  TON_fnc_playtime_values_request set[_index,-1];
                  TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              } else {
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              };
              [_uid,_new select 0] call TON_fnc_setPlayTime;
              
              //idcard_data
              _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format["%1", _new];};
              _queryResult set[12,_new];
          };
      
          case civilian: {
              //XP
              _tmp = _queryResult select 13;
              _queryResult set[15,[_tmp] call DB_fnc_numberSafe];
              //LEVEL
              _tmp = _queryResult select 14;
              _queryResult set[16,[_tmp] call DB_fnc_numberSafe];
              //idcard_data
              _new = [(_queryResult select 15)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format["%1", _new];};
              _queryResult set[13,_new];
              
              _queryResult set[7,([_queryResult select 7,1] call DB_fnc_bool)];
      
              //Parse Stats
              _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[9,_new];
      
              //Position
              _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
              _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[11,_new];
      
              //Playtime
              _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _index = TON_fnc_playtime_values_request find [_uid, _new];
              if (_index != -1) then {
                  TON_fnc_playtime_values_request set[_index,-1];
                  TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              } else {
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              };
              [_uid,_new select 2] call TON_fnc_setPlayTime;
              
              /* Make sure nothing else is added under here */
              _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
              waitUntil {scriptDone _houseData};
              _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
              _gangData = _uid spawn TON_fnc_queryPlayerGang;
              waitUntil{scriptDone _gangData};
              _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
          };
      
          case independent: {
              //Parse Stats
              _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[9,_new];
      
              //Playtime
              _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _index = TON_fnc_playtime_values_request find [_uid, _new];
              if !(_index isEqualTo -1) then {
                  TON_fnc_playtime_values_request set[_index,-1];
                  TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              } else {
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              };
              [_uid,_new select 1] call TON_fnc_setPlayTime;
              
              //idcard_data
              _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format["%1", _new];};
              _queryResult set[11,_new];
          };
      };
      
      publicVariable "TON_fnc_playtime_values_request";
      
      _keyArr = missionNamespace getVariable [format["%1_KEYS_%2",_uid,_side],[]];
      _queryResult set[16,_keyArr];
      
      _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
      Alles anzeigen
      Spoiler anzeigen
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_requestReceived.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Called by the server saying that we have a response so let's
          sort through the information, validate it and if all valid
          set the client up.
      */
      private["_array"];
      life_session_tries = life_session_tries + 1;
      if (life_session_completed) exitWith {}; //Why did this get executed when the client already initialized? F*cking arma...
      if (life_session_tries > 3) exitWith {cutText[localize "STR_Session_Error","BLACK FADED"]; 0 cutFadeOut 999999999;};
      
      0 cutText [localize "STR_Session_Received","BLACK FADED"];
      0 cutFadeOut 9999999;
      
      //Error handling and junk..
      if (isNil "_this") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (_this isEqualType "") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (count _this isEqualTo 0) exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if ((_this select 0) isEqualTo "Error") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (!(getPlayerUID player isEqualTo (_this select 0))) exitWith {[] call SOCK_fnc_dataQuery;};
      
      //Lets make sure some vars are not set before hand.. If they are get rid of them, hopefully the engine purges past variables but meh who cares.
      if (!isServer && (!isNil "life_adminlevel" || !isNil "life_coplevel" || !isNil "life_donorlevel")) exitWith {
          sleep 0.9;
          failMission "END";
      };
      
      //Parse basic player information.
      CASH = parseNumber (_this select 2);
      BANK = parseNumber (_this select 3);
      CONST(life_adminlevel,parseNumber (_this select 4));
      if (LIFE_SETTINGS(getNumber,"donor_level") isEqualTo 1) then {
          CONST(life_donorlevel,parseNumber (_this select 5));
      } else {
          CONST(life_donorlevel,0);
      };
      
      //Loop through licenses
      if (count (_this select 6) > 0) then {
          {missionNamespace setVariable [(_x select 0),(_x select 1)];} forEach (_this select 6);
      };
      
      life_gear = _this select 8;
      [true] call life_fnc_loadGear;
      
      //Parse side specific information.
      switch (playerSide) do {
          case west: {
              CONST(life_coplevel, parseNumber(_this select 7));
              CONST(life_medicLevel,0);
              life_blacklisted = _this select 9;
              if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
                  life_hunger = ((_this select 10) select 0);
                  life_thirst = ((_this select 10) select 1);
                  player setDamage ((_this select 10) select 2);
              };
              //idcard
              if((_this select 12) isEqualTo []) then {
                  life_side_noidcard = true;
              } else {
                  life_idcard_data = _this select 12;
              };
          };
      
          case civilian: {
              diag_log format["THIS: %1",_this];
              life_is_arrested = _this select 7;
              CONST(life_coplevel, 0);
              CONST(life_medicLevel, 0);
              life_houses = _this select 14;
              if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
                  life_hunger = ((_this select 9) select 0);
                  life_thirst = ((_this select 9) select 1);
                  player setDamage ((_this select 9) select 2);
              };
              life_EXP = parseNumber (_this select 15);
              life_LEVEL = parseNumber (_this select 16);
              //idcard
              if((_this select 13) isEqualTo []) then {
                  life_side_noidcard = true;
              } else {
                  life_idcard_data = _this select 13;
              };
              //Position
              if (LIFE_SETTINGS(getNumber,"save_civilian_position") isEqualTo 1) then {
                  life_is_alive = _this select 10;
                  life_civ_position = _this select 11;
                  if (life_is_alive) then {
                      if (count life_civ_position != 3) then {diag_log format["[requestReceived] Bad position received. Data: %1",life_civ_position];life_is_alive =false;};
                      if (life_civ_position distance (getMarkerPos "respawn_civilian") < 300) then {life_is_alive = false;};
                  };
              };
      
              {
                  _house = nearestObject [(call compile format["%1",(_x select 0)]), "House"];
                  life_vehicles pushBack _house;
              } forEach life_houses;
      
              life_gangData = _this select 15;
              if (!(count life_gangData isEqualTo 0)) then {
                  [] spawn life_fnc_initGang;
              };
              [] spawn life_fnc_initHouses;
          };
      
          case independent: {
              CONST(life_medicLevel, parseNumber(_this select 7));
              CONST(life_coplevel,0);
              if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
                  life_hunger = ((_this select 9) select 0);
                  life_thirst = ((_this select 9) select 1);
                  player setDamage ((_this select 9) select 2);
              };
              //idcard
              if((_this select 11) isEqualTo []) then {
                  life_side_noidcard = true;
              } else {
                  life_idcard_data = _this select 11;
              };
          };
      };
      
      if (count (_this select 16) > 0) then {
          {life_vehicles pushBack _x;} forEach (_this select 16);
      };
      
      life_session_completed = true;
      Alles anzeigen

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 17:14
      • #5

      Ich teste kurz

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 17:26
      • #6

      Nicht mer genau den gleichen fehler aber immer noch vorhanden aber schon mal danke

      Dateien

      Arma3_x64_2018-08-31_17-13-55.rpt 72,74 kB – 161 Downloads arma3server_2018-08-31_17-11-56.rpt 77 kB – 156 Downloads
    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 31. August 2018 um 17:37
      • #7

      Ein Objekt mit dem Namen bank_obj fehlt auf der Karte.

      Ansonsten.. vllt den DB Eintrag vergessen oder sonst wo einen Zahlendreher?

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 17:41
      • #8

      db eintrag ist drinne das mit dem bank_obj wahr aber schin immer so und zahlen dreher wie meinst du das ? das bei dem select ne falsche zahl steht ?

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 31. August 2018 um 18:01
      • #9
      Zitat von Lucifer Lucius

      db eintrag ist drinne das mit dem bank_obj wahr aber schin immer so und zahlen dreher wie meinst du das ? das bei dem select ne falsche zahl steht ?

      genau

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 18:13
      • #10

      kann ich den rein tehoretisch einfach 99 und 98 benutzen oder wo muss ich die zahl anpassen ?

    • Alice Kingsleigh
      Profi
      Reaktionen
      329
      Trophäen
      8
      Beiträge
      1.141
      • 31. August 2018 um 18:21
      • #11

      Bitte nimm ein kleines Objekt, setz es auf die Spawninsel und nenn es bank_obj. Wir viele Fehler, unter anderem das der Bankraub nicht geht, beheben.

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 18:29
      • #12

      ok

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 31. August 2018 um 20:13
      • #13

      Immer noch der fehler

      Code
      20:06:54 Error in expression <eNumber (_this select 15);
      life_LEVEL = parseNumber (_this select 16);
      
      if((_thi>
      20:06:54   Error position: <parseNumber (_this select 16);
      
      if((_thi>
      20:06:54   Error parsenumber: Typ Array, erwartet Bool,Zeichenfolge
      20:06:54 File core\session\fn_requestReceived.sqf [SOCK_fnc_requestReceived], line 120
    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 1. September 2018 um 11:05
      • #14

      Hi habe jetzt noch am abend ein bischen rum probiert habe den eigentlichen fehler raus aber da ist jetzt noch ein anderer drinne

      Code
      10:17:15 Error in expression <use"]; life_vehicles pushBack _house; } forEach life_houses; 
      life_gangData = _t>
      10:17:15   Error position: <forEach life_houses; life_gangData = _t>
      10:17:15   Error foreach: Typ Zahl, erwartet Array
      10:17:15 File core\session\fn_requestReceived.sqf [SOCK_fnc_requestReceived], line 149

      Ich glaube es liegt daran das life_gangData = _this select 15; weil meine exp auch select 15 haben oder kennt jemand ne andere lösung ?

      Einmal editiert, zuletzt von Lucifer Lucius (1. September 2018 um 11:21)

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 1. September 2018 um 11:26
      • #15

      dann stell die XP einfach mal auf 16und 17 dann sollte überhaupt nichts im weg sein.

      mfg Risk

      https://www.twitch.tv/theriskarma

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 1. September 2018 um 11:31
      • #16

      Muss ich auch was in der queryRequeständern ?

      Code
              //XP
              _tmp = _queryResult select 13;
              _queryResult set[15,[_tmp] call DB_fnc_numberSafe];
              
              //LEVEL
              _tmp = _queryResult select 14;
              _queryResult set[16,[_tmp] call DB_fnc_numberSafe];

      und den

      Code
      life_EXP = (_this select 15);
      life_LEVEL = (_this select 16);

      also einfach bei der queryRequest xp auf _queryResult set[15,[_tmp] call DB_fnc_numberSafe];zu _queryResult set[17,[_tmp] call DB_fnc_numberSafe];

      und den einfach bei life_EXP = (_this select 15); zu life_EXP = (_this select 17); oder muss ich noch was beachten ?

      3 Mal editiert, zuletzt von Lucifer Lucius (1. September 2018 um 11:39)

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 2. September 2018 um 11:04
      • #17

      Kleiner Pusch

    • Lucifer Lucius
      Amateur
      Reaktionen
      5
      Trophäen
      8
      Beiträge
      200
      • 2. September 2018 um 12:43
      • #18

      Ok habe es jetzt noch mal um probiert und so gemacht

      Code
      //XP
              _tmp = _queryResult select 14;
              _queryResult set[16,[_tmp] call DB_fnc_numberSafe];
              
              //LEVEL
              _tmp = _queryResult select 15;
              _queryResult set[17,[_tmp] call DB_fnc_numberSafe];

      Und

      Code
      life_EXP = (_this select 16);
      life_LEVEL = (_this select 17);

      Leider aber noch ein fehler in den logs und zwar

      Code
      12:24:06 Error in expression <use"];
      life_vehicles pushBack _house;
      } forEach life_houses;
      
      life_gangData = _t>
      12:24:06   Error position: <forEach life_houses;
      
      life_gangData = _t>
      12:24:06   Error foreach: Typ Zahl, erwartet Array
      12:24:06 File core\session\fn_requestReceived.sqf [SOCK_fnc_requestReceived], line 149

      Jemand ne lösung

      Komplette datei

      Code
      #include "\life_server\script_macros.hpp"
      /*
          File: fn_queryRequest.sqf
          Author: Bryan "Tonic" Boardwine
          
          Description:
          Handles the incoming request and sends an asynchronous query
          request to the database.
          
          Return:
          ARRAY - If array has 0 elements it should be handled as an error in client-side files.
          STRING - The request had invalid handles or an unknown error and is logged to the RPT.
      */
      private["_uid","_side","_query","_queryResult","_tickTime","_tmp"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _side = [_this,1,sideUnknown,[civilian]] call BIS_fnc_param;
      _ownerID = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param;
      
      if (isNull _ownerID) exitWith {};
      _ownerID = owner _ownerID;
      
      _query = switch (_side) do {
          // West - 12 entries returned
          case west: {format ["SELECT playerid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime, idcard_data_cop FROM players WHERE playerid='%1'",_uid];};
          // Civilian - 13 entries returned
          case civilian: {format ["SELECT playerid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, EXP, LEVEL,idcard_data_civ FROM players WHERE playerid='%1'",_uid];};
          // Independent - 11 entries returned
          case independent: {format ["SELECT playerid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime, idcard_data_med FROM players WHERE playerid='%1'",_uid];};
      };
      
      _tickTime = diag_tickTime;
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      
      if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
          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 (_queryResult isEqualType "") exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      if (count _queryResult isEqualTo 0) exitWith {
          [] remoteExecCall ["SOCK_fnc_insertPlayerInfo",_ownerID];
      };
      
      //Blah conversion thing from a2net->extdb
      _tmp = _queryResult select 2;
      _queryResult set[2,[_tmp] call DB_fnc_numberSafe];
      _tmp = _queryResult select 3;
      _queryResult set[3,[_tmp] call DB_fnc_numberSafe];
      
      //Parse licenses (Always index 6)
      _new = [(_queryResult select 6)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format["%1", _new];};
      _queryResult set[6,_new];
      
      //Convert tinyint to boolean
      _old = _queryResult select 6;
      for "_i" from 0 to (count _old)-1 do {
          _data = _old select _i;
          _old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
      };
      
      _queryResult set[6,_old];
      
      _new = [(_queryResult select 8)] call DB_fnc_mresToArray;
      if (_new isEqualType "") then {_new = call compile format["%1", _new];};
      _queryResult set[8,_new];
      //Parse data for specific side.
      switch (_side) do {
          case west: {
              _queryResult set[9,([_queryResult select 9,1] call DB_fnc_bool)];
              
              //Parse Stats
              _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[10,_new];
              
              //Playtime
              _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _index = TON_fnc_playtime_values_request find [_uid, _new];
              if (_index != -1) then {
                  TON_fnc_playtime_values_request set[_index,-1];
                  TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              } else {
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              };
              [_uid,_new select 0] call TON_fnc_setPlayTime;
       
              //idcard_data
              _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format["%1", _new];};
              _queryResult set[12,_new];
          };
          
          case civilian: {
              //XP
              _tmp = _queryResult select 14;
              _queryResult set[16,[_tmp] call DB_fnc_numberSafe];
              
              //LEVEL
              _tmp = _queryResult select 15;
              _queryResult set[17,[_tmp] call DB_fnc_numberSafe];
              
              //idcard_data
              _new = [(_queryResult select 15)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format["%1", _new];};
              _queryResult set[13,_new];
       
              _queryResult set[7,([_queryResult select 7,1] call DB_fnc_bool)];
              
              //Parse Stats
              _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[9,_new];
              
              //Position
              _queryResult set[10,([_queryResult select 10,1] call DB_fnc_bool)];
              _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[11,_new];
              
              //Playtime
              _new = [(_queryResult select 12)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _index = TON_fnc_playtime_values_request find [_uid, _new];
              if (_index != -1) then {
                  TON_fnc_playtime_values_request set[_index,-1];
                  TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              } else {
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              };
              [_uid,_new select 2] call TON_fnc_setPlayTime;
       
              /* Make sure nothing else is added under here */
              _houseData = _uid spawn TON_fnc_fetchPlayerHouses;
              waitUntil {scriptDone _houseData};
              _queryResult pushBack (missionNamespace getVariable [format ["houses_%1",_uid],[]]);
              _gangData = _uid spawn TON_fnc_queryPlayerGang;
              waitUntil{scriptDone _gangData};
              _queryResult pushBack (missionNamespace getVariable [format ["gang_%1",_uid],[]]);
          };
          
          case independent: {
              //Parse Stats
              _new = [(_queryResult select 9)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _queryResult set[9,_new];
              
              //Playtime
              _new = [(_queryResult select 10)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
              _index = TON_fnc_playtime_values_request find [_uid, _new];
              if !(_index isEqualTo -1) then {
                  TON_fnc_playtime_values_request set[_index,-1];
                  TON_fnc_playtime_values_request = TON_fnc_playtime_values_request - [-1];
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              } else {
                  TON_fnc_playtime_values_request pushBack [_uid, _new];
              };
              [_uid,_new select 1] call TON_fnc_setPlayTime;
       
              //idcard_data
              _new = [(_queryResult select 11)] call DB_fnc_mresToArray;
              if (_new isEqualType "") then {_new = call compile format["%1", _new];};
              _queryResult set[11,_new];
          };
      };
      
      publicVariable "TON_fnc_playtime_values_request";
      
      _keyArr = missionNamespace getVariable [format["%1_KEYS_%2",_uid,_side],[]];
      _queryResult set[16,_keyArr];
      
      _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
      Alles anzeigen

      Und

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_requestReceived.sqf
          Author: Bryan "Tonic" Boardwine
       
          Description:
          Called by the server saying that we have a response so let's
          sort through the information, validate it and if all valid
          set the client up.
      */
      private["_array"];
      life_session_tries = life_session_tries + 1;
      if (life_session_completed) exitWith {}; //Why did this get executed when the client already initialized? F*cking arma...
      if (life_session_tries > 3) exitWith {cutText[localize "STR_Session_Error","BLACK FADED"]; 0 cutFadeOut 999999999;};
      
      0 cutText [localize "STR_Session_Received","BLACK FADED"];
      0 cutFadeOut 9999999;
      
      //Error handling and junk..
      if (isNil "_this") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (_this isEqualType "") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (count _this isEqualTo 0) exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if ((_this select 0) isEqualTo "Error") exitWith {[] call SOCK_fnc_insertPlayerInfo;};
      if (!(getPlayerUID player isEqualTo (_this select 0))) exitWith {[] call SOCK_fnc_dataQuery;};
      
      //Lets make sure some vars are not set before hand.. If they are get rid of them, hopefully the engine purges past variables but meh who cares.
      if (!isServer && (!isNil "life_adminlevel" || !isNil "life_coplevel" || !isNil "life_donorlevel")) exitWith {
          sleep 0.9;
          failMission "END";
      };
      
      //Parse basic player information.
      CASH = parseNumber (_this select 2);
      BANK = parseNumber (_this select 3);
      CONST(life_adminlevel,parseNumber (_this select 4));
      if (LIFE_SETTINGS(getNumber,"donor_level") isEqualTo 1) then {
          CONST(life_donorlevel,parseNumber (_this select 5));
      } else {
          CONST(life_donorlevel,0);
      };
      
      //Loop through licenses
      if (count (_this select 6) > 0) then {
          {missionNamespace setVariable [(_x select 0),(_x select 1)];} forEach (_this select 6);
      };
      
      life_gear = _this select 8;
      [true] call life_fnc_loadGear;
      
      //Parse side specific information.
      switch (playerSide) do {
          case west: {
              CONST(life_coplevel, parseNumber(_this select 7));
              CONST(life_medicLevel,0);
              life_blacklisted = _this select 9;
              if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
                  life_hunger = ((_this select 10) select 0);
                  life_thirst = ((_this select 10) select 1);
                  player setDamage ((_this select 10) select 2);
              };
              //idcard
              if((_this select 12) isEqualTo []) then {
                  life_side_noidcard = true;
              } else {
                  life_idcard_data = _this select 12;
              };
          };
          
          case civilian: {
              diag_log format["THIS: %1",_this];
              life_is_arrested = _this select 7;
              CONST(life_coplevel, 0);
              CONST(life_medicLevel, 0);
              life_houses = _this select 14;
              if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
                  life_hunger = ((_this select 9) select 0);
                  life_thirst = ((_this select 9) select 1);
                  player setDamage ((_this select 9) select 2);
              };
              life_EXP = (_this select 16);
              life_LEVEL = (_this select 17);
              //idcard
              if((_this select 13) isEqualTo []) then {
                  life_side_noidcard = true;
              } else {
                  life_idcard_data = _this select 13;
              };
              //Position
              if (LIFE_SETTINGS(getNumber,"save_civilian_position") isEqualTo 1) then {
                  life_is_alive = _this select 10;
                  life_civ_position = _this select 11;
                  if (life_is_alive) then {
                      if (count life_civ_position != 3) then {diag_log format["[requestReceived] Bad position received. Data: %1",life_civ_position];life_is_alive =false;};
                      if (life_civ_position distance (getMarkerPos "respawn_civilian") < 300) then {life_is_alive = false;};
                  };
              };
              
              {
                  _house = nearestObject [(call compile format["%1",(_x select 0)]), "House"];
                  life_vehicles pushBack _house;
              } forEach life_houses;
              
              life_gangData = _this select 15;
              if (!(count life_gangData isEqualTo 0)) then {
                  [] spawn life_fnc_initGang;
              };
              [] spawn life_fnc_initHouses;
          };
          
          case independent: {
              CONST(life_medicLevel, parseNumber(_this select 7));
              CONST(life_coplevel,0);
              if (LIFE_SETTINGS(getNumber,"save_playerStats") isEqualTo 1) then {
                  life_hunger = ((_this select 9) select 0);
                  life_thirst = ((_this select 9) select 1);
                  player setDamage ((_this select 9) select 2);
              };
              //idcard
              if((_this select 11) isEqualTo []) then {
                  life_side_noidcard = true;
              } else {
                  life_idcard_data = _this select 11;
              };
          };
      };
      
      if (count (_this select 16) > 0) then {
          {life_vehicles pushBack _x;} forEach (_this select 16);
      };
      
      life_session_completed = true;
      Alles anzeigen

    Registrieren oder Einloggen

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

    Registrieren

    Ähnliche Themen

    • [Tutorial] Risk's Easy Exp System

      • Risk
      • 21. Oktober 2017 um 20:25
      • Tutorials & Releases
    • ArmA 3 Tutorials & Scripts Übersicht – Alle Anleitungen für Server, Modding & Scripting auf einen Blick

      • Marius1773
      • 31. Mai 2018 um 01:15
      • Tutorials & Releases

    Benutzer online in diesem Thema

    • 2 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™