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);
}
}
}
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.
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'.
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'.
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.
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?
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...
above should work...