Bestimmten Eintrag aus einem Array bekommen

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
  • Hey,
    ich versuche derzeit einen bestimmten Eintrag aus einem Array zu bekommen, der des angeklickten Listitems unter OnDialogResponse entspricht. ABER nehmen wir z.B. mein privates Fahrzeugsystem. Ich erstelle einen Dialog, der alle meine Autos anzeigt und ich klicke z.B. auf die zweite Zeile was dem Listitem 1 entspricht. Ich weiß, dass ich durch das Array loopen muss, nur nicht wie ich es in diesem Fall machen muss. Es soll entsprechen meines Beispiels das 2te Auto, dass mir gehört also der Kondition : cInfo[i][besitzer] == sInfo[playerid][id0]entspricht zu mir teleportieren. Hilfe wäre nett :)
    Mein bisheriger Code:
    if(dialogid==19){
    if(response){
    new Float:vehX,Float:vehY,Float:vehZ;
    GetPlayerPos(playerid,vehX,vehY,vehZ);
    for(new i=0;i<sizeof(cInfo);i++){
    if(cInfo[i][besitzer] != sInfo[playerid][id0]) continue;
    if(cInfo[i][besitzer] == sInfo[playerid][id0]) i=0;
    if(i != listitem) continue;
    SetVehiclePos(cInfo[i][id_x],vehX,vehY+2,vehZ);
    }
    }

  • Den String und den Dialog habe ich so gemacht :
    CMD:mycars(playerid,params[])
    {
    new carstring[800];
    for(new i=0;i<sizeof(cInfo);i++){
    if(cInfo[i][id_x]==0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][id0])continue;
    format(carstring,sizeof(carstring),"%s%s\n",carstring,GetVehicleName(cInfo[i][id_x]));
    }
    ShowPlayerDialog(playerid,19,DIALOG_STYLE_LIST,"Owned cars:",carstring,"Select","Close");
    return 1;
    }

  • if(dialogid==19)
    {
    if(response)
    {
    new Float:vehX,Float:vehY,Float:vehZ, count = -1;
    GetPlayerPos(playerid,vehX,vehY,vehZ);
    for(new i=0;i<sizeof(cInfo);i++)
    {
    if(cInfo[i][besitzer] == sInfo[playerid][id0]) count++;
    if(count != listitem) continue;
    SetVehiclePos(cInfo[i][id_x],vehX,vehY+2,vehZ);
    break;
    }
    }
    } //fehlte??


    Und pass mit den Klammern auf. Ich hab dir unten noch eine dazu gemacht.

  • Vielen Dank :)
    Hatte es schonmal so ähnlich, bin aber nie darauf gekommen count nur zu
    erhöhen, wenn ich der Besitzer des Fahrzeuges bin. Und die Klammer
    hatte ich, nur vergessen mit zu kopieren :thumbup: