Beiträge von Jeffry

    Du hast jetzt aber nicht das gemacht was ich gesagt habe. Du hast nur die Logs gepostet, die Codes hast du komplett weg gelassen, genau die braucht man aber auch.


    Außerdem hast du die Tabelle zuvor nicht geleert. Beim Reproduzieren eines Fehlers geht es immer darum genau gleich anzufangen, nicht einmal mit und einmal ohne Daten in der Tabelle, sonst kann ein vorheriger Fehler neue Fehler hervorrufen und dann suchen wir uns dämlich.


    Also nochmal, Schritt für Schritt:
    - Leere die Tabelle
    - Leere den MySQL Log
    - Starte den Server
    - Führe aus was du machen willst (merke dir die Schritte), bis ein Fehler passiert (danach brauchst du gar nicht weiter machen, das können dann auch nur Folgefehler sein).
    - Stoppe den Server
    - Schaue in den MySQL Log und poste jeweils zu jedem Schritt den du gemacht hast den entsprechenden Teil aus dem MySQL Log und dazu den PAWN Code, zu dem was du gemacht hast. Also wenn du zum Beispiel /fauto eingibst, dann poste den Befehl dazu, die Funktionen die aufgerufen werden und den MySQL Log der zu der Zeit erzeugt wurde.


    Dann sieht jeder Schritt so aus:
    - Was hast du gemacht & was ist passiert
    - PAWN Code
    - MySQL Log

    Frage in deinem Timer noch ab, ob der Spieler gerade im Tod Zustand ist, dann sollte es keine Probleme mehr geben.


    if(IsPlayerConnected(playerid))
    Zu
    if(IsPlayerConnected(playerid) && GetPlayerState(playerid) != PLAYER_STATE_WASTED)

    Ok, das ist doch immerhin schon mal ein Teil der jetzt klappt.
    Könntest du versuchen den Fehler den du da jetzt hattest zu reproduzieren (sprich, dass du ihn immer wieder nachstellen kannst) und dann ganz genau beschreibst, welche einzelnen Schritte du nacheinander gemacht hast? Dazu (zu jedem Schritt) postest du den Code (auch wenn er hier schonmal steht) und den MySQL Log, der durch diese Aktion erstellt wurde (siehst du an der Zeit).
    Dann zeigt sich entweder der Fehler, oder wir debuggen dann den Code mal. Ich schätze, dass das nur noch eine Kleinigkeit ist, die sich aber gut versteckt hat.

    Hat sich nun alles geregelt.


    Super! :)


    Es wäre allerdings gut, Kaliber: sollte das eigentlich auch wissen, dass jemand postet was gemacht wurde, wenn er über TeamViewer hilft, um das Problem zu beheben, damit die Lösung hier dokumentiert ist, falls in Zukunft jemand wieder ein ähnliches oder sogar das gleiche Problem hat, er/sie die Lösung selbst finden kann. Danke!

    Jetzt stellst du ja erst wieder 4 Verbindungen her. Er darf sich nur einmal verbinden, es bringt nichts, wenn du das vier mal machst.
    Die beiden Errors kommen, weil du die Funktionen ohne ein Query ausgeführt zu haben aufrufst.


    Bring das soweit hin, dass

    Zitat

    [Wed May 20 20:46:59 2015] Connected (0) to samp5242 @ Localhost via UNIX socket.
    [Wed May 20 20:46:59 2015] MySQL Server Version 5.5.41-0+wheezy1.


    nur einmal im Log steht.

    An sich sieht der Code in Ordnung aus so. Es kann natürlich sein, dass eine Funktion nicht so mitspielt wie sie soll.
    Kannst du bitte mal folgendes machen?


    Leere die Tabelle in der Datenbank.
    Schalte den MySQL Debug Modus an (Tipps: Scripting-Probleme richtig erklären -> Kapitel 1.4)
    Danach erstelle zwei oder drei Fahrzeuge (kaufe sie), bis der Fehler eben auftritt.
    Dann poste den MySQL Log und einen Screenshot der Daten aus der Tabelle.



    PS: Danke für das entfernen der Vollzitate. :)

    Würdest du bitte diese Vollzitate lassen? Das stört extrem beim Lesen. Bitte entferne die auch aus deinen Posts.


    Dann poste bitte mal den Code, mit dem du die Fahrzeuge erstellst (kaufst).

    { autoidfrakauto[playerid] = FAutos[vehicleid][autoid];}
    zu:
    { autoidfrakauto[playerid] = FAutos[vehicleid][Fahrzeugfraku];}


    Und:
    dcmd_fpark(playerid,params[])
    {
    if(PlayerInfo[playerid][pLeader] > 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && autoidfrakauto[playerid] > -1)
    {
    new Float:carx,Float:cary,Float:carz,Float:cara;
    GetVehiclePos(autoidfrakauto[playerid],carx,cary,carz);
    GetVehicleZAngle(autoidfrakauto[playerid],cara);
    for(new i=0; i<MAX_FAUTOS; i++)
    {
    if(autoidfrakauto[playerid] == FAutos[i][Fahrzeugfraku])
    {
    FAutos[i][autox] = carx;
    FAutos[i][autoy] = cary;
    FAutos[i][autoz] = carz;
    FAutos[i][autoa] = cara;
    SaveFrakauto(i);
    DestroyVehicle(autoidfrakauto[playerid]);
    LoadFrakAuto(i);
    break;
    }
    }
    autoidfrakauto[playerid] = -1;
    SendClientMessage(playerid,COLOR_YELLOW,"Du hast das Fraktionsauto umgeparkt.");
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du sitzt in keinem Fraktionsauto.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist nicht befugt dieses Fahrzeug zu parken.");
    }
    }


    Dann sollte eigentlich alles passen.

    Es reicht wenn du
    Blitzer[i][Erstellt] = 1;
    machst.


    Wenn der Blitzer in der Datenbank steht ist er ja zwangsläufig auch erstellt.
    Außer du nutzt das auch als Löschkennzeichen, dann so wie du es vorgeschlagen hast, ja.

    Achso, laden klappt, aber die funktionieren dann nicht, da in dem Screenshot 4 Blitzer waren bin ich davon ausgegangen er lädt sie nicht. Gut, dass du den Code gepostet hast.
    Beim Laden setzt du
    Blitzer[blitzerid][Erstellt]
    nicht auf 1.

    SaveFrakauto(autoidfrakauto[playerid]);
    DestroyVehicle(autoidfrakauto[playerid]);
    LoadFrakAuto(autoidfrakauto[playerid]);


    zu:
    for(new i=0; i<MAX_FAUTOS; i++)
    {
    if(autoidfrakauto[playerid] == FAutos[i][Fahrzeugfraku])
    {
    SaveFrakauto(i);
    DestroyVehicle(autoidfrakauto[playerid]);
    LoadFrakAuto(i);
    break;
    }
    }


    Du musst den Index nutzen, anstatt die VehicleID.

    Du musst das return 1 aus der Schleife nehmen, und den Dialog auch erst danach anzeigen:
    case DIALOG_WP_VERGABE:
    {
    new string[sizeof(Wantedkatalog)*164];
    if(response == 0)
    {
    clickedplayer2[playerid] = -1;
    return 1;
    }
    else
    {
    switch(listitem)
    {
    case 0:
    {
    for(new i=0;i<sizeof(Wantedkatalog);i++)
    {
    format(string,sizeof(string),"%s\n%s | %i",string,Wantedkatalog[i][wantedreason],Wantedkatalog[i][wantedzahl]);
    }
    ShowPlayerDialog(playerid,DIALOG_WP_VERGABEW,DIALOG_STYLE_LIST,""#SERVERFARBE"Wähle aus:",string,"Auswählen","Abbrechen");
    return 1;
    }
    case 1:
    {
    for(new i=0;i<sizeof(Stvokatalog);i++)
    {
    format(string,sizeof(string),"%s\n%s | %i",string,Stvokatalog[i][wantedreason],Stvokatalog[i][wantedzahl]);
    }
    ShowPlayerDialog(playerid,DIALOG_WP_VERGABEST,DIALOG_STYLE_LIST,""#SERVERFARBE"Wähle aus:",string,"Auswählen","Abbrechen");
    return 1;
    }
    case 2:
    {
    ShowPlayerDialog(playerid,DIALOG_WP_CLEARWPS,DIALOG_STYLE_INPUT,""#SERVERFARBE"Wantedpunkte löschen","Wie viele Wantedpunkte möchtest du löschen?","Auswählen","Abbrechen");
    return 1;
    }
    case 3:
    {
    ShowPlayerDialog(playerid,DIALOG_WP_CLEARSTVOP,DIALOG_STYLE_INPUT,""#SERVERFARBE"STVO-Punkte löschen","Wie viele STVO-Punkte möchtest du löschen?","Auswählen","Abbrechen");
    return 1;
    }
    }
    }
    return 1;
    }