Du kannst den string des Streams ja in einer Spielervariable speichern, wenn du es startest (die Funktion könnte man auch hooken) und dann über die Variable auch wieder abfragen, ob der Stream gerade in dieser Variable steht.
Wenn der Stream beendet wird, schreibst du einfach LEER in die Variable.
Kannst es ja erst mal selbst ausprobieren ob du es so hinbekommst, und wenn nicht nochmal Bescheid geben bzw den Code posten den du bis dahin hast. Aber ich bin zuversichtlich, dass du es hinbekommst, ist nicht viel Aufwand.
Ich habe es mal so geschrieben!
SetPVarString(playerid, "stream_played", usage);
for(new i;i<sizeof(Stream);i++){
if(!strcmp(Stream[i][url], "leer", true))continue;
format(Stream[i][url], 128, "%s", usage),
Stream[i][sPos][0] = pPos[0],Stream[i][sPos][1] = pPos[1],Stream[i][sPos][2] = pPos[2];
}
public OnPlayerUpdate(playerid)
{
GetPVarString(playerid, "stream_played", string, sizeof(string));
for(new i;i<sizeof(Stream);i++)
{
if(!strcmp(Stream[i][url], "leer", true))continue;
if(!strcmp(string, Stream[i][url], true))continue;
if(Stream[i][sPos][0] == 0.0)continue;
if(GetPlayerDistanceFromPoint(playerid, Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2]) >= 45.1)continue;
PlayAudioStreamForPlayer(playerid, Stream[i][url], Stream[i][sPos][0], Stream[i][sPos][1], Stream[i][sPos][2], 45.0, 1);
}
return 1;
}
Habs noch nicht getestet, sollte aber soweit passen!
mfg ![]()
