[Hilfe] Objecte aus Datei laden

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
  • Guten Tag liebe Breadies,
    Ich melde mich auch mal wieder ;). Nach langem habe ich mir gedacht mal wieder zu scripten und hier und da wie es auch soll gibt es ein Problem... Und zwar habe Ich im Englischen Samp Forum ein Codeschnipsel gefunden um Objecte aus einer Datei zu laden. Dies währe sehr genial für mein immomentiges Script. Jedoch werden die Objecte nicht created. In der Console steht der richtige Name und auch die richtige Anzahl an Objecten drin allerdings sind dann an dieser stelle keine. Wenn ich Objecte normal unter OnGameModeInit einfüge sind diese auch da.
    Hier mal der Codeschnipsel:



    stock LoadStaticObjectsFromFile(filename[])
    {
    new File:file_ptr, line[256], modelid, Float:SpawnX, Float:SpawnY, Float:SpawnZ, Float:SpawnRotX, Float:SpawnRotY, Float:SpawnRotZ, objects_loaded;
    file_ptr = fopen(filename, io_read);
    if(!file_ptr) return printf("ERROR! Failed To Load Objects From The File %s (File Doesn't Exist In Scriptfiles Directory)!", filename);
    while(fread(file_ptr, line) > 0)
    {
    sscanf(line, "dffffff", modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ);
    CreateObject(modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ);
    objects_loaded++;
    }
    fclose(file_ptr);
    printf("Loaded %d objects from: %s", objects_loaded, filename);
    return objects_loaded;
    }


    unter OnGameModeInit:

    LoadDynamicObjectsFromFile("maps/armybase.txt");


    da ich mit sscanf noch nie gearbeitet habe kann ich es leider selbst nicht beheben^^ danke schon mal im vorraus.
    MfG euer Paddy

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • ich pushe mal in der hoffnung das nun mehrere on sind die sich damit auskennen^^
    please um help iss wichtig^^

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • habs in allen Varianten gemacht also wadde:

    Zitat

    erste: (3399, 268.509796, 1879.968140, 14.019025, 0.0000, 0.0000, 0.0000);
    zweite CreateObject(3399, 268.509796, 1879.968140, 14.019025, 0.0000, 0.0000, 0.0000);
    dritte: 3399, 268.509796, 1879.968140, 14.019025, 0.0000, 0.0000, 0.0000

    er erkennt alle objecte jedoch ist kein Object vorhanden... jedoch weiß ich nicht genau wie man die Objecte eintragen muss das stand leider nicht drin

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • Problem würde leider immer noch bestehen ;)^^

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

  • Theorethisch müsste es


    p<,>dffffff


    lauten, jedoch hab ich es selber getestet, aber er nimmt es aus bestimmten Gründen nicht an.. aus diesem Grunde musst du die Koordinaten wie folgt in der Datei hinterlegen:


    1237 1140.2705078125 -1424.0344238281 14.796875 0 0 0
    1237 1134.9908447266 -1424.0533447266 14.796875 0 0 0
    1237 1129.8759765625 -1423.9969482422 14.796875 0 0 0
    1237 1123.3879394531 -1423.9250488281 14.796875 0 0 0


    usw. ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Was soll "explode" in deiner Sicht aus sein? ^^ Datentyp-Teiler?

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • explode trennt einen String / Source nach einem bestimmten Zeichen, und packt die einzelnen Strings in ein Array.
    Wie in php. Gibts auch für SA:MP. Daraufhin wandelst du noch die Datentypen in int und floats und es sollte gehen mit dem Komma.

  • ja aber in dem Fall heißt es in SAMP


    strmid ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • gibt aber soweit ich weiss auch ne explode funktion für pawn. ^^
    BTW try this:
    stock LoadObjectsFromFile(filename[])
    {
    new File:file_ptr, line[256], modelid, Float:SpawnX, Float:SpawnY, Float:SpawnZ, Float:SpawnRotX, Float:SpawnRotY, Float:SpawnRotZ, objects_loaded;
    file_ptr = fopen(filename, io_read);
    if(!file_ptr) return printf("ERROR! Konnte Objekte aus '%s' nicht laden (Datei existiert nicht)!", filename);
    while(fread(file_ptr, line) > 0)
    {
    sscanf(line, "p<,>'('dffffff')'", modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ);
    CreateObject(modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ);
    objects_loaded++;
    }
    fclose(file_ptr);
    printf("<-| [SERVER] %d Objekte aus '%s' geladen.", objects_loaded, filename);
    return objects_loaded;
    }

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

  • Naja es gibt direkt ne funktion die auch explode heißt.


    Ist von jemanden geschrieben worden. Ich müsste die irgendwo haben, ich sammel solche Sachen gerne.


    Ich editiere dann den Beitrag, sofern noch nötig.

  • @ Maddin: Deine Variante geht nicht, hab ich selber schon versucht ^^


    Aber wenn doch SAMP von PAWN aus die Funktion strmid bereitstellt, wieso muss ich mir dann noch ein C-Plugin bzw. ein PAWN Codeschnippsel besorgen?

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Naja, ich hab es eh vor kurzem hier in einem Thread wieder kurz angesprochen ^^


    Schnellstes Commandsystem?





    @ Threadsteller, damit du den Überblick ned verlierst, hier die Variante die funktioniert und getestet habe ^^ [Hilfe] Objecte aus Datei laden

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Also bei mir funtkioniert das so, allerdings benutz ich das streamer plugin deshalb mehr parameter
    stock LoadDynamicObjectsFromFile(filename[])
    {
    new File:file_ptr, line[256], modelid, Float:SpawnX, Float:SpawnY, Float:SpawnZ, Float:SpawnRotX, Float:SpawnRotY, Float:SpawnRotZ, worldid, interiorid, playerid, Float:distance, objects_loaded;
    file_ptr = fopen(filename, io_read);
    if(!file_ptr) return printf("ERROR! Konnte Objekte aus '%s' nicht laden (Datei existiert nicht)!", filename);
    while(fread(file_ptr, line) > 0)
    {
    //sscanf(line, "p<,>'('dffffffD(-1)D(-1)D(-1)F(250.0)')'", modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ, worldid, interiorid, playerid, distance);
    sscanf(line, "p<,>'('dffffffdddp<)>f", modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ, worldid, interiorid, playerid, distance);
    CreateDynamicObject(modelid, SpawnX, SpawnY, SpawnZ, SpawnRotX, SpawnRotY, SpawnRotZ, worldid, interiorid, playerid, distance);
    objects_loaded++;
    }
    fclose(file_ptr);
    printf("<-| [SERVER] %d Objekte aus '%s' geladen.", objects_loaded, filename);
    return objects_loaded;
    }
    und in der datei müssen die im folgenden format sein:

    Code
    CreateDynamicObject(18030, 334.48040771484, 124.43497467041, 1009.3328857422, 0, 0, 340, 999, 1, -1, 50.0);
    CreateDynamicObject(1886, 327.7619934082, 120.89920806885, 1011.0770263672, 20, 0, 337.5, 999, 1, -1, 50.0);
    CreateDynamicObject(1886, 344.2314453125, 118.04965209961, 1011.0770263672, 31.9951171875, 0, 337.49450683594, 999, 1, -1, 50.0);
    ...usw


    Setzt aber vorraus das man das sscanf plugin und nicht den code verwendet ;)

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

  • ähm danke an alle^^ maddin ich brauch aber den streamer net^^ da ich die objecte dann wieder destroye ;) ausserdem hab ich die Stream variante auch schon getestet jedoch ohne erfolg :S  Templer ty hoffe das war der fehler und ich kann entlich weiter machen ;)


    /edit gut sie werden geladen aber die rotation stimmt irgendwie net..^^ hab das nun von maddin^^

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...

    Einmal editiert, zuletzt von PaddyBoy ()

  • Robdeflop falls du lesen würdest kann es an der net liegen ;) da normale CreateObjects geladen werden es liegt am Code
    /edit ups was überlesen jetzt funkts musste noch meine klammern in den .txt entfernen^^ ty an alle^^

    Zitat

    naja aufm homeserver mit kumpel getestet und nix laggt von daher sollte nen richtiger server mit sowas keine probs haben

    *an Kopf schlag
    sowas kommt Raus wenn man erst absendet ohne nachzudenken. Bitte Leute Hirn einschalten beim Posten...