[MYSQL] Haussystem macht probleme

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
  • Hallo
    Ich versuche mich an nem Selfmade Haussystem auf MySQL Basis.
    Nun habe ich das Enum und die Stocks ( LoadHaus(house) SaveHaus(house) )
    Wenn ich es nun so:
    stock SaveHaus(house)
    {
    mysql_SetInt("house", "hName", HausInfo[house][hName]);
    mysql_SetInt("house", "hId", HausInfo[house][hId]);
    mysql_SetInt("house", "hPreis", HausInfo[house][hPreis]);
    mysql_SetInt("house", "hEnterX", HausInfo[house][hEnterX]);
    mysql_SetInt("house", "hEnterY", HausInfo[house][hEnterY]);
    mysql_SetInt("house", "hEnterZ", HausInfo[house][hEnterZ]);
    mysql_SetInt("house", "hBesitzer", HausInfo[house][hBesitzer]);
    mysql_SetInt("house", "hMietbar", HausInfo[house][hMietbar]);
    mysql_SetInt("house", "hMieter", HausInfo[house][hMieter]);
    return 1;
    }
    stock LoadHaus(house)
    {
    HausInfo[house][hName] = mysql_GetInt("house", "hName");
    HausInfo[house][hId] = mysql_GetInt("house", "hId");
    HausInfo[house][hPreis] = mysql_GetInt("house", "hPreis");
    HausInfo[house][hEnterX] = mysql_GetInt("house", "hEnterX");
    HausInfo[house][hEnterY] = mysql_GetInt("house", "hEnterY");
    HausInfo[house][hEnterZ] = mysql_GetInt("house", "hEnterZ");
    HausInfo[house][hBesitzer] = mysql_GetInt("house", "hBesitzer");
    HausInfo[house][hMietbar] = mysql_GetInt("house", "hMietbar");
    HausInfo[house][hMieter] = mysql_GetInt("house", "hMieter");
    return 1;
    }
    /*enum HausDaten
    {
    hName[64],
    hId,
    hPreis,
    hEnterX,
    hEnterY,
    hEnterZ,
    hBesitzer[64],
    hMietbar,
    hMieter
    };
    new HausInfo[MAX_HOUSES][HausDaten];*/  
    Compile dann kommen keine Errors,
    Aber wenn ich dann
    for(new i = 0; i < MAX_HOUSES; i++)
    {
    LoadHaus(i);

    Unter OnGameModeInit
    mache, dann kommen diese Error's
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1994) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1994) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1995) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1995) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1996) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1996) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1997) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1997) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1998) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1998) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1999) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(1999) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(2000) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(2000) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(2001) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(2001) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(2002) : warning 202: number of arguments does not match definition
    C:\Users\Raphael\Desktop\basic R5\gamemodes\R5.pwn(2002) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    18 Warnings.


    Liegt es an den Stocks ?
    Wenn ja, wie muss ich sie Umschreiben das es auch Fuunktioniert ?


    Danke schonmal im Vorraus
    MfG
    Raphael

    Stahlbau Azubi deswegen kaum Aktiv

  • @GoldDeagle: Nicht dein Ernst, oder? :pinch:


    @Raphael.K: Könntest du mal die mysql Include öffnen, und mir zwei Linien geben, und zwar die "native mysql_GetInt" und die "native mysql_SetInt". Ich hab danach gesucht, aber nichts gefunden. Die Warnung bedeutet, dass zu zu viele/wenige Parameter angegeben hast. Dazu müsste ich wissen, wie die native Funktion aussieht.

  • So wie ich das sehe hat er die Funktionen aus maddins tutorial verwendet.
    Bis jetzt hast du bei den get Funktionen nur 2 von 4 parametern angegeben. Nämlich die Tabelle und die Spalte von der du den Wert willst.
    Zusätzlich musst du noch die Spalte und den zugehörigen Wert angeben, nach der du suchen willst.
    In deinem Fall wäre das wohl die hausid, so wie du sie in der Tabelle angegeben hast und dein Parameter house in einen String umgewandelt.

  • @GoldDeagle aka. Android:
    Es sind Warnings die mein haussystem unbrauch bar machen.


    Jeffry:
    Hier die Funktion:
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    Wie muss ich es dann nun Umschreiben ? kann mir da jemand Helfen ?

    Stahlbau Azubi deswegen kaum Aktiv

  • Speichern:
    mysql_SetInt("house", "hName", HausInfo[house][hName], "ID", house);
    Ich weiß nicht wie deine Häuser sortiert sind, aber ID stellt die Primäre Reihe da, von jeder ID gibt es immer nur 1.


    Laden:
    HausInfo[house][hId] = mysql_GetInt("house", "hId", "ID", house);
    Ebenso entpricht ID wieder der Primären Reihe.


    Und zu beachten:
    Wenn du strings (Namen z.B.) ausliest, dann geht das nicht mit mysql_GetInt (Int = INTEGER). Wenn du ein mysql_Get hast, dann sieht das so aus:
    format(HausInfo[house][hName], 64, "%s", mysql_Get("house", "hName", "ID", house));


    Falls dir das alles nichts sagt, dann poste doch bitte noch einen Screenshot von der Struktur deiner Datenbank Tabelle der Häuser.