Mit sscanf Koordinaten eingeben

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
  • Sehr geehter Besucher,


    ich habe ein Problem:


    Ich habe ein Dynamisches Fraktionssystem entwickelt, allerdings gibt es ein paar Probleme mit der eingabe von Koordinaten.


    if(sscanf(params,"ssfffddd",name,farbe,spawnx,spawny,spawnz,vworld,interior,gwaktiviert))return SendClientMessage(playerid,-1,"["#SYSTEMNAME"]:Tippe: /createfrak fcName fcFarbe fcSpawnX fcSpawnY fcSpawnZ fcVirtualWorld fInterior fGangwaffenAktiviert");


    Am Ende habe ich allerdings ganz andere Koordinaten in meinen Dateien, als eingegeben!


    Gespeichert wird das ganze so:
    dini_FloatSet(pfad,"fSpawnX",fcSpawnX);
    dini_FloatSet(pfad,"fSpawnY",fcSpawnY);
    dini_FloatSet(pfad,"fSpawnZ",fcSpawnZ);


    Ich hoffe, dass jemand eine Lösung hat.


    Mit freundlichen Grüßen
    Changus

  • Du wirst glaube ich das ganze so eingeben: xx.xx,xx.xx,xx.xx
    Das entscheidene ist aber, dass du keine Kommata machen musst.
    Bsp: xx.xx xx.xx xx.xx
    Falls du doch bedarf danach hast, solltest du dir mal die Split Funktion angucken.


    L.G. ;)

    Ich gebe dies so ein: xx.xx xx.xx xx.xx.
    Und es werden ganz andere Koord's gespeichert ?(

  • Du splittest deine Eingabe auch in andere Variablen (scheinbar)? Bei sscanf() nutzt du die Variablen spawnx, spawny und spawnz - bei dem Schreiben der Werte in die Datei nutzt du fcSpawnX, fcSpawnY, fcSpawnZ.

  • Du splittest deine Eingabe auch in andere Variablen (scheinbar)? Bei sscanf() nutzt du die Variablen spawnx, spawny und spawnz - bei dem Schreiben der Werte in die Datei nutzt du fcSpawnX, fcSpawnY, fcSpawnZ.

    Ich habe fcSpawnX einfach nur umbenannt - es sollte trotzden funktionieren.


    CreateFaction(name,farbe,x,y,z,spawnx,spawny,spawnz,vworld,interior,gwaktiviert);
    stock CreateFaction(fcName[128],fcFarbe[128],Float:fcPosX,Float:fcPosY,Float:fcPosZ,Float:fcSpawnX,Float:fcSpawnY,Float:fcSpawnZ,fcVirtualWorld,fcInterior,fcGangwaffenAktiviert)
    Alle anderen Werte stimmen...
    InGame gebe ich dann ein: "/createfrak Triaden -1 2496.049804 -1695.238159 1014.742187 0 3 1" ein. Es funktioniert, außer die Spawn-Koordinaten :thumbdown:
    (if(sscanf(params,"ssfffddd",name,farbe,spawnx,spawny,spawnz,vworld,interior,gwaktiviert)))

    In der Datei steht dann:

    fSpawnX=1159463168.000000
    fSpawnY=-992745600.000000
    fSpawnZ=1149087616.000000


    Und wenn ich es richtig in die Datei eintrage, funktioniert es auch!


  • Schonmal versucht anstatt xxx.xxxx den Wert als xxx,xxxx einzugeben (Komma statt Punkt)?


    Falls das auch nicht zum Erfolg führt kann ich dich hierhin verweisen:
    MYSQL Lädt falsche werte


    Ich bevorzuge die selbst geschriebene Split-Methode, da da solche unerklärlichen Fehler nicht passieren. Ist zwar etwas mehr Code, aber es funktioniert immer. Ich kann eigentlich nur jedem von sscanf abraten, es hat viel zu viele Macken.


    Du musst bei dem Code von mir eben die | mit einer Lücke ersetzen (Space) und die entsprechenden Werte abändern. Letztendlich nur kleine und völlig verständliche Abänderungen.