Scriptausführung abgebrochen ...

    • Script Fragen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Scriptausführung abgebrochen ...

      Hallo,
      Ich habe ein einfaches Script geladen, "Auto Close Door Advanced", und bekomme beim ausführen die Meldung: "Scriptausführung abgebrochen. Script ist zu komplex. Bitte bearbeite und kompiliere das Script neu.".

      Nun ist es so dass dieses Script auf einer Welt mit Riesenschiff (wo schon alles ruckelt) problemlos funktioniert.
      In der aktuellen Welt mit kleinerem Schiff (da ruckelt noch nichts) bekomme ich die Fehlermeldung im Terminal des Scripts.

      Ich habe schon mehrfach neu kompiliert, es gelöscht und neu eingefügt, Timer neu bestückt und von der älteren Welt (in der es funktioniert) in die aktuelle Welt 1:1 kopiert und eingefügt.
      Nichts hilft. Kommt mir total unlogisch vor.
      Scripte in den Einstellungen sind natürlich aktiviert.

      Hat noch jemand einen Rat ?
    • Hey!

      I'm sorry but I dont speak german, but i traduced your note ;)

      Here is a simple script to autoclose doors automatically created by Visual Scripting Tool that it should work perfectlly anywhere, if u want to use it, ill let it copied here fee ;)

      //x2,2,#Doors,15,0:=:true#2:=:Open#4:=:true#5:=:true[4]1:=:true[5]%0,2,#Doors,49,0:=:true#2:=:Open#4:=:true#5:=:true[4]1:=:true[5]%3,1,#Doors,15[7]5[3]%0,1,#Doors,49[7]5[3]%[3]1.0.7
      // Above is your LOAD LINE. Copy it into Visual Script Builder to load your script.
      // dco.pe/vsb

      void Main(string argument)
      {
      // block declarations
      string ERR_TXT = "";
      List<IMyTerminalBlock> v0 = new List<IMyTerminalBlock>();
      if(GridTerminalSystem.GetBlockGroupWithName("Doors") != null) {
      GridTerminalSystem.GetBlockGroupWithName("Doors").GetBlocksOfType<IMyDoor>(v0);
      if(v0.Count == 0) {
      ERR_TXT += "group Doors has no Door blocks\n";
      }
      }
      else {
      ERR_TXT += "group Doors not found\n";
      }
      List<IMyTerminalBlock> v1 = new List<IMyTerminalBlock>();
      if(GridTerminalSystem.GetBlockGroupWithName("Doors") != null) {
      GridTerminalSystem.GetBlockGroupWithName("Doors").GetBlocksOfType<IMyDoor>(v1);
      if(v1.Count == 0) {
      ERR_TXT += "group Doors has no Sliding Door blocks\n";
      }
      }
      else {
      ERR_TXT += "group Doors not found\n";
      }
      // display errors
      if(ERR_TXT != "") {
      Echo("Script Errors:\n"+ERR_TXT+"(make sure block ownership is set correctly)");
      return;
      }
      else {Echo("");}
      // logic
      bool result0v0 = false;
      for(int i = 0; i < v0.Count; i++) {
      if(((IMyDoor)v0).Enabled == true && ((IMyDoor)v0[i]).Status == DoorStatus.Open && ((IMyDoor)v0[i]).IsFunctional == true && ((IMyDoor)v0[i]).IsWorking == true && v0[i].GetValueBool("Open") == true) {
      result0v0 = true;
      break;
      }
      }
      bool result1v1 = false;
      for(int i = 0; i < v1.Count; i++) {
      if(((IMyDoor)v1[i]).Enabled == true && ((IMyDoor)v1[i]).Status == DoorStatus.Open && ((IMyDoor)v1[i]).IsFunctional == true && ((IMyDoor)v1[i]).IsWorking == true && v1[i].GetValueBool("Open") == true) {
      result1v1 = true;
      break;
      }
      }
      if(result0v0 && result1v1) {
      for(int i = 0; i < v0.Count; i++) {
      v0[i].ApplyAction("Open_Off");
      }
      for(int i = 0; i < v1.Count; i++) {
      v1[i].ApplyAction("Open_Off");
      }
      }
      }



      U MUST GROUP ALL DOORS INSIDE A GROUP CALLED "Doors" or change this name in script by whatelse u like ;)

      Also this script only afects sliding and normal doors, not hangar ones.

      U must set the timer delay to the time u wanna wait for the doors autoclosing, for example 3-4 seconds (this is not fat for the server) and set actions with "run default argument" in PB first, and "start" itself the timer second ;)

      Hope it help!
    • Thanks for your Script but it's not work.

      It says: "Bemerkte Fehler beim Ausführen des Skripts: Unable to cast object of type "System.Collections.Generic.List`1[Sandbox.ModAPI.Ingame.IMyTerminalBlock]" to type "Sandbox.ModAPI.Ingame.IMyDoor".

      I put the Script in a Programable Block, group all Doors in a group named "Doors", set a Timer to 3 sek., set actions with "run default argument" on Place 1 in the Timer and start the Timer itself at Place 2.
    • Weird :S it works for me. . . and the script itself was made using the visual scripting tool. . . it must be well writen. Idk, but anyway u can go and copy the code on first line of the script in that tool on dco.pe/vsb and modify it or else u want. That error u mentioned, could be cause u only have sliding doors on your ship Well, i simply made it using that tool i sayed before, and created trying to be the most generalizated possible, idk if script dont run if he dont found all the blocks mentioned on "IF" arguments (in visual scripting tool). So i recommend u to try to make yourself one "autocloser" with that, should be preatty simple.


      And also i listen somebody saying that u must pay 10k ingame credits to an admin to implement any script on a PB, maybe script dont work for that IDK.
    • Ich habe den Code korrigiert und er funktioniert mit mindestens 100 Türen:

      C#-Quellcode

      1. // Wird dieses Script ausgeführt, dann werden Alle Türen (wie normal Door, Hangar Door, Slidingdoor) die in der
      2. // anzulugenden Gruppe "Doors" sind geschlossen.
      3. // script mit mindestens 100 verschiedenen Türen auf einem Grid getestet
      4. void Main(string argument)
      5. {
      6. // block declarations
      7. string ERR_TXT = "";
      8. List<IMyTerminalBlock> v0 = new List<IMyTerminalBlock>();
      9. if (GridTerminalSystem.GetBlockGroupWithName("Doors") != null)
      10. {
      11. GridTerminalSystem.GetBlockGroupWithName("Doors").GetBlocksOfType<IMyDoor>(v0);
      12. if (v0.Count == 0)
      13. {
      14. ERR_TXT += "group Doors has no Door blocks\n";
      15. }
      16. }
      17. else
      18. {
      19. ERR_TXT += "group Doors not found\n";
      20. }
      21. // display errors
      22. if (ERR_TXT != "")
      23. {
      24. Echo("Script Errors:\n" + ERR_TXT + "(make sure block ownership is set correctly)");
      25. return;
      26. }
      27. else
      28. {
      29. Echo("");
      30. }
      31. for (int i = 0; i < v0.Count; i++)
      32. {
      33. ((IMyDoor)v0[i]).CloseDoor();
      34. }
      35. }
      Alles anzeigen