Beiträge von Jeffry

    Soweit alles in Ordnung, ist gut erklärt.


    Nur eine Kleinigkeit, die ich da so nicht stehen lassen will:
    Es gibt keine "ganzrationalen Zahlen".
    Du meinst zwar das richtige, aber hast es durcheinander gebraucht. Es gibt rationale Zahlen und ganze Zahlen, aber keine ganzrationalen Zahlen. Das Einzige was es gibt sind "ganzrationale Funktionen", das ist aber was anderes.


    • Ganze Zahlen:
      Das sind ganze Zahlen, also Zahlen ohne Komma, wie zum Beispiel 2 oder 17 oder 94 etc...
    • Rationale Zahlen:
      Das sind Zahlen, die sich als Bruch darstellen lassen, also Kommazahlen (nicht alle!) und ganze Zahlen. Beispielsweise 5/3 oder 12/54 oder 99/100 oder einfach 17.
    • Rationale Funktionen:
      Das sind Funktionen die in dem Term nur Hochzahlen haben, die positive ganze Zahlen sind (=natürliche Zahlen). Also zum Beispiel: f(x) = 5x³+2,5x²-8x+3



    PS: "seid" kommt von "sein", daher heißt es "seit Monaten" ;)

    Willkommen auf Breadfish!


    Ändere das
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s' ",name,password);
    zu:
    format(query,sizeof(query),"INSERT INTO user (username,password) VALUES ('%s','%s')",name,password);


    Wenn es dann nicht geht, poste bitte was in deiner mysql_log.txt steht.

    Schau mal in eine der ersten Zeilen ganz oben in deinem Gamemode.
    Da sind wahrscheinlich ein oder mehrere Zeichen die du aus Versehen dort geschrieben hast, die da aber nicht hingehören.


    Also sowas:
    sd#include <a_samp>
    #include <irgendwas>
    anstatt:
    #include <a_samp>
    #include <irgendwas>

    Ohh, was ein Denkfehler von mir. :pinch:


    ocmd:vehiclelock(playerid,params[])
    {
    new veh = GetOwnVehicle(playerid);
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    printf("vehdoor war: %d", vehdoor);
    if(vehdoor!=0) vehdoor = 0, GameTextForPlayer(playerid,"~w~Fahrzeug ~g~aufgeschlossen", 3000, 5);
    else vehdoor = 1, GameTextForPlayer(playerid, "~w~Fahrzeug ~g~abgeschlossen", 3000, 5);
    printf("vehdoor ist: %d (veh: %d)", vehdoor, veh);
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return 1;
    }

    Wenn die Noten die du den Spieler eingeben lässt als Kommazahlen akzeptierst, sprich dass man zum Beispiel 1.8 eingeben kann, dann als Float.
    Wenn man nur ganze Zahlen eingeben darf, dann als Integer, und bei der Berechnung wandelst du es mit
    float()
    in ein Float um, damit es den Durchschnitt als Kommazahl anzeigt.

    GetPosVorVeh(vehicleid, -3.0, x, y, z);
    if(IsPlayerInRangeOfPoint(playerid, 1.0, x, y, z))
    {
    //Spieler hinten am Boot.
    }


    Mit:
    stock GetPosVorVeh(vehicleid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    new Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetVehiclePos(vehicleid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }


    Das wäre nun: 3 Meter hinter der Mitte der vehicleid (also der hintere Teil, je nach dem wie groß das Boot ist), und da muss der Spieler in einem Meter Umkreis drin sein.

    Dann setzt du es an irgendeiner Stelle vor der Speicherung auf 0, oder du speicherst den Spieler bevor der Wert überhaupt gesetzt wurde.
    Prüfe mal, wo überall die beiden Variablen verwendet werden, setze gegebenenfalls prints damit du den Codeablauf, also die Reihenfolge, kennst und siehst, und schau dann warum es auf 0 gesetzt wird. Möglicherweise siehst du es dann gleich direkt, wo das Problem liegt.

    Drasko:
    Dann bist du aber in der Anzahl der Bewertungen beschränkt, was an sich ja kein Problem sein muss, aber nur damit das klar ist. Sonst müsste man es über eine Datenbank oder ähnliches lösen.
    Das größere Problem hier ist, dass du nicht abfragst ob der Wert der Bewertung 0 ist, in deiner Schleife. Angenommen dein Array ist 10 groß, und es sind nur 3 Bewertungen drin, dann werden 7 Nullen dazu gerechnet. Das gibt einen ziemlich guten Schnitt ;) Das müsstest du noch hinzufügen, dann passt es.
    Vom Prinzip her ist es natürlich besser, da man jederzeit auf alte Bewertungen zurück greifen kann.

    Das hätte in diesem Fall nichts gebracht, da er sein Geld mit GiveMoney, also einer eigenen Funktion, gibt. Somit hätte er es beim nächsten mal wieder drauf gehabt.
    Die hätte er zwar dann so verwenden können, aber das ist kein guter Style, und ob es wirklich ohne Probleme läuft wage ich zu bezweifeln, da der Wert ja beim Laden mit 1 überschrieben wird (return Wert vom GiveMoney).

    Sieht doch gut aus.


    Diese beiden
    PlayerInfo[playerid][pPayDay]
    PlayerInfo[playerid][pPayDayHad]
    sind eben 0. Wahrscheinlich hast du sie zum savePlayer-Aufruf noch nicht hochgesetzt, oder, wenn du es beim Server-Verlassen hast, vielleicht schon wieder auf 0 gesetzt. Prüfe das mal.

    Der Code funktioniert, wenn du die 5 eingibst.
    Dann sieht es so aus:

    (Quelle: Eigener Screenshot)


    Verwendeter Code, zum Test:
    new Float:Pos[6],Car;
    static ob = -1;
    if(ob != -1) DestroyObject(ob);
    DestroyVehicle(GetPlayerVehicleID(playerid));
    Car = CreateVehicle(408,2118.9387,-2077.9573,14.1000,130.9863,1,1,-1);
    ob = CreateObject(1337,0.0,0.0,0.0,0.0,0.0,0.0);
    PutPlayerInVehicle(playerid,Car,0);
    AttachObjectToVehicle(ob, Car,Pos[0], Pos[1], Pos[2]+5.0, Pos[3], Pos[4], Pos[5]);
    printf("%f %f %f %f %f %f",Pos[0],Pos[1],Pos[2],Pos[3],Pos[4],Pos[5]);

    Doch, weil ich das alte Object dann beim erneuten eingeben gelöscht wird ^^


    Dafür musst du "ob" global deklarieren, oder als static-Variable anlegen:
    COMMAND:attach(playerid,params[])
    {
    new Float:Pos[6],Car;
    static ob = -1;
    if(sscanf(params,"ffffff",Pos[0],Pos[1],Pos[2],Pos[3],Pos[4],Pos[5]))return SendClientMessage(playerid,-1,"/attach f f f f f f");
    if(ob != -1) DestroyObject(ob);
    DestroyVehicle(GetPlayerVehicleID(playerid));
    Car = CreateVehicle(408,2118.9387,-2077.9573,14.1000,130.9863,1,1,-1);
    ob = CreateObject(1337,0.0,0.0,0.0,0.0,0.0,0.0);
    PutPlayerInVehicle(playerid,Car,0);
    AttachObjectToVehicle(ob, Car,Pos[0], Pos[1], Pos[2], Pos[3], Pos[4], Pos[5]);
    printf("%f %f %f %f %f %f",Pos[0],Pos[1],Pos[2],Pos[3],Pos[4],Pos[5]);
    return 1;
    }


    Versuchs mal so.

    Oh, sorry. Habe ich übersehen, habe es oben bereits ausgebessert.
    format(mainQuery, sizeof(mainQuery), "%s`Job`='%d', `Geschlecht`='%d', WHERE Name = '%s'",
    zu:
    format(mainQuery, sizeof(mainQuery), "%s`Job`='%d', `Geschlecht`='%d' WHERE Name = '%s'",


    Da war ein Komma wo es nicht hingehört.