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

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

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

    Tempest Gerät Bug

    • GenApophis
    • 14. Februar 2018 um 16:26
    • Erledigt
    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 14. Februar 2018 um 16:26
      • #1

      Hi NN,

      ich habe ein kleines Problem mit dem Auto Farmen vom Tempest Gerät (ich nutze die 4.4r3):
      Das Tempest Gerät ist nach meiner ansicht nach verbuggt, da es nicht richtig farmt. Was ich damit meine: Wenn man eine Farm Zone hat in der mehr als ein Item gefarmt werden kann (geht ab der 4.4r3 evtl auch 4.0 kann aber nicht bestätigen) farmt das Gerät immer nur das erste der Items, nicht aber wie es sein sollte ein zufälliges der möglichkeiten.

      Ich habe mich da mal etwas rein gewurstelt, aber bin nicht ganz durchgestiegen was das Problem ist, hier mal meine aktuelle Datei:

      Code: fn_deviceMine.sqf
      #include "..\..\script_macros.hpp"
      /*
          File: fn_deviceMine.sqf
          Author: Bryan "Tonic" Boardwine
          Modified: Devilfloh
          Description:
          Starts automated mining of resource from the tempest device. Not integrated with percents.
      */
      private[
          "_vehicle","_resourceZones","_zone","_weight",
          "_resource","_vInv","_itemIndex","_items",
          "_sum","_itemWeight","_amount","_isMineral",
          "_mined"
      ];
      _vehicle = param [0,ObjNull,[ObjNull]];
      _isMineral = true;
      if (isNull _vehicle) exitWith {};
      if (!isNil {_vehicle getVariable "mining"}) exitWith {
          hint localize "STR_NOTF_DeviceIsMining";
      };
      if (fuel _vehicle isEqualTo 0) exitWith {
          titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
      };
      closeDialog 0; //Close the interaction menu.
      life_action_inUse = true; //Lock out the interaction menu for a bit..
      _weight = [_vehicle] call life_fnc_vehicleWeight;
      if ((_weight select 1) >= (_weight select 0)) exitWith {
          hint localize "STR_NOTF_DeviceFull";
          life_action_inUse = false;
      };
      //check if we are in the resource zone for any of the resources
      _zone = "";
      _zoneSize = (getNumber(missionConfigFile >> "CfgGather" >> "zoneSize"));
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
      for "_i" from 0 to count(_resourceCfg)-1 do {
          _curConfig = (_resourceCfg select _i);
          _resource = configName(_curConfig);
          _resourceZones = getArray(_curConfig >> "zones");
          _amount = getNumber(_curConfig >> "amount");
          {
              if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {
                  _zone = _x;
              };
          } forEach _resourceZones;
          if (_zone != "") exitWith {_isMineral = false;};
      };
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
      _percent = (floor random 100) + 1; //Make sure it's not 0
      for "_i" from 0 to count(_resourceCfg)-1 do {
          if (!_isMineral) exitWith {};
          
          _curConfig = _resourceCfg select _i;
          _resources = getArray(_curConfig >> "mined");
          _resourceZones = getArray(_curConfig >> "zones");
          _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 {
          hint localize "STR_NOTF_notNearResource";
          life_action_inUse = false;
      };
      _vehicle setVariable ["mining",true,true]; //Lock the device
      _vehicle remoteExec ["life_fnc_soundDevice",RCLIENT]; //Broadcast the 'mining' sound of the device for nearby units.
      life_action_inUse = false; //Unlock it since it's going to do it's own thing...
      for "_i" from 0 to 1 step 0 do {
          if (!alive _vehicle || isNull _vehicle) exitWith {};
          if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
              titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
          };
          if (fuel _vehicle isEqualTo 0) exitWith {
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
          };
          titleText[localize "STR_NOTF_DeviceMining","PLAIN"];
          _time = time + 27;
          //Wait for 27 seconds with a 'delta-time' wait.
          waitUntil {
              if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
                  _vehicle setVariable["mining",nil,true];
                  titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
                  true
              };
              if (round(_time - time) < 1) exitWith {
                  true
              };
              if (fuel _vehicle < 0.1) exitWith {
                  _vehicle setVariable["mining",nil,true];
                  titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
                  true
              };
              sleep 0.2;
              false
          };
          if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
          };
          _vehicle_data = _vehicle getVariable ["Trunk",[[],0]];
          _inv = (_vehicle_data select 0);
          _space = (_vehicle_data select 1);
          _itemIndex = [_resource,_inv] call TON_fnc_index;
          _weight = [_vehicle] call life_fnc_vehicleWeight;
          _random = 10 + round((random(10)));
          _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; // Get a sum base of the remaining weight..
          if (_sum < 1) exitWith {
              titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
              _vehicle setVariable["mining",nil,true];
          };
          if (_itemIndex isEqualTo -1) then {
              _inv pushBack [_resource,_sum];
          } else {
              _val = (_inv select _itemIndex) select 1;
              _inv set[_itemIndex,[_resource,_val + _sum]];
          };
          if (fuel _vehicle < 0.1) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
          };
          //Locality checks...
          if (local _vehicle) then {
              _vehicle setFuel (fuel _vehicle)-0.05;
          } else {
              [_vehicle,(fuel _vehicle)-0.05] remoteExec ["life_fnc_setFuel",_vehicle];
          };
          if (fuel _vehicle < 0.1) exitWith {
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
              _vehicle setVariable["mining",nil,true];
          };
          _itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
          titleText[format[localize "STR_NOTF_DeviceMined",_sum,(localize _itemName)],"PLAIN"];
          _itemWeight = ([_resource] call life_fnc_itemWeight) * _sum;
          _vehicle setVariable["Trunk",[_inv,_space + _itemWeight],true];
          _weight = [_vehicle] call life_fnc_vehicleWeight;
          _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; //Get a sum base of the remaining weight..
          if (_sum < 1) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
          };
          sleep 2;
      };
      _vehicle setVariable ["mining",nil,true];
      Alles anzeigen

      und hier mal ein kleiner auszug aus meiner Config worum es geht^^:

      Code: Config_Gather.hpp
      class CfgGather {
          zoneSize = 30;
          class Resources {
              class apple {
                  amount = 5;
                  zones[] = { "apple_1", "apple_2", "apple_3", "apple_4" };
                  item = "";
              };
          };
      /*
      This block can be set using percent,if you want players to mine only one resource ,just leave it as it is.
      Example:
          class copper_unrefined
          {
              amount = 2;
              zones[] = { "copper_mine" };
              item = "pickaxe";
              mined[] = { "copper_unrefined" };
          };
      This will make players mine only copper_unrefined
      Now let's go deeper
      Example 2:
          class copper_unrefined
          {
              amount = 2;
              zones[] = { "copper_mine" };
              item = "pickaxe";
              mined[] = { {"copper_unrefined",0,25},{"iron_unrefined",25,95},{"diamond_uncut",95,100} };
          };
          This will give :
          25(±1)% to copper_unrefined;
          70(±1)% to iron_unrefined;
          5%(±1)% to diamond_uncut;
                                                               ! Watch Out !
       If percents are used,you MUST put more than 1 resource in the mined parameter
       mined[] = { {"copper_unrefined",0,25} }; NOT OK (But the script will work)
       mined[] = { {"copper_unrefined",0,45 },{"iron_unrefined",45} };  NOT OK (The script won't work )
       mined[] = { {"copper_unrefined",0,45},{"copper_unrefined",80,100} }; NOT OK
       mined[] = { "copper_unrefined" }; OK
       mined[] = { {"copper_unrefined",0,35} , { "iron_unrefined" ,35,100 } }; OK
      */
          class Minerals {
              class diamond_uncut {
                  amount = 1;
                  zones[] = { "diamond_mine" };
                  item = "pickaxe";
                  mined[] = { {"diamond_uncut",0,60}, {"emerald_uncut",60,90}, {"sapphire_uncut",90,100} };
              };
          };
      };
      Alles anzeigen

      GA Gaming Community

      TS3.GA-Gaming.de

    • Marius1773
      Profi
      Reaktionen
      369
      Trophäen
      9
      Beiträge
      962
      • 14. Februar 2018 um 16:42
      • #2
      Code
      mined[] = { {"diamond_uncut",0,60}, {"emerald_uncut",60,90}, {"sapphire_uncut",90,100} };                 IST FALSCH!!!
      
      So muss das sein: mined[] = { {"diamond_uncut",0,60} , {"emerald_uncut",60,90} , {"sapphire_uncut" ,90,100 } };

      Windows Server :love:

      Das Heilige Buch der Arma 3 Scripter, die Arma 3 Scripter Bibel: https://community.bistudio.com/wiki/Category:Scripting_Commands

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 14. Februar 2018 um 16:52
      • #3
      Zitat von Marius1773
      Code
      mined[] = { {"diamond_uncut",0,60}, {"emerald_uncut",60,90}, {"sapphire_uncut",90,100} };                 IST FALSCH!!!
      
      So muss das sein: mined[] = { {"diamond_uncut",0,60} , {"emerald_uncut",60,90} , {"sapphire_uncut" ,90,100 } };

      Sorry, ist aber Bullshit...

      Es funktioniert im normalen Farmen, nur nicht im Tempest Gerät, da dieses das Array nicht überreißt.

      Die unnötigen Leertasten die du eingesetzt hast sind absoluter stuss, da die garnichts Bewirken ;)

      GA Gaming Community

      TS3.GA-Gaming.de

    • Marius1773
      Profi
      Reaktionen
      369
      Trophäen
      9
      Beiträge
      962
      • 14. Februar 2018 um 16:55
      • #4
      Zitat von GenApophis

      Sorry, ist aber Bullshit...

      Es funktioniert im normalen Farmen, nur nicht im Tempest Gerät, da dieses das Array nicht überreißt.

      Die unnötigen Leertasten die du eingesetzt hast sind absoluter stuss, da die garnichts Bewirken ;)

      Wollte nur helfen.. Naja gibt ja noch andere..

      Windows Server :love:

      Das Heilige Buch der Arma 3 Scripter, die Arma 3 Scripter Bibel: https://community.bistudio.com/wiki/Category:Scripting_Commands

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 16. Februar 2018 um 20:46
      • #5

      Eben nachgeschaut, der Tempest farmt standardmäßig nur das Erste Item aus der Liste. Müsstest du den gesamten Code anpassen, dass es geht wie du willst

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 19. Februar 2018 um 17:18
      • #6
      Zitat von blackfisch

      Eben nachgeschaut, der Tempest farmt standardmäßig nur das Erste Item aus der Liste. Müsstest du den gesamten Code anpassen, dass es geht wie du willst

      Naja, soweit war ich auch schon XD
      Ich habe mir das dann mal in der 5.0 angeschaut die hier im Download bereich ist und da ist der Fehler auch noch drinnen, nur komme ich nicht dahinter wie ich da fixen muss :(

      Ich habe da schon echt lange drüber gegrübelt und dachte mir kann vll hier jemand helfen...

      GA Gaming Community

      TS3.GA-Gaming.de

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 19. Februar 2018 um 20:34
      • #7

      Moin,

      falls ich es schaffe poste ich später mal einen Fix für das Problem. Ich bin allerdings momentan noch unterwegs.

      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 ?

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 19. Februar 2018 um 21:33
      • #8

      Das wäre super geil moeck, Danke schonmal im voraus :)

      GA Gaming Community

      TS3.GA-Gaming.de

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 20. Februar 2018 um 10:12
      • #9

      GenApophis : ich habe den grundsetzlichen Fehler gefunden, allerdings habe ich den kompletten Gatherkram umgeschrieben, da das ich meinen Augen völliger Blödsinn ist. Ich habe den Kram vereinheitlicht und wir sind in der Lage auch bei den Resources verschiedene Dinge anzugeben ;) . Des Weiteren habe ich das bei uns so umgebaut, dass man verschiedene Fahrzeuge konfigurieren kann und gewichtsabhängig gefarmt wird ;) . Ich fand das ziemlich doof dass man bei schweren Items deutlich schneller gefarmt hat als bei leichten Sachen. Also falls da interesse besteht kann ich ja mal ein Tutorial dazu schreiben 8o .

      Versuchs mal mit dieser Variante hier könnte es funktionieren ;)

      C
      #include "..\..\script_macros.hpp"
      /*
       File: fn_deviceMine.sqf
       Author: Bryan "Tonic" Boardwine
       Modified: Devilfloh / moeck
       Description:
       Starts automated mining of resource from the tempest device.
       Percentage for Minerals integrated by moeck
      */
      private[
       "_vehicle","_resourceZones","_zone","_weight",
       "_resource","_vInv","_itemIndex","_items",
       "_sum","_itemWeight","_amount","_isMineral",
       "_mined"
      ];
      _vehicle = param [0,ObjNull,[ObjNull]];
      _isMineral = true;
      if (isNull _vehicle) exitWith {};
      if (!isNil {_vehicle getVariable "mining"}) exitWith {
          hint localize "STR_NOTF_DeviceIsMining";
      };
      if (fuel _vehicle isEqualTo 0) exitWith {
          titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
      };
      closeDialog 0; //Close the interaction menu.
      life_action_inUse = true; //Lock out the interaction menu for a bit..
      _weight = [_vehicle] call life_fnc_vehicleWeight;
      if ((_weight select 1) >= (_weight select 0)) exitWith {
          hint localize "STR_NOTF_DeviceFull";
          life_action_inUse = false;
      };
      //check if we are in the resource zone for any of the resources
      _zone = "";
      _zoneSize = (getNumber(missionConfigFile >> "CfgGather" >> "zoneSize"));
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
      for "_i" from 0 to count(_resourceCfg)-1 do {
          _curConfig = (_resourceCfg select _i);
          _resource = configName(_curConfig);
          _resourceZones = getArray(_curConfig >> "zones");
          _amount = getNumber(_curConfig >> "amount");
          {
              if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {
                  _zone = _x;
              };
          } forEach _resourceZones;
          if (_zone != "") exitWith {_isMineral = false;};
      };
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
      _percent = (floor random 100) + 1; //Make sure it's not 0
      for "_i" from 0 to count(_resourceCfg)-1 do {
          if (!_isMineral) exitWith {};
          _curConfig = _resourceCfg select _i;
          _resources = getArray(_curConfig >> "mined");
          _resourceZones = getArray(_curConfig >> "zones");
          _mined = "";
           {
              if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {    _zone = _x;};
          } forEach _resourceZones;
          if (_zone != "") exitWith {};
      };
      if (_zone isEqualTo "") exitWith {
          hint localize "STR_NOTF_notNearResource";
          life_action_inUse = false;
      };
      _vehicle setVariable ["mining",true,true]; //Lock the device
      _vehicle remoteExec ["life_fnc_soundDevice",RCLIENT]; //Broadcast the 'mining' sound of the device for nearby units.
      life_action_inUse = false; //Unlock it since it's going to do it's own thing...
      for "_i" from 0 to 1 step 0 do {
          if (!alive _vehicle || isNull _vehicle) exitWith {};
          if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {    titleText[localize "STR_NOTF_MiningStopped","PLAIN"];};
          if (fuel _vehicle isEqualTo 0) exitWith {titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];};
          titleText[localize "STR_NOTF_DeviceMining","PLAIN"];
          _time = time + 27;
          //Wait for 27 seconds with a 'delta-time' wait.
          //Different items to add to the Trunk ;-)
          if (_isMineral) then {
              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 {
                      _resource;
                  };
              };
          };
              
          waitUntil {
              if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
                  _vehicle setVariable["mining",nil,true];
                  titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
                  true
              };
              if (round(_time - time) < 1) exitWith {
                  true
              };
              if (fuel _vehicle < 0.1) exitWith {
                  _vehicle setVariable["mining",nil,true];
                  titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
                  true
              };
              sleep 0.2;
              false
          };
          if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
          };
          _vehicle_data = _vehicle getVariable ["Trunk",[[],0]];
          _inv = (_vehicle_data select 0);
          _space = (_vehicle_data select 1);
          _itemIndex = [_resource,_inv] call TON_fnc_index;
          _weight = [_vehicle] call life_fnc_vehicleWeight;
          _random = 10 + round((random(10)));
          _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; // Get a sum base of the remaining weight..
          if (_sum < 1) exitWith {
              titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
              _vehicle setVariable["mining",nil,true];
          };
          if (_itemIndex isEqualTo -1) then {
              _inv pushBack [_resource,_sum];
          } else {
              _val = (_inv select _itemIndex) select 1;
              _inv set[_itemIndex,[_resource,_val + _sum]];
          };
          if (fuel _vehicle < 0.1) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
          };
          //Locality checks...
          if (local _vehicle) then {
              _vehicle setFuel (fuel _vehicle)-0.05;
          } else {
              [_vehicle,(fuel _vehicle)-0.05] remoteExec ["life_fnc_setFuel",_vehicle];
          };
          if (fuel _vehicle < 0.1) exitWith {
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
              _vehicle setVariable["mining",nil,true];
          };
          _itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
          titleText[format[localize "STR_NOTF_DeviceMined",_sum,(localize _itemName)],"PLAIN"];
          _itemWeight = ([_resource] call life_fnc_itemWeight) * _sum;
          _vehicle setVariable["Trunk",[_inv,_space + _itemWeight],true];
          _weight = [_vehicle] call life_fnc_vehicleWeight;
          _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; //Get a sum base of the remaining weight..
          if (_sum < 1) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
          };
          sleep 2;
      };
      _vehicle setVariable ["mining",nil,true];
      Alles anzeigen

      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 ?

      Einmal editiert, zuletzt von moeck (20. Februar 2018 um 15:15)

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 21. Februar 2018 um 07:09
      • #10

      Moin,

      hat das mal wer getestet? Wäre super wenn es eine Rückmeldung gibt, wenn es klappt könnte man das nämlich mal an das Altis Life Projekt geben :saint: damit es Standard wird.

      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 ?

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 21. Februar 2018 um 15:27
      • #11

      Habe es gerade erst gesehen, ich teste es sofort, moment :)

      GA Gaming Community

      TS3.GA-Gaming.de

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 21. Februar 2018 um 15:45
      • #12

      Hi,

      habe es gerade ausprobiert, funktioniert leider nicht, ich bekomme folgende Fehlermeldung:

      Code
      15:42:21 Error in expression <me + 27;    if (_isMineral) then {  if (_resources isEqualTo []) exitWith {};   >
      15:42:21   Error position: <_resources isEqualTo []) exitWith {};   >
      15:42:21   Error Nicht definierte Variable in Ausdruck: _resources
      15:42:21 File core\vehicle\fn_deviceMine.sqf [life_fnc_deviceMine], line 34

      GA Gaming Community

      TS3.GA-Gaming.de

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 21. Februar 2018 um 15:50
      • #13

      so ich habe dann doch noch einen kleinen Fehler gefunden ^^ , es dürft immer noch nur eine Art von Item rauskommen. Ich habe leider vergessen das auswürfeln auch zu verschieben

      hier die geänderte Version

      C: fn_devicemine.sqf
      #include "..\..\script_macros.hpp"
      /*
       File: fn_deviceMine.sqf
       Author: Bryan "Tonic" Boardwine
       Modified: Devilfloh / moeck
       Description:
       Starts automated mining of resource from the tempest device.
       Percentage for Minerals integrated by moeck
      */
      private[
       "_vehicle","_resourceZones","_zone","_weight",
       "_resource","_vInv","_itemIndex","_items",
       "_sum","_itemWeight","_amount","_isMineral",
       "_mined","_resources"
      ];
      _vehicle = param [0,ObjNull,[ObjNull]];
      _isMineral = true;
      if (isNull _vehicle) exitWith {};
      if (!isNil {_vehicle getVariable "mining"}) exitWith { hint localize "STR_NOTF_DeviceIsMining";};
      if (fuel _vehicle isEqualTo 0) exitWith {titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];};
      closeDialog 0; //Close the interaction menu.
      life_action_inUse = true; //Lock out the interaction menu for a bit..
      _weight = [_vehicle] call life_fnc_vehicleWeight;
      if ((_weight select 1) >= (_weight select 0)) exitWith {hint localize "STR_NOTF_DeviceFull";life_action_inUse = false;};
      //check if we are in the resource zone for any of the resources
      _zone = "";
      _zoneSize = (getNumber(missionConfigFile >> "CfgGather" >> "zoneSize"));
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
      for "_i" from 0 to count(_resourceCfg)-1 do {
          _curConfig = (_resourceCfg select _i);
          _resource = configName(_curConfig);
          _resourceZones = getArray(_curConfig >> "zones");
          _amount = getNumber(_curConfig >> "amount");
          {
              if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
          } forEach _resourceZones;
          if (_zone != "") exitWith {_isMineral = false;};
      };
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
      for "_i" from 0 to count(_resourceCfg)-1 do {
          if (!_isMineral) exitWith {};
          _curConfig = _resourceCfg select _i;
          _resources = getArray(_curConfig >> "mined");
          _resourceZones = getArray(_curConfig >> "zones");
          _mined = "";
          {
              if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith { _zone = _x;};
          } forEach _resourceZones;
          if (_zone != "") exitWith {};
      };
      if (_zone isEqualTo "") exitWith {
          hint localize "STR_NOTF_notNearResource";
          life_action_inUse = false;
      };
      _vehicle setVariable ["mining",true,true]; //Lock the device
      _vehicle remoteExec ["life_fnc_soundDevice",RCLIENT]; //Broadcast the 'mining' sound of the device for nearby units.
      life_action_inUse = false; //Unlock it since it's going to do it's own thing...
      for "_i" from 0 to 1 step 0 do {
          if (!alive _vehicle || isNull _vehicle) exitWith {};
          if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith { titleText[localize "STR_NOTF_MiningStopped","PLAIN"];};
          if (fuel _vehicle isEqualTo 0) exitWith {titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];};
          titleText[localize "STR_NOTF_DeviceMining","PLAIN"];
          _time = time + 27;
          //Wait for 27 seconds with a 'delta-time' wait.
          //Different items to add to the Trunk ;-)
          _percent = [1,100] call BIS_fnc_randomInt //Make sure it's not 0
          if (_isMineral) then {
              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 {_resource;};
              };
          };
          waitUntil {
              if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
                  _vehicle setVariable["mining",nil,true];
                  titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
                  true
              };
              if (round(_time - time) < 1) exitWith {true};
              if (fuel _vehicle < 0.1) exitWith {
                  _vehicle setVariable["mining",nil,true];
                  titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
                  true
              };
              sleep 0.2;
              false
          };
          if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
          };
          _vehicle_data = _vehicle getVariable ["Trunk",[[],0]];
          _inv = (_vehicle_data select 0);
          _space = (_vehicle_data select 1);
          _itemIndex = [_resource,_inv] call TON_fnc_index;
          _weight = [_vehicle] call life_fnc_vehicleWeight;
          _random = 10 + round((random(10)));
          _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; // Get a sum base of the remaining weight..
          if (_sum < 1) exitWith {
              titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
              _vehicle setVariable["mining",nil,true];
          };
          if (_itemIndex isEqualTo -1) then {
              _inv pushBack [_resource,_sum];
          } else {
              _val = (_inv select _itemIndex) select 1;
              _inv set[_itemIndex,[_resource,_val + _sum]];
          };
          if (fuel _vehicle < 0.1) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
          };
          //Locality checks...
          if (local _vehicle) then {
              _vehicle setFuel (fuel _vehicle)-0.05;
          } else {
              [_vehicle,(fuel _vehicle)-0.05] remoteExec ["life_fnc_setFuel",_vehicle];
          };
          if (fuel _vehicle < 0.1) exitWith {
              titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
              _vehicle setVariable["mining",nil,true];
          };
          _itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
          titleText[format[localize "STR_NOTF_DeviceMined",_sum,(localize _itemName)],"PLAIN"];
          _itemWeight = ([_resource] call life_fnc_itemWeight) * _sum;
          _vehicle setVariable["Trunk",[_inv,_space + _itemWeight],true];
          _weight = [_vehicle] call life_fnc_vehicleWeight;
          _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; //Get a sum base of the remaining weight..
          if (_sum < 1) exitWith {
              _vehicle setVariable["mining",nil,true];
              titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
          };
          sleep 2;
      };
      _vehicle setVariable ["mining",nil,true];
      Alles anzeigen

      dein fehler sollte auch erledigt sein

      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 ?

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 21. Februar 2018 um 16:13
      • #14

      Hi, funzt immernoch nicht...
      In Line 66 hat noch ein ; gefehlt und diesen Skript Error habe ich nach dem neustarten bekommen:

      Also nachdem ich das ; eingesetzt habe und neu gestartet habe

      Code
      16:10:26 Error in expression <_randomInt; 
      if (_isMineral) then {
      if (_resources isEqualTo []) exitWith {}; 
      f>
      16:10:26   Error position: <_resources isEqualTo []) exitWith {}; 
      f>
      16:10:26   Error Nicht definierte Variable in Ausdruck: _resources
      16:10:26 File core\vehicle\fn_deviceMine.sqf [life_fnc_deviceMine], line 114

      GA Gaming Community

      TS3.GA-Gaming.de

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 21. Februar 2018 um 16:17
      • #15

      mh, ok sorry habe ich übersehen. schaue bitte mal ganz oben ob da _resources mit drin steht

      Code
      include "..\..\script_macros.hpp"
      /*
       File: fn_deviceMine.sqf
       Author: Bryan "Tonic" Boardwine
       Modified: Devilfloh / moeck
       Description:
       Starts automated mining of resource from the tempest device.
       Percentage for Minerals integrated by moeck
      */
      private[
       "_vehicle","_resourceZones","_zone","_weight",
       "_resource","_vInv","_itemIndex","_items",
       "_sum","_itemWeight","_amount","_isMineral",
       "_mined","_resources"
      ];
      _vehicle = param [0,ObjNull,[ObjNull]];
      _isMineral = true;
      _resources = [];
      Alles anzeigen

      ich habe es mal vorsorglich definiert

      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 ?

    • GenApophis
      Fortgeschrittener
      Reaktionen
      49
      Trophäen
      10
      Beiträge
      303
      • 21. Februar 2018 um 16:43
      • #16

      Hi, jo das war's ;)
      Skript sieht jetzt so aus:
      Man sollte das jetzt vll mit in die Mission im Download Bereich hinzufügen nox

      Dankeschön moeck

      Code
      #include "..\..\script_macros.hpp"
      /*
      File: fn_deviceMine.sqf
      Author: Bryan "Tonic" Boardwine
      Modified: Devilfloh / moeck
      Description:
      Starts automated mining of resource from the tempest device.
      Percentage for Minerals integrated by moeck
      */
      private[
      "_vehicle","_resourceZones","_zone","_weight",
      "_resource","_vInv","_itemIndex","_items",
      "_sum","_itemWeight","_amount","_isMineral",
      "_mined","_resources"
      ];
      _vehicle = param [0,ObjNull,[ObjNull]];
      _isMineral = true;
      if (isNull _vehicle) exitWith {};
      if (!isNil {_vehicle getVariable "mining"}) exitWith { hint localize "STR_NOTF_DeviceIsMining";};
      if (fuel _vehicle isEqualTo 0) exitWith {titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];};
      closeDialog 0; //Close the interaction menu.
      life_action_inUse = true; //Lock out the interaction menu for a bit..
      _weight = [_vehicle] call life_fnc_vehicleWeight;
      if ((_weight select 1) >= (_weight select 0)) exitWith {hint localize "STR_NOTF_DeviceFull";life_action_inUse = false;};
      //check if we are in the resource zone for any of the resources
      _zone = "";
      _zoneSize = (getNumber(missionConfigFile >> "CfgGather" >> "zoneSize"));
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
      for "_i" from 0 to count(_resourceCfg)-1 do {
      _curConfig = (_resourceCfg select _i);
      _resource = configName(_curConfig);
      _resourceZones = getArray(_curConfig >> "zones");
      _amount = getNumber(_curConfig >> "amount");
      {
      if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
      } forEach _resourceZones;
      if (_zone != "") exitWith {_isMineral = false;};
      };
      _resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
      for "_i" from 0 to count(_resourceCfg)-1 do {
      if (!_isMineral) exitWith {};
      _curConfig = _resourceCfg select _i;
      _resources = getArray(_curConfig >> "mined");
      _resourceZones = getArray(_curConfig >> "zones");
      _mined = "";
      {
      if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith { _zone = _x;};
      } forEach _resourceZones;
      if (_zone != "") exitWith {};
      };
      if (_zone isEqualTo "") exitWith {
      hint localize "STR_NOTF_notNearResource";
      life_action_inUse = false;
      };
      _vehicle setVariable ["mining",true,true]; //Lock the device
      _vehicle remoteExec ["life_fnc_soundDevice",RCLIENT]; //Broadcast the 'mining' sound of the device for nearby units.
      life_action_inUse = false; //Unlock it since it's going to do it's own thing...
      for "_i" from 0 to 1 step 0 do {
      if (!alive _vehicle || isNull _vehicle) exitWith {};
      if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith { titleText[localize "STR_NOTF_MiningStopped","PLAIN"];};
      if (fuel _vehicle isEqualTo 0) exitWith {titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];};
      titleText[localize "STR_NOTF_DeviceMining","PLAIN"];
      _time = time + 27;
      //Wait for 27 seconds with a 'delta-time' wait.
      //Different items to add to the Trunk ;-)
      _percent = [1,100] call BIS_fnc_randomInt; //Make sure it's not 0
      if (_isMineral) then {
      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 {_resource;};
      };
      };
      waitUntil {
      if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
      _vehicle setVariable["mining",nil,true];
      titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
      true
      };
      if (round(_time - time) < 1) exitWith {true};
      if (fuel _vehicle < 0.1) exitWith {
      _vehicle setVariable["mining",nil,true];
      titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
      true
      };
      sleep 0.2;
      false
      };
      if ((isEngineOn _vehicle) || ((speed _vehicle) > 5)) exitWith {
      _vehicle setVariable["mining",nil,true];
      titleText[localize "STR_NOTF_MiningStopped","PLAIN"];
      };
      _vehicle_data = _vehicle getVariable ["Trunk",[[],0]];
      _inv = (_vehicle_data select 0);
      _space = (_vehicle_data select 1);
      _itemIndex = [_resource,_inv] call TON_fnc_index;
      _weight = [_vehicle] call life_fnc_vehicleWeight;
      _random = 10 + round((random(10)));
      _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; // Get a sum base of the remaining weight..
      if (_sum < 1) exitWith {
      titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
      _vehicle setVariable["mining",nil,true];
      };
      if (_itemIndex isEqualTo -1) then {
      _inv pushBack [_resource,_sum];
      } else {
      _val = (_inv select _itemIndex) select 1;
      _inv set[_itemIndex,[_resource,_val + _sum]];
      };
      if (fuel _vehicle < 0.1) exitWith {
      _vehicle setVariable["mining",nil,true];
      titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
      };
      //Locality checks...
      if (local _vehicle) then {
      _vehicle setFuel (fuel _vehicle)-0.05;
      } else {
      [_vehicle,(fuel _vehicle)-0.05] remoteExec ["life_fnc_setFuel",_vehicle];
      };
      if (fuel _vehicle < 0.1) exitWith {
      titleText[localize "STR_NOTF_OutOfFuel","PLAIN"];
      _vehicle setVariable["mining",nil,true];
      };
      _itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
      titleText[format[localize "STR_NOTF_DeviceMined",_sum,(localize _itemName)],"PLAIN"];
      _itemWeight = ([_resource] call life_fnc_itemWeight) * _sum;
      _vehicle setVariable["Trunk",[_inv,_space + _itemWeight],true];
      _weight = [_vehicle] call life_fnc_vehicleWeight;
      _sum = [_resource,_random,(_weight select 1),(_weight select 0)] call life_fnc_calWeightDiff; //Get a sum base of the remaining weight..
      if (_sum < 1) exitWith {
      _vehicle setVariable["mining",nil,true];
      titleText[localize "STR_NOTF_DeviceFull","PLAIN"];
      };
      sleep 2;
      };
      _vehicle setVariable ["mining",nil,true];
      Alles anzeigen

      GA Gaming Community

      TS3.GA-Gaming.de

    Registrieren oder Einloggen

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

    Registrieren

    Ähnliche Themen

    • Tanken an Tankfahrzeugen nur für Tempest Gerät

      • Saturin78
      • 17. September 2017 um 23:39
      • Hilfeforum
    • Gerät Abbau Geschwindigkeit verändern ? 4.4r4

      • Delas
      • 18. Juni 2017 um 14:46
      • Hilfeforum
    • Ausparkkosten ändern für Altis 5.0

      • BerkoCelo
      • 10. Juni 2017 um 13:56
      • Hilfeforum
    • Funktionen auf ACE umschreiben

      • darkpuridee
      • 8. Juni 2017 um 10:59
      • Hilfeforum
    • [TUTORIAL] Erweiterung colorVehicle auf eine beliebige Anzahl von Skindateien

      • moeck
      • 11. Mai 2017 um 08:39
      • Tutorials & Releases

    Tags

    • Altis Life
    • Bug
    • Arma 3
    • Altis life 4.4r3
    • Tempest Gerät
    • SWAG

    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™