GetPlayerPos Aktualisierung mit InterpolateCameraPos

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,


    ich hab da eine kleine Frage.


    Ich habe zum testen mal den befehl CMD:drivingcam(playerID, params[], LanguageString(17)) erstellt...
    dieser befehl soll mit dem parameter 0.35 0.2 0.6 die sicht des fahrers an nehmen.
    So dies tut er aber die Cam bleibt stehen...


    Dann habe ich es versucht anhand eines Timers die playerPosition neu zu überprüfen und anhand der InterpolateCameraPos die position alle 2ms neu zu setzten..
    so mein problem:
    Er erkennt die richtige Position (beim debuging...) jedoch setzt er meine Cam immer auf 0.0 x 0.0 x 0.0
    ich bewege mich die Cam macht nichts.. ich kann zwar meine Maus bewegen und mich um sehen, jedoch funktioniert dort garnichts..


    lass ich den Timer weg und rufe stink normal InterpolateCameraPos auf so funktioniert dies aber die camera ist halt fest was sie nciht sein soll


    meine frage:
    Welche weise gibt es noch Positionen zu syncronsieren?


    meine zweite frage:
    Wie kann ich dies zum Funktionieren bringen?


    Meine vermutung:
    Bug von SAMP selber..
    denn die ID 1 macht /drivingcam ist mit der camera vor dem wagen.. ID 2 jedoch immer auf 0 x 0 x 0
    und dann mal andersrum...


    Ich hoffe ihr könnt mir helfen
    mit freundlichen grüssen
    ;)


    //EDIT:
    Hier mal der Code...


    CMD:driving(playerID, params[], 0)
    {
    new Float:offsetX;
    new Float:offsetY;
    new Float:offsetZ;
    sscanf(params,"fff", offsetX, offsetY, offsetZ);
    if (testCam[playerID])
    {
    KillTimer(TestCam[playerID]);
    SetCameraBehindPlayer(playerID]);
    testCam[playerID] = 0;
    }
    else
    {
    testCam[playerID] = SetTimerEx("Timer_TestCam", 10, true, "dfff", playerID, offsetX, offsetY, offsetZ);
    }
    return COMMAND_OK;
    }


    und der Timer:
    Timer:TestCam(playerID, Float:offsetX, Float:offsetY, Float:offsetZ)
    {
    new Float:posX;
    new Float:posY;
    new Float:posZ;
    GetPlayerPos(playerID, posX, posY, posZ);
    posX = floatadd(posX, offsetX);
    posY = floatadd(posY, offsetY);
    posZ = floatadd(posZ, offsetZ);
    InterpolateCameraPos(playerID, posX, posY, posZ, 10);
    }

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

    Einmal editiert, zuletzt von [GRG]Linux () aus folgendem Grund: Code hinzugefügt

  • Mach das mal so (kenne mich noch net so gut mit der 0.3e Version aus, sollte aber gehen...denke ich...)


    Timer:TestCam(playerID, Float:offsetX, Float:offsetY, Float:offsetZ)
    {
    new Float:posX;
    new Float:posY;
    new Float:posZ;
    GetPlayerPos(playerID, posX, posY, posZ);
    InterpolateCameraPos(playerID, offsetX, offsetY, offsetZ, posX, posY, posZ, 10, CAMERA_MOVE);
    }


    So evtl...


    Aber wieso machst du das überhaupt so, es gibt doch auch eine Spectate Funktion die viel einfacher zu bedienen ist ^^


    TogglePlayerSpectating


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kann man beim ToggglePlayerSpectating auch die Maus bewegen etc.?


    Bei dem code überprüft er leider nicht offset
    dort überprüft er nur die Position vom spieler wandelt sie aber nicht richtig um..
    der Offset wird ja von der MySQL DB ausgelesen wen dies funktioniert.


    //Edit
    ich sehe grad dass kann nicht Funktionieren
    da offset keine position ist
    offset ist ja nur ein zusatz an position


    Dazu will ich eine Egoshooter sicht... dass heist, man kann sich bewegen und hat die sicht am kopf..
    genauso wenn man ins auto steigt soll man die maus bewegen können und man auch fahren können


    //edit
    ich habe es jetz mit vielen versuchen gemacht
    überprüfung von alter positoin und neuer position..
    deine variante...
    und die von oben nochmal
    nichts hat geklappt.. ich werde IMMER auf 0.000 x 0.000 x 0.000 gesetzt
    im Debug steht aber die richtige position drin ich verstehs nicht..

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

    Einmal editiert, zuletzt von [GRG]Linux ()

  • Zeig mal den tabellen aufbau du musst auch in der Spalte FLOAT gesetzt haben

  • Es sind noch keine Spalten vorhanden...
    Diese Spalten kommen erst, wenn dies auch mit selbst gelegen offset funktioniert


    Sprich so:
    /drivingcam 0.45 0.2 0.6 <-- Sicht vom Infernus
    dass heist er setzt zu der Position vom Spieler die zeilen hinzu.
    und wen dies funkioniert, dann erst kommen die Spalten fürs Offset..


    //Edit
    hatt den keiner ne Idee?
    ist dringend..

    Der Server: [GRG]Grand Racing Game wurde 2014 Eingestampft.
    Weitere Infos: Klick Mich

    Einmal editiert, zuletzt von [GRG]Linux ()