/carkey im 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 liebe SAMP Community.


    Ich habe soeben /carkey ins DIALOG gepackt.
    Bisher zeigt er mit im Dialog an welche Cars ich binher besitze da wären 3 von 6 Stück.
    Nun möchte ich mir ja ein neues Car kaufen und müsste im Prinzip ja mein Schlüßel wechseln.
    Wie mache ich das ganze nun so das er mit im Dialog auch meine noch freien Schlüssen anzeigt?


    Hier die Codes


    DIALOG:


    if(dialogid==DIALOG_CARKEYS)
    {
    if(response)
    {
    new wstring[100];
    Dtc_PlayerKey[playerid]=0;
    for(new mv;mv<MaxVeh;mv++)
    {
    if(strcmp(inputtext,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400],false)==0)
    {
    Dtc_PlayerKey[playerid] = listitem;
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    format(wstring, sizeof(wstring), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",Dtc_PlayerKey[playerid]+1,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400]);
    SendClientMessage(playerid,blau,wstring);
    break;
    }
    }
    else
    {
    Dtc_PlayerKey[playerid]++;
    }
    }
    }
    }


    Befehl:


    ocmd:carkey(playerid)
    {
    new mc = MaxVeh;
    if(mc > 1)
    {
    new mvstring[800],save=Dtc_PlayerKey[playerid];
    Dtc_PlayerKey[playerid] = 0;
    for(new mv;mv<MaxVeh;mv++)
    {
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    format(mvstring,800,"%s\n%s",mvstring,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400]);
    ShowPlayerDialog(playerid,DIALOG_CARKEYS,DIALOG_STYLE_LIST,"Autoschlüssel",mvstring,"Auswählen","Abbrechen");
    Dtc_PlayerKey[playerid]++;
    }
    }
    Dtc_PlayerKey[playerid]=save;
    }
    return 1;
    }


    Ich würde mich sehr über eure Hilfe freuen.


    MFG :)

  • Ich weiß nicht genau ob das das ist was du willst, aber versuche es mal so:
    ocmd:carkey(playerid)
    {
    new mc = MaxVeh;
    if(mc > 1)
    {
    new mvstring[800],save=Dtc_PlayerKey[playerid];
    Dtc_PlayerKey[playerid] = 0;
    for(new mv;mv<MaxVeh;mv++)
    {
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    {
    format(mvstring,800,"%s\n%s",mvstring,CarName[PlayerCar[playerid][Dtc_PlayerKey[playerid]][CarModel]-400]);
    Dtc_PlayerKey[playerid]++;
    }
    else
    {
    format(mvstring,800,"%s\nFrei",mvstring);
    }
    }
    ShowPlayerDialog(playerid,DIALOG_CARKEYS,DIALOG_STYLE_LIST,"Autoschlüssel",mvstring,"Auswählen","Abbrechen");
    Dtc_PlayerKey[playerid]=save;
    }
    return 1;
    }


    Wenn das nicht das ist was du willst, erkläre bitte genauer was du haben willst.

  • Danke für die Antwort und Hilfe.
    Soweit funktioniert der Befehl auch, es ist so wie ich es mir Vorstelle.


    Screen


    Nur wie man sieht steht nun überall "Frei" meine Cars werden nicht mehr im DIALOG angezeigt.
    Wenn ich auf "Frei" drücke passiert nichts.


    MFG

  • Ok, schreibe es mal so. Ich habe es etwas umgestellt, so wie ich denke es sein muss, bzw. du es haben willst. Wenn ich deinen Code richtig interpretiert habe sollte es so passen.


    ocmd:carkey(playerid)
    {
    new mc = MaxVeh;
    if(mc > 1)
    {
    new mvstring[800];
    for(new mv;mv<MaxVeh;mv++)
    {
    if(Dtc_PlayerHaveCar[playerid][mv])
    {
    format(mvstring,800,"%s\n%s",mvstring,CarName[PlayerCar[playerid][mv][CarModel]-400]);
    }
    else
    {
    format(mvstring,800,"%s\nFrei",mvstring);
    }
    }
    ShowPlayerDialog(playerid,DIALOG_CARKEYS,DIALOG_STYLE_LIST,"Autoschlüssel",mvstring,"Auswählen","Abbrechen");
    }
    return 1;
    }



    if(dialogid==DIALOG_CARKEYS)
    {
    if(response)
    {
    new wstring[145];
    if(Dtc_PlayerHaveCar[playerid][listitem])
    {
    format(wstring, sizeof(wstring), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",listitem+1,CarName[PlayerCar[playerid][listitem][CarModel]-400]);
    SendClientMessage(playerid,blau,wstring);
    }
    else
    {
    format(wstring, sizeof(wstring), "Du nimmst deinen %dten Auto-Schlüssel, für deinen einen freien Platz!",listitem+1);
    SendClientMessage(playerid,blau,wstring);
    }
    }
    return 1;
    }


    EDIT:
    @leader_king: ^

    3HZXdYd.png

    4 Mal editiert, zuletzt von Jeffry ()

  • //EDIT
    Danke für deine Hilfe.
    Nun bekomme ich diese zwei errors.


    C:\Users\Lukas\Desktop\hd.pwn(43640) : error 024: "break" or "continue" is out of context
    C:\Users\Lukas\Desktop\hd.pwn(43646) : error 024: "break" or "continue" is out of context
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

    2 Mal editiert, zuletzt von AroX ()

  • Sorry, das gehört natürlich weg, ist ja keine Schleife mehr da.


    if(dialogid==DIALOG_CARKEYS)
    {
    if(response)
    {
    new wstring[145];
    if(Dtc_PlayerHaveCar[playerid][listitem])
    {
    format(wstring, sizeof(wstring), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s!",listitem+1,CarName[PlayerCar[playerid][listitem][CarModel]-400]);
    SendClientMessage(playerid,blau,wstring);
    }
    else
    {
    format(wstring, sizeof(wstring), "Du nimmst deinen %dten Auto-Schlüssel, für deinen einen freien Platz!",listitem+1);
    SendClientMessage(playerid,blau,wstring);
    }
    }
    return 1;
    }

  • Okay danke.
    Soweit kann ich nun soweit Schlüssel im dialog auswählen.
    Doch er zeigt mir im Dialog bisher immer noch nur "FREI" an.
    An manchen stellen sollte ja auch z.b mein Car stehen.


    z.b steht ja jetzt im Dialog:


    Frei
    Frei
    Frei
    Frei
    Frei
    Frei


    Aber es sollte ja z.b so sein das meine cars die ich besitze mit namen drinne stehen.
    Z.b


    Sultan
    Infernus
    Frei
    Frei
    Frei
    Frei


    MFG
    leader_king :)

  • Ich glaube, diese Variable hat gar keinen Sinn in dem Zusammenhang, oder? "Dtc_PlayerKey[playerid]"
    Ändere mal:
    if(Dtc_PlayerHaveCar[playerid][Dtc_PlayerKey[playerid]])
    zu:
    if(Dtc_PlayerHaveCar[playerid][mv])


    (Hab's dir auch in Post #5 geändert.)



    EDIT:
    [DT]Sniper: Danke für die Info. :thumbup:

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Puh das Autohaus ist vor JAhren von mir geschrieben worden als es noch keine Dialoge gab ..


    also paar Infos für die Leute die helfen wollen (ich selbst gib für das Autohaus keinen Support mehr und verweisse auf die neuere Dynamischere Version)


    Dtc_PlayerKey[playerid] ist der momentan ausgewählte Schlüssel (beim neuen Autosystem braucht man gar keine Schlüssel mehr...)
    Dtc_PlayerHaveCar hat für den jewalig möglichen Platz eine 1 Drinstehen wofern auf dem Slot bereits ein Fahrzeug vorhanden ist.
    PlayerCar beinhaltet alle weiteren Infos zu dem Fahrzeug.


    Das heisst dass Jeffry eigendlich geschrieben hat wie es funktionieren sollte.