Beiträge von FoxHound


    • Was ist Easy Map Including v4?
      Also dieses Script ist das Script, der anderen Convertern endgültig ein ende bringt / bringen wird.
      Damit könnt ihr ganz einfach, ohne irgendeine Datei/Text zu konvertieren, die Map-dateien einbinden.
      Undzwar nur mit einer einzigen Funktion! : LoadMap(mapfile[]);


    • Wie funktioniert's?
      Als allererstes müsst ihr in eurem 'scriptfiles'-Ordner einen Ordner erstellen namens "maps".
      Und ihr mappt in MTA Race / MTA DM / MTA 1.4 was auch immer ihr mappen wollt, speichert es ab, und kopiert die ".map"-Datei (mit der Mapinhalt), in den Ordner den ihr erstellt habt ("maps").
      So, als allerletztes ladet ihr die Map-datei im Script, indem ihr unter "OnGameModeInit" (oder halt da wo ihr die objekte laden wollt), einfach nur "LoadMap("DATEINAME.map");" schreibt.
      So einfach ist das!
      Und vergisst ja nicht unter OnPlayerConnect eine Funktion hinzuschreiben, nämlich: "RemoveWorldObjects(playerid);", damit die welt Objekte die ihr mit MTA gelöscht hat und dann konvertiert habt auch in SAMP weg sind (ich empfehle NICHT große Gebäuden zu löschen, da die LOD objekte stressen können, lieber für straßenlampen oder objekte die keinen LOD objekt mithaben)


    • Was ist neu in v4?
      [table=2]

    • Neu

    • Erklärung


    • Maps Entladen

    • UnloadMap(mapid); wurde gelöscht da es unbehebliche Bugs drin hatte. Kommt in v5 Final wieder da ich die ganzen Codes ganz neu schreiben werde.


    • Tuning & Components

    • Die Tuningteile werden mit dem Fahrzeug mitkonvertiert.


    • Gelösche Objekte

    • Die objekte die ihr in MTA löscht werden auch mitkonvertiert, und in SAMP sind sie auch weg. Aber vergisst nicht RemoveWorldObjects(playerid); unter OnPlayerConnect einzufügen.


    • Mapkonverter

    • ConvertMap(mapfile[]);: Ihr könnt nun mit dieser Funktion, MTA DM, MTA 1.4 und MTA Race maps zu SAMP Maps konverten. Die Idee dafür gab mir Meta, mit seinem Mapkonverter FilterScript. Dankeschön nochmal, für die Idee und für seine Erlaubniss, die Idee neu umzusetzen.


    • Getestet

    • Alle Funktionen wurden von mir gemacht und alle wurden von mir getestet, deswegen kann ich sagen dass das Script keine Bugs enthält (ich benutze das Script selbst bei meinem Selfmade, habe bis jetzt keine Probleme :) )[/table]


    • Mapkonverter
      Falls ihr, aus irgendwelchem Grund, die Maps nicht als File einbinden wollt, sondern direkt konvertieren und ins Script kopieren, respektiere ich das.
      Deswegen habe ich eine "ConvertMap(mapfile[]);" Funktion eingebaut, welches eure MTA Maps zu SAMP Maps konvertiert.
      Wenn ihr diese Funktion benutzt, wird im "maps" Ordner eine neue Datei erstellt, mit dem Inhalt des konvertierten Maps.
      Ihr werdet es schon erkennen, weil als Dateiname steht "OUT_<originaldateiname>.map".


    • Streamersupport!
      Wenn ihr einen Streamer habt, müsst ihr nur ein einziges machen:
      Ihr öffnet das Script wo ihr diese Include reingeschrieben habt, und erstellt zwei "public-Funktionen" und schreibt CreateObject/CreateVehicle rein:
      public OnObjectDataLoad(modelid,Float:posX,Float:posY,Float:posZ,Float:rotX,Float:rotY,Float:rotZ,Float:drawdistance)
      {//Für Map-konversationen
      CreateObject(modelid,posX,posY,posZ,rotX,rotY,rotZ,drawdistance);
      return 1;
      }


      public OnVehicleDataLoad(vehicletype,Float:x,Float:y,Float:z,Float:rotation,interior,color1,color2,respawn_delay,paintjob,numberplate[],vcomp1,vcomp2,vcomp3,vcomp4,vcomp5,vcomp6,vcomp7,vcomp8,vcomp9,vcomp10,vcomp11,vcomp12,vcomp13,vcomp14)
      {//Für Fahrzeug konvertierungen
      CreateVehicle(vehicletype,x,y,z,rotation,color1,color2,respawn_delay);
      return 1;
      }
      Was ihr da schreib tist natürlich abhängig vom Streamer den ihr benutzt.
      Zum beispiel wenn ihr BlackFoX' Objektstreamer benutzt schreibt ihr statt "CreateObject" einfach "b_CreateObject".
      Oder wenn ihr Incognito's Streamer Plugin benutzt, benutzt ihr einfach "CreateDynamicObject".


      Ausserdem müsst ihr die Funktion "OnVehicleDataLoad" müsst ihr nicht haben wenn ihr kein Fahrzeugstreamer habt. Wenn ihr OnVehicleDataLoad löscht, werden die Fahrzeuge die von der .map Datei konvertiert werden, mit "CreateVehicle", also ohne irgendeinen Fahrzeugstreamer erstellt.
      Das selbe gilt für OnObjectDataLoad.


      PS.: Wenn ihr Fahrzeuge ladet die mit MTA 1.4 gemappt wurden, werden auch die "paintjob"s, nummernschilder, tuningteile und "interior"s mitkonvertiert. Ich empfehle euch also unter "OnVehicleDataLoad" gleichzeitig auch die Interior, Paintjob und Nummernschilder zu ändern.
      Falls das Fahrzeug nicht mit MTA 1.4 erstellt wurde, ist Interior '0', und Paintjob '3' (also kein Paintjob).


    • Nächste Version: v5 Final!
      Ich habe mit dieser Include alles gemacht, was man so machen kann. Maploader, Map-Unloader, Map-Converter...
      Deswegen, wird v4 die Final version sein, die allerletzte Version.


    • Download
      Show mapincluding.inc - pastebin.com


      Für .rar datei mit .inc siehe Anhang


    • Schlusswort
      Wie gesagt, ihr MÜSST den Ordner "maps" im 'scriptfiles' erstellen, sonst crasht euer Server beim Laden des Maps.
      Ich bin voll und ganz offen für eure Bugreports, und besonders für eure Vorschläge! :)


    Peace.

    Hm ich habe die Seite ein paar mal aktualisiert und bei mir steht immernoch ".. gefällt das.", und in meinem Facebook profil wird's auch angezeigt dass mir dieses Thema gefällt ^^


    €dit://
    Eija nachdem man ein Beitrag schreibt steht da wieder dass dieses Thema zurzeit keinem gefallen hat x)

    Ne hab aber alle Codes einzeln getestet :huh:
    Und da steht in der Liste auch das man mit "\v" einen vertikalen tab machen kann, was aber in der Konsole einen Mars symbol ausgibt ;)
    Kannst ja testen, ich habs getestet und habe hier geschrieben was ich für ein ergebniss bekommen habe ^^

    Hmm genau.
    Ist das hier eigentlich nicht besser, so muss man auch nicht 3 Funktionen auf einmal erstellen:
    stock GetOnlinePlayers() {
    new i[3]={0,...};
    for(i[0]=GetMaxPlayers(); i[1]<=i[0]; i[1]++) {
    if(IsPlayerConnected(i[1])) { i[2]++; } }
    return i[2]; }

    GetOnlinePlayers


    Diese Funktion gibt die Zahl von den Online Spielern zurück.
    Würde ich aber lieber nicht an der Stelle von "GetMaxPlayers" benutzen.
    Aber man könnte es z.B. dafür benutzen um als Textdraw anzuzeigen wieviele Spieler online sind.


    Funktion:
    http://pastebin.com/0T0jMXZd
    stock GetOnlinePlayers() {
    new i[3]={0,...};
    for(i[0]=GetMaxPlayers(); i[1]<=i[0]; i[1]++) {
    if(IsPlayerConnected(i[1])) { i[2]++; } }
    return i[2]; }

    randomEx


    Random funktion mit mindestzahl und maximalzahl.


    Also z.B. bei "randomEx(50,250);" wird die Zahl immer neu generiert/"randomiert" BIS es eine Zahl wird zwischen 50 und 250.


    Funktion:
    http://pastebin.com/vBMvFtZU
    stock randomEx(const min, const max) {
    new result=random(max);
    if(result<min) {
    for(;result<min;result=random(max)) { } }
    return result; }

    Nöp, Dini arbeitet auch mit fwrite genau, und Userfreundlich ist es auch.
    Aber es muss die Datei immer wieder neu öffnen und schließen, deswegen denke ich nicht dass es schnell ist.


    Bei Y_Less' Filesystem war das aber anders soviel ich weiß, da konnte man es einmal öffnen, machen was man machen muss und danach schliessen.


    Trotzdem denke ich mal dass das schnellste Deteisystem das mit fwrite etc. also die von Pawn ist.

    Jo ich habe noch eine Funktion gefunden mit der Suchfunktion, welches kein StripNewLine / StripNL braucht.
    Aber konnte das Script irgendwie nicht verstehen... x):

    GetLine(xfile[], line) {
    new File:fstream = fopen(xfile, io_read), result[1024];
    while(fread(fstream, result, sizeof result)) {
    line--;
    if(line == 0)
    break;
    }
    fclose(fstream);
    if(line == 0)
    return result;
    result = "";
    return result;
    }