Beiträge von Manniac

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    MFG Manniac

    Guten Abend,
    in diesem Tutorial werden wir uns damit befassen, wie man mithilfe eines Enums leicht & schnell Objekte, Autos, 3Dtextlabel oder Pickups erstellen kann.
    Ich erkläre euch das mal an dem Beispiel "Pickups". Weiter unten werdet ihr das Beispiel "3DTextLabel" finden.


    Fangen wir also an.


    Pickups


    Wir wollen Pickups erstellen, welche mit einer Schleife bei "OnGameModeInit" geladen werden.
    -Extra Teil -> mit "N" kann man, während man in dem Pickup ist, ein Interior betreten


    Was brauchen wir?
    Wir brauchen einen Editor, Grundkenntnisse und logisches Denkvermögen.


    Schritt 1 - Enum erstellen


    Da wir die Pickups ja mithilfe eines Enums erstellen wollen, müssen wir erstmal ein Enum erstellen.
    Dafür schauen wir uns mal die Parameter von CreatePickupan.
    Diese sind


    -Model
    wie das Pickup aussehen soll
    -Type
    Die "Art" des Pickups
    -x, y & z Koordinate
    Damit das Script weiß, wo das Pickup erscheinen soll
    -virtual world
    In welcher Virtuellen Welt soll es createt werden? ( 0 = standart )


    Diese Parameter tragen wir nun in unser Enum ein
    enum e_pickup{
    Float:exp,//x pos
    Float:eyp,//y pos
    Float:ezp,// z pos
    vw// virtuelle welt
    }
    Nun müssen wir natürlich noch Werte irgendwie in das Script eintragen, damit man überhaupt Pickups erstellen kann.
    Dafür verwenden wir static const


    static
    Wenn man etwas als "static" deaklariert, ist es, einfach gesagt, für andere Scripts & Plugins "unsichtbar"


    const
    const verwenden wir, da die Koordinaten & weitere Parameter des Pickups immer die selben sind & bleiben.


    bsp:
    const variable = 5;
    variable = 4;
    // Würde einen Fehler hervorrufen, da wir den Wert nicht ändern dürfen.( const =~ konstant )



    Wir schreiben also
    static const
    e_PickupData[][e_pickup] = {
    };


    Darauf werde ich nicht weiter eingehen, sollte eigentlich alles klar sein.
    Nun müssen wir das oben geschriebene noch mit Informationen füttern. (Model, Type, X - Y & Z-Achse, Virtuelle Welt)


    static const
    e_PickupData[][e_pickup] = {
    {}//Schritt 1: Informationen werden innerhalb einer geschweiften Klammer geschrieben. Sollten mehrere Zeilen vorhahden sein, werden sie mit einem "," getrennt
    };


    static const
    e_PickupData[][e_pickup] = {
    {345.2345,215.2356,1235.2345}//Schritt 2: Eintragen der x,y & z Koordinaten
    };
    static const
    e_PickupData[][e_pickup] = {
    {345.2345,215.2356,1235.2345,0}//Schritt 3: Eintragen der virtuellen Welt
    };


    Nun hätten wir Teil 1 abgschlossen.
    Wir haben die von uns vorgegebenen Parameter in dem Enum via static const mit Infos gefüttert


    Wenn wir jetzt den Server starten würden, würden noch keine Pickups erscheinen, da wir diese erste erstellen müssen.
    Dafür gehen wir zu "OnGameModeInit" und schreiben folgendes


    new i;
    for(; i < sizeof(e_PickupData); i++)
    {
    CreatePickup(1559, 23, e_PickupData[i][exp], e_PickupData[i][eyp], e_PickupData[i][ezp]);
    }


    Erklärung.
    Wir gehen mit der Schleife die Daten in "static const ..." durch und lassen diese mithilfe von CreatePickupIn-Game laden & erstellen.



    Somit hätten wir auch "Teil 2" abgeschlossen. Es folgt nun ein kleiner "Extra-Bereich", in dem wir die Pickups als Interior Enter & Exit punkte verwenden.




    Pickups - Extra


    Nun sollen die Pickups also als Enter & Exit Point fungieren.

    Dafür brauchen wir noch ein paar andere Parameter in unserem Enum.




    enum eLCoordVars{
    Float:exp,
    Float:eyp,
    Float:ezp,
    vw,
    Float:eesx,//enter spawn pos
    Float:eesy,
    Float:eesz,
    interior//interior
    }

    Soweit alles klar?

    Natürlich müssen wir

    static const dementsprechend anpassen.

    static const
    e_PickupData[][e_pickup] = {
    {345.2345,215.2356,1235.2345,0,1245.2356,2345.234,1245.1245,1}//Wir haben nun die Daten um "spawnx,spawny, spawnz & interior erweitert"
    };


    Nun wollen wir mit der Taste "N" das Interior betreten.


    Dazu gehen wir zu OnPlayerKeyStateChange


    Hier fragen wir ab, ob der Spieler die Taste "N" gedrückt hat.

    if(newkeys & KEY_NO)


    Nun müssen wir überprüfen, ob er sich in der Nähe eines Pickups befindet.

    for(new i; i < sizeof(e_PickupData); i++)

    Sollte klar sein.


    Nun müssen wir die Positionen des Spielers mit den Positionen des Pickups vergleichen

    if(!IsPlayerInRangeOfPoint(playerid,0.5,e_PickupData[i][exp],e_PickupData[i][eyp],e_PickupData[i][ezp]))continue;


    Erklärung.

    if(istNichtSpielerInUmgebungVonPunkt(spieler,Radius,x-positionAusStaticConst,y-posistionAusStaticConst,z-positionAusStaticConst))


    Nun müssen wir dem Spieler zu der richtigen Position porten.

    Außerdem müssen wir ihn noch in das richtige Interior setzen.

    SetPlayerInterior(playerid,g_CoordSets[i][interior]);

    &

    SetPlayerPos(playerid,e_PickupData[i][eesx],e_PickupData[i][eesy],e_PickupData[i][eesz]);


    Das war der Erste Teil des Tutorials, ich werde im Laufe des Tages noch "3DTextLabel" hinzufügen.



    Teil 2: 3DTextLabel


    Nun kommen wir zu dem 2. Teil des Tutorials. Mithilfe eines Enums und einer Schleife ein 3DTextLabel erstellen.

    Im Grund funktioniert dies genauso wie mit den Pickups.


    Wir erstellen also wieder ein Enum für "static const".


    enum e_3DLabels{
    dtext[100],//ich weiß nicht genau, was das limit ist.
    color,//farbe des textes
    Float:tx,//pos x
    Float:ty,//pos y
    Float:tz,//pos z
    dd,//draw distance
    vw,//virtual world
    los//line of sight -> durch objekte sehbar (1/0)
    }
    Nun geht es wieder mit static const weiter
    static const
    e_3DLabel[][e_3DLabels] = {
    {"Hello World\nIch bin weiß & bin ein Textlabel",-1,1965.3351,1623.2197,12.8620,7,0,0},
    };


    Erklärung
    {"Text",farbe,x,y,z,drawdistance,virtualworld,line of sight}


    Um die TextLabel zu laden, müssen wir wieder unter OnGameModeIniteine Schleife erstellen.
    for(new i;i<sizeof(g_3DLabel); i++)
    {
    Create3DTextLabel(g_3DLabel[i][dtext],g_3DLabel[i][color],g_3DLabel[i][tx],g_3DLabel[i][ty],g_3DLabel[i][tz],g_3DLabel[i][dd],g_3DLabel[i][vw],g_3DLabel[i][los]);
    }


    Erklärung
    Mit der Schleife holen wir die Daten aus static const. Mit der native Create3DTextLabel erstellen wir die Label(s?)


    Ist, wie gesagt, genau das selber wie oben. Wollte nur nochmal ein weiteres Beispiel vorzeigen.


    Ich hoffe ich habe alles richtig und verständlich erklärt &

    ich freue mich auf Kritik, Feedback & Verbesserungsvorschläge.

    Sollten Fehler vorhanden sein, bitte mich informieren, damit ich diese ausbessern kann.


    MFG

    Manniac


    #edit 1 -> Fehler ausgebessert

    #edit 2 -> Edit vergessen

    #edit 3 -> Titel geändert

    #edit 3 -> Titel geändert

    Dort deaktiviert ihr die IPv6 Protokollierung und geht noch unter IPv4. Dort stellt ihr bei Bevorzugten DNS Server oben 8.8.8.8 ein und unten 8.8.4.4!
    Und siehe da, Problem gelöst


    Wenn dann war das nur bei deinem PC so. Du verwendest ja jetzt die DNS Server von Google(?). Bei mir funktioniert Youtube einwandfrei

    Ich habe es mir momentan nur auf 144p anschauen können. Werde es mir nachher nochmal auf (F)HD anschauen.
    Was ich bis jetzt sagen kann.


    -Für dein erstes Video ist es okay, man kann nicht mehr erwarten.


    Tipps für das nächste mal.


    -Schöne CC
    -Könntest mal versuchen, ein bisschen zu syncen, geg mit slowmotions etc.
    -IG Sounds leiser, besseren Beat:p


    Wenn du das hast, sollte das Video relativ gut sein.


    MFG

    Ich habe zurzeit einfach alle Passwörter auf einer Internetseite generiert und diese dann in eine .txt Datei eingetragen.
    Ich finde halt ein Programm übersichtlicher und und und.


    Mach es in der .txt doch einfach so


    Email: hdgönjsfjsfge
    Forum: fidsjfdsfjis
    Youtube: fshdsjsfjds


    Kannst dann einfach mit strg+f suchen..Braucht man kein extra Programm für

    Abend.
    Ich habe gerade eine Map mit dem Map-Editor gemappt. Nun möchte ich, um etwas zu verändern, was ich im Mapeditor nicht verändern kann, die Map mit MTA öffnen.


    Eine .xml Datei mit den Objekten vorhanden, jedoch wird diese Map nicht bei dem Reiter "Open" angezeigt. Brauche ich noch eine weitere Datei, um die Map zu laden?


    MFG