Hey com , ist es eigentlich möglich alle Spieler die eine bestimmte Variable haben in einen DIALOG_STYLE_LIST anzeigen zu lassen & wenn man drauf drückt das eine Funktion mit den Spieler ausgeführt wird ?
Spieler in Dialog_style_list
- SAB0h
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Jo
for(new i; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) || !Variable) continue;
format(buffer,sizeof(buffer)," ..",....);
strins(string,buffer,strlen(string),sizeof(string));
}
ShowPlayerDialog(playerid,dialog,DIALOG_STYLE_LIST,"...",string,"....",""); -
Zitat
wenn man drauf drückt das eine Funktion mit den Spieler ausgeführt wird ?
Also angenommen manche Spieler habe die variable 3 zugewiesen bekommen , nun möchte ich wen ich /players mache das sie alle in einer Liste im Dialog erscheinen & wen ich dort draufdrücke spece ich sie automatisch,
-
Ja.
Oben im code:
new SDArray[MAX_PLAYERS];Wo du den Dialog anzeigen willst:
new j, string[1024];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(SpielerVariable == 3)
{
SDArray[j] = i;
j++;
format(string, sizeof(string), "%s%s\n", string,SpielerName(playerid));
}
}
ShowPlayerDialog(...);Und bei OnDialogResponse, bei dem definierten Dialog:
new id = SDArray[listitem]; //Die ID des Spielers den du angeklickt hast, mit der kannst du dann weiter machen.
SpecPlayer(id); //z.B. -
Also angenommen manche Spieler habe die variable 3 zugewiesen bekommen , nun möchte ich wen ich /players mache das sie alle in einer Liste im Dialog erscheinen & wen ich dort draufdrücke spece ich sie automatisch,
Das mit dem Dialog ist nicht das Problem.. das Problem ist du musst den Namen richtig übergeben & zwischenspeichern bzw den Namen in die ID
umwandeln -
-
Steht da doch?
new id = SDArray[listitem]; //Die ID des Spielers den du angeklickt hast, mit der kannst du dann weiter machen.
SpecPlayer(id); //z.B. -
Ich glaub du hast das nicht verstanden , soll ich das so stumpf einfügen bei OnDialogResponse?
case DIALOG_CAMERAS:
{
PlayerSpectatePlayer(playerid,SDArray[listitem]); //z.B.
} -
Wie willst du denn sonst sowas einfügen?
Solltest wenn aber noch eine response Abfrage einbauen. -
Das wird so nicht funktionieren.. weil woher bitte soll der Dialog wissen welcher Spieler welches Listitem ist ?
Denkt mal logisch drüber nach.
-
-
Weil das vorher in der For Schleife festgelegt wurde?
SDArray[j] = i; -
Bin mir nicht sicher, habs mal irgentwo gesehen:
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(!strcmp(inputtext,SpielerName(i),true))
{
PlayerSpectatePlayer(playerid,i);
return 1;
}
} -
Ach man Leute. Probiert doch erst mal den Code aus, bevor ihr sagt, dass es nicht tun wird...
Ja, du kannst es genau so stumpf verwenden:
PlayerSpectatePlayer(playerid,SDArray[listitem]);
Das geht. Ich hab es dir extra so einfach wie möglich gemacht.123marvin123: Bitte den Thread vorher lesen, dann posten. Was du da gepostet hast, hat gar nichts mit dem Thema zu tun. Danke
-
Ach man Leute. Probiert doch erst mal den Code aus, bevor ihr sagt, dass es nicht tun wird...
Ja, du kannst es genau so stumpf verwenden:
PlayerSpectatePlayer(playerid,SDArray[listitem]);
Das geht. Ich hab es dir extra so einfach wie möglich gemacht.123marvin123: Bitte den Thread vorher lesen, dann posten. Was du da gepostet hast, hat gar nichts mit dem Thema zu tun. Danke
Ich weiß um was es im Thema geht. Das was ich geschrieben habe muss unter OnDialogResponse, ich hab es bei einer Include gesehen wo es so aufgebaut war und funktioniert hat! -
Ach man Leute. Probiert doch erst mal den Code aus, bevor ihr sagt, dass es nicht tun wird...
Ja, du kannst es genau so stumpf verwenden:
PlayerSpectatePlayer(playerid,SDArray[listitem]);
Das geht. Ich hab es dir extra so einfach wie möglich gemacht.123marvin123: Bitte den Thread vorher lesen, dann posten. Was du da gepostet hast, hat gar nichts mit dem Thema zu tun. Danke
Die Spieler werden angezeigt , aber wenn ich draufklicke passiert nichts. -
Die Spieler werden angezeigt , aber wenn ich draufklicke passiert nichts.
Hmm, ich hab es grade getestet und es funktioniert ohne Probleme:
case DIALOG_TEST:
{
if(response)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!strcmp(inputtext,SpielerName(i),true))
{
SendClientMessageX(playerid,Rot,"%s",SpielerName(i));
return 1;
}
}
}
}
ocmd:diatest(playerid,params[])
{
new string[1024];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
format(string,sizeof(string),"%s%s\n",string,SpielerName(i));
}
ShowPlayerDialog(playerid,DIALOG_TEST,DIALOG_STYLE_LIST,"Test",string,"K","K");
return 1;
}Es wäre gut wenn man eine 2. Person hat um es auch wirklich auf Funktionalität zu prüfen
-
Tatsächlich funktioniert das, wenn nur der Spielername in einer Zeile (listitem) steht.
Mann muss zwar alle Spieler durchlaufen, bis man den entsprechenden Spieler gefunden hat, dafür benötigt man aber auch kein Array zum zwischenspeichern der Reihenfolge.
Denn in inputtext steht bei einer Liste der Inhalt der ausgewählten Zeile, in dem Falle der Name
-
Hmm, ich hab es grade getestet und es funktioniert ohne Probleme:
case DIALOG_TEST:
{
if(response)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!strcmp(inputtext,SpielerName(i),true))
{
SendClientMessageX(playerid,Rot,"%s",SpielerName(i));
return 1;
}
}
}
}
ocmd:diatest(playerid,params[])
{
new string[1024];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
format(string,sizeof(string),"%s%s\n",string,SpielerName(i));
}
ShowPlayerDialog(playerid,DIALOG_TEST,DIALOG_STYLE_LIST,"Test",string,"K","K");
return 1;
}Es wäre gut wenn man eine 2. Person hat um es auch wirklich auf Funktionalität zu prüfen
das Spectaten funkt bei mir nicht.. -
das Spectaten funkt bei mir nicht..
Aber das Beispiel was ich dir Geschickt habe oder? -
case DIALOG_TEST: { if(response) { for(new i = 0; i < MAX_PLAYERS; i++) { if(!strcmp(inputtext,SpielerName(i),true)) { SendClientMessageX(playerid,Rot,"%s",SpielerName(i)); return 1; } } } }
nein beim auswählen wieder nichts , wäre nett wen einer TV hätte & mir helfen könnte. -