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
Di: 01 Juli 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] Risk's Easy Exp System

      • Altis Life
    • Risk
    • 21. Oktober 2017 um 20:25
    1. offizieller Beitrag
    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 21. Oktober 2017 um 20:25
      • #1

      Moin Leute.

      Hier mal mein kleines EXP System. Ihr könnt hiermit beim farmen ganz einfach EXP sammeln und diese dann mit life_EXP abfragen.

      Wenn ihr Fehler habt, schickt mir bitte euren kompletten Log + ExtDB Log, ansonsten kann und wird euch keiner helfen.

      Let's go.

      Life_server

      fn_queryRequest

      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 - 11 entries returned
          case west: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, cop_licenses, coplevel, cop_gear, blacklist, cop_stats, playtime FROM players WHERE pid='%1'",_uid];};
          // Civilian - 13 entries returned
          case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, EXP, LEVEL FROM players WHERE pid='%1'",_uid];};
          // Independent - 10 entries returned
          case independent: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, med_licenses, mediclevel, med_gear, med_stats, playtime FROM players WHERE pid='%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;
          };
      
          case civilian: {
              _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;
      
              _tmp = _queryResult select 13;
              _queryResult set[12,[_tmp] call DB_fnc_numberSafe];
              _tmp = _queryResult select 14;
              _queryResult set[13,[_tmp] call DB_fnc_numberSafe];
      
              /* 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;
          };
      };
      
      publicVariable "TON_fnc_playtime_values_request";
      
      _keyArr = missionNamespace getVariable [format ["%1_KEYS_%2",_uid,_side],[]];
      _queryResult pushBack _keyArr;
      
      _queryResult remoteExec ["SOCK_fnc_requestReceived",_ownerID];
      Alles anzeigen

      fn_updatePartial

      case 8 erstellen

      Spoiler anzeigen
      Code
      case 8: {
              _value = [_this,2,0,[0]] call BIS_fnc_param;
              _value = [_value] call DB_fnc_numberSafe;
              _query = format ["UPDATE players SET EXP='%1' WHERE pid='%2'",_value,_uid];
      };
      
      case 9: {
              _value = [_this,2,0,[0]] call BIS_fnc_param;
              _value = [_value] call DB_fnc_numberSafe;
              _query = format ["UPDATE players SET LEVEL='%1' WHERE pid='%2'",_value,_uid];
      };
      Alles anzeigen

      fn_updateRequest

      Spoiler anzeigen
      Code
      /*
          File: fn_updateRequest.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Updates ALL player information in the database.
          Information gets passed here from the client side file: core\session\fn_updateRequest.sqf
      */
      private ["_uid","_side","_cash","_bank","_licenses","_gear","_stats","_name","_alive","_position","_query","_thread","_EXP","_LEVEL"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _name = [_this,1,"",[""]] call BIS_fnc_param;
      _side = [_this,2,sideUnknown,[civilian]] call BIS_fnc_param;
      _cash = [_this,3,0,[0]] call BIS_fnc_param;
      _bank = [_this,4,5000,[0]] call BIS_fnc_param;
      _licenses = [_this,5,[],[[]]] call BIS_fnc_param;
      _gear = [_this,6,[],[[]]] call BIS_fnc_param;
      _stats = [_this,7,[100,100],[[]]] call BIS_fnc_param;
      _alive = [_this,9,false,[true]] call BIS_fnc_param;
      _position = [_this,10,[],[[]]] call BIS_fnc_param;
      _EXP = [_this,11,0,[0]] call BIS_fnc_param;
      _LEVEL = [_this,12,0,[0]] call BIS_fnc_param;
      
      //Get to those error checks.
      if ((_uid isEqualTo "") || (_name isEqualTo "")) exitWith {};
      
      //Parse and setup some data.
      _name = [_name] call DB_fnc_mresString;
      _gear = [_gear] call DB_fnc_mresArray;
      _stats = [_stats] call DB_fnc_mresArray;
      _cash = [_cash] call DB_fnc_numberSafe;
      _bank = [_bank] call DB_fnc_numberSafe;
      _EXP = [_EXP] call DB_fnc_numberSafe;
      _LEVEL = [_LEVEL] call DB_fnc_numberSafe;
      _position = if (_side isEqualTo civilian) then {[_position] call DB_fnc_mresArray} else {[]};
      
      //Does something license related but I can't remember I only know it's important?
      for "_i" from 0 to count(_licenses)-1 do {
          _bool = [(_licenses select _i) select 1] call DB_fnc_bool;
          _licenses set[_i,[(_licenses select _i) select 0,_bool]];
      };
      
      _licenses = [_licenses] call DB_fnc_mresArray;
      
      //PLAYTIME
      _playtime = [_uid] call TON_fnc_getPlayTime;
      _playtime_update = [];
      {
          if ((_x select 0) isEqualTo _uid) exitWith
          {
              _playtime_update pushBack [_x select 1];
          };
      } forEach TON_fnc_playtime_values_request;
      _playtime_update = (_playtime_update select 0) select 0;
      switch (_side) do {
          case west: {_playtime_update set[0,_playtime];};
          case civilian: {_playtime_update set[2,_playtime];};
          case independent: {_playtime_update set[1,_playtime];};
      };
      _playtime_update = [_playtime_update] call DB_fnc_mresArray;
      
      switch (_side) do {
          case west: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', cop_gear='%4', cop_licenses='%5', cop_stats='%6', playtime='%7' WHERE pid='%8'",_name,_cash,_bank,_gear,_licenses,_stats,_playtime_update,_uid];};
          case civilian: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', civ_licenses='%4', civ_gear='%5', arrested='%6', civ_stats='%7', civ_alive='%8', civ_position='%9', playtime='%10', EXP='%11', LEVEL='%12' WHERE pid='%13'",_name,_cash,_bank,_licenses,_gear,[_this select 8] call DB_fnc_bool,_stats,[_alive] call DB_fnc_bool,_position,_playtime_update,_EXP,_LEVEL,_uid];};
          case independent: {_query = format ["UPDATE players SET name='%1', cash='%2', bankacc='%3', med_licenses='%4', med_gear='%5', med_stats='%6', playtime='%7' WHERE pid='%8'",_name,_cash,_bank,_licenses,_gear,_stats,_playtime_update,_uid];};
      };
      
      
      _queryResult = [_query,1] call DB_fnc_asyncCall;
      Alles anzeigen

      Das wars schon vom life_server her.

      Jetzt gehen wir zur Mission

      fn_requestReceived

      bei case Civilian

      Spoiler anzeigen
      Code
      life_EXP = parseNumber (_this select 12);
      life_LEVEL = parseNumber (_this select 13);

      fn_updatePartial

      case 8 erstellen

      Spoiler anzeigen
      Code
      case 8: {
              _packet set[2,life_EXP];
      };
      case 9: {
              _packet set[2,life_LEVEL];
      };

      fn_updateRequest

      Spoiler anzeigen
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_updateRequest.sqf
          Author: Tonic
      
          Description:
          Passes ALL player information to the server to save player data to the database.
      */
      private ["_packet","_array","_flag","_alive","_position"];
      _packet = [getPlayerUID player,(profileName),playerSide,CASH,BANK];
      _array = [];
      _alive = alive player;
      _position = getPosATL player;
      _flag = switch (playerSide) do {case west: {"cop"}; case civilian: {"civ"}; case independent: {"med"};};
      
      {
          _varName = LICENSE_VARNAME(configName _x,_flag);
          _array pushBack [_varName,LICENSE_VALUE(configName _x,_flag)];
      } forEach (format ["getText(_x >> 'side') isEqualTo '%1'",_flag] configClasses (missionConfigFile >> "Licenses"));
      
      _packet pushBack _array;
      
      call life_fnc_saveGear;
      _packet pushBack life_gear;
      
      _array = [];
      _array pushBack life_hunger;
      _array pushBack life_thirst;
      _array pushBack (damage player);
      _packet pushBack _array;
      
      switch (playerSide) do {
          case civilian: {
              _packet pushBack life_is_arrested;
              _packet pushBack _alive;
              _packet pushBack _position;
              _packet pushBack life_EXP;
              _packet pushBack life_LEVEL;
          };
      };
      
      if (life_HC_isActive) then {
          _packet remoteExecCall ["HC_fnc_updateRequest",HC_Life];
      } else {
          _packet remoteExecCall ["DB_fnc_updateRequest",RSERV];
      };
      Alles anzeigen

      Für Eure Datenbank.

      Code
      ALTER TABLE `altislife`.`players`
      ADD COLUMN `EXP` INT(100) NOT NULL DEFAULT 0,
      ADD COLUMN `LEVEL` INT(100) NOT NULL DEFAULT 0

      In der Config_Gather bei jedem farmitem einfügen. DIe Farmzeit könnt ihr auch beliebig ändern.

      Code
      exp = 2;
      farmTime = 3;

      fn_gather

      Spoiler anzeigen
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_gather.sqf
          Author: Devilfloh
      
          Description:
          Main functionality for gathering.
      */
      private ["_maxGather","_resource","_amount","_maxGather","_requiredItem","_EXP","_farmTime"];
      if (life_action_inUse) exitWith {};
      if !(isNull objectParent player) exitWith {};
      if (player getVariable "restrained") exitWith {hint localize "STR_NOTF_isrestrained";};
      if (player getVariable "playerSurrender") exitWith {hint localize "STR_NOTF_surrender";};
      
      life_action_inUse = true;
      _zone = "";
      _requiredItem = "";
      _exit = false;
      
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
      for "_i" from 0 to count(_resourceCfg)-1 do {
      
          _curConfig = _resourceCfg select _i;
          _resource = configName _curConfig;
          _maxGather = getNumber(_curConfig >> "amount");
          _zoneSize = getNumber(_curConfig >> "zoneSize");
          _resourceZones = getArray(_curConfig >> "zones");
          _requiredItem = getText(_curConfig >> "item");
          _EXP = getNumber(_curConfig >> "exp");
          _farmTime = getNumber(_curConfig >> "farmTime");
          {
              if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
          } forEach _resourceZones;
      
          if (_zone != "") exitWith {};
      };
      
      if (_zone isEqualTo "") exitWith {life_action_inUse = false;};
      if (_requiredItem != "") then {
          _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
      
          if (_valItem < 1) exitWith {
              switch (_requiredItem) do {
               //Messages here
              };
              life_action_inUse = false;
              _exit = true;
          };
      };
      
      if (_exit) exitWith {life_action_inUse = false;};
      _amount = round(random(_maxGather)) + 1;
      _diff = [_resource,_amount,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
      if (_diff isEqualTo 0) exitWith {
          hint localize "STR_NOTF_InvFull";
          life_action_inUse = false;
      };
      
      switch (_requiredItem) do {
          case "pickaxe": {player say3D "mining";};
          default {player say3D "harvest";};
      };
      
      for "_i" from 0 to _farmTime do {
          player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
          waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
          sleep 0.5;
      };
      
      if ([true,_resource,_diff] call life_fnc_handleInv) then {
          _itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
          [ format ["<t size='1'>Erfahrungspunkte +%1</t><t><br/> Du sammelst %2 %3 in %4s</t>",_EXP, _amount, (localize _itemName),_farmTime], SzoneXW, SzoneYH, 5, 0.25 ] spawn BIS_fnc_dynamicText;
      };
      if (life_EXP isEqualType "" ) then {
          life_EXP= parseNumber (life_EXP);
      };
      life_EXP = life_EXP + _EXP;
      sleep 1;
      life_action_inUse = false;
      Alles anzeigen

      fn_mine

      Spoiler anzeigen
      Code
      #include "..\..\script_macros.hpp"
          /*
              File: fn_mine.sqf
              Author: Devilfloh
              Editor: Dardo
      
              Description:
              Same as fn_gather,but it allows use of probabilities for mining.
          */
      private ["_maxGather", "_resource", "_amount", "_requiredItem", "_mined","_EXP","_farmTime"];
      if (life_action_inUse) exitWith {};
      if !(isNull objectParent player) exitWith {};
      if (player getVariable "restrained") exitWith {
          hint localize "STR_NOTF_isrestrained";
      };
      _exit = false;
      if (player getVariable "playerSurrender") exitWith {
          hint localize "STR_NOTF_surrender";
      };
      life_action_inUse = true;
      _zone = "";
      _requiredItem = "";
      
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
      _percent = (floor random 100) + 1; //Make sure it's not 0
      
      for "_i" from 0 to count(_resourceCfg)-1 do {
          _curConfig = _resourceCfg select _i;
          _resources = getArray(_curConfig >> "mined");
          _maxGather = getNumber(_curConfig >> "amount");
          _zoneSize = getNumber(_curConfig >> "zoneSize");
          _resourceZones = getArray(_curConfig >> "zones");
          _requiredItem = getText(_curConfig >> "item");
          _EXP = getNumber(_curConfig >> "exp");
          _farmTime = getNumber(_curConfig >> "farmTime");
          _mined = "";
      
          if (_resources isEqualTo []) exitWith {}; //Smart guy :O
          for "_i" from 0 to count (_resources) do {
              if (count _resources isEqualTo 1) exitWith {
                  if (!((_resources select 0) isEqualType [])) then {
                      _mined = _resources select 0;
                  } else {
                      _mined = (_resources select 0) select 0;
                  };
              };
              _resource = (_resources select _i) select 0;
              _prob = (_resources select _i) select 1;
              _probdiff = (_resources select _i) select 2;
              if ((_percent >= _prob) && (_percent <= _probdiff)) exitWith {
                  _mined = _resource;
              };
          };
      
          {
              if ((player distance(getMarkerPos _x)) < _zoneSize) exitWith {
                  _zone = _x;
              };
          } forEach _resourceZones;
      
          if (_zone != "") exitWith {};
      };
      
      if (_zone isEqualTo "") exitWith {
          life_action_inUse = false;
      };
      
      if (_requiredItem != "") then {
          _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
      
          if (_valItem < 1) exitWith {
              switch (_requiredItem) do {
                  case "pickaxe": {
                      titleText[(localize "STR_NOTF_Pickaxe"), "PLAIN"];
                  };
              };
              life_action_inUse = false;
              _exit = true;
        };
      };
      
      if (_exit) exitWith {
          life_action_inUse = false;
      };
      
      _amount = round(random(_maxGather)) + 1;
      _diff = [_mined, _amount, life_carryWeight, life_maxWeight] call life_fnc_calWeightDiff;
      if (_diff isEqualTo 0) exitWith {
          hint localize "STR_NOTF_InvFull";
          life_action_inUse = false;
      };
      player say3D "mining";
      
      for "_i" from 0 to _farmTime do {
          player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
          waitUntil {
              animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
          };
          sleep 0.5;
      };
      
      if (([true, _mined, _diff] call life_fnc_handleInv)) then {
          _itemName = M_CONFIG(getText, "VirtualItems", _mined, "displayName");
          [ format ["<t size='1'>Erfahrungspunkte +%1</t><t><br/> Du sammelst %2 %3 in %4s</t>",_EXP, _amount, (localize _itemName),_farmTime], SzoneXW, SzoneYH, 5, 0.25 ] spawn BIS_fnc_dynamicText;
      };
      
      if (life_EXP isEqualType "" ) then {
          life_EXP= parseNumber (life_EXP);
      };
      life_EXP = life_EXP + _EXP;
      sleep 2.5;
      life_action_inUse = false;
      Alles anzeigen

      configuration.sqf

      Code
      SzoneXW = [safezoneX + safezoneW - 0.89,0.50];  //was tollesSzoneYH = [safezoneY + safezoneH - 1.28,0.7];  //nochwas tolles

      Der DynamicText ist von D41.


      Derzeitige Bugs:

      - Keine! Danke an Speedo

      Viel Spaß ;)

      mfg Risk

      https://www.twitch.tv/theriskarma

      8 Mal editiert, zuletzt von Risk (12. März 2018 um 09:18)

    • Zeilord
      Fortgeschrittener
      Reaktionen
      71
      Trophäen
      8
      Beiträge
      333
      Bilder
      24
      • 21. Oktober 2017 um 20:52
      • #2

      ok Hort sich ja schon mal interessant an =)
      aber wenn man so das in die Datenbank ein spielen will

      Code
      `EXP` int(100) NOT NULL DEFAULT '0',


      sagt er mir diese Meldung

      Spoiler anzeigen

      [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`EXP` int(100) NOT NULL DEFAULT '0',' at line 1

      [Err] `EXP` int(100) NOT NULL DEFAULT '0',

      [Msg] Finished - Unsuccessfully

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 21. Oktober 2017 um 20:58
      • #3

      da fehlt noch das update table ect. Hatte ich keine Zeit mehr zu. Werde ich aber noch ergänzen. Ansonsten kann es jemand anderes machen bin nämlich unterwegs und bis morgen nicht hier. :)

      mfg Risk

      https://www.twitch.tv/theriskarma

    • ESLotherwise
      Amateur
      Reaktionen
      75
      Trophäen
      8
      Beiträge
      229
      Dateien
      3
      • 21. Oktober 2017 um 21:11
      • #4
      Zitat von Risk

      da fehlt noch das update table ect. Hatte ich keine Zeit mehr zu. Werde ich aber noch ergänzen. Ansonsten kann es jemand anderes machen bin nämlich unterwegs und bis morgen nicht hier. :)

      Demjenigen wäre ich aufjedenfall sehr verbunden.

    • Shinji
      Profi
      Reaktionen
      576
      Trophäen
      10
      Beiträge
      778
      • 21. Oktober 2017 um 21:38
      • #5
      Code
      ALTER TABLE `DATENBANK_NAME`.`TABELLE` 
      ADD COLUMN `EXP` INT(100) NOT NULL DEFAULT 0

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

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      9
      Beiträge
      820
      • 21. Oktober 2017 um 23:20
      • #6
      Zitat von Shinji
      Code
      ALTER TABLE `DATENBANK_NAME`.`TABELLE` 
      ADD COLUMN `EXP` INT(100) NOT NULL DEFAULT 0

      Funktioniert nicht :( weiss nicht wie :((( Datenbank name ist altislife wie muss das dann aussehen

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • TRS_Nils
      Fortgeschrittener
      Reaktionen
      139
      Trophäen
      10
      Beiträge
      269
      Dateien
      8
      Bilder
      25
      • 21. Oktober 2017 um 23:34
      • #7
      Code
      ALTER TABLE `altislife`.`TABELLE` 
      ADD COLUMN `EXP` INT(100) NOT NULL DEFAULT 0
    • powerafro2
      Profi
      Reaktionen
      357
      Trophäen
      11
      Beiträge
      1.342
      Dateien
      1
      Bilder
      4
      • 22. Oktober 2017 um 09:00
      • #8

      Auch falsch. TRS_Nils


      Code
      ALTER TABLE `altislife`.`players`
      ADD COLUMN `EXP` INT(100) NOT NULL DEFAULT 0

      Mfg powerafro2

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      9
      Beiträge
      820
      • 22. Oktober 2017 um 12:59
      • #9

      Ich habe es nun so gemacht jetzt steht dort frage Spieler informationen zu[playid] ab....

      das heisst es funktioniert nicht


      fehler soll anscheinden in der fn_queryRequest liegen

      Code
      1702. Error in expression <ayers WHERE pid='%1'",_uid];};
      1705. Error position: <: {format ["SELECT pid, name, cash, bank>
      1706. Error :: Type Side, expected switch
      1707. File \life_server\Functions\MySQL\fn_queryRequest.sqf [DB_fnc_queryRequest], line 84

      Ich hänge mal den log dran hoffentlich könnt ihr mir helfen...

      LG Wayne

      Dateien

      arma3server_2017-10-22_12-49-44.rpt 127,24 kB – 365 Downloads

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • powerafro2
      Profi
      Reaktionen
      357
      Trophäen
      11
      Beiträge
      1.342
      Dateien
      1
      Bilder
      4
      • 22. Oktober 2017 um 13:14
      • #10

      Bei mir hat alles geklappt.

      Schick mal deine fn_queryRequest.sqf


      EDIT: Außerdem hast du nicht nur 1 Fehler in deiner rpt


      1 Fehler:

      Code
      String Schwarzmarkt not found

      2 Fehler:

      Code
      Error in expression <"; 
      [] execVM "scripts\willkommen.sqf" 
      [] execVM "scripts\schlangen.sqf" 
      };
      []>
        Error position: <[] execVM "scripts\schlangen.sqf" 
      };
      []>
        Error Missing ;
      File mpmissions\TestMission.Altis\init.sqf, line 8

      3 Fehler:

      Code
      File mpmissions\TestMission.Altis\config\Config_Vehicles.hpp, line 116: Config: ';' used as a separator in the array

      Mfg powerafro2

    • Zeilord
      Fortgeschrittener
      Reaktionen
      71
      Trophäen
      8
      Beiträge
      333
      Bilder
      24
      • 22. Oktober 2017 um 13:16
      • #11
      Zitat von powerafro2

      Bei mir hat alles geklappt.

      Schick mal deine fn_queryRequest.sqf

      also bei mir war es genau wie bei ihm

      Zitat von JulianWayne

      Ich habe es nun so gemacht jetzt steht dort frage Spieler informationen zu[playid] ab....

      das heisst es funktioniert nicht


      fehler soll anscheinden in der fn_queryRequest liegen

      Code
      1702. Error in expression <ayers WHERE pid='%1'",_uid];};
      1705. Error position: <: {format ["SELECT pid, name, cash, bank>
      1706. Error :: Type Side, expected switch
      1707. File \life_server\Functions\MySQL\fn_queryRequest.sqf [DB_fnc_queryRequest], line 84

      Ich hänge mal den log dran hoffentlich könnt ihr mir helfen...

      LG Wayne

      Aber die Spieler bekommen nicht mit das die EXP sammeln oder wie ? ALso ist nur jetzt mal so eine frage^^

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      9
      Beiträge
      820
      • 22. Oktober 2017 um 14:00
      • #12
      Zitat von powerafro2

      Bei mir hat alles geklappt.

      Schick mal deine fn_queryRequest.sqf


      EDIT: Außerdem hast du nicht nur 1 Fehler in deiner rpt


      1 Fehler:

      Code
      String Schwarzmarkt not found

      2 Fehler:

      Code
      Error in expression <"; 
      [] execVM "scripts\willkommen.sqf" 
      [] execVM "scripts\schlangen.sqf" 
      };
      []>
        Error position: <[] execVM "scripts\schlangen.sqf" 
      };
      []>
        Error Missing ;
      File mpmissions\TestMission.Altis\init.sqf, line 8

      3 Fehler:

      Code
      File mpmissions\TestMission.Altis\config\Config_Vehicles.hpp, line 116: Config: ';' used as a separator in the array
      Alles anzeigen

      Ja die anderen fehler bekomme ich gefixt irgenwie aber ich kann nicht joinen

      hier meine datei locker ist es ein extrem dummer fehler

      LG Wayne

      Dateien

      fn_queryRequest.sqf 6,65 kB – 448 Downloads

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • powerafro2
      Profi
      Reaktionen
      357
      Trophäen
      11
      Beiträge
      1.342
      Dateien
      1
      Bilder
      4
      • 22. Oktober 2017 um 14:08
      • #13

      Du hast vor civilian das case vergessen.

      So:

      Code
      case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, XP FROM players WHERE pid='%1'", _uid];};

      Mfg powerafro2

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      9
      Beiträge
      820
      • 22. Oktober 2017 um 14:28
      • #14
      Zitat von powerafro2

      Du hast vor civilian das case vergessen.

      So:

      Code
      case civilian: {format ["SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, XP FROM players WHERE pid='%1'", _uid];};

      Es klappt immernoch nicht ich weiss nicht warum DB und Server Log sind dabei

      Dateien

      14-23-54.log 267,58 kB – 221 Downloads arma3server_2017-10-22_14-22-46.rpt 187,06 kB – 417 Downloads

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • powerafro2
      Profi
      Reaktionen
      357
      Trophäen
      11
      Beiträge
      1.342
      Dateien
      1
      Bilder
      4
      • 22. Oktober 2017 um 15:25
      • #15

      Zeig mal deine fn_insertRequest.sqf

      Mfg powerafro2

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      9
      Beiträge
      820
      • 22. Oktober 2017 um 15:31
      • #16
      Zitat von powerafro2

      Zeig mal deine fn_insertRequest.sqf

      Hier

      Julian ist am verzweifeln

      Dateien

      fn_insertRequest.sqf 2,2 kB – 304 Downloads

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 22. Oktober 2017 um 15:46
      • #17
      Zitat von Zeilord

      also bei mir war es genau wie bei ihm

      Aber die Spieler bekommen nicht mit das die EXP sammeln oder wie ? ALso ist nur jetzt mal so eine frage^^

      Ich schick nachher wenn ich am PC noch wie ich das mit dem sammeln gemacht habe das es angezeigt wird wie viel sie bekommen.

      mfg Risk

      https://www.twitch.tv/theriskarma

    • powerafro2
      Profi
      Reaktionen
      357
      Trophäen
      11
      Beiträge
      1.342
      Dateien
      1
      Bilder
      4
      • 22. Oktober 2017 um 15:57
      • #18

      Du musst _EXP auch in den params eintragen.

      Julian

      Fertige Datei ist hochgeladen.

      Dateien

      fn_insertRequest.sqf 2,2 kB – 358 Downloads

      Mfg powerafro2

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      9
      Beiträge
      820
      • 22. Oktober 2017 um 15:58
      • #19
      Zitat von Risk

      Ich schick nachher wenn ich am PC noch wie ich das mit dem sammeln gemacht habe das es angezeigt wird wie viel sie bekommen.

      Ich kann nichtmals connecten da er immer nach der spieler id abfragt aber nicht verbindet man wird auch nicht in die DB eingetragen

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • Risk
      Kenner
      Reaktionen
      193
      Trophäen
      11
      Beiträge
      573
      • 22. Oktober 2017 um 17:31
      • #20

      Post ist updatet.

      julian112

      [14:27:48:280814 +02:00] [Thread 7912] extDB3: SQL: Error MariaDBQueryException: Input: INSERT INTO players (pid, name, cash, bankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear, EXP) VALUES('76561198142035536', 'Julian Wayne', '0', '250000', '"[`Julian Wayne`]"','"[]"','"[]"','"[]"','"[]"','"[]"','"[]"', any)


      [14:27:48:386227 +02:00] [Thread 7912] extDB3: SQL: Error MariaDBQueryException: Unknown column 'XP' in 'field list'


      [14:27:48:386318 +02:00] [Thread 7912] extDB3: SQL: Error MariaDBQueryException: Input: SELECT pid, name, cash, bankacc, adminlevel, donorlevel, civ_licenses, arrested, civ_gear, civ_stats, civ_alive, civ_position, playtime, XP FROM players WHERE pid='76561198142035536'


      EXP nicht XP.

      mfg Risk

      https://www.twitch.tv/theriskarma

    Registrieren oder Einloggen

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

    Registrieren

    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™