[Problem] mit Fahrzeugen (Dialog)

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
  • Hallo Bortfische,


    Ich sitze sein knapp 5 Tagen an meinem "GetMyCarSystem", undzwar soll ein Admin /getmycar machen können, und dann soll ein Dialog mit allen Autos die der Admin hat, angezeigt werden.


    Als erstes, werden im Dialog komische zahlen wie 53 oder 0 angezeigt...
    und ich weiß auch nicht wie ich das unter "OnDialogResponse" machen soll :(


    Codes:
    enum carEnum{
    id_x,
    model,
    besitzer,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    db_id,
    Locked
    }


    new cInfo[2000][carEnum];


    ocmd:getmycar(playerid,params[])
    {
    new string[300];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    format(string, sizeof(string), "%i\n%i",string,cInfo[i][id_x]);
    ShowPlayerDialog(playerid,GetMyCar,DIALOG_STYLE_LIST,"Meine Fahrzeuge",string,"Wählen","Abbrechen");
    }
    return 1;
    }


    Ich hoffe es kann mir jemand helfen :D


    MFG German_ScripterHD


    .


    Mit freundlichen Grüßen
    German_ScripterHD

  • Da fehlt die Abfrage ob das Fahrzeug dem Spieler gehört, das solltest du noch hinzufügen.
    Außerdem gibst du die ID des Fahrzeugs aus, sinnvoller wäre wahrscheinlich der Name.
    ocmd:getmycar(playerid,params[])
    {
    new string[300];
    for(new i=0; i<sizeof(cInfo); i++)
    {
    format(string, sizeof(string), "%s\n%s",string,vehNames[cInfo[i][model]-400]);
    ShowPlayerDialog(playerid,GetMyCar,DIALOG_STYLE_LIST,"Meine Fahrzeuge",string,"Wählen","Abbrechen");
    }
    return 1;
    }
    Ein vehNames Array mit allen Namen findest du, bzw vielleicht hast du es auch schon.


    Bei OnDialogResponse machst du es genau so, wenn du die Abfrage drin hast, ob das Fahrzeug dem Spieler gehört, nur dass du noch eine Variable hoch zählst, wenn das Fahrzeug dem Spieler gehört, und wenn diese gleich dem listitem ist, dann weißt du welches Fahrzeug ausgewählt wurde.

  • Jeffry


    Danke für deine schnelle Hilfe :thumbup:


    Doch leider verstehe ich das mit OnDialogResponse nicht ganz, sowie ich es jetzt gemacht habe, werden alle autos zu mir gespawnt...


    if(dialogid==GetMyCar)
    {
    if(!response)return 1;
    switch(listitem)
    {
    case 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20:
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id]) continue;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetVehiclePos(cInfo[i][id_x],x,y,z);
    }
    }
    }
    }


    Ich hoffe es kann mir jemand mit dem OnDialogResponse weiterhelfen.


    MFG German_ScripterHD


    .


    Mit freundlichen Grüßen
    German_ScripterHD

    3 Mal editiert, zuletzt von German_ScripterHD ()

  • So sollte es passen:
    if(dialogid==GetMyCar)
    {
    if(!response)return 1;
    new tmp;
    switch(listitem)
    {
    case 0..20:
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id]) continue;
    if(tmp == listitem)
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetVehiclePos(cInfo[i][id_x],x,y,z);
    return 1;
    }
    else tmp++;
    }
    }
    }
    }