Camera Movement not stopping
#1

pawn Код:
forward OnPlayerFinishInterpolateCamera(playerid, type);
public OnPlayerFinishInterpolateCamera(playerid, type)
{
    switch(type)
    {
        case 0:
        {
            InterpolateCameraPos(playerid, 187.600982, -1791.727050, 119.087432, 193.731567, -1789.235473, 118.845245, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 189.006942, -1790.279785, 114.512641, 195.057144, -1788.512817, 114.078620, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 1);
        }
        case 1:
        {
            InterpolateCameraPos(playerid, 300.803771, -1753.841796, 59.482250, 332.887237, -1753.466674, 60.534908, 4000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 302.467315, -1749.504394, 57.633026, 334.005126, -1748.907470, 58.813385, 4000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 4000-600, 0, "id", playerid, 2);
        }
        case 2:
        {
            InterpolateCameraPos(playerid, 350.840972, -1794.716308, 13.146982, 346.193756, -1800.415649, 10.697548, 8000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 348.053558, -1790.653564, 12.295993, 342.141357, -1797.657592, 9.712170, 8000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 8000-600, 0, "id", playerid, 3);
        }
        case 3:
        {
            InterpolateCameraPos(playerid, 169.602859, -1775.647705, 6.933395, 169.617141, -1776.156250, 12.790164, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 169.547332, -1770.651367, 7.117267, 169.588928, -1771.159301, 12.618641, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 4);
        }
        case 4:
        {
            InterpolateCameraPos(playerid, 386.273284, -2030.129516, 59.993469, 395.822113, -2044.595703, 59.993469, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 386.591949, -2029.832275, 55.012496, 396.252319, -2044.526245, 55.012496, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 5);
        }
        case 5:
        {
            InterpolateCameraPos(playerid, 341.018402, -2095.904052, 6.937077, 342.805603, -2096.498535, 6.648118, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 345.258972, -2093.501220, 5.821543, 347.304443, -2094.563964, 5.639461, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 6);
        }
        case 6:
        {
            InterpolateCameraPos(playerid, 481.641052, -1804.006835, 6.803627, 484.250549, -1802.375244, 6.660738, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 485.734344, -1801.318481, 5.794973, 488.679290, -1800.236572, 5.759444, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 7);
        }
        case 7:
        {
            InterpolateCameraPos(playerid, 662.689147, -1868.981201, 6.513285, 665.048583, -1870.174438, 6.864079, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 658.142028, -1867.027709, 5.800874, 661.006286, -1867.294311, 6.260089, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 8);
        }
        case 8:
        {
            InterpolateCameraPos(playerid, 542.343933, -1901.457519, 2.008791, 544.523376, -1901.883666, 2.085470, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 544.995666, -1897.256958, 2.577868, 546.892395, -1897.521118, 2.681705, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 9);
        }
        case 9:
        {
            InterpolateCameraPos(playerid, 542.945800, -1863.699707, 4.435829, 539.996215, -1863.695556, 4.304386, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 537.950744, -1863.694213, 4.213245, 535.009887, -1863.990478, 4.081802, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 10);
        }
        case 10:
        {
            InterpolateCameraPos(playerid, 329.131469, -1791.461791, 15.695193, 326.005981, -1793.169311, 15.695193, 3000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 326.451660, -1787.321044, 14.874702, 323.228546, -1789.171630, 14.553024, 3000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 3000-600, 0, "id", playerid, 11);
        }
        case 11:
        {
            InterpolateCameraPos(playerid, 514.983886, -1760.605102, 17.303379, 514.898010, -1760.553955, 18.443613, 3000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 519.002807, -1762.556640, 15.058471, 519.071899, -1762.496826, 16.493217, 3000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 3000-600, 0, "id", playerid, 12);
        }
        case 12:
        {
            InterpolateCameraPos(playerid, 524.473022, -1763.555786, 14.948656, 524.520751, -1763.556152, 15.495350, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 519.486999, -1763.304687, 14.671454, 519.540893, -1763.958007, 15.296504, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 13);
        }
        case 13:
        {
            InterpolateCameraPos(playerid, 545.416076, -1772.326171, 8.179362, 547.233886, -1774.291870, 8.147984, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 548.811035, -1775.996459, 8.120770, 550.628845, -1777.962158, 8.089392, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 14);
        }
        case 14:
        {
            InterpolateCameraPos(playerid, 550.013793, -1772.057128, 16.024028, 552.169799, -1772.079223, 16.285087, 5000, CAMERA_MOVE);
            InterpolateCameraLookAt(playerid, 546.803894, -1768.331054, 15.122734, 548.959899, -1768.353149, 15.383792, 5000, CAMERA_MOVE);
            JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 0);
        }
    }
}
pawn Код:
stock SetPlayerJoinCamera(playerid)
{
    PlayAudioStreamForPlayer(playerid, "https://dl.dropboxusercontent.com/s/z834k2bgngbcmm6/kbgdHubwVdkG.128.mp3");
    SetPlayerPos(playerid, 155.3337, -1776.4384, -20);
    Streamer_UpdateEx(playerid, 156.2734, -1776.0850, 14.2128);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerInterior(playerid, 0);
    TogglePlayerSpectating(playerid, 1);
    InterpolateCameraPos(playerid, 156.2734, -1776.0850, 14.2128, 156.2713, -1776.0797, 14.7078, 5000, CAMERA_MOVE);
    InterpolateCameraLookAt(playerid, 156.2734, -1776.0850, 14.2128, 156.2713, -1776.0797, 14.7078, 5000, CAMERA_MOVE);
    JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 0);
    return 1;
}
When a player logs, this camera movement starts playing, I also made KillTimer(JoinCameraTimer) once a player spawns but it is fine just for a few seconds, what can I do to fix such a problem?
This is what I have when a player spawns.
pawn Код:
KillTimer(JoinCameraTimer);
    TogglePlayerSpectating(playerid, 0);
    TogglePlayerControllable(playerid, 1);
    SetCameraBehindPlayer(playerid);
Reply
#2

Please, somebody respond I really need this thing to be fixed.
Reply
#3

I assume you use SetPlayerJoinCamera when the player logs in, which starts the camera movement.
And I assume OnPlayerFinishInterpolateCamera is called when the camera movement is done?

If so, your code tells the server to start the camera movement again during "OnPlayerFinishInterpolateCamera".
And since the timer is set to approx 5sec that is why it starts again after a few seconds.

Remove this line at the end of each 'case'.
pawn Код:
JoinCameraTimer = SetTimerEx("OnPlayerFinishInterpolateCamera", 5000-600, 0, "id", playerid, 0);
and it should work. You're not showing us all of the code so I make assumptions out of what seems logic right now.
You could also toggle spectating mode off and setcamerabehindplayer inside 'OnPlayerFinishInterpolateCamera'.
Reply
#4

If I remove this line then the script is not going to show the next camera movement, I want it to do it without stopping, once all of the cameras movements are finished it will start again.

Edit 2:
As you can see it shows the next available movement with the timer.
Reply
#5

Oh now i see how It's done.. I cannot see what's wrong otherwise though, maybe you're calling some login function at the time of spawning as well?
Reply
#6

I can't see what else would be at the code you've currently posted.
There must be something that triggers the timer at spawn...

This should work anyways, but seems annoyingly unnecessary since the code
above should work...
pawn Код:
new isspawned[MAX_PLAYERS];

// OnPlayerSpawn
isspawned = 1;

// And then
forward OnPlayerFinishInterpolateCamera(playerid, type);
public OnPlayerFinishInterpolateCamera(playerid, type)
{
    if(isspawned[playerid]) return 0;
Reply
#7

This is where I go the code, https://sampforum.blast.hk/showthread.php?tid=465737 I will do it as it was
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)