Skript für Next-Modus

Keine Ursache. Freut mich, dass es klappt. Insbesondere sehe ich darin eine Bestätigung der Nützlichkeit des Script-Systems. Damit halte ich mir jetzt einen Haufen Feature Requests vom Hals g Und wenn ihr noch besser programmieren lernt, könnt ihr die Script bald sogar selbst schreiben :wink:

Ich habe übrigens in den letzten drei Tagen, als ersten Schritt in Richtung 2.1, den Sourcecode aufgeräumt, ja regelrecht umgekrempelt. Insbesondere habe ich für fast alle internen Strukturen, von der Playlist über die Cartwall, die Datenbanken bis hin zu den Eventlisten, Interfaces definiert, die ich dann nach und nach auch in das Script-System exportieren werde. In Zukunft wird also noch viel mehr möglich sein als jetzt schon. Mal gucken, wofür man das alles verwenden kann.

Torben

Hhm. Das ganze funktoniert zwar, aber sind 2 Player nicht zu wenig? Angenommen A fadet in 5sec aus und das Element in B ist nur 2sec lang. Dann kann kein drittes in Player A wieder gestartet werden.

Was machst Du in dieser Situation? Warten bis B fertig ist und anschliessend Next Taste?

@ Torben: Sehr gut, ich bin gespannt! Ich werde mir das Skript morgen auch noch mal zu Gemüte führen, um in etwa zu verstehen, was dahinter steckt. Aber ganz ehrlich: Als Laie hätte ich das alleine niemals so hinbekommen.

@ lifechannel: Die Fade-Out-Zeit ist bei mir im Next-Modus automatisch nur 1 Sekunde. Das macht auch Sinn, weil wenn ich z.B. Schlagzeilen-Trenner abfeuere, das letzte Element nur kurz ausgeblendet wird. Es geht ja wirklich nur darum, während den Nachrichten kurze Elemente hintereinander abzufeuern. Und dafür reichen zwei Player.

Hallo zusammen,

ich muss dieses Thema noch mal nach vorne holen, da sich meine Konfiguration leicht verändert hat. Nach wie vor arbeite ich mit 3 Playern: zwei ganz normale und ein Spezialelement-Player. Dementsprechend bräuchte ich eine kleine Anpassung meines Next-Skriptes.
Und zwar möchte ich, dass sich Next nur auf die beiden normalen Player bezieht. Heißt also folgendes: Läuft in Player C ein Element und drücke ich Next, läuft das Element in C munter weiter, aber Player A startet beispielsweise. Drücke ich wieder Next, läuft das Element in C ungeachtet dessen weiter, aber das gestartete Element in A blendet aus und das in B startet usw. Wichtig wäre eben, dass Elemente in Player C durch den Next-Befehl weder gestartet noch ausgeblendet werden, sondern nur jeweils das nächste in A oder B.

Kann mir irgendjemand eines der voranstehenden Skripte dahingehend ummodifizieren? Das wäre total super! :slight_smile:

Hier mal mein aktuelles Skript:

[code]var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 1 do
if ((CurrentPlaybackControl.GetPlayer(i).GetState = PS_LOADED) or
(CurrentPlaybackControl.GetPlayer(i).GetState = PS_PAUSED))
and
((item = -1) or
(CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem);
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
CurrentPlaybackControl.PlayerStart(player);
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 1 do
if i <> player then begin
if CurrentPlaybackControl.GetPlayer(i).GetItem <> nil then
CurrentPlaybackControl.GetPlayer(i).GetItem.SetFadeDuration(10000000);
CurrentPlaybackControl.PlayerFadeOut(i);
end;
end;
end.[/code]

hi,

erklär mal kurz, was das script so macht (ich möchte mich nicht durch den ganzen faden wühlen), dann kann ichs dir vielleicht anpassen

edit: dieses Script sollte den letzten player ignorieren… ich bin mir nicht sicher ob das so funktioniert(ist auch ungetestet), aber probier mal

[code]var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 2 do
if ((CurrentPlaybackControl.GetPlayer(i).GetState = PS_LOADED) or
(CurrentPlaybackControl.GetPlayer(i).GetState = PS_PAUSED))
and
((item = -1) or
(CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem);
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
CurrentPlaybackControl.PlayerStart(player);
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 1 do
if i <> player then begin
if CurrentPlaybackControl.GetPlayer(i).GetItem <> nil then
CurrentPlaybackControl.GetPlayer(i).GetItem.SetFadeDuration(10000000);
CurrentPlaybackControl.PlayerFadeOut(i);
end;
end;
end.[/code]

grüße, michi

Hey,

das Skript funktioniert leider noch nicht. In meiner jetzigen Konfiguration prüft es einfach, welches Element in der Playlist als nächstes dran ist, blendet das noch laufende aus (egal in welchem Player) und startet das nächste (auch egal in welchem Player). Die Fade-Zeit beträgt dabei eine Sekunde. Jetzt soll aber der dritte Player nicht ausgeblendet werden, wenn er noch läuft, sondern nur A und B. Wäre super, wenn du mir noch mal helfen könntest!

hab die zweite “playerschleife” übersehen… probiers jetzt nochmal…

[code]var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 2 do
if ((CurrentPlaybackControl.GetPlayer(i).GetState = PS_LOADED) or
(CurrentPlaybackControl.GetPlayer(i).GetState = PS_PAUSED))
and
((item = -1) or
(CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem);
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
CurrentPlaybackControl.PlayerStart(player);
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 2 do
if i <> player then begin
if CurrentPlaybackControl.GetPlayer(i).GetItem <> nil then
CurrentPlaybackControl.GetPlayer(i).GetItem.SetFadeDuration(10000000);
CurrentPlaybackControl.PlayerFadeOut(i);
end;
end;
end.[/code]

Das klappt ja mal sowas von prima! Ich danke dir echt ganz herzlich! :slight_smile: