SHOW:
|
|
- or go back to the newest paste.
| 1 | /* | |
| 2 | MP2's camera system (hud-less) | |
| 3 | © MP2 2012 | |
| 4 | */ | |
| 5 | ||
| 6 | /* | |
| 7 | native SetPlayerCamera(playerid, Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2, sets=5); | |
| 8 | */ | |
| 9 | ||
| 10 | enum E_OPU_CAM_DATA | |
| 11 | {
| |
| 12 | Float:opu_cam_pos[3], | |
| 13 | Float:opu_cam_look[3], | |
| 14 | opu_cam_updates | |
| 15 | } | |
| 16 | ||
| 17 | new OPU_CAM_DATA[MAX_PLAYERS][E_OPU_CAM_DATA]; | |
| 18 | ||
| 19 | public OnPlayerUpdate(playerid) | |
| 20 | {
| |
| 21 | // OPU Cameras | |
| 22 | if(OPU_CAM_DATA[playerid][opu_cam_updates] != 0) // Still updates to process | |
| 23 | {
| |
| 24 | // Set the camera's position | |
| 25 | SetPlayerCameraPos(playerid, | |
| 26 | OPU_CAM_DATA[playerid][opu_cam_pos][0], | |
| 27 | OPU_CAM_DATA[playerid][opu_cam_pos][1], | |
| 28 | OPU_CAM_DATA[playerid][opu_cam_pos][2]); | |
| 29 | ||
| 30 | // Set the camera's 'lookat' point | |
| 31 | SetPlayerCameraLookAt(playerid, | |
| 32 | OPU_CAM_DATA[playerid][opu_cam_look][0], | |
| 33 | OPU_CAM_DATA[playerid][opu_cam_look][1], | |
| 34 | OPU_CAM_DATA[playerid][opu_cam_look][2]); | |
| 35 | ||
| 36 | OPU_CAM_DATA[playerid][opu_cam_updates]--; // We've processed one update | |
| 37 | } | |
| 38 | return CallLocalFunction("cam_OnPlayerUpdate", "i", playerid); // Hooking method
| |
| 39 | } | |
| 40 | #if defined _ALS_OnPlayerUpdate | |
| 41 | #undef OnPlayerUpdate | |
| 42 | #else | |
| 43 | #define _ALS_OnPlayerUpdate | |
| 44 | #endif | |
| 45 | #define OnPlayerUpdate cam_OnPlayerUpdate | |
| 46 | forward cam_OnPlayerUpdate(playerid); | |
| 47 | ||
| 48 | stock SetPlayerCamera(playerid, Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2, sets=5) | |
| 49 | {
| |
| 50 | OPU_CAM_DATA[playerid][opu_cam_updates] = sets; | |
| 51 | TogglePlayerSpectating(playerid, true); | |
| 52 | OPU_CAM_DATA[playerid][opu_cam_pos][0] = x; | |
| 53 | OPU_CAM_DATA[playerid][opu_cam_pos][1] = y; | |
| 54 | OPU_CAM_DATA[playerid][opu_cam_pos][2] = z; | |
| 55 | OPU_CAM_DATA[playerid][opu_cam_look][0] = x2; | |
| 56 | OPU_CAM_DATA[playerid][opu_cam_look][1] = y2; | |
| 57 | OPU_CAM_DATA[playerid][opu_cam_look][2] = z2; | |
| 58 | return 1; | |
| 59 | - | } |
| 59 | + | |
| 60 | ||
| 61 | stock x_SetCameraBehindPlayer(playerid) | |
| 62 | {
| |
| 63 | OPU_CAM_DATA[playerid][opu_cam_updates] = 0; | |
| 64 | SetCameraBehindPlayer(playerid); | |
| 65 | return 1; | |
| 66 | } | |
| 67 | ||
| 68 | #if defined _ALS_SetCameraBehindPlayer | |
| 69 | #undef SetCameraBehindPlayer | |
| 70 | #else | |
| 71 | #define _ALS_SetCameraBehindPlayer | |
| 72 | #endif | |
| 73 | #define SetCameraBehindPlayer x_SetCameraBehindPlayer |