Codebeispiele mAirListScript

hey!!

ich hätte eine Frage bezüglich der " int64" Variable. Wie kann diese aussehen. Ich komme leider nicht dahinter auch nach google suche. Zum Beispiel in diesem Code:

PlaybackControl(0).GetPlayer(0).GetEndMonDuration(hier müsste ich den wert für int64 eingeben);

kann mir wer weiterhelfen???

lg mike

hi,

int64 ist ein signed integer mit 64 bit.

d.h eigentlich nur, dass es ein ganzzahliger wert zwischen -9.223.372.036.854.775.808 und 9.223.372.036.854.775.807 ist.

grüße, michi

Dankeschön!

Wieso funktioniert dann mein Script nicht???

Dieses Script hat den Sinn.

Normalerweise wenn ich den Fader runterziehe pausiert der Player. Ich möchte aber, dass wenn er schon im EndMon sich befindet, dass der Player stoppt wenn ich den Fader runterziehe.

kannst du dir das mal kurz bitte anschaun ? :slight_smile:

[code]procedure OnExecuteCommand(Command: string);
begin
if Command = ‘PLAYER 1-1 PAUSE’
and
PlaybackControl(0).GetPlayer(0).GetEndMonDuration(10000);
then begin
ExecuteCommand ( ‘PLAYER 1-1 STOP’ ) ;
end;
end;

begin
end.[/code]

Lg mike

die frage ist, was dieses “GetEndMonDuration(10000)” zurückgibt… ich mache in letzter zeit zu wenig mit mairlist um das zu wissen.

grüße, michi

Ich hab das jetzt umgeschrieben:

[code]procedure OnPlayerStop ( PlayerControl : IPlayerControl ; Item : IPlaylistItem ; Duration : int64 );
begin
if
(PlaybackControl(0).GetPlayer(0).GetState=PS_PAUSED) and
(PlaybackControl(0).GetPlayer(0).GetPosition=2000)
then begin
PlaybackControl(0).GetPlayer(0).Stop ;
end;
end;

begin
end.[/code]

Theoretisch sollte der Player stoppen, wenn die pielzeit unter 2 sekunden mehr betrgt und ich den player dabei in PAUSE schicke. ka warum es ned funktioniert.

@Torben:

Könntest du uns bitte aufklären. ;D Weil ich hab überall gesucht was darüber zu finden, nur leider ist nirgens etwas darüber dokumentiert, wie man die Playerlänge abfragen kann. Ist es GetPosition ???

lg mike

Hallo,

ich habe versucht, auf basis dieses Scriptes ein Script zu bauen, was
a) Den Servertitel aktualisiert und
b) in eine Datei schreibt, wenn der Titel sich ändert.

Nach einigem herumprobieren bin ich zu folgendem Ergebnis gekommen:

[code]procedure OnPlayerStart(PlayerControl: IPlayerControl; Item: IPlaylistItem);
var
sl: TStringList;
begin
if(Engine.GetOnAir) then begin
//HTTPGet(‘http://user:pass@webserver:8000/admin/metadata.xsl?mode=updinfo&mount=/96&song=’ + Item.GetArtist +’ - ’ + Item.GetTitle);

    sl := TStringList.Create;
    sl.Add(Item.GetArtist + ' - ' + Item.GetTitle);
    sl.SaveToFile('c:\nowplaying.txt');
    sl.Free;
end;

end;

begin
end.[/code]

Wo genau ist nun der Fehler?
Keine Fehlermeldung, keine Datei.
mAirList 2.1.46 Build 517

Vielleicht ist “OnAir” aus? Bau dir mal einen On-Air-Schalter als Bildschirmobjekt ein, zur Kontrolle.

PS: Aktuelle 2er-Version ist v2.2.2.

Wie bau ich den ein?

(Ich weiss das mit der Version, hatte nur noch keine Zeit zum Updaten :slight_smile:

mAirListConfig -> GUI -> Bildschirmobjekte -> Hinzufügen

Und Gott sprach: es werde Licht!

Jetzt geht :slight_smile:

hey. kann ich über ein script, wenn ich einen player in pause schicke, den globalen fortschrittsbalken einfrieren ? mir fehlt eie kommandozeile, nur ich finde den befehl nicht:

[code]procedure OnPlayerStop ( PlayerControl : IPlayerControl ; Item : IPlaylistItem ; Duration : int64 );
begin
if (PlaybackControl(0).GetPlayer(0).GetState=PS_PAUSED) or
(PlaybackControl(0).GetPlayer(1).GetState=PS_PAUSED) then begin
// hier das fehlende kommando
end;
end;

begin
end.[/code]

lg mike

hi mike,

früher galt mal die Regel: per Script kann nicht auf die GUI zugegriffen werden. ich hab zwar leider in der letzten zeit die entwicklung von mairlist nur noch sporadisch mitverfolgen können, aber ich denke die gilt immernoch :wink:

grüße, michi

hey.

hier ein script, welches es erlaubt immer nur einen cartplayer zu spielen. das heißt, wenn man einen anderen cartplayer startet wird falls ein anderer spielt dieser gestoppt. ist nicht viel dahinter. aber bei 20 cartplayer dauert es schon eine weile die zeilen zu kopieren usw. also wie gesagt, dieses script ist für 20 cartplayer. wer mehr oder weniger will, muss sich das script hald anpassen. version 2.2.2

das script ist im anhang, weil es zu viele zeichen hat :wink:

lg mike


CARTPLAYER_STOP_NEU.mls (22.2 KB)

Kann man in Scripten keine For-Schleifen nutzen? Dadrin einfach alles außer (PlayerControl.GetCaption - 1) anhalten…

ja schon. aber im schleifenprogrammieren hab ich noch nicht ganz den dreh raus;)

Ahso ok, mir fehlt grad leider die Zeit um nachzuschauen wie’s genau geht…

Hallo mAirList-Freunde,

vielleicht kann mir jemand mal auf die Sprünge helfen…dieses Script schaltet per serieller Schnittstelle (ComPort1) mein Mischpult in den PFL-Modus und auch wieder zurück. In der 2er Version hat das prima funktioniert, in der 3er zeigt es mir einen Fehler in Zeile 15 an…habe schon die Scriptinghilfe durchstöbert, konnte aber nach einigen Tests keine Erfolge verzeichnen…

procedure OnPFLOn(PlayerControl: IPlayerControl; Item: IPlaylistItem;
PFLCount: integer);
begin
ComPort(9600, 8, ‘N’, 1);
ComPort(1).Open;
IOPort($3FC).WriteOR(1);
end;

procedure OnPFLOff(PlayerControl: IPlayerControl; Item: IPlaylistItem;
PFLCount: integer);

begin
if(PFLCount = 0) then
ComPort(1).Close;
end;

begin
end.

hi timo,

kommt denn irgendeine fehlermeldung?

grüße, michi

Glaube Timos Problem hat sich in einem anderen Thread bereits erledigt :wink:

Hi.

Ich bräuchte bitte Hilfe bei diesem einfach Script. Ich verstehe nicht, wieso er mit einen TypeMismatch schreibt. ???

Danke schonmal!

[code]procedure OnPlayerStart ( PlaylistIndex : integer ; PlayerIndex : integer ) ;
begin
PlaybackControl(0).SetOptions(plcoCleanUpNonPlayables = true );
SystemLog(‘History aufgeräumt !’);
end;

begin
end.
[/code]