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

  • Wenn du den grund per
    new grund[64]; angegeben hast, dann ja. Eben die größe des strings^^


    DeadHole:
    durch das leerzeichen hinter dem s weiss sscanf das nur der erste string verwendet werden soll.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Maddin wieder nen schönes Tutorial von dir
    die Methode finde ich persönlich schöner als das Andere mit den haufen von stocks..
    Aber was anderes funktioniert diese Weise auch mit den G-Stylezz Plugin?
    hab es noch nicht getestet

  • maddin.
    Sehr tolles Tutorial *__*
    Finde dies Wie Redjoker schon Sage, besse r Als sie Andere Variante.
    Mach weiter so ^^


    MFG
    ShiNuX

  • Erklär mal genau was du meinst bitte^^


    also er meint die verwendung von sscanf mit mysql um die sachen zu laden ich geh mal davon aus das dies auch möglich ist mit der enum variante
    enum


    enum PlayerData
    {
    pIP[16],
    pName[24],
    pPasswort[130],
    pGeld,
    pKills,
    pTode,
    Float: pPositionX,
    Float: pPositionY,
    Float: pPositionZ,
    }


    new SpielerInfo[MAX_PLAYERS][PlayerData];



    sscanf(query,"e<p<|>s[16]s[24]s[130]dddfff>",SpielerInfo[playerid]);


    es wäre auch ohne die abrufung vom enum möglich siehe samp wiki http://wiki.sa-mp.com/wiki/MySQL


    //edit xD das beispiel gab es ja schon auf der ersten seite sogar umfangreicher
    ja zum dem plugin von G-Stylezz solltest du noch
    mysql_fetch_row_format verwenden


    in dem fall bei mir
    while(mysql_fetch_row_format(query))
    oder bei maddin

    while(mysql_fetch_row_format(str))

  • Erklär mal genau was du meinst bitte


    damit meine ich ob die Methode bei jeden mysql Plugin geht
    ja dumme frage aber Bilden darf man sich ja noch


    //edit
    mir ist da was unklar
    sscanf(str, "e<p<|>{i}s[16]s[24]s[130]iiifff>",SpielerInfo[playerid]);
    wozu das {i}?

    Einmal editiert, zuletzt von RedJoker ()

  • Die geschweiften Klammern geben an, das etwas ignoriert werden sollen. Nehmen wir an du hast folgenden string:
    new string[] = "RedJoker ist 19 und Männlich";
    Und möchtest nun nur deinen Namen, dein alter und dein Geschlecht haben; also RedJoker, 19 & Männlich. Dann machst du das ganze so:
    new string[] = "RedJoker ist 19 und Männlich";
    new name[9], alter, geschlecht[10];
    sscanf(string, "s[9]{s[3]}i{s[3]}s[10]",name, alter, geschlecht);
    s[9] ist das erste wort, was direkt an die variable name übergeben wird. Das nächste wort wäre "ist", allerdings haben wir den nächsten string in geschweiften klammern, das heisst dieser wird nicht an eine variable übergeben.
    Dann folgt wieder ein integer, also 19. Dieser wird an die variable alter übergeben. Darauf folgt "und", welches dank {s[3]} nicht an eine variable weiter gegeben wird. Und zu guter letzt noch s[10], welches das geschlecht ist.


    Soweit verstanden? :)

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Maddin


    Ich ..... dich.
    du solltest mehr Tutorials machen die in richtung mysql gehen z.b. Spltten und alles aus einer Tabelle laden(ohne sscanf) etc

  • Ich hab ein Problem..
    In der Signatur ist ein Screen von einen error der beim Windowsstart kommt
    ne idee wiso der kommt?
    ist nur wenn ich das Plugin starte


    //edit vergessen^^
    geht das auch so?
    sscanf(str, "e<p<|>dddds[50]s[50]ddddds[50]s[50]dds[50]fff>",PlayerInfo[playerid][pMoney],PlayerInfo[playerid][pGeschlecht]...);
    möchte mein Enum nicht dauernt umschreiben

    Einmal editiert, zuletzt von RedJoker ()

  • Du hast die dll nicht in deinem Serververzeichniss eingefügt ;]


    Zitat

    Errors/Warnings
    MSVRC100.dll Not Found


    If you get this error, DO NOT just download the dll from a random website (click here for why). This is part of the "Microsoft Visual Studio Redistributable Package". This is required for many programs, but they often come with it. Download it here:


    http://www.microsoft.com/download/en...s.aspx?id=5555


    Gruss: Sonic

    I didn't hit you. I high fived your face.

  • das hab ich schon hinbekommen
    mir geht es um das

    sscanf(str, "e<p<|>dddds[50]s[50]ddddds[50]s[50]dds[50]fff>",PlayerInfo[playerid][pMoney],PlayerInfo[playerid][pGeschlecht]...);

    ich möchte nicht alles an mein Enum senden sondern so haben wie es da ist leider geht das nicht nur wiso?

  • Ich habe ein Problemchen
    wenn ich das Lden lasse, setzt er das den Player nicht
    ich hab das so:
    Datenbank aufbau nach den Script
    format(query, 2048, "CREATE TABLE IF NOT EXISTS `player` (`id` int(11) AUTO_INCREMENT, `Name` varchar(255), `Passwort` varchar(255), `BDate` varchar(255), `Mail` varchar(255), `RegisterIP` varchar(255), `Geschlecht` int(11), `Baned` int(11), `Banreason` varchar(255), `Banner` varchar(255),");
    format(query, 2048, "%s `Skin` int(11), `Geld` int(11), `Adminlevel` int(11), `Code` int(11), `Timeban` int(11), `Level` int(11), `Warn` int(11), `AFKMessage` varchar(255), `Timeout` int(11), `LastX` float(15), `LastY` float(15), `LastZ` float(15), `LastA` float(15), `Car` int(11), `Member` int(11), `Leader` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;",query);
    mysql_query(query);
    mein enum
    enum SpielerEnum
    {
    pMoney,
    pGeschlecht,
    pLogin,
    pGebannt,
    pBanreason[50],
    pBanner[50],
    pSkin,
    pCode,
    pGeld,
    pAdmin,
    pWarn,
    pMail[50],
    pBDay[50],
    pTimeban,
    pLevel,
    pSupportRuf,
    pSupportMessage[50],
    pSupportUser,
    pSupportAktiv,
    pSupportAdmin,
    pInSupport,
    pParkvehicle,
    pAFKmessage[50],
    Float:pLastX,
    Float:pLastY,
    Float:pLastZ,
    Float:pLastA,
    pTimeout,
    pWeapons[13],
    pAmmo[13],
    pCheckpoint,
    pMachtschein,
    pCar,
    pMember,
    pLeader
    }
    new PI[MAX_PLAYERS][SpielerEnum];
    und zu guter letzt die ladefunktion
    stock LoadPlayer(playerid)
    {
    new query[128], Data[1024], sendername[MAX_PLAYER_NAME];//Data is noch so hoch da noch einträge fehlen
    GetPlayerName(playerid,sendername,MAX_PLAYER_NAME);
    format(query, sizeof(query),"SELECT * FROM `player` WHERE `Name` = '%s'",sendername);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row(Data))
    {
    sscanf(Data, "p<|>{i}{i}{i}s[50]s[50]{i}dds[50]s[50]ddddddds[50]dffffddd",
    PI[playerid][pBDay],
    PI[playerid][pMail],PI[playerid][pGeschlecht],PI[playerid][pGebannt],PI[playerid][pBanreason],
    PI[playerid][pBanner],PI[playerid][pSkin],PI[playerid][pGeld],PI[playerid][pAdmin],
    PI[playerid][pCode],PI[playerid][pTimeban],PI[playerid][pLevel],PI[playerid][pWarn],
    PI[playerid][pAFKmessage],PI[playerid][pTimeout],PI[playerid][pLastX],PI[playerid][pLastY],PI[playerid][pLastZ],
    PI[playerid][pLastA],PI[playerid][pCar],PI[playerid][pMember],PI[playerid][pLeader]);//die ersten 3 i sind ignore
    print(Data);
    }
    if(PI[playerid][pGebannt]!=0)
    {

    }
    SetPlayerSkin(playerid,PI[playerid][pSkin]);
    return 1;
    }
    im Debug steht das
    [12:18:07] CMySQLHandler::Query(SELECT * FROM `player` WHERE `Name` = 'RedJoker') - Successfully executed.


    [12:18:07] >> mysql_store_result( Connection handle: 1 )


    [12:18:07] CMySQLHandler::StoreResult() - Result was stored.


    [12:18:07] >> mysql_fetch_row_format( Connection handle: 1 )


    [12:18:07] CMySQLHandler::FetchRow() - Return: 2|RedJoker|143941100993057C04DA7B14CF3D5FD7|||127.0.0.1|0|0|||181|10000|5|0|0|0|0||0|0|0|0|0


    [12:18:07] >> mysql_fetch_row_format( Connection handle: 1 )
    er setzt nix
    der sscanf code ist exakt mit der Datenbank überein
    Ich hoffe, das einer ne lösung hat

    All in all it's just another brick in the wall

  • Wer SSCANF nicht anwenden kann um es an einen String anzupassen,ist selber schuld. Hast du überhaupt verstanden in welcher Reihenfolge die Werte durch mysql_fetch_row zusammengeführt werden ?


    sscanf(Data, "p<|>{i}{i}{i}s[50]s[50]{i}dds[50]s[50]ddddddds[50]dffffddd",...)
    Passt absolut nicht mit dem Zusammen:

    Zitat

    2|RedJoker|143941100993057C04DA7B14CF3D5FD7|||127.0.0.1|0|0|||181|10000|5|0|0|0|0||0|0|0|0|0

  • wenn ich jetzt die die 2. und 3. und 4. {i} zu {s[50]} mache, dann Chrasht mein gesammtes GTA
    die reihenfolge wie er es lädt ist richtig
    da wo nix is steht auch nix in der Tabelle und ich versteh NICHT wo da was falsch sein sollte

    All in all it's just another brick in the wall

  • Hast du keine Lust dir selber Fehler einzugestehen? Wenn die Reihenfolge richtig wäre,dann würde auch alles korrekt verarbeitet werden. Das versteht sich eigentlich von selbst.
    Die Reihenfolge ist totaler Quatsch bei dir. Wieso du es selber nicht erkennstwillst,keine Ahnung.Du hast sogar ein Beispiel woran du es ganz einfach selber überprüfen könntest. Denn so habe ich es in diesem Fall auch gemacht.


    Zitat

    (`id` int(11) AUTO_INCREMENT, `Name` varchar(255), `Passwort` varchar(255), `BDate` varchar(255), `Mail` varchar(255), `RegisterIP` varchar(255), `Geschlecht` int(11), `Baned` int(11), `Banreason` varchar(255), `Banner` varchar(255),`Skin` int(11), `Geld` int(11), `Adminlevel` int(11), `Code` int(11), `Timeban` int(11), `Level` int(11), `Warn` int(11), `AFKMessage` varchar(255), `Timeout` int(11), `LastX` float(15), `LastY` float(15), `LastZ` float(15), `LastA` float(15), `Car` int(11), `Member` int(11), `Leader` int(11)


    Das ist die Reihenfolge der Werte bei mysql_fetch_row.
    id,Name,Passwort,BDate, Mail usw usf.
    Die Ausgabe passt bildet jetzt diese Reihenfolge ab.

    Zitat

    2|RedJoker|143941100993057C04DA7B14CF3D5FD7|||127.0.0.1|0|0|||181|10000|5|0|0|0|0||0|0|0|0|0


    Schaut man sich die Komplette SSCANF Zeile bei dir an passt da absolut nichts zusammen.

    Zitat

    p<|>{i}{i}{i}s[50]s[50]{i}dds[50]s[50]ddddddds[50]dffffddd


    Die ersten 3 Parameter ( Integer ) ignorierst du komplett.Das funktioniert definitiv nicht.
    2 = Ok {i}
    RedJoker = Kein Integer,Fehler {i}
    143941100993057C04DA7B14CF3D5FD7 = Kein Integer,Fehler {i}
    <LEER> = theoretisch Ok ( PI[playerid][pBDay] ) s[50]
    <LEER> = theoretisch Ok ( PI[playerid][pMail] ) s[50]
    127.0.0.1 = Kein Integer,Fehler {i}
    ...


    Das da noch mehr nicht passt,sollte klar sein.