Spieler ID im Dialog raus finden

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
  • He ich wollte mal fragen wie ich am besten die Spieler ID in mein Dialog raus finden kann so das ich ihn Orten kann?
    den bis her hab ich es so aba nun weis ich nicht weiter
    if(dialogid == DIALOG_WANTEDS)
    {
    if (response)
    {
    if(listitem == 0)
    {
    new string[128],name[MAX_PLAYERS];
    GetPlayerName(playerid,name,sizeof name);
    if(sInfo[playerid][sSpieler_wanteds] == 1)
    {
    format(string,sizeof(string),"Ackte Von %s\n",SpielerName(playerid));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 2)
    {
    format(string,sizeof(string),"Ackte Von %s\n",SpielerName(playerid));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund2]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 3)
    {
    format(string,sizeof(string),"Ackte Von %s\n",SpielerName(playerid));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund3]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 4)
    {
    format(string,sizeof(string),"Ackte Von %s\n",SpielerName(playerid));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund3]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund4]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 5)
    {
    format(string,sizeof(string),"Ackte Von %s\n",SpielerName(playerid));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund3]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund4]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund5]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 6)
    {
    format(string,sizeof(string),"Ackte Von %s\n",SpielerName(playerid));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund3]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund4]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[playerid][sSpieler_SternGrund6]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    }
    }
    else
    {
    ocmd_orten(playerid," ");
    }
    }
    wer cool wen mir da wer helfen kann
    lg kifkat
    //edit vielleicht ist der Befehl noch wichtig
    ocmd:gesuchte(playerid, params[])//wantedliste
    {
    if(sInfo[playerid][sSpieler_fraktion] == 1 || sInfo[playerid][sSpieler_arbeit] == 1)
    {
    new string[128],string2[128];
    for(new i;i<MAX_PLAYER_NAME;i++)
    if(sInfo[i][sSpieler_wanteds] > 0)
    {
    format(string2,sizeof(string2),"Aktuell gesuchte Personen %s",i);
    format(string,sizeof(string),"%s%s Sterne: %d\n",string,SpielerName(i),sInfo[i][sSpieler_wanteds]);
    ShowPlayerDialog(playerid,DIALOG_WANTEDS,DIALOG_STYLE_LIST,string2,string,"OK","Abbrechen");
    }
    }else IsAdmin
    return 1;
    }

  • ich Rufe erst das Dialog auf und den Klick ich auch den Spieler der Gesucht wirt.
    wie finde ich Die id des Spieler da raus?das er mir auch die richtigen Daten anzeigt?
    //Edit hat da noch wer eine idee?wie man es machen könnte?
    //Edit ich hab mal ein video gemacht da ich die Beführstung habe das ihr ihren wie mein Text nicht Anschlüsselt bekommt :D
    [video]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    //edit kann mir da bitte wer helfen für mich ist es wichtig

    3 Mal editiert, zuletzt von Kevin B. ()

  • Du müsstest listitem als Index benutzen und wieder alle Spieler durchlaufen. listitem + 1 = Der x. Spieler in der Liste (nicht mit i vergleichen, sondern eine parelle Variable, falls der Spieler online ist).

  • listitem speichert halt den ausgewählten Index in der Liste.
    Wenn du nochmal die Spieler durchläufst mit einer Schleife, dann muss es dann der (listitem +1). Spieler sein (sofern dieser aufm Server noch ist).


    new aktuell = 0;
    for(playerloop) if(isConnected) ++aktuell; if(aktuell == listitem + 1) => spieler gefunden (i)

  • also so ?
    new aktuell = 0;
    for(playerloop) if(IsPlayerConnected) ++aktuell;
    if(aktuell == listitem + 1))
    {
    new string[128],name[MAX_PLAYERS];
    GetPlayerName(playerid,name,sizeof name);
    if(sInfo[playerid][sSpieler_wanteds] == 1)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(aktuell));
    nur wie definiere ich playerloop Richtig?


  • for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    aktuell += 1;
    if(aktuell == listitem + 1)
    {
    // Es könnte der Spieler sein, falls keine in dem Zeitraum dazu bzw. weggegangen ist. // Seine id ist aber i
    }
    }
    }

  • hier mal ein kleiner Abschnitt Klappt leider noch imma nicht
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    new aktuell = 0;
    aktuell += 1;
    if(aktuell == listitem + 1)
    {
    new string[128],name[MAX_PLAYERS];
    GetPlayerName(playerid,name,sizeof name);
    if(sInfo[playerid][sSpieler_wanteds] == 1)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(i));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[i][sSpieler_SternGrund]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }

  • Versuch das mal so:


    if(dialogid == DIALOG_WANTEDS)
    {
    if(response)
    {
    new s[MAX_PLAYER_NAME];
    strmid(s,inputtext,0,MAX_PLAYER_NAME);
    new id=GetPlayerID(s);
    //dein code
    }
    return true;
    }
    GetPlayerID(s[])
    {
    new n[MAX_PLAYER_NAME],len,same;
    for(new i;i!=MAX_PLAYERS;i++)
    {
    GetPlayerName(i,n,MAX_PLAYER_NAME);
    len=strlen(n);
    for(new k=9,l=strlen(s); k!=l;i++)
    {
    if(s[k]==n[k])
    {
    same++;
    if(same==len&&s[k+1]=='\n') return i;
    if(same==len&&s[k+1]!='\n') { same=0; break; }
    }
    }
    }
    return INVALID_PLAYER_ID
    }
    Ungetestet dürfte aber funktionieren ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • hab es nun so
    if(dialogid == DIALOG_WANTEDS)
    {
    if(response)
    {
    new s[MAX_PLAYER_NAME];
    strmid(s,inputtext,0,MAX_PLAYER_NAME);
    new id = GetPlayerID(s);
    new string[128],name[MAX_PLAYERS];
    GetPlayerName(playerid,name,sizeof name);
    if(sInfo[playerid][sSpieler_wanteds] == 1)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(id));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 2)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(id));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund2]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 3)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(id));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund3]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 4)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(id));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund3]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund4]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 5)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(id));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund3]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund4]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund5]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    else if(sInfo[playerid][sSpieler_wanteds] == 6)
    {
    format(string,sizeof(string),"%sAkte Von %s\n",string,SpielerName(id));
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund2]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund3]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund4]);
    format(string,sizeof(string),"%sVerbrechen: %s\n",string,sInfo[id][sSpieler_SternGrund6]);
    ShowPlayerDialog(playerid, DIALOG_WANTEDS, DIALOG_STYLE_MSGBOX, name,string, "Schließen", "Behandeln");
    }
    }
    return true;
    }
    stock GetPlayerID(s[])
    {
    new n[MAX_PLAYER_NAME],len,same;
    for(new i;i!=MAX_PLAYERS;i++)
    {
    GetPlayerName(i,n,MAX_PLAYER_NAME);
    len=strlen(n);
    for(new k=9,l=strlen(s); k!=l;i++)
    {
    if(s[k]==n[k])
    {
    same++;
    if(same==len&&s[k+1]=='\n') return i;
    if(same==len&&s[k+1]!='\n') { same=0; break; }
    }
    }
    }
    return INVALID_PLAYER_ID;
    }wen ich /gesuchte eingebe öffnet sich das Dialog und werden die Spieler angezeigt aba wen ich rauf Klicke und es noch mal eingebe geht nix mehr kein befehl Mehr

  • den befehl meiteste oda? den Dialog ist ja oben :D
    ocmd:gesuchte(playerid, params[])//wantedliste
    {
    if(sInfo[playerid][sSpieler_fraktion] == 1 || sInfo[playerid][sSpieler_arbeit] == 1)
    {
    new string[128],string2[128];
    for(new i;i<MAX_PLAYER_NAME;i++)
    if(sInfo[i][sSpieler_wanteds] > 0)
    {
    format(string2,sizeof(string2),"Aktuell gesuchte Personen");
    format(string,sizeof(string),"%s%s Sterne: %d\n",string,SpielerName(i),sInfo[i][sSpieler_wanteds]);
    ShowPlayerDialog(playerid,DIALOG_WANTEDS,DIALOG_STYLE_LIST,string2,string,"OK","Abbrechen");
    }
    }else IsAdmin
    return 1;
    }

  • Dann lass mal inputtext ausgeben, ich glaub ich hab da gerade nen denkfehler :/


    sprich
    SendClientMessage(playerid,-1,inputtext);

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • So fehler gefunden


    ersetz den stock einfach mit dem hier


    stock GetPlayerID(s[])
    {
    new n[MAX_PLAYER_NAME],tmp[MAX_PLAYER_NAME];
    for(new i;i!=MAX_PLAYERS;i++)
    {
    format(tmp,MAX_PLAYER_NAME,s);
    GetPlayerName(i,n,MAX_PLAYER_NAME);
    strdel(tmp,MAX_PLAYER_NAME-(MAX_PLAYER_NAME-strlen(n)),MAX_PLAYER_NAME);
    if(!strcmp(tmp,n,true)) return i;
    }
    return INVALID_PLAYER_ID;
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski