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
Mi: 21 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

    Ausrüstungs Item Script

      • Altis Life
    • Colden
    • 16. März 2023 um 21:49
    • Erledigt
    • Colden
      Frischling
      Reaktionen
      1
      Trophäen
      7
      Beiträge
      16
      • 16. März 2023 um 21:49
      • #1

      Hallo,
      Ich bin noch recht neu was Skripten usw. angeht aber beschäftige mich nebenher etwas damit.
      Ich wollte ein Z Item Script erstellen, was man nutzen kann um sich im Falle eines Großevents schneller Anwärter usw. Ausrüsten zu können als die Sachen einzeln zu kaufen und mühselig über das Inventar zu legen.

      Das Script soll quasi abfragen, bist du Cop -> Nein (Hint: Du kannst das nicht benutzen!) und das Item verschwindet aus dem Inventar des Spielers
      Cop -> Ja (Das Gear wird geladen und es soll ein Hint für alle Blufor erscheinen das derjenige das benutzt hat)

      Den meisten Teil habe ich schon gemacht, auch wenn ich nicht weiß, ob das so funktioniert wie es soll, allerdings bräuchte ich noch Hilfe, wie sich das Item selbsttätig aus dem Inventar löscht wenn man nicht als Cop drin ist und wie man den Hint an alle Cops schicken lässt wenn jemand das Item nutzt.

      Code: Config_vItems.hpp
      class notfallpaket {
            variable = "notfallpaket";
            displayName = "Notfallpaket";
            weight = 1;
            buyPrice = 25000;
            sellPrice = 0;
            illegal = false;
            edible = -1;
            drinkable = -1;
            icon = "icons\notfallpaket.jpg";
      Code: fn_notfallpaket.sqf
      /*
      Zum schnellen Ausrüsten von PAs, Praktis ect. im Großeinsatz statt dauernd neue Waffen kaufen zu müssen.
      */
      
      waitUntil {!isNull player};
      _unit = _this SELECT 0;
      if 
      (playerSide != west) then { hint "Du kannst das nicht benutzen!"; }
      else
      {
      
      /*
      Kleidung löschen
      */
      
      removeAllWeapons this;
      removeAllItems this;
      removeAllAssignedItems this;
      removeUniform this;
      removeVest this;
      removeBackpack this;
      removeHeadgear this;
      removeGoggles this;
      
      /*
      Klamotten adden
      */
      
      this forceAddUniform "U_O_R_Gorka_01_F";
      this addVest "V_PlateCarrier1_blk";
      this addBackpack "B_Carryall_Base";
      this addGoggles "G_Aviator";
      this addHeadgear "H_Cap_police";
      this addItem "NVGoggles_OPFOR";
      this assignitem "NVGoggles_OPFOR";
      
      /*
      Waffe und Aufsätze adden
      */
      
      this addWeapon "arifle_ARX_blk_F";
      this addWeapon "hgun_Pistol_heavy_01_green_snds_F";
      this addPrimaryWeaponItem ""muzzle_snds_65_TI_blk_F"";
      this addPrimaryWeaponItem "acc_flashlight";
      this addPrimaryWeaponItem "optic_AMS";
      this addPrimaryWeaponItem "bipod_01_F_blk";
      this addPrimaryWeaponItem "muzzle_snds_acp";
      this addPrimaryWeaponItem "acc_flashlight_pistol";
      this addPrimaryWeaponItem "optic_MRD_black";
      this addPrimaryWeaponItem "optic_ERCO_blk_F";
      
      /*
      Zubehör adden
      */
      
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "30Rnd_65x39_caseless_green";
      this addItemToBackpack "11Rnd_45ACP_Mag";
      this addItemToBackpack "11Rnd_45ACP_Mag";
      this addItemToBackpack "11Rnd_45ACP_Mag";
      this addItemToBackpack "11Rnd_45ACP_Mag";
      this addItemToBackpack "11Rnd_45ACP_Mag";
      this addItemToBackpack "11Rnd_45ACP_Mag";
      this addItemToBackpack "SmokeShell";
      this addItemToBackpack "SmokeShell";
      this addItemToBackpack "SmokeShell";
      
      this additem "ItemCompass";
      this additem "itemgps";
      this additem "itemmap";
      this additem "itemradio";
      this additem "itemwatch";
      
      this assignitem "itemcompass";
      this assignitem "itemgps";
      this assignitem "itemmap";
      this assignitem "itemradio";
      this assignitem "itemwatch";
      
      };
      Alles anzeigen

      Wäre nett wenn mir jemand damit helfen könnte, bzw auch wie ich das ganze Verbessern kann/könnte.

      Einmal editiert, zuletzt von Colden (16. März 2023 um 23:26)

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 16. März 2023 um 23:41
      • #2

      Dein Code schaut grundsätzlich gut aus, allerdings sind mir einige Punkte aufgefallen:

      1. Auf die Abfrage waitUntil {!isNull player} zu warten macht keinen großen Sinn. Denn player verweist immer auf das aktuelle Spieler-Objekt. Mir ist auf die schnelle keine Situation bekannt, dass die null ist (wenn nicht gravierend anderes falsch läuft).
      2. Du kannst mit params direkt die übergebenen Parameter abfragen/setzen: params ["_unit"]
        Wenn du dazu eine Fehlerabfrage möchtest dann so: params [["_unit", objNull, [objNull]]] Somit wird geprüft, ob die Variable auch wirklich vom Typ Object ist.
      3. Du setzt oben die Variable _unit, was gut ist. Nutzt diese dann aber nicht mehr. Du nutzt überall die Variable this. Das würde zwar bei anderen (Objektorientieren) Sprachen funktionieren, aber nicht bei SQF.
      4. Du setzt mehfach Items für das Gewehr:
        this addPrimaryWeaponItem "optic_AMS";
        this addPrimaryWeaponItem "optic_MRD_black";
        this addPrimaryWeaponItem "optic_ERCO_blk_F";
        Eins davon sollte vermutlich auf die Pistole (das wäre dann addHandgunItem). Aber auch zwei Zweibeine, etc.


      Um den Abschnitt mit der Ausrüsrung zu vereinfachen kannst du setUnitLoadout nutzen. Mit dem Command muss man auch keine Kleidung entfernen. Also werden die Zeilen 12-90 ersetzt.

      Das schaut dann so aus:

      Code
      _unit setUnitLoadout [
          ["arifle_ARX_blk_F", "muzzle_snds_65_TI_blk_F", "acc_flashlight", "optic_AMS", [30Rnd_65x39_caseless_green, 30], [], "bipod_01_F_blk"],
          [],
          ["hgun_Pistol_heavy_01_green_snds_F", "muzzle_snds_acp", "", "optic_MRD_black", [11Rnd_45ACP_Mag, 11], [], ""],
          ["U_O_R_Gorka_01_F", []],
          ["V_PlateCarrier1_blk", []],
          ["B_Carryall_Base", [["30Rnd_65x39_caseless_green", 12, 30], ["11Rnd_45ACP_Mag", 6, 11], ["SmokeShell", 3, 1]]],
          "H_Cap_police", "G_Aviator", [],
          ["ItemMap", "ItemGPS", "ItemRadio", "ItemCompass", "ItemWatch", "NVGoggles_OPFOR"]
      ]

      Ich habe die Ausrüstung von dir übernommen und die Items für die Pistole gesetzt. Ich bin mir nicht sicher, ob die Items alle in den Rucksack passen, oder sowieso in die Weste sollten. Musst du notfalls entsprechend ändern.


      Um dein Item zu erstellen, kannst du ja andere Items die verwendbar sind kopieren und leicht anpassen. Du kannst das Item immer entfernen lassen, da deiner Beschreibung nach in jedem Fall entfernt werden soll.

      Um Code bei anderen ausführen zu können, nutzt man remoteExecCall somit kann der Code für die Nachricht so aussehen:

      Code
      [format ["%1 hat ein Notfallpaket verwendet.", name _unit]] remoteExecCall ["hint", west]

      Einmal editiert, zuletzt von Henne (17. März 2023 um 21:33) aus folgendem Grund: Schussanzahl bei den Magazinen vergessen.

    • Colden
      Frischling
      Reaktionen
      1
      Trophäen
      7
      Beiträge
      16
      • 17. März 2023 um 20:43
      • #3

      Vielen Dank für deine Hilfe und deine ausführliche Antwort!
      Ich wusste gar nicht, das man das so vereinfacht als Loadout setzen kann, ich habe mich mit der Export Funktion vom Loadout in Arma beholfen.
      Was mir aufgefallen ist, das ein Visier fehlt, ich habe einmal das ERCO und das AMS reingepackt, je nachdem was bevorzugt wird, ich denke das muss ich dann in den Rucksack packen, also unter dem B Carryall?
      Und den Hint kann ich einfach unten nach dem setUnitLoadout packen?
      Genau so mit der Löschen Funktion, also normalerweise würde ja der hint angezeigt werden, aber der Civ behält das Item bis er es wegwirft, wie kann man das denn triggern das es direkt gelöscht wird?

      Also quasi so?


      Code
      if [playerSide != west] then [ hint "Du kannst das nicht benutzen!"; ]
      
      _unit setUnitLoadout [
          ["arifle_ARX_blk_F", "muzzle_snds_65_TI_blk_F", "acc_flashlight", "optic_ERCO_blk_F", [30Rnd_65x39_caseless_green, 30], [], "bipod_01_F_blk"],
          [],
          ["hgun_Pistol_heavy_01_green_snds_F", "muzzle_snds_acp", "", "optic_MRD_black", [11Rnd_45ACP_Mag, 11], [], ""],
          ["U_O_R_Gorka_01_F", []],
          ["V_PlateCarrier1_blk", []],
          ["B_Carryall_Base", [["30Rnd_65x39_caseless_green", 11], ["11Rnd_45ACP_Mag", 6], ["optic_AMS"], ["SmokeShell", 3]]],
          "H_Cap_police", "G_Aviator", [],
          ["ItemMap", "ItemGPS", "ItemRadio", "ItemCompass", "ItemWatch", "NVGoggles_OPFOR"]
      ]
      
      [format ["%1 hat ein Notfallpaket verwendet.", name _unit]] remoteExecCall ["hint", west]
      Alles anzeigen

      Einmal editiert, zuletzt von Colden (17. März 2023 um 20:54)

    • Henne
      Nerd
      Reaktionen
      155
      Trophäen
      7
      Beiträge
      840
      Bilder
      7
      • 17. März 2023 um 21:32
      • #4

      Nun stimmt deine Abfrage nicht mehr. Denn du verwendest für die Bedingung [] statt wie vorher ().

      Wenn du die Abfrage so schreibst, wird das Inventar dennoch gesetzt. In SQF gibt es exitWith, womit der Code an der Stelle beendet wird.

      Also dann so:

      Code
      if (playerSide != west) exitWith {hint "Du kannst das nicht benutzen!"};

      Ich habe keine Ahnung, wie das Entfernen von vItems bei Tonic-Life funktioniert. Aber dafür kann sicherlich jemand eine passende Zeile schreiben/senden.

      Die wird dann einfach über der Abfrage eingefügt (wenn es nicht bereits in anderen Funktionen entfernt wird).

      Im Gesamtem schaut das dann so aus:

      Code
      params ["_unit"];
      
      // Hier die Zeile zum löschen des vItems einfügen
      
      if (playerSide != west) exitWith {hint "Du kannst das nicht benutzen!"};
      
      _unit setUnitLoadout [
          ["arifle_ARX_blk_F", "muzzle_snds_65_TI_blk_F", "acc_flashlight", "optic_ERCO_blk_F", [30Rnd_65x39_caseless_green, 30], [], "bipod_01_F_blk"],
          [],
          ["hgun_Pistol_heavy_01_green_snds_F", "muzzle_snds_acp", "", "optic_MRD_black", [11Rnd_45ACP_Mag, 11], [], ""],
          ["U_O_R_Gorka_01_F", []],
          ["V_PlateCarrier1_blk", []],
          ["B_Carryall_Base", [["30Rnd_65x39_caseless_green", 11, 30], ["11Rnd_45ACP_Mag", 6, 11], ["optic_AMS", 1], ["SmokeShell", 3, 1]]],
          "H_Cap_police", "G_Aviator", [],
          ["ItemMap", "ItemGPS", "ItemRadio", "ItemCompass", "ItemWatch", "NVGoggles_OPFOR"]
      
      ];
      
      [format ["%1 hat ein Notfallpaket verwendet.", name _unit]] remoteExecCall ["hint", west]
      Alles anzeigen

      Richtig, wenn du Items ins Inventar legen möchtest, kannst du das einfach tun, in dem du es bei der Ausrüstrung einfügst. Dabei musst du nicht alles in den Rucksack legen, sondern kannst es auch in die Uniform oder Weste einfügen.

      Allerdings musst du immer die Anzahl der Items angeben. Bei der Munition ist es empfehlenswert auch die Schussanzahl anzugeben (hatte ich oben auch vergessen).

    • Colden
      Frischling
      Reaktionen
      1
      Trophäen
      7
      Beiträge
      16
      • 17. März 2023 um 23:45
      • #5

      Ah okay. Ich dachte ich muss meine Klammern an deine Anpassen.
      Das mit dem exitWith ist auf jeden fall gut zu wissen, daran hatte ich auch nicht gedacht.

      Vielen Dank für deine Hilfe!

    • DragonGER
      Gast
      • 19. März 2023 um 00:42
      • #6

      Kann eigentlich nur passieren wenn man Code über Initialization Order wie pre oder postInit ausführt und der Spieler noch keine Unit zugewiesen bekommen hat. Aber in diesem Fall natürlich irrelevant.

      Zitat von Henne

      Dein Code schaut grundsätzlich gut aus, allerdings sind mir einige Punkte aufgefallen:

      1. Auf die Abfrage waitUntil {!isNull player} zu warten macht keinen großen Sinn. Denn player verweist immer auf das aktuelle Spieler-Objekt. Mir ist auf die schnelle keine Situation bekannt, dass die null ist (wenn nicht gravierend anderes falsch läuft)

    Registrieren oder Einloggen

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

    Registrieren

    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™