Moin moin,
ich möchte eine Audiodatei bei einem Befehl an alle Member einer Fraktion senden wie bekomme ich das hin?
freue mich auf schnelle Antoworten
Moin moin,
ich möchte eine Audiodatei bei einem Befehl an alle Member einer Fraktion senden wie bekomme ich das hin?
freue mich auf schnelle Antoworten
Mit einer for schleife und deiner Fraktionsabfrage.
Eine Schleife durchgehen lassen, die abfragt ob der Spieler in der jeweiligen Fraktion ist.
for(new i; i<MAX_PLAYERS; i++)
{
if(Spieler[i][Frak] == 1) //Anpassen !
{
PlayAudioStreamForPlayer(i,..)
}
}
So würde ich es lösen.
E: Oder wie es JeffryUGP hat
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerFraktion[i] == FRAKTION_ID) //Oder PVar, was du halt benutzt. FRAKTION_ID natürlich ersetzen...
{
//Musik für 'i' (=playerid) abspielen.
}
}
}
@Andrzejxy': Hi Bin mir nicht ganz sicher wie das ist einen AudioStream für nicht connectete Spieler aufzurufen.
ok danke werde es später testen und mich nochmal wieder melden
danke euch
edit: Klappt nicht so ganz
if(listitem == 0)
{
for(new i; i<MAX_PLAYERS; i++)
{
if(sSpieler[i][Fraktion] == 1)
{
PlayAudioStreamForPlayer(i,"linkzensiert");
SendClientMessage(i,COLOR_RED,"Einsatz für das KLF!");
}
}
}
Probiers mal wie ich es gemacht habe (oben). Und wenn das auch nicht geht, dann setz mal über deinen AudioStream ein
printf("playerid i=%d called", i);
Dann schaust im serverlog nach wo es aufhört, bzw. ob es überhaupt aufgerufen wird.
will einfach nicht funktionieren..
Na wird dir wenigstens die Nachricht gezeigt?
(Einsatz für das KLF!)
nein wird sie nicht..
Aber dir Franktion haste schon richtig zugewießen (also 1), oder?
Hast du das mit dem print versucht?
ja hab ich und ja ich bin in der Fraktion 1
if(listitem == 0)
{
for(new i; i<MAX_PLAYERS; i++)
{
if(sSpieler[i][Fraktion] == 1)
{
printf("playerid i=%d called", i);
PlayAudioStreamForPlayer(i,"linkzensiert!");
SendClientMessage(i,COLOR_RED,"Einsatz für das KLF!");
}
}
}
Also ich nehme mal an, dass nichts geprintet wurde, richtig?
Dann setz es doch mal über die if-Abfrage, also 2 Zeilen hoch. Was passiert dann?
so?
if(dialogid == DIALOG_ALARM)
{
for(new i; i<MAX_PLAYERS; i++)
{
if(sSpieler[i][Fraktion] == 1)
{
printf("playerid i=%d called", i);
}
}
if(response)
{
if(listitem == 0)
{
PlayAudioStreamForPlayer(i,"linkzensiert!");
SendClientMessage(i,COLOR_RED,"Einsatz für das KLF!");
}
}
dann kommen folgende Errormeldungen:
C:\Users\Marvin\Desktop\Mein Script\gamemodes\selfmade.pwn(1315) : error 017: undefined symbol "i"
C:\Users\Marvin\Desktop\Mein Script\gamemodes\selfmade.pwn(1316) : error 017: undefined symbol "i"
C:\Users\Marvin\Desktop\Mein Script\gamemodes\selfmade.pwn(1320) : warning 217: loose indentation
C:\Users\Marvin\Desktop\Mein Script\gamemodes\selfmade.pwn(1433) : warning 209: function "OnDialogResponse" should return a value
C:\Users\Marvin\Desktop\Mein Script\gamemodes\selfmade.pwn(1434) : error 010: invalid function or declaration
Das macht wenig Sinn wie du das hast.
Nimm mal das, und sag uns was der server log so printet:
if(dialogid == DIALOG_ALARM)
{
printf("response=%d listitem=%d", response, listitem);
if(response)
{
if(listitem == 0)
{
for(new i; i<MAX_PLAYERS; i++)
{
printf("playerid i=%d called", i);
if(sSpieler[i][Fraktion] == 1)
{
printf("playerid i=%d called - Step 1", i);
SendClientMessage(i,COLOR_RED,"Einsatz für das KLF!");
printf("playerid i=%d called - Step 2", i);
PlayAudioStreamForPlayer(i,"linkzensiert!");
}
}
}
}
}
Serverlog:
----------
Loaded log file: "server_log.txt".
----------
SA-MP Dedicated Server
----------------------
v0.3x, (C)2005-2013 SA-MP Team
[16:58:31] filterscripts = "" (string)
[16:58:31]
[16:58:31] Server Plugins
[16:58:31] --------------
[16:58:31] Loading plugin: streamer.so
[16:58:31]
*** Streamer Plugin v2.6.1 by Incognito loaded ***
[16:58:31] Loaded.
[16:58:31] Loaded 1 plugins.
[16:58:31]
[16:58:31] Filterscripts
[16:58:31] ---------------
[16:58:31] Loaded 0 filterscripts.
[16:58:31] ----------------------------------
[16:58:31] Selfmade Script
[16:58:31] © Copyright 2013 Marvin2921
[16:58:31] ----------------------------------
[16:58:31] Number of vehicle models: 8
Alles anzeigen
Es wird ja gar nichts angezeigt, nicht mal dass der dialog aufgerufen wurde.
Zeig doch mal den command, mit dem du den Dialog öffnest.
also den Dialog zeigt er an!
if (strcmp("/alarm", cmdtext, true, 10) == 0)
{
ShowPlayerDialog(playerid,DIALOG_ALARM, DIALOG_STYLE_LIST, "Alamierungsmenü","KLF\nHLF1\nHLF2\nDL\nLöschzug\nRTWA\nRTWB\nNEF\nRW\nChristoph 29\nChristoph Hansa","Alamieren","Abbrechen");
}
Danke, sehr hilfreich...vielleicht vorher mal den Thread lesen.
Marvin2921, mach mal dein komplettes OnDialogResponse callback in einen pastebin: http://www.pastebin.com
Kannst mir auch gerne als PM schicken, falls du es nicht öffentlich haben willst.