Beiträge von Jeffry

    Lösche das
    new Text3D:muelllable;


    Lege dann in deinem enum zum Array "muell" die Eigenschaft
    Text3D:labelID,
    an und ändere dann:


    muelllable
    zu:
    muell[i][labelID]

    Was ist Aber nicht verstehe wenn ich auf Spielen drücke kommen 2 ? ( die ersten 2 )

    Das ist egal, da 65535 ungültig ist.



    Zwecks dem Log, welche Zeile entspricht dem Klick auf ServerNameBig? Die letzte? Laut Log klickst du da aber JobcenterUnclicked an.

    Das passt.
    Lass dir mal bei OnPlayerClickTextDraw das hier ausgeben:
    printf("J:%d / S:%d / c:%d", JobcenterUnclicked[1], ServerNameBig[0], clickedid);


    Was steht dann im Server Log, wenn du das Textdraw (ServerNameBig) anklickst?


    Ist das zufällig das erste Textdraw das du im Code erstellst?

    Deine TextDrawTextSize ist bei Y 0.000000.



    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize 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 nach der Anpassung noch immer nicht geht, prüfe, ob der Code, der ausgeführt wird, von einem Textdraw stammt, dessen TextDrawTextSize auch falsch ist und passe diese dann an.

    Sonst wurden die Gang Fahrzeuge per File geladen und gespeichert, jetzt wo ich MySQL verwenden möchte, werden Sie nicht gespeichert.

    Was sagt der MySQL Log, wenn du die Speicherung ausführen lässt (vorher den Log leeren).



    ____________________



    Das gibt früher oder später Fehler beim auslesen.

    Wie sollte da ein Fehler zu Stande kommen? Die ID ist eindeutig. Fehler kommen bezüglich der ID hier keine auf.


    Dann verwendest du mysql_query .. du solltest dafür mysql_tquery / mysql_pquery verwenden.

    Das gab es bei den älteren Versionen noch nicht, sofern sein Code ein altes Plugin nutzt und er es nicht umschreiben will, muss diese Methode verwendet werden. In den meisten Fällen macht das auch keinen großen Unterschied.


    Zudem, schau mal in deinen Code, du verwendest es selbst nicht, sprich du arbeitest mit deinem Code am Sinn der neuen Plugins komplett vorbei ;)

    Gut, setze vor oder nach der kommentierten Zeile das hier hin:
    CallLocalFunction("createFrakCar", "ddffffd", fID,fahCars[id][fmodel],fahInfo[id][fs_x],fahInfo[id][fs_y],fahInfo[id][fs_z],fahInfo[id][fs_r],fcInfo[id][ffarbe]);


    Und ändere die Funktion zu einem public:
    forward createFrakCar(frakid,modelid,Float:x,Float:y,Float:z,Float:r,f_farbe);
    public createFrakCar(frakid,modelid,Float:x,Float:y,Float:z,Float:r,f_farbe)
    {
    print("1: createFrakCar wurde aufgerufen.");
    for(new i=0;i<sizeof(fcInfo);i++)
    {
    if(fcInfo[i][id_x]!=0)continue;
    print("2");
    fcInfo[i][fbesitzer]=frakid;
    print("3");
    fcInfo[i][fc_x]=x;
    print("4");
    fcInfo[i][fc_y]=y;
    print("5");
    fcInfo[i][fc_z]=z;
    print("6");
    fcInfo[i][fc_r]=r;
    print("7");
    fcInfo[i][fmodel]=modelid;
    print("8");
    switch(frakid)
    {
    case 1:
    {
    f_farbe=-1;
    }
    case 2:
    {
    f_farbe=252;
    }
    }
    print("11");
    fcInfo[i][ffarbe]=f_farbe;
    print("12");
    fcInfo[i][id_x]=CreateVehicle(modelid,x,y,z,r,f_farbe,-1,60);
    print("13");
    saveFrakCarToDB(frakid,i);
    return 1;
    }
    return 1;
    }


    Zeigt er dann den ersten print an? Bzw. läuft die Funktion dann?

    printf("Leadername: %s - Frakid: %d",fData[fid][fLeaderName],fid);

    Dieser print ist im Log nicht drin, sprich die Funktion wurde auch nicht aufgerufen.


    Außerdem:
    Da du den Cache ausliest ist das Ergebnis im Befehl nicht direkt zu sehen, sondern erst nachdem du ihn ein zweites mal ausführst, sofern die _GetLeader Funktion ausgeführt wird.


    Poste eventuell den MySQL Log in einem neuen Thread mit aktuellem Code, das wird hier zu unübersichtlich.

    mysql_store_result hat gefehlt.
    Versuche es so:
    public OnPlayerCarsLoad(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
    mysql_query(query);
    printf("query = %s", query);
    mysql_store_result();
    SendClientMessage(playerid,COLOR_RED,"Bis hier geht es");
    new num_rows = mysql_num_rows();
    printf("%i num rows",num_rows);
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    SendClientMessage(playerid,COLOR_RED,"Bis hier geht es auch");
    cInfo[i][carmodel] = mysql_GetIntByInt("autos","model","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][besitzer] = mysql_GetIntByInt("autos","besitzer","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_x] = mysql_GetFloatByInt("autos","x","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_y] = mysql_GetFloatByInt("autos","y","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_z] = mysql_GetFloatByInt("autos","z","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][c_r] = mysql_GetFloatByInt("autos","r","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][db_id] = mysql_GetIntByInt("autos","id","besitzer",PlayerInfo[playerid][pMySQLID]);
    cInfo[i][id_x]=CreateVehicle(cInfo[i][carmodel],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],-1,-1,-1);
    }
    mysql_free_result();
    return 1;
    }

    Oh, das ist natürlich schlecht.
    Dann entferne das mal so, genau, wenn das geht.


    Die Zeile 3971 ist die createFrakCar-Zeile, oder? Die die zuvor 3731 war?


    Was passiert, wenn du diese Zeile mal auskommentierst? Also mit //.

    Ändere das mal zu:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    /*P:2("Hooks_OnDialogResponse called: %d, %d, %d, %d, \"%s\"", playerid, dialogid, response, listitem, inputtext);
    new
    end = _:YSI_g_sCallbackEnd[ALS_OnDialogResponse],
    start = _:YSI_g_sCallbackStart[ALS_OnDialogResponse],
    ret = ALS_R_DialogResponse;
    while (start++ != end)
    {
    #emit PUSH.S inputtext
    #emit PUSH.S listitem
    #emit PUSH.S response
    #emit PUSH.S dialogid
    #emit PUSH.S playerid
    #emit PUSH.C 20
    #emit CONST.alt YSI_g_sCallbackAddresses
    #emit LOAD.S.pri start
    //#emit INC.pri
    //#emit STOR.S.pri start
    #emit LIDX
    #emit MOVE.alt
    #emit LCTRL 6
    #emit ADD.C 24
    #emit PUSH.pri
    #emit MOVE.pri
    #emit SCTRL 6
    #emit MOVE.alt
    #emit CONST.pri 0xFFFFFFFE
    #emit AND
    #emit PUSH.pri
    #emit LOAD.S.pri ret
    #emit AND
    #emit POP.alt
    #emit OR
    #emit STOR.S.pri ret
    if (ret < 0) return ret + 1;
    }
    return ret;*/
    return 0;
    }


    Keine Ahnung was der Sinn davon ist.
    Klappt es dann? Dann sollte auch beim kompilieren kein Fehler kommen.