Beiträge von Campbell

    Das Limit eines Integers ist 2.147.483.647, daher wird es nicht funktionieren. Was du machen könntest, ist das Geld im String zu formatieren, sodass man mehr als 2.147.483.647 haben kann.

    Der Query sollte wie folgt aussehen:


    Code
    CREATE TABLE Tabellenname (
        Spaltenname Spaltentyp,
        Spaltenname2 Spaltentyp2
    );


    Das bedeutet für dein Beispiel:


    Code
    CREATE TABLE Accounts (
        Besitzer VARCHAR(24),
        Alter INT,
        PosX FLOAT
    );


    #e: Es ist aber sehr komisch, dass dir die ganze Datenbank verloren geht, nur weil XAMPP mal abschmiert. Mach dir einfach sicherheitsweise ein Backup in phpMyAdmin, so kannst du mit 2 Klicks alles neu aufsetzen.

    Warum so umständlich, wenn die Lösung schon gegeben wurde?



    stock GetCashResult(betrag)
    {
    new idx[20], part;
    format(idx, sizeof(idx), "%i", betrag);
    part = strlen(idx)-3;
    while(part > 0)
    {
    strins(idx, ".", part);
    part -= 3;
    }
    return idx;
    }

    Du erstellst einen PlayerTextDraw und setzt eben jedes mal, wenn sich der Score ändert den String des TextDraws erneut. Wichtig ist, dass du einen PlayerTextDraw erstellst und nicht einen, da sonst jeder den gleichen Score sehen würde.

    In welchem Callback benutzt du denn AddStaticPickup? Sie sollte definitiv in OnGameModeInit() verwendet werden, da du ein static-object hinzufügst.

    Lass die ganzen return's weg und benutz ganz einfach 'else' wenn du schon 'if' benutzt. Und benutz bitte eine if-Schleife um zu testen, ob jemand in einer bestimmten Gegend ist.



    ocmd:startbonus(playerid)
    {
    if(GetPVarInt(playerid,"StartBonus") < 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,4,1734.9404,-1943.8406,13.5688))
    {
    GivePlayerMoney(playerid,10000);
    SendClientMessage(playerid,GELB,"Herzlicht Glückwunsch Schmeiß das Geld nicht gleich ausem Fenster");
    SetPlayerScore(playerid,1);
    SetPVarInt(playerid,"StartBonus",1);
    }
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du hast dein Bonus schon eingelöst.");
    }
    return 1;
    }

    Wie bereits gesagt, dir fehlt eine geschweifte Klammer:



    if(GetVehicleModel(vehicleid) == 448 || GetVehicleModel(vehicleid) == 461 || GetVehicleModel(vehicleid) == 462 || GetVehicleModel(vehicleid) == 463 || GetVehicleModel(vehicleid) == 468 || GetVehicleModel(vehicleid) == 471 || GetVehicleModel(vehicleid) == 521 || GetVehicleModel(vehicleid) == 522 || GetVehicleModel(vehicleid) == 523 || GetVehicleModel(vehicleid) == 581 || GetVehicleModel(vehicleid) == 586)
    {
    if(newstate == PLAYER_STATE_DRIVER && PlayerInfo[playerid][BikeL] != 1)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
    }
    } // <-- Diese Klammer fehlt.
    Und das Ganze muss in OnPlayerStateChange und nicht in OnPlayerEnterVehicle!

    Bei deinem Beispiel wird der Geldbetrag aber nur formatiert, wenn der Betrag zwischen 1000000 und 9999999 liegt. Schau dir mein Beispiel oben an, damit du siehst, wie es zum Beispiel mit 2500 funktioniert.

    Wenn du nur den Himmel siehst, und nicht fällst, dann bist du im flaschen Interior. Setze deinen Interior einfach mal bis hoch von 0 zu 20. Irgendwann sollten die Objekte dann angezeigt werden.

    Ich habe gedacht dass er Verstand hat und wüsste, dass man es mit dem newstate PLAYER_STATE_DRIVER und OnPlayerKeyStateChange muss.
    Ich kann Scripten, keine Sorge.


    lg :thumbup:


    OnPlayerKeyStateChange != OnPlayerStateChange.


    An EliteBread: Schau dir nochmals an was ich in meinem vorherigen Post gesagt habe, so wie du es jetzt machst wird es nicht funktionieren. Ebenfalls musst du vor return 1 noch eine Klammer zu machen.


    Wenn du den Thread verfolgt hättest, hättest du bemerkt, dass dies unter OnPlayerEnterVehicle nicht möglich ist, da OnPlayerEnterVehicle ausgeführt wird, wenn der Spieler die Einsteigen-Taste drückt und nicht wenn er im Auto ist. Du kannst aber folgendes in OnPlayerStateChange verwenden:



    if(newstate == PLAYER_STATE_DRIVER && PlayerInfo[playerid][BikeL] != 1)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
    }

    Die Variable geld muss natürlich hier noch ergänzt werden, dennoch sollte es wie folgt funktionieren:



    new idx[20], part;
    format(idx, sizeof(idx), "%i", geld);
    part = strlen(idx)-3;
    while(part > 0)
    {
    strins(idx, ".", part);
    part -= 3;
    }

    Schau dir die Informationen im SA:MP Wiki an. Du hast deine Werte etwas durcheinandergeworfen.



    Deine jetzige Virtual World, die du angegeben hast, ist 43.1207, und daher kann es nicht stimmen, da eine Virtual World immer eine ganze Zahl sein muss (1, 2, 3, ...).

    Versuch es mal so oder verwende deinen Code unter OnPlayerStateChange mit dem newstate PLAYER_STATE_DRIVER.



    if(PlayerInfo[playerid][BikeL] != 1)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerPos(playerid, X, Y, Z);
    SendClientMessage(playerid, Rot, "Du hast keinen Motorradschein");
    }

    Du scheinst ja die Fraktion des Spielers mithilfe einer Player Variable zu speichern, versuch es doch damit:


    new fraktion = GetPVarInt(playerid, "Fraktion");