Camera Tool erstellen

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,
    Nachdem ich schon länger kein Tutorial mehr gemacht habe, habe ich mich jetzt entschlossen
    ein neues zu machen.

    Was ist mit Camera Tool gemeint?


    Was hier gezeigt und gescriptet wird, kann behilflich für Leute sein,
    die ein Film Script machen wollen, oder einfach nur eine coole
    Camerafunktion haben will.
    Die Camera folgt dem Spieler sobald sie gesetzt wurde.
    Um das besser zu verstehen stelle ich es mal grafisch da:


    P<---C


    C
    |
    |
    V
    P


    Also die Camera folgt dem Spieler ( mit SetPlayerCameraLookAt).


    Wir beginnen


    Für diese Funktion benötigen wir einen Timer, der die Camera
    immerwieder erneuert.
    Um einen Timer zu erstellen müssen wir zuerst den Public dafür
    "definieren".
    Das machen wir mit diesem Code:


    Code
    forward Camera();


    So nun lassen wir den Timer mal beiseite und witmen uns voll und ganz
    unserer eigentlichen Aufgabe.
    Wir erstellen erstmal einen Command.
    Hier mache ich das mit ocmd, da ich damit besser zurecht komme.
    Ihr könnt einfach strcmp nutzen, dies ist hier irrelevant.


    Code
    ocmd:camera(playerid)
    {
    	return 1;
    }


    Unser Befehl dazu heißt also /camera.
    Als nächstes definieren wir die Floats: X , Y und Z, weil wir sie als Variablen benötigen.
    also unter die erste { und über dem return schreiben wir:


    Code
    new Float:X,Float:Y,Float:Z;


    Ihr könnt diese so nennen wie ihr wollt.


    Code
    new Float:posX,Float:posY,Float:posZ;


    Würde also auch gehen, wenn euch die normalen X,Y und Z zu langweilig sind.
    Um nun die Camera aufzustellen und diese stelle ich in die nähe des Spielers,
    tippen wir also:


    Code
    GetPlayerPos(playerid,X,Y,Z);


    Und direkt darunter


    Code
    SetPlayerCameraPos(playerid,X+3,Y+3,Z);


    Hier addiere ich zu dem Wert X und dem Wert Y jeweils eine, damit die Camera nicht
    im Spieler ist.
    Als nächstes brauchen wir nun den Timer.
    Zunächst stellen wir in ein, dies ist vergleichbar mit einer Küchenuhr.


    Code
    SetTimer("Camera",1,1);


    "Camera" ist der Public, der nach ablauf des Timers ausgeführt werden soll.
    Danach steht eine 1.
    Diese steht für die Zeit, die der Timer braucht.
    1000 Millisekunden entsprechen einer Sekunde.
    Um leichter den Timer zu stellen kann man auch
    1000*60 Eine Minute und dann vielleicht noch
    1000*60*5 um Fünf Minuten draus zu machen.
    Hier benötigen wir aber nur eine Milliskunde, damit die Camera nicht zu viel hackt.


    Die letzte 1 bedeutet, ob der Timer nach ablauf wiederholt werden soll.

    Code
    1 JA
    0 NEIN


    So der Timer ist gestellt, nun müssen wir nur noch bestimmen, was nach ablauf des
    Timers geschehen soll.
    Also geht nach ganz unten im Script und macht dort:


    Code
    public Camera()
    {
    	return 1;
    }


    Da in diesen Publics playerid nicht definiert ist, müssen wir dies
    manuell tun.
    Also:


    Code
    new playerid;


    Dann brauchen wir nochmal die Floats:


    Code
    new Float:X,Float:Y,Float:Z;


    Nun soll die Camera ja auf den Spieler gerichtet werden.
    Um dies zu ermöglichen müssen wir die Position des Spielers bekommen
    und dann die Camera auf den Spieler richten.
    Das machen wir so:


    Code
    GetPlayerPos(playerid,X,Y,Z);


    Und um die Camera auf den Spieler zu richten dann noch das:


    Code
    SetPlayerCameraLookAt(playerid,X,Y,Z);


    So das war alles.
    Wir könnten jetzt noch das ganze Sytsem ausschmücken- etwa die Camera auf bestimmte Personen richten oder die
    Camera komplett selber steuern.
    Aber das könnt ihr ja mal selber versuchen : ).
    Bei fragen postet nicht hierdrunter sondern wendet euch bitte
    mit einer PN an mich, dann kann ich euch schneller helfen.


    Ich hoffe ich habe euch das System klar gemacht und gezeigt, dass es total simpel ist
    eine wirklich coole funktion zu erzeugen.


    MFG Ketchup

    Einmal editiert, zuletzt von Ketchup () aus folgendem Grund: Codes richtig eingerückt.