Beiträge von Jeffry

    Also ich würde es so versuchen, dass du die Schranke minimal in ihrer Position änderst, so dass man es nicht merkt. Dann lässt du sie gaaaaaanz langsam bewegen (ist ja auch nur gaaaaaanz wenig Distanz), dann solltest du die Rotation flüssig hinbekommen.
    Musst eben probieren, bis es klappt.

    Ich übersetze:
    Diese Funktion kann genutzt werden um Objekte flüssig rotieren zu lassen. Um das zu erreichen muss das Objekt aber bewegt werden [in seiner Position]. Die angegebene Rotation ist die Rotation die das Objekt nach der Bewegung hat. Das Objekt rotiert nicht, wenn keine Bewegung stattfindet. Als Beispiel kann das Riesenrad von Kye angesehen werden, welches sich im Standard Paket von SAMP 0.3d befindet.



    Das heißt, das Objekt muss seine Position ändern um sich rotieren zu können.

    Das liegt daran, dass das true bzw false nicht an deine Key Funktion übergeben wird, da mysql_function_query den Wert vom aufgerufenen public nicht zurück gibt.


    Du musst also den Teil der das Auto öffnet auch in das public schreiben, mit dem du den Cache prüfst.

    So ?


    Nein, du willst ja alle Spieler speichern, also so:
    stock SaveAllPlayers()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(!IsPlayerConnected(playerid)) continue;
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',skin='%i',money='%i',alevel='%i',slevel='%i',fraktion='%i',rang='%i',spawnchange='%i' WHERE id='%i'",
    GetPlayerScore(playerid),GetPlayerSkin(playerid),GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][slevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }

    ocmd:saveall(playerid)
    {
    if(!isAdmin(playerid,1337)) return SendClientMessage(playerid,ROT,"Info: Du bist kein Admin!");
    SaveAllPlayers();
    SendClientMessage(playerid, GRÜN, "Alle Account Daten wurden erfolgreich gespeichert.");
    SendClientMessageToAll(weiß, "(( SERVER: Alle Account Daten wurden gespeichert! ))");
    return 1;
    }


    stock SaveAllPlayers()
    {
    //Speicher-Zeugs hier
    return 1;
    }

    new exp = PlayerInfo[i][pRespekt], nxtlevel = PlayerInfo[i][pLevel]+1, expamount = nxtlevel*levelexp;
    if(exp >= expamount)
    {
    SendClientMessage(i, COLOR_WHITE, "* LEVEL UP");
    PlayerInfo[i][pLevel]++; //Entweder so, oder += 1.
    PlayerInfo[i][pRespekt] = 0;
    }

    pInfo


    Ich glaube du verstehst deinen Code nicht. :wacko:


    Ich tippe mal du hast es als Integer deklariert. Schreib es mal so:
    else if(!PlayerInfo[i][pFestPD] && PlayerInfo[i][pFestgeld] != 0)
    {
    new tmp_brx = floatround(float(PlayerInfo[i][pFestgeld])*0.035);
    format(string,sizeof(string),"Die Bank dir $%d überwiesen + einen Zinssatz von ca. 3%% ($%d)", PlayerInfo[i][pFestgeld], tmp_brx);
    SendClientMessage(i,-1,string);
    PlayerInfo[i][pBank]+=tmp_brx;
    PlayerInfo[i][pFestgeld]=0;
    PlayerInfo[i][pFestPD]=0;
    }

    Kann ich schwer abschätzen.
    Die beste Möglichkeit ist Folgende:


    Du setzt das mainquery auf 10000, dann fügst du vor mysql_query das hier ein:
    printf("mainquery = %d", strlen(mainquery));


    Dann gehst du in den Server und lässt den Spieler speichern. Im Server Log steht dann, wie lang das mainquery war. Wenn dann da zum Beispiel

    Zitat

    mainquery = 4251


    steht, dann rundest du auf 5000 auf, und die Sache passt.

    else if(!PlayerInfo[i][pFestPD] && PlayerInfo[i][pFestgeld] != 0)
    {
    new Float:tmp_brx = PlayerInfo[i][pFestgeld]*0.035;
    format(string,sizeof(string),"Die Bank dir $%0.2f überwiesen + einen Zinssatz von ca. 3%% ($%0.2f)", PlayerInfo[i][pFestgeld], tmp_brx);
    SendClientMessage(i,-1,string),PlayerInfo[i][pBank]+=tmp_brx;
    PlayerInfo[i][pFestgeld]=0, PlayerInfo[i][pFestPD]=0;
    }


    Unter der Voraussetzung, dass pFestgeld als Float deklariert wurde.

    Ich glaube kaum, dass du ein System welches komplett deinen Wünschen entspricht finden wirst. Da musst du wohl dieses System etwas abändern. Ob das jetzt Kilometer oder Meter sind ist ja relativ egal, das kann man mit ein wenig Mathe umrechnen.
    new km = meter / 1000;


    Ein TextDraw kannst du dir mit einem TextDraw-Editor selbst erstellen:
    http://forum.sa-mp.com/showthread.php?t=376758
    http://forum.sa-mp.com/showthread.php?t=376758


    Den Text kannst du dann über einen Timer mit TextDrawSetString aktualisieren.


    Falls du doch lieber auf jemanden zurückgreifen willst, der dir das ganze System schreibt, gibt es natürlich jederzeit die Möglichkeit eine Anfrage am Marktplatz zu machen: http://forum.sa-mp.de/handelse…-sa-mp-mta-sa-marktplatz/

    format(query,sizeof(query),"SELECT * FROM gtari_vehiclekeys WHERE VehicleID = '%i' && userid = '%i'",vehicleid,sInfo[playerid][id]);
    zu:
    format(query,sizeof(query),"SELECT * FROM gtari_vehiclekeys WHERE VehicleID = '%i' AND userid = '%i'",vehicleid,sInfo[playerid][id]);


    && muss AND sein.

    Naja, bei dem langen Code ist das relativ schwer. Ich würde anfangen, zu prüfen, ob die Schleife überhaupt komplett durchläuft, oder ob sie sich irgendwo aufhängt, das heißt du printest am Anfang der Schleife für jeden Spieler-Index "beginn für ID %d" und am Ende "Ende von ID %d". Wenn du dann ingame feststellst, dass jemand den PayDay nicht korrekt bekommen hat, kannst du im Log nachschauen, ob für die ID das Ende erreicht wurde. Wenn nicht, dann sprengst du wohl irgendwo ein Array, dann musst du weiter suchen, Variablen-Werte ausgeben lassen, zwischen Beginn und Ende....und so weiter. Du musst du praktisch an den Fehler hinarbeiten.
    Das kann durchaus eine Weile dauern, aber das ist die beste Möglichkeit was zu finden.