Playerzustände per Script übergeben

Hallo,

Ich habe jetzt mein Script zumindest mal soweit, das ich meine Ampel ansteuern kann. Nun komme ich jedoch nicht weiter wie ich das auf Player 1 und 2 aufteilen kann. Also so das jeder Player seine eigene EOF Warnung hat und seinen eigenen Abspielkontrolle. Ergo für jeden Player 2 Leuchten.

Soweit bin ich mit dem Script, wie drösel ich das jetzt nach Playern auf?

[code]// Called when (playlist) player reaches EOF warning point (default: 10s before end)
procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
begin
K8055Remote(0).SetDigitalChannel(2); //Warning Player1 gelb oben

	K8055Remote(0).SetDigitalChannel(3); //Warning Player2 gelb unten
end;

// Called when (playlist) player is started
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
K8055Remote(0).SetDigitalChannel(4); //abspielen Player1 grün oben
K8055Remote(0).ClearDigitalChannel(2); //Warning Player1 gelb oben

	K8055Remote(0).SetDigitalChannel(5); //abspielen Player2 grün unten
	K8055Remote(0).ClearDigitalChannel(3); //Warning Player1 gelb unten 
end;

// Called when (playlist) player is stopped
procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
K8055Remote(0).ClearDigitalChannel(4); //stop Player1 grün oben
K8055Remote(0).SetDigitalChannel(2); //Warning Player1 gelb oben

	K8055Remote(0).ClearDigitalChannel(5); //stop Player2 grün unten
	K8055Remote(0).SetDigitalChannel(3); //Warning Player2 gelb unten
end;

[/code]

Das sind die Parameter PlaylistIndex und PlayerIndex. Wenn du nur eine Playlist konfiguriert hast, ist PlaylistIndex immer 0. Und PlayerIndex gibt dir die Nummer des Players an - Achtung, Zählung beginnt ebenfalls bei 0 (= erster Player)!

Jetzt kannst du mit if/then entsprechend filtern:

if PlayerIndex = 0 then begin
  // Befehle nur für Player 1
end;

Danke Torben,

hat soweit geklappt. Nun muss ich wie ich grad gesehen hab aber mal überdenken was wann wie leuchten soll. :wink:

Gruss
Matze

Moin,
ich hab mal so eine ähnliche frage.

Wen ein Player beim Auslaufen ist, ich einen 2. Starte, dann ist mein EOf weg, so wie es sein soll. Doch wenn der Player Ausgelaufen ist, geht das Licht aus, als wäre kein Player an…

Dies ist mein Code:

// Player A und Player B Start
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then begin
ComPort('COM6').SendStr('g');
end;

if PlayerIndex = 1 then begin
ComPort('COM6').SendStr('g');
end;
end;

// Player A und Player B Stop
procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then begin
ComPort('COM6').SendStr('b');
end;

if PlayerIndex = 1 then begin
ComPort('COM6').SendStr('b');
end;
end;

// EOF Warnung
procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
begin
	if PlayerIndex = 0 then 
	begin
		ComPort('COM6').SendStr('e');
	end;

	if PlayerIndex = 1 then 
	begin
		ComPort('COM6').SendStr('e');
	end;
end;

Das wahr meine Vorstellung, um das Problem zu beheben:

// Player A und Player B Start
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
begin
if PlayerIndex = 0 then begin
ComPort('COM6').SendStr('g');
end;

if PlayerIndex = 1 then begin
ComPort('COM6').SendStr('g');
end;
end;

// Player A und Player B Stop
procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue; Item: IPlaylistItem);
begin
if (PlayerIndex = 0) and (PlayerIndex = 1) then begin
ComPort('COM6').SendStr('b');
end;

end;

// EOF Warnung
procedure OnPlayerEOFWarning(PlaylistIndex: integer; PlayerIndex: integer);
begin
	if PlayerIndex = 0 then 
	begin
		ComPort('COM6').SendStr('e');
	end;

	if PlayerIndex = 1 then 
	begin
		ComPort('COM6').SendStr('e');
	end;
end;

Meine Idee wahr halt, das ich die Bedingung mache, dass nur das Licht ausgeht, wenn beide Player nicht Laufen…

Laut LINK sollte das gehen, machts aber Leider nicht