Beiträge von Jeffry

    Es scheint mir als hast du noch ein Array, das du mit [211] instanziiert hast. Schau mal, ob du da noch eines findest und erhöhe dessen Größe ebenfalls.

    Stelle es mal auf 500 oder 1000, ob das was ändert (möglicherweise Leere Zeilen am Ende der Datei? Oder nicht endende Schleife?).
    Ansonsten poste den Code durch den der Fehler verursacht wird.

    Du hast das hier zwischen den Klammern entfernt:
    pData[killerid][A_Double_Kill] = 1;
    SendClientMessage(killerid, COLOR_GREEN, ">> You have completed a new Achievement{FF0000} Double Kill {33DD11}congrats <<");
    Deshalb passiert nichts.

    Lasse es dir zuvor mal ausgeben:
    if(Spree[killerid] >= 2 && DoubleKill[killerid] < gettime() && pData[killerid][A_Double_Kill] == 0) {
    zu:
    printf("killerid: %d", killerid);
    printf("Spree: %d / DoubleKill: %d gettime: %d / Double_Kill: %d", Spree[killerid], DoubleKill[killerid], gettime(), pData[killerid][A_Double_Kill]);
    if(Spree[killerid] >= 2 && DoubleKill[killerid] < gettime() && pData[killerid][A_Double_Kill] == 0) {
    Was wird dann geprintet?

    Das kannst du so machen:
    Unter den Includes:
    new dekoVeh[10];


    Unter OnGameModeInit:
    dekoVeh[0] = CreateVehicle(...);
    dekoVeh[1] = CreateVehicle(...);
    //...
    dekoVeh[9] = CreateVehicle(...);


    Unter OnPlayerEnterVehicle:
    for(new i = 0; i < sizeof(dekoVeh); i++)
    {
    if(vehicleid == dekoVeh[i])
    {
    TogglePlayerControllable(playerid, false);
    TogglePlayerControllable(playerid, true);
    break;
    }
    }


    Dann kann man die Fahrzeuge nicht mehr betreten.

    Warum? Leidet die Performance so stark, wenn man auf andere Tabellen joint?

    Wie viel es aus macht weiß ich nicht, aber es ist auf jeden Fall nicht so performant wie wenn man es in einer einzigen Tabelle hat.
    Ich denke auch nicht, dass es seine Absicht war einen Join zu nutzen, sondern zwei Queries zu senden, und das macht es natürlich nur noch halb so performant.


    Außerdem würde ein Update Query auf zwei Tabellen wirklich nicht schön aussehen.
    Im Endeffekt hat man selbst und die CPU nur mehr Arbeit damit.

    Du kannst die Userstats einfach in die gleiche Tabelle eintragen, in phpMyAdmin über "Struktur" kannst du die Spalten hinzufügen.
    Wenn du es in eine zweite Tabelle einträgst, dann macht es meiner Meinung nach den ganzen Prozess - also auch den Code - nur umständlicher und damit schwieriger.


    Alternativ verweise ich dich an dieses Tutorial, da ist das genau erklärt:
    [jTuT] MySQL R39-3 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)

    Kannst du mal dein ganzes OnDialogResponse posten? Möglicherweise hast du da einen Klammerfehler drin.


    Funktioniert es denn, wenn du den geposteten Code-Teil entfernst?

    Lasse es dir mal so ausgeben, was dann geprintet wird:
    for(new i=0; i<sizeof(LSPD_Umkleide); i++)
    {
    printf("Starte Schleifendurchlauf: %d", i);
    new member[24];
    format(member,sizeof(member),"Frakmember%i",i+1);
    printf("PosX: %f, PosY: %f, PosZ: %f / %s", LSPD_Umkleide_Pos[i][LSPD_Umkleide_X], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Y], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Z], member);
    LSPD_Umkleide[i]=CreateDynamicObject(2685,LSPD_Umkleide_Pos[i][LSPD_Umkleide_X], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Y], LSPD_Umkleide_Pos[i][LSPD_Umkleide_Z], LSPD_Umkleide_Pos[i][LSPD_Umkleide_rX], LSPD_Umkleide_Pos[i][LSPD_Umkleide_rY], LSPD_Umkleide_Pos[i][LSPD_Umkleide_rZ]);
    SetDynamicObjectMaterialText(LSPD_Umkleide[i],0,dini_Get("/FraktionCars/LSPD/Info.txt",member),OBJECT_MATERIAL_SIZE_256x128,"Arial",18,1,0xFFFFFFFF,0);
    printf("Habe Objekt %d für Umkleide %d erstellt.", LSPD_Umkleide[i], i);
    }

    Laut Log funktioniert das ja jetzt so.
    Dann versuche es jetzt bitte so:
    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s', MD5('%s'), '1')",name,passwort);
    mysql_function_query(dbhandle,query,false,"","d",playerid);
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }


    Kopiere und ersetze den Code bitte genau so.

    Verstehe jetzt nicht ob dadurch der Zivilist raus geschmissen wird? Nein oder?

    Willkommen auf Breadfish!


    Nein, der Spieler wird nicht aus dem Fahrzeug geworfen, dazu fehlt RemovePlayerFromVehicle.
    Das kannst du dazu noch einfügen bzw. die SendClientMessage dadurch ersetzen, allerdings muss ich dazu sagen, dass die angewendete Methode um die Fahrzeuge zu prüfen extrem schlecht ist, da dies mit ziemlicher Wahrscheinlichkeit zu Fehlern führt, spätestens dann, wenn man ein Medic-Fahrzeug entfernt und wieder erstellt, wenn zuvor ein Fahrzeug mit einer kleineren ID entfernt wurde. Das so zu machen empfehle ich nicht.


    Ich empfehle dir eines der beiden Tutorials anzuschauen:


    [jTuT] Fraktions-Fahrzeug-System mit Dini 1.6
    [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2


    Die sind zum einen dynamisch aufgebaut und zum anderen komplett funktionsfähig.

    Jetzt hast du das MD5 da wieder stehen...


    Nur beim DIALOG_LOGIN:
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    Zu
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort='%s'",name,passwort);

    new Text3D:Clanlabel[MAX_PLAYERS];
    zu:
    new Text3D:Clanlabel[MAX_PLAYERS] = {Text3D:-1,...};


    Und:
    Delete3DTextLabel(Clanlabel[playerid]);
    zu:
    if(Clanlabel[playerid] != Text3D:-1) Delete3DTextLabel(Clanlabel[playerid]);
    Clanlabel[playerid] = Text3D:-1;