mAirList-Script anhalten

Hallo,

gibt es eine Möglichkeit ein mAirList-Script für eine gewisse Zeit zu “unterbrechen”, d.h. für eine festgelegte Zeit anzuhalten?
Ich stelle mir das so vor, dass man eine Zeit (z.B. in Milisekunden) festlegt, die das Script runterzählt und dann weiterläuft. Geht so etwas?

Grüße,
Jan

Dafür gibt es den “Sleep()”-Befehl. In die Klammern die Anzahl der Millisekunden schreiben.

Okay, vielen Dank schon mal dafür.
Ich möchte diesen Befehl in ein Script ein bauen, aber da ich totaler Anfänger bezgl. Scripts bin, funktioniert bei mir irgendwie gar nichts.

Folgendes soll mit dem Script erreicht werden:
(Das Script wird beim Start von Cartplayer 1 ausgeführt, d.h. “Aktionen bei Start - Script ausführen”, das kriege ich noch hin ;))

Das Script soll die Farbe des Cartplayer 6 in Gelb ändern.
Dann soll es 206 Millisekunden warten (also der “Sleep”-Befehl), danach den Cartplayer 6 starten und während der Player 6 spielt, die Farbe, die er hat wenn er nicht spielt, wieder in die Ausgangsfarbe ändern.

Wie würde so ein Script aussehen? Vielen Dank schon mal :slight_smile:

Die Player-Farben lassen sich nicht per Script ändern.

Scripts haben (aus technischen Gründen) generell keinen Zugriff auf die Objekte der GUI.

Und wenn man die Farbänderung mal weglässt, wie würde es dann aussehen? :wink:

begin
  Sleep(206);
  ExecuteCommand('CARTWALL 6 START');
end.

Wuhu! Super, vielen Dank. Das eröffnet mir in meiner Cartwall ganz neue Möglichkeiten! Danke schön :slight_smile:

Jetzt suche ich nur noch einen Script-Befehl, der ein anderes Script unterbricht, also quasi:

STOP SCRIPT C:/xxx.mls

Gibt es so einen Befehl? Oder gibt es eine andere Möglichkeit ein Script zu unterbrechen?

Sorry, nein! :frowning:

BFN
CAD

mAirList kennt zwei Arten von Scripts:

  • “Normale” Scripts: Machen kurz was und beenden sich dann von selbst.

  • Benachrichtungs-Scripts (notification scripts): Laufen dauernd im Hintergrund mit und reagieren auf bestimmte Ereignisse. Können nur “gestoppt” werden, indem man sie in der Konfiguration bzw. Systemsteuerung deaktiviert.

Hmmm… mein Problem ist folgendes:

Wenn ich Cartplayer 1 starte, startet sich ein Script, welches mit dem Sleep-Befehl genau so lange wartet bis Cartplayer 1 durchgelaufen ist, und dann verzögerungsfrei Cartplayer 2 startet. Das funktioniert auch wunderbar, aber wenn ich Cartplayer 1 vorzeitig abbreche dann läuft das Script weiter (also es “sleept” noch für die festgelegte Zeit) und dann startet dann Cartplayer 2.

Gibt es eine Möglichkeit das zu unterbrechen?

Was wollen Sie erreichen, dass man nicht tun, indem Sie skin.ini und Zuweisen von verschiedenen Farben zu bestellen, wenn Spieler gestoppt, spielen usw.; und auch mit ‘Action On Stop?’

BFN
CAD

Ich will, dass der Player seine Farbe ändernt, während er nicht spielt. Aber Torben hat ja schon gesagt, dass so etwas nicht möglich ist.

Ich habe noch mal eine neue Idee entwickelt, die nicht erfordert, dass man Scripts beendet. Allerdings bräuchte ich dafür nochmal die Hilfe von den mAirList-Scriptern, da meine Versuche wieder kläglich gescheitert sind! :smiley:
(Das Script startet, wenn man Cartplayer 1 startet)
Folgendes soll das Script machen:
Es soll immer wieder die verbleibende Zeit von Cartplayer 1 checken. Wenn die verbleibende Zeit kleiner als eine halbe Sekunde ist, dann soll es Cartplayer 6 starten.

Wie würde so ein Script aussehen? Vielen Dank schon mal :slight_smile:

Ich kann mir nur einen Weg, was wollen Sie denken. In config, Unter den Cartwall EOF-Warnung auf eine Sekunde.

Dann fügen Sie dieses Skript als Notification Script:

[code]
procedure OnCartPlayerEOFWarning(PlayerIndex: integer);
begin
if PlayerIndex = 0
ExecuteCommand(‘CARTWALL 6 START’);
end;

begin
end.[/code]

Ich glaube nicht denken können Sie die EOF-Warnung auf weniger als eine Sekunde eingestellt, so hoffe ich eine Sekunde lang in Ordnung sein? :smiley:

BFN
CAD

Vielen Dank. Diese Methode ist super. Allerdings ist im Moment noch sinnlos:

Mein Code sieht so aus:

[code]procedure OnPlayerEOFWarning(PlayerIndex: integer);
begin
if PlayerIndex = 0
then ExecuteCommand(‘PLAYER 1-2 START’);
end;

begin
end.[/code]

Ich möchte aber, dass sich dieses Skript nur startet, wenn der Player 1 der 1. Playlist in den EOF-Modus geht. Bei Player 3 und 4 soll das nicht passieren!

Gibt es einen Synthax, der dieses Skript nur für Player 1 der 1. Playlist gültig macht?

Etwa so:

procedure OnPlayer1-1EOFWarning(PlayerIndex: integer);

oder so:

procedure OnPlayer0_0EOFWarning(PlayerIndex: integer);

Diese beiden Codes funktionieren nicht! Wie lautet der korrekte Befehl?

Die Syntax für OnPlayerEOFWarning ist anders!

Die korrekte Syntax für OnPlayerEOFWarning ist:

[code]procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
begin
if PlaylistIndex = 0 and PlayerIndex = 0 then
ExecuteCommand(‘PLAYER 1-2 START’);
end;

begin
end.[/code]
In config, müssen Sie auch die EOFWarning Zeit für jeden Playlist-Spieler.

Aber ich dachte, Sie wollten die Kontrolle Cartwall-Spieler, nicht Playlist-Spieler?

BFN
CAD

Ich habe dieses Script jetzt als Notification-Script eingerichtet.
Aber wenn ich mAirList starte bekomme ich folgende Fehlermeldung:

Fehler beim Laden von C:\[...]\EOF-Wetter.mls: [Fehler] (3:44): Type mismatch

Wo liegt der Fehler? Ich habe dein Script exakt übernommen.

Es fehlen Klammern.

procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
begin
  if (PlaylistIndex = 0) and (PlayerIndex = 0) then
    ExecuteCommand('PLAYER 1-2 START');
end;

begin
end.