Beiträge von J0a9

    Ich versuche Fahrzeuge zu drosseln, erhalte aber einen Warning...
    ( Link vom Stock )


    Wenn ich es hier einstelle erhalte ich einen Warning...



    Code
    SetVehicleSpeed(462, 0.4);


    warning 213: tag mismatch.



    Was habe ich denn falsch gemacht?

    Ist es möglich, dass beim Connecten geprüft wird ob der Spieler schon mit der IP registriert ist?
    Weil man mit dem MySQL Statement soweit ich weiß nur SELECT * FROM laden kann, da ja alle Datengeladen werden müssen und anschließend mit WHERE  der Namen herausgesucht wird.
    Ist es aber möglich wenn ein neuer Spieler sich registriert das gecheckt wird, dass z.B. das die registrierten IP's mit seinem entsprechen?
    PlayerEnum wäre da nicht geeignet oder mit einem MySQL Statement?


    Bzw. wie könnte man am einfachsten soetwas Prüfen?
    Das gleiche würde ich auch für die Email einstellen später....


    Könnte mir jemand helfen? Bin noch am grübeln wie man das am geschicktesten machen könnte...

    bei einer for-Schleife kannst du auch continue  verwenden.
    Damit kannst du die schleife elegant stoppen bzw. überspringen wenn diese durchgelaufen ist.


    break  wäre in dem Fall nicht gut da das genauso wie return 1;  ist.


    Gilt das jetzt für Blitzer?

    Code
    if(Check_If_Point_In_Triangle(andereID, x, y, z-3.0, a, z+10.0))

    Und die Faceing Angle muss vom Player gemessen werden und nicht vom Blitzer?

    Dickes dickes Lob an dich Jeffry!
    Klappt, vielen Dank! Jetzt habe ich auch nochmal den Aufbau angeschaut und verstehe wie das Aufgebaut ist und die Abfragen über den Autoschaden.


    Der Fehler lag da im format...


    Dank dir, was würden wir ohne dich tun ?(:thumbup:

    Ich habe eine Frage bezüglich des folgenden Stockes:


    Wofür stehtFloat:R und Float:MAX_Z ?
    ( Float:R könnte ich mir denken für Radius ... )

    aktueller Code:


    Ich habe mir alles immer printen lassen und es wird richtig geprintet aber wenn es zu GetDoorState kommt vermute ich das die Zahlen nicht richtig eingesetzt werden oder so.
    ( auch wenn das gerade komisch anhört ... )
    Habe auch was ausgeklammert ist versucht einzelnen Türen zu berechnen und auszuschreiben was alles beschädigt ist.
    Aber hab dann nicht mehr viel gearbeitet da ich nicht weiterkomme bzw den Fehler nicht finden kann :/

    @Jeffry, ich weiß nicht warum aber wenn ich die eben geschriebene Funktion einbaue passiert garnichts, in der Konsole wird aber doors geprintet...
    Wenn ich dann

    Code
    if(GetDoorState(doors, DOOR_PASSENGER, IS_DAMAGED))


    zu


    Code
    else if(GetDoorState(67108864, DOOR_PASSENGER, IS_DAMAGED))


    schreibe funktioniert das...
    Bedeutet das jetzt das das in dem Fall nur für den Tow Truck funktionieren würde und für andere Fahrzeuge nicht?


    Wie gesagt ich check nicht warum wenn ich statt die Zahlenfolge einfach doors eintrage warum dann nichts passiert...

    Ich habe das aus dem Beispiel genommen.
    Die Zahl kannst du mit dem in Windows mitgelieferten Rechner von Binär zu Dezimal umwandeln. Allerdings bringt dir das ja nichts, der Code soll das ja machen.
    Lass dir daher mal den Wert, den "doors" bei dir hat, ausgeben. Den kannst du dann als Binärwert umwandeln (Rechner) und dann prüfen, ob das richtige Bit eine 1 hat, oder nicht. Poste die Zahl gegebenenfalls hier.


    Gut ich versuchs mal...
    Also was ich jetzt herausfinden möchte ist die Beifahrertür...


    Geprintet wird: 67108864
    im Rechner auf Binär umgerechnet: ‭0100 0000 0000 0000 0000 0000 0000‬
    Soweit kann ich folgen und muss ich hier was umrechnen?


    Das ist dann doch nur für dieses spiezielle Fahrzeug oder?

    Ich füge mal einen Screen was im Dialogfenster steht:
    sa-mp-034.png


    ( das mit den Schweinwerfer das das angezeigt wird habe ich eben hinzugefügt. )
    Aber warum bei Türen  nichts steht verstehe ich nicht...

    @Jeffry:


    Jetzt habe ich auch keine Warnings erhalten jedoch wenn ich im Fahrzeug bin und jetzt den Befehl eingebe um im Dialogfenster es auszugeben wird nichts ausgeschrieben...


    Folgender Code:


    Code
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(GetPlayerVehicleID(playerid),panels,doors,lights,tires);
    new tuerinfo[100], str1[145];
    if(GetDoorState(doors, DOOR_DRIVER, IS_DAMAGED))  
    {
          tuerinfo = "Fahrertür";
    }
    format(str1, sizeof(str1), "{FFFFFF}Fahrzeugname:\t%s\nPanels:\t%d\nTüren:\t%s\nScheinwerfer:\t%s\nReifen:\t%d", VehicleName[GetVehicleModel(GetPlayerVehicleID(playerid))-400], panels, tuerinfo, lights, tires);
    ShowPlayerDialog(playerid, DIALOG_VEHINFO, DIALOG_STYLE_MSGBOX, "Schaden", str1, "Schließen", "");


    Was hast du eigentlich beim Stock verändert?

    Nutze den Code aus dem Beispiel (https://wiki.sa-mp.com/wiki/DoorStates)


    enum Door{ DOOR_HOOD, DOOR_TRUNK, DOOR_DRIVER DOOR_PASSENGER} enum DoorState(<<= 1){ IS_OPENED = 1, IS_DAMAGED, IS_REMOVED} stock GetDoorState(doorStates, Door:door, DoorState:doorState) return (doorStates >>> (8 * door)) & doorState;


    new panels, doors, lights, tires;GetVehicleDamageStatus(vehicleid,panels,doors,lights,tires); // simpleif(GetDoorState(doors, DOOR_DRIVER, IS_DAMAGED)) //<= das ist was du benötigst{ SendClientMessage(playerid, -1, "The driver door of your vehicle is damaged!");}// or even combinedif(GetDoorState(doors, DOOR_HOOD, IS_OPENED | IS_DAMAGED)){ SendClientMessage(playerid, -1, "The hood of your vehicle is both opened and damaged!");}

    bezüglich habe ich eine Frage und zwar ich habe den Stock nicht unter dem Enum gesetzt und beim compilen habe ich folgenden Warning erhalten:
    warning 213: tag mismatch


    Zeile:

    Code
    return (doorStates >>> (8 * door)) & doorState;


    Muss dieser Stock sofort unter dem Enum?

    also dann so:


    00000020 & 00000030 ?
    Diese Nullen verwirren mich gerade...


    Und was muss ich umrechnen?
    Die Bits zu Byte?


    Könnte mir jemand erklären wie das jetzt mit dem umrechnen geht weil ich das vor lauter nullen verwirrt bin....

    aaah okey,
    was mich nur verwirrt sind folgende stocks:

    • GetDoorState
    • decode_doors etc
    • encode_doors

    Das mit den Bit's hab ich jetzt gecheckt.
    Welches davon muss ich denn verwenden um Abzufragen ob die Türen beschädigt sind...

    @Whice., dank dir, stimmt hab ModelID und VehicleID vertauscht :D .


    Klappt jetzt einwandfrei vielen Dank :)
    Eine kleine Frage hätte ich diesbezüglich und zwar wenn das Fahrzeug einen Schaden hat wird da Float werde ausgegeben?
    Weil wenn ich Interger als Platzhalter habe bekomme ich einige Zahlen ausgeschrieben ^^

    Guten Abend Breadfish-Community,


    im Sammalbeitrag der Scripting Base hatte ich nachgefragt wie das Callback heißt um den Fahrzeugschaden abzurufen.
    @Jeffry schrieb mir das der Callback GetVehicleDamageStatus heißt.


    Ich versuche per Befehl aufzubauen das ich per Dialogfenster die Angaben ansehen kann.
    Vermutlich habe ich wieder einen kleinen Denkfehler...



    Im Wiki stand als Beispiel:


    Code
    new panels, doors, lights, tires;
    GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
    printf("Vehicle Status : [Panels] : %d - [Doors] : %d - [Lights] : %d - [Tires] : %d",panels,doors,lights,tires);


    Was ich nicht verstehe ist, wenn das Fahrzeug keinen Schaden hat wird überall 0 ausgeschrieben und in der Konsole geprintet.
    Sobald ein beliebiges Fahrzeug schaden hat wird das nicht aktualisiert.
    Ich vermute das es ein Denkfehler ist...
    ( Kenne dieses Callback noch nicht, ich entschuldige mich falls ich da was falsch aufgerufen habe... )


    Bitte um Hilfe.
    Vielen Dank im vorraus :)

    OMG es funktioniert daaanke sehr :)
    Habe sehr lang getüffelt :)


    Eine letzte Frage hätte ich noch und zwar das geteilt durch gilt nur für vorne wenn ich z.B. den Kofferraum berechnen will muss ich mal nehmen?

    gut jetzt funktionierts aber fast :D


    Wenn ich an der Seite des Fahrzeugs bin wird "Motorhaube" ausgeschrieben.
    Ich finde gerade nicht die Fahrzeug Offsets, aber es ist nicht das X was man teilen muss.
    Glaube Y bin mir aber nicht sicher da ich die Offsets nicht weiß...


    Weißt du ob das gehen würde?