Beiträge von Jeffry

    Du nutzt die R40+ Funktionen, aber sagst, dass du das R39 Plugin nutzt. Das geht nicht.


    Lade dir das aktuelle Plugin herunter und kompiliere deinen Code mit der aktuellen Include. Starte dann den Server mit dem aktuellen Plugin.

    Die Tabelle komplett löschen (DROP TABLE) und danach die Struktur wieder anlegen, sodass keine Datensätze in der Tabelle sind.



    PS: Du musst nicht immer meinen kompletten Post zitieren, es steht ja direkt drüber. Das macht es nur unübersichtlich.

    Ah, das erklärt dann warum es so kurz ist.


    Wobei es mir dann nicht klar wird, warum beim Login nichts gefunden wird.


    Lösche mal die ganze Tabelle und erstelle sie neu, sodass keine Einträge mehr drin sind.
    Registriere dich dann neu. Klappt es dann?

    Das hört sich ganz danach an, als hast du das Limit erreicht.


    Lasse dir beim letzten funktionierenden Label die ID in eine Variable speichern:
    new Text3D:label =Create3DTextLabel(...);
    Und gebe die ID direkt drunter im Print aus:
    printf("Das letzte funktionierende Label hat die ID %d.", _:label);


    Was steht dann im Server Log?

    Hm, eventuell ist das Label zuvor bereits doppelt vorhandenen? Prüfe mal, ob das der Fall ist, indem du anstatt das Label zu löschen und ein neues zu erstellen, das alte nur per Update Funktion im Text änderst. Wenn dann die Texte auch ineinander stehen, ist das Label doppelt (oder mehr) vorhanden.

    Es ging eigentlich darum, dass ,,nur" vor hatte, in der Tabelle den Spieler auf online = 1 zu setzten sobald er sich eingeloggt hat.
    Da wollte ich nicht mitten in der OnPlayerConnect die MySQL Abfrage mit drinnen haben.

    Solltest du auch gar nicht. Das UPDATE-Query solltest du erst nach erfolgreichem Login absenden, somit steht das Query im public OnUserLogin, nach dem Auslesen der Caches.


    Der Code dann dort:
    new query[128];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET online = 1 WHERE id = %d", PlayerInfo[playerid][p_id]);
    mysql_pquery(handle, query);

    Vorab erstmal, super Tutorial! Kann man gut nachvollziehen und funktioniert sogar alles wie es soll, klasse Arbeit!

    Danke! Freut mich.



    Ich möchte mir eine Methode bauen um einfacher Daten in der Datenbank zu ändern oder abzurufen.

    Sowas solltest du aus Performancegründen bei diesem Plugin gar nicht machen, da du dir damit, vor allem bei der Abfrage nach Daten, den herausragenden Vorteil des Cachings nimmst.


    PS: Nutze im mysql_format anstatt %s lieber %e, das escaped den String gleich.

    Das Problem ist, dass du mit der vehicleid auf den Bus-Index zugreifst, das geht aber nicht, da du die Busse so nicht erstellst.
    Du musst also anhand der vehicleid des Busses den Index im Array finden.
    if(isPlayerInJob(playerid,11) && IsVehicleABus(GetPlayerVehicleID(playerid)))//busfahrerjob
    {
    new idx = GetBusIndex(GetPlayerVehicleID(playerid)); //Index des Busses auslesen
    if(idx == -1) return 1; //Kein Bus
    Spieler[playerid][WorkInJob] = 1;
    SetPlayerCheckpoint(playerid,buslinie1[0][Xcp],buslinie1[0][Ycp],buslinie1[0][Zcp],buslinie1[0][CPSize]);
    BusCheckpointStatus1[playerid] = 0;
    //DestroyDynamic3DTextLabel(buslinieninfo[idx]);
    DestroyDynamic3DTextLabel(buspriceinfo[idx]);
    buslinieninfo[playerid] = 11;//für das textlabel
    format(string,sizeof(string),"Linie %i | Busfahrer %s ist nun im Dienst! Kosten: %i$",buslinieninfo[playerid],SpielerName(playerid),MAX_BUS_PRICE);
    SCMALL(GRUEN,string);
    SCM(playerid,GELB,"Fahre nun einzeln die Haltestellen ab! Ein Checkpoint wurde gesetzt.(/stopjob um abzubrechen)");
    format(string,sizeof(string),"Linie %i\nNächster Halt: %s\nBusfahrer: %s\nKosten: %i$",buslinieninfo[playerid],buslinie1[BusCheckpointStatus1[playerid]][CheckPointText],SpielerName(playerid),MAX_BUS_PRICE);
    VehicleOnDuty[GetPlayerVehicleID(playerid)] = true;
    //buspriceinfo[idx] = CreateDynamic3DTextLabel(string,BUSuTAXIDUTYFARBE, 0.0,0.0,0.0,25.0,INVALID_PLAYER_ID, GetPlayerVehicleID(playerid),1,0,-1,-1);
    //Attach3DTextLabelToVehicle(buspriceinfo[idx],GetPlayerVehicleID(playerid),0.0,0.0,0.0);
    buspriceinfo[idx] = CreateDynamic3DTextLabel(string,SERVERFARBEHEX,0.0,0.0,0.0,50.0,INVALID_PLAYER_ID,GetPlayerVehicleID(playerid),1,-1,0,-1,-1,-1);
    UpdateDynamic3DTextLabelText(buspriceinfo[idx], SERVERFARBEHEX, string);
    return 1;
    }


    Und dazu diese Funktion:
    stock GetBusIndex(vehicleid)
    {
    for(new i=0; i<sizeof(Busse); i++)
    {
    if(Busse[i] == vehicleid) return i;
    }
    return -1;
    }