sscanf was bedeuten diese Zeichen?

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 wollte mal fragen was diese - striche dazwischen machen?
    Ich Arbeite derzeit an einem Map Loader.

    Code
    sscanf(loadstr,"p<|>e<i-is[30]-s[30]fff-f-ff>",mapValues);



    Das Problem besteht darin wenn ich dort neue werte zum laden hinzufüge funktioniert es nicht.


    So lade ich:

    Code
    if(!sscanf(loadstr, "p<\">'object''model='d'scale='d'collisions='s[30]'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMscaleid], mapValues[pMcollision], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
  • Mit diesem Delimiter kannst du die Werte , welche nach den Specifer gesplittet wurden überspringen, sprich diese Werte werden nicht an deins Variablen übergeben.


    Hier findest du eine Übersicht
    http://forum.sa-mp.com/showthread.php?t=570927

    Hast du ein Beispiel für mich?
    Dann hätte ich noch eine Frage.
    Undzwar schreibe ich hier die object size in die variable. (scale)
    Jedoch nutze ich sie nirgendwo. Objecte mit Scale über 1 sind trotzdem auf der Map weg.
    Wo ist mein Fehler?
    Habe colission eingebaut und dann lädt die ganze map nicht mehr.


    Code
    if(!sscanf(loadstr, "p<\">'object''model='d'scale='d'collisions='s[30]'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMscaleid], mapValues[pMcollision], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))



    Code
    sscanf(loadstr,"p<|>e<i-is[30]-s[30]fff-f-ff>",mapValues);
  • Ein Beispiel findest du auch in der Dokumentation , aber ich kann dir auch nochmal ein Beispiel später schreiben,
    hast du ein beispiel Objekt für mich ?
    Wenn deine specifer abfolge falsch ist wird nix übergeben

    Ja ich möchte einfach colission aus der Map datei auslesen.
    Sobald ich es jedoch hinzufüge lädt meine ganze map nicht mehr.
    Deswegen brauche ich es als Bespiel um es zu verstehen.
    Würde mich sehr freuen wenn du mir ein Beispiel schreiben kannst!


    Gruß

  • Dein Problem liegt darin das du die Reihenfolge nicht einhältst



    C
    new mapValues[mapData],
            loadstr[] = "<object id=\"object (vegasNbball1) (9)\" interior=\"0\" collisions=\"true\" alpha=\"255\" doublesided=\"false\" model=\"6959\" scale=\"1\" dimension=\"0\" posX=\"4468.01563\" posY=\"-1340.83691\" posZ=\"1355.53149\" rotX=\"0\" rotY=\"0\" rotZ=\"0\"></object>";
        sscanf(loadstr, "p<\">'object''collisions='l'model='d'scale='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pCollisions], mapValues[pMmodelid], mapValues[pMscaleid],mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]);
        printf("%b %d %f",mapValues[pCollisions], mapValues[pMmodelid], mapValues[pMRZ]);