Beiträge von Jeffry

    Welche MySQL Version verwendest du denn?
    Die neuste? https://github.com/pBlueG/SA-MP-MySQL/releases


    Falls ja, dann solltest du dich mit dem Support von Nitrado in Verbindung setzen, damit die dir das installieren.
    http://forum.sa-mp.com/showthread.php?t=570569


    Am besten du gibst denen die Fehlermeldung, meistens wissen so Anbieter schon um was es da geht, die machen das ja normalerweise nicht zum ersten mal.



    EDIT: (Post unten)
    @MiX(eP): Mir wären keine bekannt, sorry.

    Dachte der Fehler war in der sscanf Zeile, weil er weg war als ich ihn gelöscht habe.


    Indirekt lag er da auch.


    ocmd:kick(playerid,params)
    => params wird als Integer-Parameter von ocmd:kick angelegt. Integer = Ganze Zahlen.


    ocmd:kick(playerid,params[])
    => params wird als Array-Parameter von ocmd:kick angelegt. Array = Zeichenfolgen (zum Beispiel Strings). Da dort ja Buchstaben drin stehen, muss es das sein.


    Der Fehler entsteht nun, weil:
    if(sscanf(params,"is",pID, grund))
    sscanf erwartet im ersten Parameter (also dort wo "params" steht) ein Array. Hast du params nun als Integer (erstes Beispiel) deklariert, dann ist das für sscanf nicht verwendbar, somit entsteht dort die Fehlermeldung.



    PS: Vergesse bitte nicht den Thread auf erledigt zu setzen. Danke!

    Ja, nur den Offset von 6 Stunden musst du wahrscheinlich anpassen, je nach dem welche Differenz zwischen der Uhrzeit deines Servers und der deutschen Zeit liegt.


    Am besten du probierst es einfach mal aus, was raus kommt.

    TimestampToDate(gettime()+6*3600,yea,mon,day,hou,min,sec,1);


    Das wäre dann ein Offset von sechs Stunden.
    Mit den anderen Variablen kannst du dann die Ausgabe formatieren.

    Alles klar!
    Die Reihenfolge passt nicht ganz.
    So:
    ocmd:tpgun(playerid,params[])
    {
    new str[64];
    if(PlayerInfo[playerid][pAdmin] >= 5)
    {
    if(Teleportgun[playerid] == 1)
    {
    format(str, sizeof(str), "Teleportgun {FF0000}deaktiviert{FFFFFF}.");
    Teleportgun[playerid] = 0;
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else
    {
    format(str, sizeof(str), "Teleportgun {00FF00}aktiviert{FFFFFF}.");
    Teleportgun[playerid] = 1;
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    }
    else ErrorMessages(playerid, 1);
    return 1;
    }

    Also, du besitzt kein Haus. Es steht nirgends dein Name bei dem Besitzer drin.


    Außerdem:
    CallRemoteFunction("OnPlayerSpawn_Call", "d", playerid);
    Das hier muss nach dem Teil im Code stehen, an dem du den Spieler an die Position vom Zivi Spawn setzt.

    Ok. In welcher Reihenfolge erstellst du dann die Labels un lädst du die Daten aus der Datenbank?
    Denn, die Ausführreihenfolge ist wie folgt:
    //Achtung: Pseudo-Code
    public OnGameModeInit()
    {
    print("1");
    mysql_tquery(..."OnDataLoaded"...);
    print("2");
    return 1;
    }


    forward OnDataLoaded();
    public OnDataLoaded()
    {
    print("3");
    return 1;
    }


    Wenn du die Labels an Stelle 2 erstellst, dann verschiebe dies zu Stelle 3, nach den ganzen cache_... Funktionen.

    public Autoschadenspeichern()
    {
    new query[125];
    for(new veh = 0; veh < MAX_VEHICLES;veh++)
    {
    GetVehicleHealth(AutoInfo[veh][Fahrzeugid],AutoInfo[veh][Schaden]);
    format(query,sizeof(query),"UPDATE Autos SET Schaden = '%f' WHERE id= '%d'", AutoInfo[veh][Schaden],AutoInfo[veh][db_id]);
    printf("query: %s", query);
    mysql_function_query(dbhandle,query,false,"","");
    }
    return 1;
    }


    Geht's dann? Wenn nicht, poste bitte was im Server Log steht, wenn du es speichern lässt.

    Dann schreibe es bitte mal so:
    forward OnPlayerSpawn_Call(playerid);
    public OnPlayerSpawn_Call(playerid)
    {
    printf("OnPlayerSpawn_Call aufgerufen");
    new p_name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, p_name, MAX_PLAYER_NAME);
    for(new i=0; i<sizeof(Haus); i++)
    {
    printf("i: %d / Besitzer: %s / p_name: %s", i, Haus[i][Besitzer], p_name);
    if(!strcmp(Haus[i][Besitzer],p_name) && strlen(Haus[i][Besitzer]))
    {
    printf("SetPlayerPos");
    SetPlayerPos(playerid, Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
    break;
    }
    }
    return 1;
    }


    Und poste dann was im Server Log steht, wenn du spawnst.
    Falls gar nichts drin steht, poste bitte dein OnPlayerSpawn aus dem Gamemode.

    format(query,sizeof(query),"UPDATE Autos SET Schaden = '%f' WHERE db_id= '%f'", AutoInfo[veh][Schaden],AutoInfo[veh] [db_id]);
    zu:
    format(query,sizeof(query),"UPDATE Autos SET Schaden = '%f' WHERE id= '%d'", AutoInfo[veh][Schaden],AutoInfo[veh][db_id]);


    Warum speicherst du den Schaden eigentlich nicht dort, wo du die Position (etc) speicherst?