Online Spieler anzeigen und anklicken geht teilweise nicht.

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
  • Moin Community,


    ich habe ein kleines Problem.
    Ich möchte mir alle Online Spieler in einem LIST DIALOG anzeigen lassen.
    Dieses klappt auch einwandfrei.
    Nur wenn ich dann den Spieler anklicken möchte spinnt es rum.


    Hier erstmal der Code :




    new counter = 0,AName[ MAX_PLAYER_NAME+1], astring[128];
    for (new aplayer; aplayer < MAX_PLAYERS; aplayer++)
    {
    if(IsPlayerNPC(aplayer))continue;
    if(!IsPlayerConnected (aplayer))continue;
    PlayerDialogSelectBox[playerid][counter] = aplayer;
    GetPlayerName (aplayer ,AName,MAX_PLAYER_NAME +1);
    format(astring ,sizeof astring ,"%s\n%s",astring,AName);
    }
    ShowPlayerDialog(playerid,DIALOG_ANRUFEN,DIALOG_STYLE_LIST,"Wen willst du Anrufen ?:",astring,"Ok","Abbruch");



    Kommen wir nun zum Problmen.
    Wenn ein neuer Spieler Online kommt, wird die variable bei dem ersten spieler immer um eins erhöt.


    Wie bekomme ich es hin, dass dem Spieler auch seine ID zugeweisen wird damit ich ihn anrufen kann.
    Unter OnDialogResponse habe ich folgendes :


    new pid = PlayerDialogSelectBox[playerid][listitem];


    wenn jetzt z.b 3 Spieler auf dem Server sind, Hat der 1. Spieler ID 3 ( sollte aber ID 1 haben).
    Spieler 2 und 3 haben haben die ID 0.


    Ich hoffe ihr könnt mir Helfen.


    Mfg


    PullDown

  • OnPlayerClickPlayer wird dir da helfen. Musst halt nur die clickedid in einer Variable speichern und dann kannste damit unter OnDialogResponse arbeiten


    Joa, Ich weiß. Aber für meine Funktion kann ich OnPlayerClickPlayer nicht nutzen.
    Trotzdem danke für deine Hilfe.


    Hat sonst niemand eine Idee woran es liegt ?


    // edit :

    Zitat

    Hast vergessen den counter in der schleife zu erhöhen

    klappt trotzdem nicht...

    Einmal editiert, zuletzt von PullDown ()


  • AName[ MAX_PLAYER_NAME+1] //warum +1?


    GetPlayerName (aplayer ,AName,MAX_PLAYER_NAME +1); // ""


    Das +1 ist, da am Ende jedes Strings immer noch eine "Leer-Zelle" ist.
    (Soweit ich weiß, lasse mich aber auch gerne eines besseren belehren.)


    @Thread:


    Also ich würde es ja so machen, dass ich den Namen von dem Listitem nehmen würde, und von dem Namen dann die ID ermitteln.
    GetPlayerID(string[], partofname=0);


    (Weiß nicht ob das so klappt, aber ein Versuch wäre es wert. :b)


    Gruß,
    Neo. :)


  • //I-wo oben:
    new PlayerDialogSelectBox[MAX_PLAYERS][MAX_PLAYERS];


    //Dialog anzeigen:
    new string[512], name[MAX_PLAYER_NAME], count;
    for(new i=0; i!=MAX_PLAYERS; i++)
    {
    if(IsPlayerNPC(i) || !IsPlayerConnected(i)) continue;
    GetPlayerName(i, name, MAX_PLAYER_NAME);
    format(string, sizeof string, "%s%s\n", string, name);

    PlayerDialogSelectBox[playerid][count] = i, count++;
    }
    ShowPlayerDialog(playerid, DIALOG_ANRUFEN, DIALOG_STYLE_LIST, "Wenn möchtest du anrufen?", string, "Ok", "Abbruch");


    //DialogResponse:
    new pid = PlayerDialogSelectBox[playerid][listitem];
    Versuchs mal damit, müsste eig klappen

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Frage mich wieso du mit dem Vorschlag von mir nicht Arbeiten kannst, nutzt du da schon andere Sachen oder wie siehts aus ?


    weil es mit der Tabliste nicht zu meinen System passt ^^


    //edit Zusatz :


    Ich habe jetzt den Code drinne:


    new iItem;
    new string[MAX_PLAYER_NAME*MAX_PLAYERS];
    for(new i; i != GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    new dName[MAX_PLAYER_NAME];
    GetPlayerName(i, dName, sizeof dName);
    format(string, sizeof string, "%s\n%s", string, dName);
    item[playerid][iItem] = i;
    iItem ++;
    }
    SendClientMessage(playerid,GRÜN,"Test");
    ShowPlayerDialog(playerid,DIALOG_ANRUFEN,DIALOG_STYLE_LIST,"Wen willst du anrufen? ",string,"Weiter","Abbrechen");


    aber er öffnet den Dialognicht.
    Aber wenn ich jetzt zum Testen mal einen DIALOG_INPUT Anzeigen lasse, dann zeigt er mit den Dialog an.

    3 Mal editiert, zuletzt von PullDown ()