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

    Gespawnte AI per Script funktioniert nicht

      • Altis Life
    • badidas
    • 2. November 2019 um 22:32
    • Geschlossen
    • Erledigt
    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 2. November 2019 um 22:32
      • #1

      Hallo,

      ich arbeite derzeit an einem kleinen Tutorialscript für meinen Server. Dabei sollte sich ein Bot von A nach B bewegen und etwas sagen. Im Singleplayer hat dies sehr gut funktioniert. Als ich jedoch das Script auf meinen Test Server geladen habe, habe ich festgestellt, dass der Bot sich nicht bewegen kann. Im Errorlog steht nichts und ich kann auch keinen Zusammenhang feststellen, warum es jetzt im Singleplayer funktioniert und auf dem Life Server nicht. Alles weitere funktioniert soweit, also der Bot sagt etwas, er spawnt richtig und der Spieler spawnt auch richtig. Er steht aber leider nur auf der Stelle.

      Hier das Script:

      Code
      player setPos (getMarkerPos "spawnpoint_tutorial_player_1");
      _meters = player distance getMarkerPos "spawnpoint_tutorial_NPC_1";
      _group = group master_group;
      _smuggler = _group createUnit ["C_man_hunter_1_F", (getMarkerPos "spawnpoint_tutorial_NPC_1"), [], 0, "FORM"];
      _group allowFleeing 0;
      _smuggler disableAI "move";
      _smuggler disableAI "path";
      _smuggler allowDamage false;
      _smuggler disableAI "AUTOCOMBAT";
      _smuggler disableAI "AUTOTARGET";
      _smuggler disableAI "TARGET";
      _smuggler disableAI "COVER";
      _smuggler disableAI "FSM";
      _smuggler disableAI "TARGET";
      _smuggler allowFleeing 0;
      Civilian setFriend [west, 1];
      Civilian setFriend [east, 1];
      _smuggler setBehaviour "CARELESS";
      _check1 = true;
                      while {_meters > 4 && _check1} do {
                         _meters = player distance getMarkerPos "spawnpoint_tutorial_NPC_1";
                      };
                      
      
                      _check1 = false;
      
      playSound3D ["A3\Sounds_F\sfx\alarm_independent.wss", _smuggler]; 
      sleep 5;
                      _smuggler enableAI "move";
                      _smuggler enableAI "path"; 
      
      
      _smuggler doMove (getMarkerPos "spawnpoint_tutorial_waypoint_3_1");
      Alles anzeigen

      Ich hoffe ihr könnt mir helfen

      MfG Alex


      FIX:

      Code: fn_tutorial.sqf
      _gruppe = createGroup civilian;
      player setPos getMarkerPos "spawnpoint_tutorial_player_1";
      _smuggler = _gruppe createUnit ["C_man_hunter_1_F", getMarkerPos "spawnpoint_tutorial_NPC_1", [], 0, "FORM"];
      _smuggler enableSimulationGlobal false;
      _smuggler allowFleeing 0;
      _gruppe allowFleeing 0;
      _smuggler disableAi "path";
      _smuggler disableAi "move";
      waitUntil { (player distance getMarkerPos "spawnpoint_tutorial_NPC_1") < 4 };
      sleep 10;
      _smuggler enableSimulationGlobal true;
      playSound3D ["A3\Sounds_F\sfx\alarm_independent.wss", _smuggler]; 
      _smuggler setBehaviour "CARELESS";
      _smuggler enableAi "path";
      _smuggler enableAi "move";
      
      _smuggler doMove (getMarkerPos "spawnpoint_tutorial_waypoint_3_1");
      
      waitUntil { (_smuggler distance getMarkerPos "spawnpoint_tutorial_NPC_3_1") < 1 };
      waitUntil { (player distance getMarkerPos "spawnpoint_tutorial_NPC_3_1") < 4 };
      sleep 2;
      
      playSound3D ["A3\Sounds_F\sfx\alarm_independent.wss", _smuggler]; 
      sleep 10;
      Alles anzeigen

      9402615135.png

      Einmal editiert, zuletzt von badidas (4. November 2019 um 17:20)

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 2. November 2019 um 23:06
      • #2

      Nimm mal move normal das funktioniert bei mir.

      Code
      _unit move (getMarkerPos "spawnpoint_tutorial_waypoint_3_1");


      Mit freundlichen Grüßen

      Joe Barbaro

      Entwickler vom Arma 3 Batch Generator


    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 2. November 2019 um 23:50
      • #3

      Hat nicht funktioniert. Hast du das auf einem Life Server getestet? Weil ich glaube eher dadran liegt das Problem

      9402615135.png

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 2. November 2019 um 23:52
      • #4
      Zitat von badidas

      Hat nicht funktioniert. Hast du das auf einem Life Server getestet? Weil ich glaube eher dadran liegt das Problem

      Ist kein Altis Life ist aber auch unwichtig bei mir klappts

      Versuch mal das ganze ohne disableAI "MOVE";

      Entwickler vom Arma 3 Batch Generator


    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 00:01
      • #5

      Naja, bei mir klappts ja auch im Singleplayer, sogar mit doMove, jedoch wenn ich es auf den Altis Life server pack und execute funktioniert es nicht.

      9402615135.png

    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 00:16
      • #6
      Zitat von Joe Barbaro

      Versuch mal das ganze ohne disableAI "MOVE";

      Funktioniert auch nicht, habe ich aber auch nur reingemacht, damit der Bot nicht wegrennt oder sich unnötig bewegt, ich enable es ja danach wieder wenn er sich bewegen soll

      9402615135.png

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 3. November 2019 um 00:47
      • #7

      ganz wichtig hast du das Script gecallt oder gespawnt?

      Entwickler vom Arma 3 Batch Generator


    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 00:49
      • #8

      ich habe es gecallt

      9402615135.png

    • Joe Barbaro
      Nerd
      Reaktionen
      199
      Trophäen
      8
      Beiträge
      688
      • 3. November 2019 um 00:49
      • #9
      Zitat von badidas

      ich habe es gecallt

      Spawn es mal und arbeite mit move statt doMove

      Entwickler vom Arma 3 Batch Generator


    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 00:56
      • #10

      habe es nun mit spawn versucht, hat nicht funktioniert. habe auch noch mit doMove probiert, selbes ergebnis

      9402615135.png

    • Barney
      Schüler
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      105
      Bilder
      2
      • 3. November 2019 um 01:06
      • #11

      Probiers mal damit: (das muss gespawntwerden)

      Code
      player setPos (getMarkerPos "spawnpoint_tutorial_player_1");
      _meters = player distance (getMarkerPos "spawnpoint_tutorial_NPC_1");
      _group = createGroup civilian; // dran denken die Group zu löschen wenn der NPC nicht mehr gebraucht wird
      _smuggler = _group createUnit ["C_man_hunter_1_F", (getMarkerPos "spawnpoint_tutorial_NPC_1"), [], 0, "FORM"];
      _group allowFleeing 0;
      _smuggler allowdamage false;
      {_smuggler disableAI _x} foreach ["FSM","AIMINGERROR","SUPPRESSION","AUTOTARGET","TARGET","COVER","SUPPRESSION","AUTOCOMBAT","CHECKVISIBLE"];
      _smuggler allowFleeing 0;
      _smuggler setCombatMode "BLUE";
      _smuggler setBehaviour "CARELESS";
      _check1 = true;
      waitUntil {_meters = player distance (getMarkerPos "spawnpoint_tutorial_NPC_1"); _meters < 4 && _check1};
      
      _check1 = false;
      playSound3D ["A3\Sounds_F\sfx\alarm_independent.wss", _smuggler];
      sleep 5;
      
      _smuggler setDestination [getposATL _smuggler, "LEADER Direct", true];
      _smuggler setDestination [(getMarkerPos "spawnpoint_tutorial_waypoint_3_1"), "LEADER PLANNED", true];
      Alles anzeigen

      Der Command Setfriend hat im Multiplayer nur effekt, wenn er vom Server ausgeführt wird, am besten beim Starten des Servers.

      Also

      Code
      Civilian setFriend [west, 1];
      Civilian setFriend [east, 1];

      am besten irgendwo in die initserver packen (am besten am ende)

      Denk auch dran die erstelle Gruppe zu löschen wenn du den NPC nicht mehr brauchst.

      PS: Ich hab das nicht getestet

      MfG Barney

      view?username=B4rn3y_&style=normal 76561198018512569.png

      Arbeitsnachweis - BasenBau

      Einmal editiert, zuletzt von Barney (3. November 2019 um 01:23)

    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 14:09
      • #12

      hab nun ein wenig rumgetestet mit dem code, hat nicht funktioniert. was ich nicht verstehe, mein alter code funktioniert ja super im singleplayer. auf dem life server jedoch nicht.

      9402615135.png

    • DragonGER
      Gast
      • 3. November 2019 um 15:25
      • #13

      Ist doch vollkommen egal ob es ein (life) Server ist, das interessiert den Arma3 Server nicht.

      Wir fangen mal ganz vorne an, wie rufst du das ganze auf? Die Leute haben schon richtig gesagt, da du ein waitUntil drinnen hast, musst du das ganze spawnen, den call erlaubt kein warten.

      Dann ist die Frage, wo du das Script ausrufst, ob lokal beim Client oder auf dem Server. Warum die frage? Na du nutzt "player" und diese Command gibt dir den lokalen Spieler zurück. Wenn du es also auf dem Server ausführst (z.B. initServer oder in der Debug Console) wird es nicht funktionieren, dafür aber im SP, weil du da Server und Spieler gleichzeitig ist (häufige Anfängerfalle).

      Code
      player setPos getMarkerPos "spawnpoint_tutorial_player_1";
      
      _smuggler = group playercreateUnit ["C_man_hunter_1_F", getMarkerPos "spawnpoint_tutorial_NPC_1", [], 0, "FORM"];
      _smuggler enableSimulationGlobal false;
      
      waitUntil { (player distance getMarkerPos "spawnpoint_tutorial_NPC_1) > 4 };
      
      _smuggler enableSimulationGlobal true;
      playSound3D ["A3\Sounds_F\sfx\alarm_independent.wss", _smuggler]; 
      _smuggler setBehaviour "CARELESS";
      _smuggler disableAI true;
      _smuggler doMove (getMarkerPos "spawnpoint_tutorial_waypoint_3_1");
      
      
      //irgendwann dann deleteVehicle _smuggler
      Alles anzeigen

      Das ist übrigens total ausreichend. Wobei ich nicht verstehe was genau der Sinn sein soll.

      Am besten trägst du das script in die function lib https://community.bistudio.com/wiki/Arma_3_Functions_Library ein. Dann kannst es jederzeit auf dem Client spawnen.

      Wichtig prüfe immer die Lokalitäten.

    • Barney
      Schüler
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      105
      Bilder
      2
      • 3. November 2019 um 18:49
      • #14

      _smuggler disableAI true;

      Bist du dir sicher, dass man das so machen kann? Ich meine ich habs jetzt nicht probiert, aber weder im Wiki noch in den Kommentaren wird erwähnt, dass boolean eine valide eingabe ist? Link

      Desweiteren Zeile 3:

      group playercreateUnit

      zu

      (group player) createUnit

      view?username=B4rn3y_&style=normal 76561198018512569.png

      Arbeitsnachweis - BasenBau

    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 19:31
      • #15
      Zitat von DragonGER

      Wir fangen mal ganz vorne an, wie rufst du das ganze auf

      ich rufe es in der initciv auf, habe execVM, call und spawn schon getestet, hat alles nicht funktioniert.

      Dein Script funktioniert zum Teil. Der Bot flüchtet jetzt halt... warum auch immer... er rennt einfach weg, hab jetzt auchschon mit allowFleeing versucht, funktioniert nicht

      9402615135.png

    • DragonGER
      Gast
      • 3. November 2019 um 20:46
      • #16

      Wovon wird die initcv aufgerufen? Wahrscheinlich das postinit ausgeführt. Schau mal bitte ob das lokal oder global ist.

      Der Bot kann nicht flüchten, dann hast du den Marker falsch platziert.

    • badidas
      Anfänger
      Reaktionen
      21
      Trophäen
      7
      Beiträge
      80
      • 3. November 2019 um 20:58
      • #17

      es wird so aufgerufen:

      Code: fn_init.sqf
      switch (playerSide) do {
          case west: {
              life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_cop");
              [] call life_fnc_initCop;
          };
          case civilian: {
              life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_civ");
              [] call life_fnc_initCiv;
          };
          case independent: {
              life_paycheck = LIFE_SETTINGS(getNumber,"paycheck_med");
              [] call life_fnc_initMedic;
          };
      };
      Alles anzeigen

      und hier in der initciv.sqf:

      Code: fn_initCiv.sqf
      [] spawn life_fnc_tutorial;

      man kann den spieler auch mit "player" aufrufen und zeug machen, das funktioniert alles, der bot flüchtet halt einfach... marker sind alle richtig platziert, funktioniert ja auch im singleplayer

      9402615135.png

    • DragonGER
      Gast
      • 3. November 2019 um 21:10
      • #18

      So wie ich das sehe ist es in dem Fall sogar egal ob du spawn oder call nimmst, da das anscheinend (fn_init) postInit ausgeführtes script es. Deswegen läuft es schon unsheduled, und du bleibst im selben Zustand egal ob du call oder spawn nimmst.

    • Barney
      Schüler
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      105
      Bilder
      2
      • 3. November 2019 um 21:20
      • #19

      Auch auf die Gefahr mich zu wiederholen: @DragonGER

      1.

      Dein waitUntil { (player distance getMarkerPos "spawnpoint_tutorial_NPC_1) > 4 }; ist obsolet da er warten wollte bis der player auf 4m ran ist und es bei dir halt nur weitergeht wenn der player mehr als 4m weg ist. (Einfach das > zu < machen)

      2.

      _smuggler disableAI true; kann man so nicht benutzen, nirgends wird erwähnt, dass man das so benutzen kann. Bitte ändere das, nachher denken noch andere Leser es wäre so richtig. Link zum Befehl

      3.

      group playercreateUnit bitte auch nochmal korrigeren, wie gesagt öffentliches Forum, man will Nichts falsches verbreiten.

      4.

      Natürich rennt der NPC weg, du hast ja die AI nicht ausgestellt.

      5.

      Wenn ein Sleep oder Waituntil da ist, immer spawn benutzen, call unterstützt das nicht und execVM würde ich schon gar nicht benutzen.

      6.

      Ich würde auch für den NPC eine eigene Gruppe erstellen, da (Zitat BI Wiki zu doMove): "If a unit is part of a group, and is not the leader, the unit will fall back into formation soon after the domove is completed. This does not happen for units that are in a group alone (because they are their own leader)."

      MfG Barney

      view?username=B4rn3y_&style=normal 76561198018512569.png

      Arbeitsnachweis - BasenBau

    • DragonGER
      Gast
      • 4. November 2019 um 16:43
      • #20
      Zitat von Barney

      Auch auf die Gefahr mich zu wiederholen: @DragonGER

      1.

      Dein waitUntil { (player distance getMarkerPos "spawnpoint_tutorial_NPC_1) > 4 }; ist obsolet da er warten wollte bis der player auf 4m ran ist und es bei dir halt nur weitergeht wenn der player mehr als 4m weg ist. (Einfach das > zu < machen)

      2.

      _smuggler disableAI true; kann man so nicht benutzen, nirgends wird erwähnt, dass man das so benutzen kann. Bitte ändere das, nachher denken noch andere Leser es wäre so richtig. Link zum Befehl

      3.

      group playercreateUnit bitte auch nochmal korrigeren, wie gesagt öffentliches Forum, man will Nichts falsches verbreiten.

      4.

      Natürich rennt der NPC weg, du hast ja die AI nicht ausgestellt.

      5.

      Wenn ein Sleep oder Waituntil da ist, immer spawn benutzen, call unterstützt das nicht und execVM würde ich schon gar nicht benutzen.

      6.

      Ich würde auch für den NPC eine eigene Gruppe erstellen, da (Zitat BI Wiki zu doMove): "If a unit is part of a group, and is not the leader, the unit will fall back into formation soon after the domove is completed. This does not happen for units that are in a group alone (because they are their own leader)."

      MfG Barney

      Alles anzeigen

      1. Das ist das was ich meinte, macht keinen Sinn.

      2. War mal alternative Syntax, scheint jetzt weg zu sein

      5. Jaein kommt halt immer darauf in welchem Umfeld du dich bewegst, da der Code aber eindeutig unsheduled läuft total egal.

    Registrieren oder Einloggen

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

    Registrieren

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

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

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


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

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