nach dem Update von 5.3 auf 6.2 verstehen sich Cartwall und DHD nicht mehr über das Script.
Die Fader auf dem DHD werden nicht mehr bei Klick an bzw. automatisch nach Ende des Jingles ausgeschaltet.
Kann wer helfen?
Hier das Script:
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4101, true);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4102, true);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4103, true);
end;
if (PlayerIndex = 4) then
begin
DHDRemote(0).SetFaderOn(4104, true);
end;
end;
// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
begin
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4101, false);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4102, false);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4103, false);
end;
if (PlayerIndex = 4) then
begin
DHDRemote(0).SetFaderOn(4104, false);
end;
end;
Das Script sieht erstmal korrekt aus. Kannst du mal etwas Debugging-Code einbauen um herauszufinden, ob die Prozedur überhaupt aufgerufen wird? Also sowas hier:
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
SystemLog('Start: ' + IntToStr(PlayerIndex));
// ..
// und hier dann der Rest wie oben
// ..
end;
Irgendwo hab ich einen Fehler, den ich als Script-U-Boot leider nicht identifizieren kann.
“Identifier expected” lautet der Fehler.
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
SystemLog('Start: ’ + IntToStr(PlayerIndex));
// …
// procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4101, true);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4102, true);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4103, true);
end;
if (PlayerIndex = 4) then
begin
DHDRemote(0).SetFaderOn(4104, true);
end;
end;
// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
begin
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4101, false);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4102, false);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4103, false);
end;
if (PlayerIndex = 4) then
begin
DHDRemote(0).SetFaderOn(4104, false);
end;
end;
// …
end;
Das begin ist tatsächlich überzählig, dazu kommt noch ein end;, welches ebenfalls zuviel ist. Ich hoffe, Du hast die richtigen Hochkommata gesetzt (solche: '), das tolle Forenprogramm zerschießt sie sofort, wenn man nicht als Code einfügt. Etwas bereinigt sähe der Code so aus (wiederum ungetestet, habe hier mAirList zum Ausprobieren nicht zur Verfügung);
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
SystemLog('Start: ' + IntToStr(PlayerIndex));
if (PlayerIndex = 0) then
begin
DHDRemote(0).SetFaderOn(4101, true);
end;
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4102, true);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4103, true);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4104, true);
end;
end;
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration:TTimeValue);
begin
if (PlayerIndex = 0) then
begin
DHDRemote(0).SetFaderOn(4101, false);
end;
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4102, false);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4103, false);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4104, false);
end;
end;
begin
end.
Korrigierte Grüße
TSD
Edit: Meinem Verständnis nach sind die PlayerIndizes nullbasiert, also Index von Player 1 = 0. Habe ich oben geändert.
Und wenn wir schon beim Skripten sind, könntest Du auch mal den vereinfachten Code probieren (‘Just to please me, James!’, würde Miss Sophie sagen):
Hm. Geladen wird es wohl, aber es tut sich sonst recht wenig. Zum Beispiel müßte im Log noch stehen:
2019-10-21 18:06:43
Information
Start: 0
bzw. Stop: 0 (oder welchen Player Du auch immer verwendet hast). Das ist (bzw. sollte sein) die Wirkung der Zeile, die Dich @Torben bat einzubauen (und die ich eigenmächtig noch um den Eintrag bei Stop erweitert hatte). Es scheint so, als würde der Prozeduraufruf von mAirList nicht bis zum Skript durchgereicht. Dahinter zu kommen, ist allerdings doch mehr Sache für den Boss …
Gibt es zu dem Thema eine Lösung, @Torben?
Das ist nämlich sehr unpraktisch und wird die Moderatoren auch mehr als aus der Bahn werfen, wenn sie immer den Channel abdrehen müssen, wenn der Jingle vorbei ist.
Sorry, hat etwas gedauert, war auf dem falschem Damper und hatte demnach an der falschen Stelle gesucht. Bitte teste einmal Snapshot 4143, dort müsste es wieder gehen.
Leider nicht.
Der Fader springt beim Start zwar auf ON, aber wenn der Jingle aus ist, springt der Fader nicht auf OFF.
Hier nochmal mein Code (der vereinfachte von TSD führt dazu, dass andere Fader ON gehen etc… ganz komisch):
procedure OnCartwallPlayerStart(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem);
begin
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4101, true);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4102, true);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4103, true);
end;
if (PlayerIndex = 4) then
begin
DHDRemote(0).SetFaderOn(4104, true);
end;
end;
// Called when cart player is stopped
procedure OnCartwallPlayerStop(PlayerIndex: integer; Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem; Duration: TTimeValue);
begin
if (PlayerIndex = 1) then
begin
DHDRemote(0).SetFaderOn(4101, false);
end;
if (PlayerIndex = 2) then
begin
DHDRemote(0).SetFaderOn(4102, false);
end;
if (PlayerIndex = 3) then
begin
DHDRemote(0).SetFaderOn(4103, false);
end;
if (PlayerIndex = 4) then
begin
DHDRemote(0).SetFaderOn(4104, false);
end;
end;
Vielen Dank Torben und Tondose. Hab auch das vereinfachte Script probiert - jetzt läuft es perfekt.
Und nun wird auch im Systemprotokoll “Start: 1” etc. angezeigt.