1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Fr: 23 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

    Sounds Ersetzen beim Abbau von Items und Umgebungssounds einfügen

    • lordbrs
    • 27. März 2018 um 21:21
    • Erledigt
    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 27. März 2018 um 21:21
      • #1

      Da ich leider mit der SUFU nichts gefunden habe komme ich hier zur nächsten Frage.

      Standart wird ja fast alles mit der Spitzhacke abgebaut, das schien mir aber ein wenig zu fade, daher habe ich einige Farming Items mit anderen Gegenständen versehen wie zb. Schaufel für Sand und Salz sowie ein Sieb zum Gold Sieben.

      Nun wollte ich natürlich auch die dazu passenden Sounds denn die Spitzhacke is a bissl doof wenn man Sand schaufelt.

      Ich habe mir also für Schaufel einen Sound und fürs Sieb einen Sound erstellt und diese in die Sounds gegeben, natürlich auch in die description.ext eingetragen unter class CfgSounds

      Ich höre aber immer noch überall die Spitzhacke klopfen!?

      C
      disableChannels[] = {{0,true,true},{1,true,true},{2,true,true}};    // Disabled text and voice for global, side, and command channels. Syntax: disableChannels[] = {{channelID<number>, disableChat<bool>, disableVoice<bool>}};
      overviewText = "$STR_MISC_overviewText";    // Text to be displayed below the overviewPicture on the mission selection screen when the mission is available to play.
      
      #include "config\Config_SpyGlass.hpp"
      #include "CfgRemoteExec.hpp"
      #include "dialog\MasterHandler.hpp"
      #include "config\Config_Master.hpp"
      
      class CfgServer {
          DatabaseName = "altislife"; //Config name that'll be grep in the extdb-conf.ini. Default: [altislife]
          DebugMode = 0; //Enable many server/hc debugging logs. Default: 0 (1 = Enabled / 0 = Disabled)
          HeadlessSupport = 0; //Enable/Disable Headless client support. Default: 1 (1 = Enabled / 0 = Disabled)
          /*
          Enabled: When HeadlessSupport is set to 1 (enabled), the server will run without fault when no Headless Client is connected. However, it will support the Headless Client if you choose to connect one.
          Disabled: If HeadlessSupport is set to 0 (disabled), the connection of a Headless Client will make no difference. This option will increase server performance a TINY but negligible amount.
          */
      };
      
      class RscTitles {
          #include "dialog\progress.hpp"
          #include "dialog\hud_nameTags.hpp"
          #include "dialog\hud_stats.hpp"
      };
      
      class CfgFunctions {
          #include "Functions.hpp"
          #include "cation\cation_functions.cpp"
      };
      
      class CfgSounds {
          sounds[] = {};
          class sirenLong {
              name = "sirenLong";
              sound[] = {"\sounds\sirenLong.ogg", 1.0, 1};
              titles[] = {};
          };
          
          class wiggle {
              name = "wiggle";
              sound[] = {"\sounds\wiggle.ogg", 1.0, 1};
              titles[] = {};
          };
      
          class bip {
              name = "bip"; 
              sound[] = {TV\TV logo & beep\Sounds\bip.ogg, 1, 1.0}; 
              titles[] = {};
          };
          
          class bip2 {
              name = "bip2"; 
              sound[] = {TV\TV logo & beep\Sounds\bip2.ogg, 1, 1.0}; 
              titles[] = {};
          };
          
          class speech {
              name = "speech";
              sound[] = {"\sounds\speech.ogg", 1.0, 1};
              titles[] = {};
          };
      
          class medicSiren {
              name = "medicSiren";
              sound[] = {"\sounds\medicSiren.ogg", 1.0, 1};
              titles[] = {};
          };
      
          class tazerSound {
              name = "tazerSound";
              sound[] = {"\sounds\tazer.ogg", 0.25, 1};
              titles[] = {};
          };
      
          class flashbang {
              name = "flashbang";
              sound[] = {"\sounds\flashbang.ogg", 1.0, 1};
              titles[] = {};
          };
      
          class mining {
              name = "mining";
              sound[] = {"\sounds\mining.ogg", 1.0, 1};
              titles[] = {};
          };
          
          class Shovel {    //Sound für Schaufel
              name = "Shovel";
              sound[] = {"\sounds\Shovel.ogg", 1.0, 1};
              titles[] = {};
          };
          
          class Goldnuggets {    /Sound für Goldschürfen - Sieb
              name = "Goldnuggets";
              sound[] = {"\sounds\Goldnuggets.ogg", 1.0, 1};
              titles[] = {};
          };
      
          class harvest {
              name = "harvest";
              sound[] = {"\sounds\harvest.ogg", 1.0, 1};
              titles[] = {};
          };
      
          class lockCarSound {
              name = "lockCarSound";
              sound[] = {"\sounds\carLock.ogg", 0.25, 1};
              titles[] = {};
          };
      
          class unlockCarSound {
              name = "unlockCarSound";
              sound[] = {"\sounds\carUnlock.ogg", 0.25, 1};
              titles[] = {};
          };
      };
      
      class CfgDebriefing {
          class NotWhitelisted {
              title = "$STR_NotWhitelisted_Title";
              subtitle = "$STR_NotWhitelisted_SubTitle";
              description = "$STR_NotWhitelisted_Descript";
              pictureBackground = "";
              picture = "";
              pictureColor[] = {0,0.3,0.6,1};
          };
      
          class Blacklisted {
              title = "$STR_Blacklisted_Title";
              subtitle = "$STR_Blacklisted_SubTitle";
              description = "$STR_Blacklisted_Descript";
              pictureBackground = "";
              picture = "";
              pictureColor[] = {0,0.3,0.6,1};
          };
      };
      
      class CfgNotifications {
          class MedicalRequestEmerg {
              title = "$STR_MedicalRequestEmerg_Title";
              iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcon_ca.paa";
              description = "%1";
              duration = 5;
              priority = 7;
          };
      
          class DeliveryAssigned {
              title = "$STR_DeliveryAssigned_Title";
              iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcon_ca.paa";
              description = "%1";
              duration = 10;
              priority = 7;
          };
      
          class DeliveryFailed {
              title = "$STR_DeliveryFailed_Title";
              iconPicture = "\A3\ui_f\data\map\mapcontrol\taskiconfailed_ca.paa";
              description = "%1";
              duration = 7;
              priority = 7;
          };
      
          class DeliverySucceeded {
              title = "$STR_DeliverySucceeded_Title";
              iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcondone_ca.paa";
              description = "%1";
              duration = 6;
              priority = 6;
          };
      
          class TextMessage {
              title = "$STR_TextMessage_Title";
              iconPicture = "icons\ico_messageNew.paa";
              description = "%1";
              duration = 10;
              priority = 6;
          };
      
          class PoliceDispatch {
              title = "$STR_PoliceDispatch_Title";
              iconPicture = "icons\ico_messagePolice.paa";
              description = "%1";
              duration = 10;
              priority = 6;
          };
      
          class AdminDispatch {
              title = "$STR_AdminDispatch_Title";
              iconPicture = "icons\ico_messageAdmin.paa";
              description = "%1";
              duration = 10;
              priority = 6;
          };
      
          class AdminMessage {
              title = "$STR_AdminMessage_Title";
              iconPicture = "icons\ico_messageAdmin.paa";
              description = "%1";
              duration = 10;
              priority = 5;
          };
      };
      #include "cation\cation_master.cpp"
      Alles anzeigen

      In der fn_mine.sqf habe ich benötigten Items eingetragen

      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"];
      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");
          _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 (_requiredItem != "") then {
          _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
      
          if (_valItem < 1) exitWith {
              switch (_requiredItem) do {
                  case "schaufel": {
                      titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
                  };
              };
              life_action_inUse = false;
              _exit = true;
        };
      };
      
      if (_requiredItem != "") then {
          _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
      
          if (_valItem < 1) exitWith {
              switch (_requiredItem) do {
                  case "Sieb": {
                      titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
                  };
              };
              life_action_inUse = false;
              _exit = true;
        };
      };
      
      if (_exit) exitWith {
          life_action_inUse = false;
      };
      //SCHLEIFE
      while {true} do {
      //ABFRAGE
       if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
      _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 4 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");
          titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
          };
      };
      sleep 2.5;
      life_action_inUse = false;
      Alles anzeigen

      In der fn_gather.sqf habe ich die Sounds für die jeweiligen Abbau Gegenstände hinzugefügt

      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_gather.sqf
          Author: Devilfloh
      
          Description:
          Main functionality for gathering.
      */
      private ["_maxGather","_resource","_amount","_maxGather","_requiredItem"];
      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");
          {
              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;};
      
      //HIER DIE SCHLEIFE
      while{true} do {
      //ABFRAGE
      if(life_interrupted) exitWith {life_interrupted = false;}; // Diese Zeile ist damit gemeint
      _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";};
      };
      
      switch (_requiredItem) do {
          case "schaufel": {player say3D "Shovel";};
          default {player say3D "harvest";};
      };
      
      switch (_requiredItem) do {
          case "sieb": {player say3D "Goldnuggets";};
          default {player say3D "harvest";};
      };
      
      for "_i" from 0 to 4 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");
          titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
          };
      };
      sleep 1;
      life_action_inUse = false;
      Alles anzeigen

      Natürlich wie oben schon erwähnt habe ich die Soundfiles im .ogg Format im sounds Ordner auch drinnen.

      Warum geht das nicht?

      Die zweite Frage dazu passend wäre nun, wenn ich bei einem Verarbeiter einen Sound wie zb. Fabrik haben möchte (ich erstelle mir eine fabriksound.ogg) wie kann ich diese einfügen sodass sie nur in der Umgebung des Verarbeiters zu hören ist und da auch nur während jemand dort ist (habe an einen Auslöser gedacht wenn der überschritten wird, wird Sound fabriksound.ogg abgespielt.

      Wie kann ich das am besten umsetzen?

      Dankeschön :)

    • Kuchenplatte
      Erleuchteter
      Reaktionen
      1.013
      Beiträge
      3.387
      Dateien
      7
      Bilder
      10
      • 27. März 2018 um 22:22
      • #2

      Guck dir mal zB die fn_tazed.sqf an da siehst du weiter unten das —>

      [_unit,"tazerSound",100,1] remoteExecCall ["life_fnc_say3D",RCLIENT];

      Ich habe damal die items über die Useitem laufen lassen

      zb wenn dein Boltcutter einen Sound machen soll musst du in den case deinen Sound einfügen

      case (_item isEqualTo "boltcutter"): { [cursorObject] spawn life_fnc_boltcutter; closeDialog 0; };

      Shadow|Eagle: "Frag mich eher why ich dich nicht noch irgendwas gegeben hab als Vorschlag xD"

      !Acryl-Exile Server!

      195.201.148.155:2302

      Kuchenplatte On GitHub

      https://github.com/Kuchenplatte

      Kuchenplattes Backstube

      Kuchenplattes Discord

      Kuchenplatte On Twitch
      Come On and Follow Me! On Twitch.TV

    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 28. März 2018 um 00:17
      • #3
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_tazed.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Starts the tazed animation and broadcasts out what it needs to.
      */
      private ["_curWep","_curMags","_attach"];
      params [
          ["_unit",objNull,[objNull]],
          ["_shooter",objNull,[objNull]]
      ];
      
      if (isNull _unit || isNull _shooter) exitWith {player allowDamage true; life_istazed = false;};
      
      if (_shooter isKindOf "Man" && alive player) then {
          if (!life_istazed) then {
              life_istazed = true;
              _curWep = currentWeapon player;
              _curMags = magazines player;
              _attach = if (!(primaryWeapon player isEqualTo "")) then {primaryWeaponItems player} else {[]};
      
              {player removeMagazine _x} forEach _curMags;
              player removeWeapon _curWep;
              player addWeapon _curWep;
              if (!(count _attach isEqualTo 0) && !(primaryWeapon player isEqualTo "")) then {
                  {
                      _unit addPrimaryWeaponItem _x;
                  } forEach _attach;
              };
      
              if (!(count _curMags isEqualTo 0)) then {
                  {player addMagazine _x;} forEach _curMags;
              };
      
              [_unit] remoteExecCall ["life_fnc_tazeSound",RCLIENT];
              _obj = "Land_ClutterCutter_small_F" createVehicle ASLTOATL(visiblePositionASL player);
              _obj setPosATL ASLTOATL(visiblePositionASL player);
              [player,"AinjPfalMstpSnonWnonDf_carried_fallwc"] remoteExecCall ["life_fnc_animSync",RCLIENT];
              [0,"STR_NOTF_Tazed",true,[profileName, _shooter getVariable ["realname",name _shooter]]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
              _unit attachTo [_obj,[0,0,0]];
              disableUserInput true;
              sleep 15;
      
              [player,"AmovPpneMstpSrasWrflDnon"] remoteExecCall ["life_fnc_animSync",RCLIENT];
      
              if (!(player getVariable ["Escorting",false])) then {
                  detach player;
              };
              life_istazed = false;
              player allowDamage true;
              disableUserInput false;
          };
      } else {
          _unit allowDamage true;
          life_istazed = false;
      };
      Alles anzeigen

      Der Sound für Gather Items ist doch in der fn_Gather.sqf definiert!?

      Code
      /*Original*/
      switch (_requiredItem) do {
       case "pickaxe": {player say3D "mining";};
       default {player say3D "harvest";};
      };
      /*Schaufel*/
      switch (_requiredItem) do {
       case "schaufel": {player say3D "Shovel";};
       default {player say3D "harvest";};
      };
      /*Sieb*/
      switch (_requiredItem) do {
       case "sieb": {player say3D "Goldnuggets";};
       default {player say3D "harvest";};
      };
      Alles anzeigen

      Bist du sicher das du auch in der Version 5.0 unterwegs bist?

      LG

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 28. März 2018 um 00:23
      • #4
      Zitat von lordbrs
      Code
      #include "..\..\script_macros.hpp"
      /*
          File: fn_tazed.sqf
          Author: Bryan "Tonic" Boardwine
      
          Description:
          Starts the tazed animation and broadcasts out what it needs to.
      */
      private ["_curWep","_curMags","_attach"];
      params [
          ["_unit",objNull,[objNull]],
          ["_shooter",objNull,[objNull]]
      ];
      
      if (isNull _unit || isNull _shooter) exitWith {player allowDamage true; life_istazed = false;};
      
      if (_shooter isKindOf "Man" && alive player) then {
          if (!life_istazed) then {
              life_istazed = true;
              _curWep = currentWeapon player;
              _curMags = magazines player;
              _attach = if (!(primaryWeapon player isEqualTo "")) then {primaryWeaponItems player} else {[]};
      
              {player removeMagazine _x} forEach _curMags;
              player removeWeapon _curWep;
              player addWeapon _curWep;
              if (!(count _attach isEqualTo 0) && !(primaryWeapon player isEqualTo "")) then {
                  {
                      _unit addPrimaryWeaponItem _x;
                  } forEach _attach;
              };
      
              if (!(count _curMags isEqualTo 0)) then {
                  {player addMagazine _x;} forEach _curMags;
              };
      
              [_unit] remoteExecCall ["life_fnc_tazeSound",RCLIENT];
              _obj = "Land_ClutterCutter_small_F" createVehicle ASLTOATL(visiblePositionASL player);
              _obj setPosATL ASLTOATL(visiblePositionASL player);
              [player,"AinjPfalMstpSnonWnonDf_carried_fallwc"] remoteExecCall ["life_fnc_animSync",RCLIENT];
              [0,"STR_NOTF_Tazed",true,[profileName, _shooter getVariable ["realname",name _shooter]]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
              _unit attachTo [_obj,[0,0,0]];
              disableUserInput true;
              sleep 15;
      
              [player,"AmovPpneMstpSrasWrflDnon"] remoteExecCall ["life_fnc_animSync",RCLIENT];
      
              if (!(player getVariable ["Escorting",false])) then {
                  detach player;
              };
              life_istazed = false;
              player allowDamage true;
              disableUserInput false;
          };
      } else {
          _unit allowDamage true;
          life_istazed = false;
      };
      Alles anzeigen

      Der Sound für Gather Items ist doch in der fn_Gather.sqf definiert!?

      Code
      /*Original*/
      switch (_requiredItem) do {
       case "pickaxe": {player say3D "mining";};
       default {player say3D "harvest";};
      };
      /*Schaufel*/
      switch (_requiredItem) do {
       case "schaufel": {player say3D "Shovel";};
       default {player say3D "harvest";};
      };
      /*Sieb*/
      switch (_requiredItem) do {
       case "sieb": {player say3D "Goldnuggets";};
       default {player say3D "harvest";};
      };
      Alles anzeigen

      Bist du sicher das du auch in der Version 5.0 unterwegs bist?

      LG

      Das waren Beispiel von Dateien in denen dein Code quasi drin ist. Du musst die Puzzlesteine nur noch zusammen setzen...

      Wenn du einen Server machen möchtest, egal mit welcher Zielgruppe, sollte man schon wenigstens 1+1 zusammenzählen können, wenn man die Bausteine schon fertig aufbereitet serviert bekommt ;)

      #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!

      ______________________

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 28. März 2018 um 00:24
      • #5
      Code
      /*Original*/
      
      switch (_requiredItem) do {
      
      case "pickaxe": {player say3D "mining";};
      case "schaufel": {player say3D "Shovel";};
      case "sieb": {player say3D "Goldnuggets";};
      default {player say3D "harvest";};
      
      };

      und wenn du es so schreibst könnte es sogar funktionieren

      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 ?

    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 28. März 2018 um 01:04
      • #6

      Nein moeck funktioniert leider nicht :(

      Ich glaube das der Fehler in der fn_mining.sqf liegt den da ist ganz unten

      Code
      player say3D "mining";

      definiert, nur wie kann ich das für jedes Item einzeln reinschreiben?

      Code
      if (_requiredItem != "") then {
       _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
       if (_valItem < 1) exitWith {
       switch (_requiredItem) do {
       case "schaufel": {
       titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
       };
       };
       life_action_inUse = false;
       _exit = true;
       };
      };
      if (_requiredItem != "") then {
       _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
       if (_valItem < 1) exitWith {
       switch (_requiredItem) do {
       case "Sieb": {
       titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
       };
       };
       life_action_inUse = false;
       _exit = true;
       };
      };
      if (_exit) exitWith {
       life_action_inUse = false;
      };
      //SCHLEIFE
      while {true} do {
      //ABFRAGE
       if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
      _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";
      Alles anzeigen
    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 28. März 2018 um 01:12
      • #7

      Ich versuche es mal so:

      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"];
      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");
          _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;
        };
      };
      player say3D "mining";
      
      if (_requiredItem != "") then {
          _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
      
          if (_valItem < 1) exitWith {
              switch (_requiredItem) do {
                  case "schaufel": {
                      titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
                  };
              };
              life_action_inUse = false;
              _exit = true;
        };
      };
      player say3D "Shovel";
      
      if (_requiredItem != "") then {
          _valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
      
          if (_valItem < 1) exitWith {
              switch (_requiredItem) do {
                  case "Sieb": {
                      titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
                  };
              };
              life_action_inUse = false;
              _exit = true;
        };
      };
      
      if (_exit) exitWith {
          life_action_inUse = false;
      };
      //SCHLEIFE
      while {true} do {
      //ABFRAGE
       if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
      _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 "Goldnuggets";
      
      for "_i" from 0 to 4 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");
          titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
          };
      };
      sleep 2.5;
      life_action_inUse = false;
      Alles anzeigen
    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 28. März 2018 um 01:18
      • #8

      Okay das (oben gepostete) geht nicht, so spielt er mir beim Abbau jeden Sound einzeln durch^^

      Zuerst Spitzhacke, dann Schaufel ud dann Sieb....das war ne Schnapsidee :)

    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 28. März 2018 um 01:54
      • #9

      Ich hab mir grad überlegt ob es vielleicht nicht gescheiter wäre den player say3D "mining"; komplett weglasse dürfte ja gar kein Sound mehr beim abbauen sein oder?

      Wen man nun hergeht und eine Abfrage startet ob der Spieler die Animation durchführt

      Code
      for "_i" from 0 to 4 do {
       player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
       waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
       sleep 0.5;
      };

      und wenn dies der Fall ist das solange diese Animation abgespielt wird in einem Auslöser am entsprechendem Ort (von einem Gegenstand abgespielt) der den Sound abspielt... Bsp: Objekt1 say3d "Shouvel"; #loop (weiss nicht wie man loopt) und wenn die Animation beendet ist der Sound stoppt!?

      Wäre das so möglich und wenn ja wie?

      THX :)

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 28. März 2018 um 09:24
      • #10

      so ich versuchs nochmal, ich habe Dir mal die fn_mine.sqf angepasst, dass unterschiedliche Sounds abgespielt werden je nachdem welches Item du benötigst/verwendest. Zusätzlich habe ich mal die Switch case für das benötigte Item richtig gemacht, weil das was da drin stand war suboptimal ;)

      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","_minesound"];
      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");
          _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"];
                  };
                  case "schaufel": {
                      titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
                  };
                  case "Sieb": {
                      titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
                  };
              };
              life_action_inUse = false;
              _exit = true;
          };
      };
      
      _minesound = switch(_requiredItem) do {
          case "pickaxe": {"mining"};
          case "schaufel": {"Shovel"};
          case "sieb": {"Goldnuggets"};
          default {"harvest"};
      };
      
      
      if (_exit) exitWith {
       life_action_inUse = false;
      };
      //SCHLEIFE
      while {true} do {
      //ABFRAGE
       if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
      _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 _minesound;
      
      for "_i" from 0 to 4 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");
       titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
       };
      };
      sleep 2.5;
      life_action_inUse = false;
      Alles anzeigen

      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 ?

    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 28. März 2018 um 23:27
      • #11

      Hallo moeck,

      sry war heut den ganzen Tag unterwegs und konnte erst jetz reinschauen.

      Ich werde morgen die FIle testen aber ich DANKE DIR schon im voraus vielmals für deine ganzen Bemühungen!

      LG

    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 29. März 2018 um 00:39
      • #12

      So mein lieber @moeck......ich konnte es nicht lassen und habe es mal getestet :)

      Zumeist werden die Sounds richtig abegespielt, zwischendrinnen kommt immer mal wieder ein anderer Sound dazwischen, ist aber nicht weiter so tragisch.

      Viel mehr beschäftigt mich wie ich die Aktion auch abbrechen kann!?

      Damit du nun nicht sagen kannst das ich mir darüber keine Gedanken mache oder Lernunwillig bin habe ich mal versucht etwas zusammen zu stellen.

      Ich würde es nicht als Script bezeichnen aber ich habe mir Mühe gegeben :)

      Code
      if(life_interrupted) exitWith {life_interrupted = false;};
      hint localize "STR_NOTF_Mine_Gather";   //Hinweis "Du farmst nun Dauerhaft, zum beenden bewege dich einfach"
      _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;
       
      if(playerMove) exitWith {life_interrupted = false;}; // Wenn der Spieler sich bewegt wird die Aktion Abgerochen!?
      hint localize "STR_NOTF_Mine_Stopp";   //Hinweis "Das Automatische Farmen wurde beendet"

      Ich will es noch nicht so einbauen bevor ich eine Fachgerechte Profi Meinung von dir dazu gehört hab ob das mit dem playerMove Befehl so funktionieren könnte.

      Ich wünsche eine gute Nacht und LG, Bruno

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. März 2018 um 01:28
      • #13

      so also playermove geht schon mal gar nicht ;) . schau mal in die fn_keyHandler.sqf. Da steht das unter anderem drin.

      Code
      _interruptionKeys = [17,30,31,32]; //A,S,W,D
      
      if (life_action_inUse) exitWith {
          if (!life_interrupted && _code in _interruptionKeys) then {life_interrupted = true;};
          _handled;
      };

      Ich gehe jetzt mal davon aus du benutzt für das Automatische Farmen eine Schleife als foroder while. Dort fügst Du einfach die Abfrage if(life_interrupted) exitWith {hint "Du hast gezuckt, jetzt sammelst Du nicht mehr}; ein und fertig. Alternativ kannst Du dir auch noch einen weiteren Eintrag im KeyHandler erstellen, wenn du das Abbrechen auf eine andere Taste legen möchtest.

      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 ?

    • lordbrs
      Fortgeschrittener
      Reaktionen
      18
      Trophäen
      9
      Beiträge
      307
      • 29. März 2018 um 11:11
      • #14

      Also wenn ich den Satz
      if(life_interrupted) exitWith {hint "Du hast gezuckt, jetzt sammelst Du nicht mehr};
      wird das nicht funktionieren weil ja oben der Interrupted mit diesem Satz abgestellt wurde

      if(life_interrupted) exitWith {life_interrupted = false;}; // Hier wird interruped (Also Bewegeung) ja mit false deaktiviert,

      vielleicht sollte ich das auf true stellen!?

      Wenn ich den Satz 2 ausblende bzw durch Satz 2 ersetze geht gar nichts mehr zu farmen.

      Ich versuch mal weiter ;)

      LG

      PS: Lösung ist simpler als gedacht,

      if(life_interrupted) exitWith {life_interrupted = false;};

      auf

      if(life_interrupted) exitWith {life_interrupted = true;};

      hint localize "STR_NOTF_Mine_Gather"; //

      gesetzt und wenn man nun ein paar Schritte macht hört er mit Auto Farmen auf :)

      Falls es noch jemand braucht/will hier die Stringtable Eintrag für diese Aktion

      Code
      <Key ID="STR_NOTF_Mine_Gather">
      
      <Original>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</Original>
      
      <Czech>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</Czech>
      
      <French>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</French>
      
      <Spanish>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</Spanish>
      
      <Italian>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</Italian>
      
      <Russian></Russian>
      
      <German>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</German>
      
      <Portuguese>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</Portuguese>
      
      <Polish>Du Farmst bist dein Inventar voll ist, zum Beenden gehe ein Paar Schritte!</Polish>
      
      </Key>
      Alles anzeigen

      Einmal editiert, zuletzt von lordbrs (29. März 2018 um 11:44) aus folgendem Grund: Lösung gefunden und gepostet

    Registrieren oder Einloggen

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

    Registrieren

    Tags

    • farmen
    • Arma3
    • Sound
    • V5.0
    • Soundeffekte
    • Abbau
    • Mining
    • 3D sound
    • Umgebungssound
    • Sound ersetzen

    Benutzer online in diesem Thema

    • 1 Besucher

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

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

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


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

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