Skinauswahl Kamera ändern

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, da mich viele gefragt, haben wie man Kameras in eine Richtung schauen lässt
    und ich darüber kein Tutorial gefunden habe, zeige ich euch dies nun in meinem Tutorial!
    :)


    Also, erstens öffnet ihr euer Script und geht zu
    public OnPlayerRequestClass(playerid, classid)


    Wenn ihr da seit, fügt folgendes ein:
    SetPlayerInterior(playerid,0); //InteriorID, indem sich der Spieler in der Skinauswahl befindet
    SetPlayerPos(playerid,444.9429,-1875.3621,4.3723); // Position, aufder die Person stehen soll bei der Skinauswahl
    SetPlayerFacingAngle(playerid,210.0); // In welche Richtung die Position stehen/schauen soll, weiteres unten
    SetPlayerCameraPos(playerid,447.0122,-1877.5240,3.8492); // Wo die Kamera stehen soll
    SetPlayerCameraLookAt(playerid,444.9429,-1875.3621,4.3723); // Wohin sie gucken soll


    So, wenn ihr das so einfügt, ist die Kamera am Strand an einer kleinen Hütte platziert.
    Wenn ihr das ändern wollt, nehmt ihr folgendes vor:


    SetPlayerInterior(playerid, 0);
    Hier entscheidet ihr, ob ihr den Skin in einem Gebäude aussucht
    oder auf der freien Straße. InteriorID's findet ihr auf folgender Seite:
    SAMP - InteriorID's



    Wenn ihr nundas ganze angepasst habt, kommen wir zu "SetPlayerPos":Der Befehl SetPlayerPos(playerid, x, y, z); bestimmt, an welcher Position der
    bestimmte Spieler, der seinen Skin auswählt steht. Dazu geht einfach in euer Spiel,
    lauft zu der Position und gibt "/savepos kommentar" ein. Dann geht ihr in den Ordnerpfad:
    "x://Dokumente/GTA SanAndreas Userfiles/SAMP/savedpositions.txt"
    Nun kopiert ihr die Positionen x, y, z aus der Datei raus.
    Beispiel:
    AddPlayerClass(2,444.9429,-1875.3621,4.3723,226.4668,0,0,0,0,0,0); // Rot = x, y, z


    Wenn ihr das nun habt kommen wir zu dem Befehl "SetPlayerFacingAngle".
    Diese Koordinaten, findet ihr über einen leichten Befehl raus:


    if(strcmp(cmdtext,"/facepos",true)==0)
    {
    if(IsPlayerAdmin(playerid))
    {
    new Float:Angle, string[26];
    GetPlayerFacingAngle(playerid, Angle);
    format(string, sizeof(string), "Deine Guck Position: %0.2f", Angle);
    SendClientMessage(playerid, 0xFFFFFFFF, string);
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Logge dich als RCON-Admin ein!");
    }
    return 1;
    }


    Um den Befehl zu nutzen müsst ihr als Admin eingeloggt sein.
    Den Befehl müsst ihr an dieser Position benutzen, an der ihr /savepos für SetPlayerPos gemacht hat,
    dass die Person auch in die gleiche Richtung später guckt.
    Dann bekommt ihr eine Position raus und fügt dies auch unter OnPlayerRequestClass ein.


    Beispiel:
    SetPlayerFacingAngle(playerid,210.0);


    Nun kommen wir zu den letzten Zwei dingen, die wir benötigen:
    SetPlayerCameraPos(playerid,447.0122,-1877.5240,3.8492); // Wo die Kamera stehen soll
    SetPlayerCameraLookAt(playerid,444.9429,-1875.3621,4.3723); // Wohin sie gucken soll


    SetPlayerCameraPos, macht ihr ein Stück weiter weg von SetPlayerPos, damit.
    Dies bedeutet an dieser Position steht später die Kamera. Am besten lauft ihr nachdem
    ihr SetPlayerPos Coodinate gemacht habt, 5Schritte nach vorne und macht dann nochmal
    "/savepos" und speichert dies dann als Cameraposition ab.
    Nun fügt ihr das ganze mit "SetPlayerCameraPos(playerid, x, y, z); ein
    und braucht nurnoch "SetPlayerCameraLookAt" dies ist ganz einfach.
    Ihr benutzt einfach die gleiche Coordinate wie bei SetPlayerPos, da ja in die
    Richtung von dem Spieler, die Kamera schauen soll.


    Beispiel, anhand von Oben:
    SetPlayerCameraLookAt(playerid,444.9429,-1875.3621,4.3723);


    So. Nun tut ihr euer Script neu compilen und das ganze sollte funktionieren.
    Falls nicht postet einfach eure Fragen & Anregungen unter diesen Post.
    Ich hoffe ich konnte euch helfen.


    Mit freundlichen Grüßen
    Skater


    //EDIT: Fehler verbessert

    Einmal editiert, zuletzt von GuarD ()

  • ja schönes tut nur paar fehler^^


    SetPlayerInterior(playerid,0); //InteriorID, indem sich die Camera befindet
    SetPlayerPos(playerid,444.9429,-1875.3621,4.3723); // Position, aufder die Person stehen soll bei der Skinauswahl
    SetPlayerFacingAngle(playerid,210.0); // In welche Richtung die Position stehen/schauen soll, weiteres unten
    SetPlayerCameraPos(playerid,447.0122,-1877.5240,3.8492); // Wo die Kamera stehen soll
    SetPlayerCameraLookAt(playerid,444.9429,-1875.3621,4.3723); // Wohin sie gucken soll
    eig. ist es anders
    SetPlayerInterior ist für den Spieler und nicht die Camera^^
    SetPlayerPos ist richtig^^
    SetPlayerFacingAngle ist wohin der Spieler schauen soll^^
    SetPlayerCameraPos ist auch richtig
    und SetPlayerCameraLockAt ist auch richtig^^


    also 2 fehler :D
    8/10 P. aber^^


    EDIT:
    und hier
    if(strcmp(cmdtext,"/facepos",true)==0)
    {
    if(IsPlayerAdmin(playerid))
    {
    new Float:Angle, string[26];
    GetPlayerFacingAngle(playerid, Angle);
    format(string, sizeof(string), "Deine Guck Position: %0.2f", Angle);
    SendClientMessage(playerid, 0xFFFFFFFF, string);
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Logge dich als RCON-Admin ein!");
    }
    fehlt der Return^^