Beiträge von Jeffry

    Entferne die AUTO_INCREMENT (A_I) Einstellung bei der Spalte "id".


    Dann kannst du mit einem INSERT INTO die Zeile mit der ID 3 einfügen (id im Query angeben).

    Scheint so als sind da zwei Spieler online, einer hat die Tankart 3 und der andere keine Tankart (somit wird nichts angezeigt).


    Du kannst dir ja mal die playerid mit ausgeben lassen, wie sieht es dann aus?




    printf("Tankart: %d -> %s (playerid: %d)", PlayerInfo[playerid][ptankart], str5, playerid);

    Möglicheweise ist die Query-Variable zu klein.


    Aber: Mach das bitte nicht so. Das geht völlig am Sinn einer Datenbank vorbei.


    Erstelle eine Tabelle mit:

    • RaceID (PRIMARY KEY)
    • Name
    • fID (was auch immer das ist)
    • rmode


    Und die zweite Tabelle mit

    • RaceID (PRIMARY KEY)
    • CheckpointID (PRIMARY KEY)
    • x
    • y
    • z
    • cp_typ
    • cp_size


    Dann sparst du dir so eine Monster-Tabelle, die komplett unübersichtlich ist, sondern hast schön jeden Checkpoint für sich stehen.

    C:\Program Files\Google\German Next Era Life - v2.5\pawno\include\zcmd.inc(118) : warning 201: redefinition of constant/macro (symbol "OnPlayerCommandText")

    OnPlayerCommandText wird hier überschrieben, das solltest du prüfen warum. Möglicherweise wird es doppelt oder falsch gehookt, den genauen Grund kann man aus der Warnung aber nicht erkennen.



    C:\Program Files\Google\German Next Era Life - v2.5\gamemodes\FutureStunt.pwn(205) : warning 201: redefinition of constant/macro (symbol "DIALOG_SUPMOBIL")

    Der #define DIALOG_SUPMOBIL existiert zwei mal im Code, entfernen einen davon.




    C:\Program Files\Google\German Next Era Life - v2.5\gamemodes\FutureStunt.pwn(5818) : warning 202: number of arguments does not match definition
    C:\Program Files\Google\German Next Era Life - v2.5\gamemodes\FutureStunt.pwn(5819) : warning 202: number of arguments does not match definition
    C:\Program Files\Google\German Next Era Life - v2.5\gamemodes\FutureStunt.pwn(5820) : warning 202: number of arguments does not match definition

    Hier stimmt die Anzahl der Parameter nicht. Poste gegebenenfalls den Code dazu.





    C:\Program Files\Google\German Next Era Life - v2.5\gamemodes\FutureStunt.pwn(54722) : warning 225: unreachable code

    Diese Zeile wird nie erreicht, da zuvor ein oder mehrere returns stehen, die es unmöglich machen, dass diese Zeile (und nachfolgender Code auf entsprechender Ebene) nie erreicht wird.





    C:\Program Files\Google\German Next Era Life - v2.5\gamemodes\FutureStunt.pwn(63322) : warning 203: symbol is never used: "frak"

    Du hast irgendwo ein "new frak;" deklariert. Dies wird nie verwendet und kann entfernt werden.

    Das sieht korrekt aus.
    Was wird dir, wenn du es so schreibst, im Server Log ausgegeben, wenn du es so ausprobierst?
    public Speedometer(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    //TextDrawHideForPlayer(playerid, Profico[playerid]);
    //TextDrawHideForPlayer(playerid, punkenun[playerid]);
    new vehicleid,Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int, Float:chealth, str5[128];
    vehicleid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vehicleid) == 0) return 1;
    GetVehicleVelocity(vehicleid,speed_x,speed_y,speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*175; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    GetVehicleHealth(vehicleid, chealth);
    new LocationZone[MAX_ZONE_NAME];
    GetPlayer2DZone(playerid, LocationZone, MAX_ZONE_NAME);
    if(PlayerInfo[playerid][ptankart] == 1)
    {
    format(str5,sizeof(str5),"~B~Tankart: ~W~Benzin");
    }
    else if(PlayerInfo[playerid][ptankart] == 2)
    {
    format(str5,sizeof(str5),"~B~Tankart: ~W~Diesel");
    }
    else if(PlayerInfo[playerid][ptankart] == 3)
    {
    format(str5,sizeof(str5),"~B~Tankart: ~W~Biogas");
    }
    else if(PlayerInfo[playerid][ptankart] == 4)
    {
    format(str5,sizeof(str5),"~B~Tankart: ~W~Kerosin");
    }
    printf("Tankart: %d -> %s", PlayerInfo[playerid][ptankart], str5);
    format(speed_string,sizeof(speed_string),"~B~Fahrzeug: ~W~%s~n~~B~Km/h: ~W~%d km/h~n~~B~Treibstoff: ~W~%dl/%dl~n~~B~GPS: ~W~%s~n~%s ",VehicleName[GetVehicleModel(vehicleid)-400], final_speed_int, Gas[vehicleid],GetGasMax(GetVehicleModel(vehicleid)), LocationZone, str5);
    TextDrawSetString(Speedo[playerid], speed_string);
    }
    return 1;
    }

    1) Entferne die Spalte "id", die darf nicht vorhanden sein.
    2) Entferne das Häkchen bei "A_I" bei beiden Spalten (Spielername & Grund).

    Kannst du den Code posten, mit dem du die Tabelle versuchst zu erstellen?
    Oder einen Screenshot von der grafischen Oberfläche, falls du sowas nutzt.

    Du kannst den Actor an der Position des Interiors erstellen, er ist dann automatisch drin.
    Du kannst dem Actor aber kein spezielles Interior zuweisen, also wenn eine Position (z.B. Haus) von zwei Interior IDs verwendet wird, dann steht er in beiden Interior IDs drin.


    Wenn du keine Meldung haben willst ist es relativ einfach:
    new query1[256];
    format(query1, sizeof(query1), "INSERT INTO log (Spielername, Grund) VALUES('%s', 'Test');", SpielerName(playerid));
    print(query1);
    mysql_function_query(dbhandle, query1, false, "", "");
    Für Testzwecke kannst du ja direkt in der Datenbank schauen, ob es drin steht.


    Nur eines musst du beachten:
    Setze sowohl Spielername als auch Grund in der Datenbank als PRIMARY KEY. Dann kann eine Kombination nur einmal existieren.

    Schreibe vor der Abfrage Zeile:
    new count;
    for(new i=0; i<strlen(inputtext); i++) if(inputtext[i] >= '0' && inputtext[i] <= '9') count++;


    Und ersetze das IsNumeric(inputtext) in der Abfrage mit count.