Auto erkennen!

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
  • Ich habe folgendes Problem:


    Hier soll erkannt werden, ob es sich um ein Autohausauto handelt:


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=1;i<MAX_AUTOHAUSAUTOS;i++)
    {
    if(GetPlayerVehicleID(playerid) == AutoHausAuto[i])
    {
    SendClientMessage(playerid,WEIß,"Erkannt!");
    }
    }
    return 1;
    }


    Hier beim ersten wird es zugewießen:
    AutoHausAuto[i] = CreateVehicle(AutoHausAutoInfo[i][ahaModel],AutoHausAutoInfo[i][ahaxPos],AutoHausAutoInfo[i][ahayPos],AutoHausAutoInfo[i][ahazPos],AutoHausAutoInfo[i][ahazzPos],0,0,2);



    Und hier definiert:
    new AutoHausAuto[MAX_AUTOHAUSAUTOS];



    Allerdings wird bei jedem Auto angezeigt das es erkannt wird und es wird auch ewig im Chat die Nachricht gespamt (MAX_AUTOHAUSAUTOS)!

    Einmal editiert, zuletzt von Chax ()

  • public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=1;i<MAX_AUTOHAUSAUTOS;i++)
    {
    if(vehicle == AutoHausAuto[i])
    {
    SendClientMessage(playerid,WEIß,"Erkannt!");
    break;
    }
    }
    return 1;
    }


    Wenn das nicht klappt, dann zeige bitte den gesamten Code wie du die Autos erstellst.

  • Ich habe dies genauso getan und es hat funktioniert.
    Nun habe ich nur einen Dialog eingebaut, und bei den richtigen Autos wird nichts angezeigt, bei den Falschen wird "Falsch" angezeigt!



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=1;i<MAX_AUTOHAUSAUTOS;i++)
    {
    if(vehicleid == AutoHausAuto[i])
    {
    new string[200];
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(GetPlayerVehicleID(playerid))-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");
    ShowPlayerDialog(playerid,DIALOG_AUTOKAUFEN,DIALOG_STYLE_MSGBOX,"Auto kaufen",string,"Kaufen","Abbrechen");
    SendClientMessage(playerid,WEIß,"Test");
    break;
    }
    SendClientMessage(playerid,WEIß,"Falsch!");
    }
    return 1;
    }

  • Ich bin vllt ganz blöd, aber fangen Indexes nicht bei 0 an? oO
    Vllt wird deins ja übersprungen, weil du im allerersten Auto sitzt ._.


  • idR schon nur bei Autos und Objekten nicht.


    Die fangen bei 1 an


    Aki-chan saves the day~
    Okay, wusste ich nich (mehr) xDDD


    Edit:
    Es geht ja nicht unbedingt um die ID des Fahrzeugs, sondern um den INDEX des Arrays ...
    Die fangen doch immer bei 0 an ._.

  • idR schon nur bei Autos und Objekten nicht.
    Die fangen bei 1 an


    Das hat doch nichts mit dem Index eines Arrays zu tun. Die fangen immer bei 0 an.


    NicoAiko:
    Du hast völlig recht. Kommt jetzt drauf an, wie er die Autos erstellen lässt. Fängt er da auch bei 1 an ist der Index 0 einfach unbelegt, fängt er bei 0 an ist das der Fehler.


    Chax, wie lässt du deine Autos erstellen?


  • Das hat doch nichts mit dem Index eines Arrays zu tun. Die fangen immer bei 0 an.


    NicoAiko:
    Du hast völlig recht. Kommt jetzt drauf an, wie er die Autos erstellen lässt. Fängt er da auch bei 1 an ist der Index 0 einfach unbelegt, fängt er bei 0 an ist das der Fehler.


    Chax, wie lässt du deine Autos erstellen?


    stock LoadAutoHausAutos()
    {
    for(new i=1;i<MAX_AUTOHAUSAUTOS;i++)
    {
    new str[16];
    format(str, 16, "%d", i);


    AutoHausAutoInfo[i][ahaID] = mysql_GetInt("autohausautos", "ahaID", "ahaID", str);
    if(AutoHausAutoInfo[i][ahaID] == -1) break;
    AutoHausAutoInfo[i][ahaPreis] = mysql_GetInt("autohausautos", "ahaPreis", "ahaID", str);
    AutoHausAutoInfo[i][ahaModel] = mysql_GetInt("autohausautos", "ahaModel", "ahaID", str);
    AutoHausAutoInfo[i][ahaKlasse] = mysql_GetInt("autohausautos", "ahaKlasse", "ahaID", str);
    AutoHausAutoInfo[i][ahaAutohaus] = mysql_GetInt("autohausautos", "ahaAutohaus", "ahaID", str);
    AutoHausAutoInfo[i][ahaxPos] = mysql_GetFloat("autohausautos", "ahax", "ahaID", str);
    AutoHausAutoInfo[i][ahayPos] = mysql_GetFloat("autohausautos", "ahay", "ahaID", str);
    AutoHausAutoInfo[i][ahazPos] = mysql_GetFloat("autohausautos", "ahaz", "ahaID", str);
    AutoHausAutoInfo[i][ahazzPos] = mysql_GetFloat("autohausautos", "ahazz", "ahaID", str);


    AutoHausAuto[i] = CreateVehicle(AutoHausAutoInfo[i][ahaModel],AutoHausAutoInfo[i][ahaxPos],AutoHausAutoInfo[i][ahayPos],AutoHausAutoInfo[i][ahazPos],AutoHausAutoInfo[i][ahazzPos],0,0,2);
    AutoHausAutoInfo[i][ahaAutoID] = AutoHausAuto[i];

    new string[1200];
    format(string,sizeof(string),"-> AutoHausAuto %i wurde geladen!\nModel: %i - AutoID: %i",AutoHausAutoInfo[i][ahaID],AutoHausAutoInfo[i][ahaModel],AutoHausAutoInfo[i][ahaAutoID]);
    print(string);
    AutoHausAutos = AutoHausAutos+1;

    }
    print("<-> AutoHausAutos wurden erfolgreich geladen!");
    return 1;
    }

  • Das hat doch nichts mit dem Index eines Arrays zu tun. Die fangen immer bei 0 an.


    Es ging nur nicht um den Index des Arrays :P
    Schon ein Unterscheid 8o

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

    Margarete Stokowski

  • Es geht ja nicht unbedingt um die ID des Fahrzeugs, sondern um den INDEX des Arrays ...


    @BlackAce: Doch? :huh:



    Chax:
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    for(new i=1;i<MAX_AUTOHAUSAUTOS;i++)
    {
    if(vehicleid == AutoHausAuto[i])
    {
    SendClientMessage(playerid,WEIß,"Test");
    new string[200];
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(GetPlayerVehicleID(playerid))-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");
    ShowPlayerDialog(playerid,DIALOG_AUTOKAUFEN,DIALOG_STYLE_MSGBOX,"Auto kaufen",string,"Kaufen","Abbrechen");
    return 1;
    }
    }
    SendClientMessage(playerid,WEIß,"Falsch!");
    return 1;
    }


    Wie sieht es jetzt aus?

  • Doch? :huh:


    Nur Blöd das es aus seinem vorherigen Beitrag nicht herauslesen ließ.
    Sein Edit war nach meinem Beitrag :P


    Trotzdem bringt dir die Addressierung von 0 auf an nichts wenn du den Index über die FahrzeugID festlegst, dann ist der Index 0 auch vollständig 0.
    Darauf wollte ich hinaus, denn so klang seine Frage

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

    Margarete Stokowski


  • "Test" wird in den Chat geschrieben, allerdings erscheint kein Dialog!

    Kannst du vielleicht auf ein TS kommen?

  • Trotzdem bringt dir die Addressierung von 0 auf an nichts wenn du den Index über die FahrzeugID festlegst, dann ist der Index 0 auch vollständig 0.


    Natürlich, aber das macht er ja gar nicht. ;)
    Ist ja auch egal, passt ja jetzt. Zurück zum eigentlichen Problem:



    Chax: Wie hast du DIALOG_AUTOKAUFEN definiert? Falls es größer als 32767 ist, mach es kleiner.


    Und ebenfalls:
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(GetPlayerVehicleID(playerid))-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");

    zu:
    format(string,sizeof(string),"Name: %s\nPreis: %i$\nSteuerklasse: %i\nPremium: %s",CarName[GetVehicleModel(vehicleid)-400],AutoHausAutoInfo[i][ahaPreis],AutoHausAutoInfo[i][ahaKlasse],"Nein");