Beiträge von Jeffry

    Heißt, das Geld in der Staatskasse soll mit dini gespeichert werden? Dann so:
    SKasse += VSteuern; // Steuern werden in die Staatskasse gezahlt
    zu:
    SKasse += VSteuern; // Steuern werden in die Staatskasse gezahlt
    dini_IntSet("SKasse.txt", "Geld", SKasse);


    Und bei OnGameModeInit:
    if(!fexist("SKasse.txt")) dini_Create("SKasse.txt");
    sKasse = dini_Int("SKasse.txt", "Geld");

    Im englischen Forum wird darüber gesprochen, dass
    if(IsPlayerNPC(playerid)) return 1;
    in der ersten Zeile von OnPlayerConnect hilft. Probiere das mal aus.

    Welche Plugins willst du denn jetzt eigentlich verwenden? Der letzte Log sieht so aus, als dass es funktioniert.
    Kannst du mal den Log davon posten, von denen Plugins die du wirklich verwenden willst? Und einen Screenshot von den installierten Programmen (Systemsteuerung => Programme und Funktionen), welche MSVC's da installiert sind?

    Nimm den root Benutzer ohne Passwort:
    #define db_host "127.0.0.1"
    #define db_user "root"
    #define db_pass ""
    #define db_db "DATENBANKNAME"


    Das ist in 99% aller Fälle standardmäßig so eingestellt.
    Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
    Deshalb benutze, wie ich oben geschrieben habe, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben.

    Die Schleifen musst du an entsprechenden Befehlen weg machen. Wie bereits erwähnt, darfst du die Schleifen nur dort verwenden, wo du etwas für alle Fahrzeuge eines Spielers machen willst.

    Du musst die Schleife
    for(new s=0; s<MAX_CARS_PER_PLAYER; s++)
    in den Befehlen jeweils mit dem Key ersetzen, dafür hast du die Keys ja gemacht. Du willst doch nicht alle Fahrzeuge auf einmal verkaufen, sondern nur eins, also das von dem du den Schlüssel hast.


    new s = CarKey[playerid];

    Mit einem Timer, der immer wieder aufgerufen wird, bis das gewünschte Maximum erreicht ist, und immer wieder die https://wiki.sa-mp.com/wiki/TextDrawColor etwas dunkler setzt (danach TextDrawShowForPlayer/All aufrufen!).
    Zum Beispiel so:
    SetTimerEx("TextDrawAppear", 50, 0, "d", 0);


    forward TextDrawAppear(id);
    public TextDrawAppear(id)
    {
    id+=3;
    if(id < 255) SetTimerEx("TextDrawAppear", 50, 0, "d", id);
    else id = 255;
    TextDrawColor(textdraw, 0xFF000000 + id);
    TextDrawShowForAll(textdraw);
    return 1;
    }

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_AUTOKAUFEN)
    {
    if(response == 1)
    {
    new string[128];
    for(new s=0; s<MAX_CARS_PER_PLAYER; s++)
    {
    if (Spectating[playerid][0]!=-1)
    {
    if (Carlist[playerid][s][Typ]==-1)
    {
    new preis = Kaufliste[Spectating[playerid][0]][Preis];
    if(Spectating[playerid][0] == -1)
    {
    //Motorhaube zu
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights1,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    //Kofferraum zu
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
    //Licht aus
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid, COLOR_GRAD1, "Du besichtigst kein Fahrzeug!");
    TogglePlayerControllable(playerid,1);
    SetVehicleParamsForAll(Kaufliste[Spectating[playerid][0]][Carid],0,0);
    Spectating[playerid][0]=-1;
    RemovePlayerFromVehicle(playerid);
    }
    else if (preis <= GetPlayerMoney(playerid))
    {
    new autohaus=Kaufliste[Spectating[playerid][0]][Autohaus];
    //Motorhaube zu
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights1,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    //Kofferraum zu
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
    //Licht aus
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);


    GivePlayerMoney(playerid, - preis);
    Carlist[playerid][s][Typ]=Spectating[playerid][0]; Carlist[playerid][s][X]=Autospawns[autohaus][X]; Carlist[playerid][s][Y]=Autospawns[autohaus][Y];
    Carlist[playerid][s][Z]=Autospawns[autohaus][Z]; Carlist[playerid][s][Rotation]=Autospawns[autohaus][Rotation]; Carlist[playerid][s][Status]=1; Carlist[playerid][s][Lock]=0;
    Carlist[playerid][s][Carid]=CreateVehicle(Kaufliste[Spectating[playerid][0]][Modelid],Carlist[playerid][s][X],Carlist[playerid][s][Y],Carlist[playerid][s][Z],Carlist[playerid][s][Rotation],-1,-1,-1);
    SetVehicleParamsForAll(Kaufliste[Spectating[playerid][0]][Carid],0,0);
    TogglePlayerControllable(playerid,1);
    Spectating[playerid][0]=-1;
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid, COLOR_WHITE, " ");
    format(string,128,"Du hast dir erfolgreich für $%i das Fahrzeug %s gekauft.",preis,Kaufliste[Carlist[playerid][s][Typ]][Name]);
    SendClientMessage(playerid, COLOR_GREEN, string);
    SendClientMessage(playerid, COLOR_YELLOW, "* Wenn dein Fahrzeug zerstört ist, gib /freparieren ein um es zu reparieren.");
    SendClientMessage(playerid, COLOR_YELLOW, "* Du kannst dein Fahrzeug mit /flock, auf- und abschließen.");
    SendClientMessage(playerid, COLOR_YELLOW, "* Mehr Befehle kannst du unter /fahrzeughelp sehen.");
    SendClientMessage(playerid, COLOR_WHITE, " ");
    SendClientMessage(playerid, COLOR_GREEN, "Dein Fahrzeug steht nun am Ausgabepunkt bereit! Viel Spaß mit dein neuen Fahrzeug");
    SendClientMessage(playerid, COLOR_WHITE, " ");
    SendClientMessage(playerid, COLOR_GREEN, "Fahr Vorsichtig!");
    SendClientMessage(playerid, COLOR_WHITE, " ");
    }
    else
    {
    //Motorhaube zu
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights1,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    //Kofferraum zu
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
    //Licht aus
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);


    format(string, 128, "Du hast nicht keine $%i um das Fahrzeug zu kaufen.", preis); SendClientMessage(playerid, COLOR_GRAD1, string);
    TogglePlayerControllable(playerid,1);
    SetVehicleParamsForAll(Kaufliste[Spectating[playerid][0]][Carid],0,0);
    Spectating[playerid][0]=-1;
    RemovePlayerFromVehicle(playerid);
    }
    return 1;
    }
    }
    }
    //Motorhaube zu
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights1,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    //Kofferraum zu
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
    //Licht aus
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);


    SendClientMessage(playerid, COLOR_GRAD1, "Du besitzt bereits die maximale Anzahl an Fahrzeugen!");
    TogglePlayerControllable(playerid,1);
    SetVehicleParamsForAll(Kaufliste[Spectating[playerid][0]][Carid],0,0);
    Spectating[playerid][0]=-1;
    RemovePlayerFromVehicle(playerid);
    }
    if(response == 0)
    {
    //Motorhaube zu
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights1,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,VEHICLE_PARAMS_OFF,boot,objective);
    //Kofferraum zu
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,VEHICLE_PARAMS_OFF,objective);
    //Licht aus
    GetVehicleParamsEx(vid,engine,lights1,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,engine,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective);
    SendClientMessage(playerid,COLOR_GRAD1,"Du hast den Fahrzeugkauf beendet.");
    TogglePlayerControllable(playerid,1);
    SetVehicleParamsForAll(Kaufliste[Spectating[playerid][0]][Carid],0,0);
    Spectating[playerid][0]=-1;
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    return 1;
    }

    Die Nummernschild-Variable fehlt in den format-Parametern.
    format(string, sizeof(string), "%s"cWhite"Farzeug: %s || Nummernschild: "cBlue""SERVERTAG"[%i]"cWhite" || Abgeschleppt: %s\n",string, carNames[model-400],/*hier*/,abgeschleppttext);

    Natürlich, eben an dessen Position. Da er sich ja nicht bewegt, kannst du es einfach direkt an der Position erstellen (Z vielleicht etwas höher).

    //OnPlayerConnect
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "lifecoast_tut_run", true))
    {
    SpawnPlayer(playerid);
    }
    }
    Das musst du löschen.


    Und das so schreiben:
    //OnPlayerSpawn
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "lifecoast_tut_run", true))
    {
    SetPlayerSkin(playerid, 18); // <- The Skin here!
    }
    }

    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/PlayerTextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.

    Wenn es klappt, dann kannst du es natürlich auch so machen.
    Nur solltest du es so schreiben:
    if(keys & KEY_FIRE)
    Sonst wird es nicht erkannt, wenn man noch einen anderen Key gedrückt hat, außer das ist so gewollt.