Fahrzeugsystem "HasPlayerKey" funktioniert nicht

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moin Breadfish,


    heute hab ich ein Problem, und zwar versuche ich ein Carsystem mit einem Schlüsselsystem zu schreiben, allerdings habe ich bei folgender Abfrage Probleme:



    #define MAX_KEYS 10


    stock HasPlayerKey(playerid,Carid)
    {
    printf("test1");
    new data[256];
    printf("test2");


    new Keys[MAX_KEYS][512];
    printf("1");
    format(query, sizeof(query), "SELECT * FROM `Vehicles` WHERE CarID = '%d';",Carid);
    mysql_query(query);
    mysql_store_result();
    printf("2");
    new tmpstring[512];
    mysql_fetch_field("HasKey",data);
    printf("3");
    strmid(tmpstring,data,0,20,20);
    format(data, sizeof(data), " Has Keys: %s", tmpstring);
    printf(data);
    printf("4");
    split(tmpstring, Keys,',');
    for(new i = 0;i<MAX_KEYS;i++)
    {
    printf("5");
    if(strmatch(Keys[i],PlayerName(playerid)))return 1;

    }
    return 0;
    }


    Die Abfrage wird ab test2 nicht weiter ausgeführt, ich weiß nicht warum.


    Kann mir da vllt. einer helfen?

  • Ich glaub das kommt daher dass du soviele Strings benutzt, 256 + 11 * 512 = 5888 Bytes. Ich glaub das überfordert dann den Server ein wenig. ;)

  • Ich würde das mit Sscanf machen :D


    Ein Beispiel mit dem ich Objekte aus einer Datei lade:
    stock LoadObjects(filename[])
    {
    new File:f = fopen(filename, io_read), str[128];
    while(fread(f, str))
    {
    new mID, Float:K[3], Float: r[3], Float: Draw;
    sscanf(str, "p<,>ifffffff",mID, K[0],K[1],K[2],r[0],r[1],r[2],Draw);
    CreateObject(mID, K[0],K[1],K[2],r[0],r[1],r[2],Draw);
    ObjCounter++;
    }
    return 1;
    }
    P<,>: Das ist der Delimiter, also das Zeichen dass die verschiedenen Werte von einander trennt.
    i: Integer Variable
    f: Float Variablen.
    Das ganze wird dann einfach innerhalb der Funktion kurz gespeichert zum erstellen. Insgesamt klappts 1A :thumbup: