func.pwn 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. forward OnCamModeUpdate();
  2. DefaultCamModeData(playerid) {
  3. g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] = false;
  4. g_CamModeData[playerid][CAMMODE_DATA_MOVING] = false;
  5. g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] = 0.0;
  6. g_CamModeData[playerid][CAMMODE_DATA_POID] = INVALID_OBJECT_ID;
  7. g_CamModeData[playerid][CAMMODE_DATA_SPAWN_SAVED] = false;
  8. g_CamModeData[playerid][CAMMODE_DATA_SPAWN_X] = 0.0;
  9. g_CamModeData[playerid][CAMMODE_DATA_SPAWN_Y] = 0.0;
  10. g_CamModeData[playerid][CAMMODE_DATA_SPAWN_Z] = 0.0;
  11. }
  12. ToggleCam(playerid, bool:toggle) {
  13. if( toggle == g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] ) {
  14. return 0;
  15. }
  16. g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] = toggle;
  17. if( toggle ) {
  18. new Float:x, Float:y, Float:z;
  19. switch(GetPlayerState(playerid)) {
  20. case PLAYER_STATE_DRIVER, PLAYER_STATE_PASSENGER: {
  21. GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
  22. SetPlayerPos(playerid, x, y, z);
  23. }
  24. case PLAYER_STATE_ONFOOT: {
  25. GetPlayerPos(playerid, x, y, z);
  26. }
  27. default: {
  28. return 0;
  29. }
  30. }
  31. g_CamModeData[playerid][CAMMODE_DATA_MOVING] = false;
  32. g_CamModeData[playerid][CAMMODE_DATA_POID] = CreatePlayerObject(playerid, CAMMODE_OBJECT_MODEL, x, y, z, 0.0, 0.0, 0.0);
  33. g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] = 0.0;
  34. TogglePlayerSpectating(playerid, true);
  35. AttachCameraToPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]);
  36. GameTextForPlayer(playerid, "~w~camera mode ~g~toggled", 2000, 4);
  37. SendClientMessage(playerid, RGBA_ORANGE, "Camera Mode Keys: ");
  38. SendClientMessage(playerid, RGBA_ORANGE, "Direction: {FFFFFF}~k~~GO_FORWARD~ / ~k~~GO_BACK~ / ~k~~GO_LEFT~ / ~k~~GO_RIGHT~");
  39. SendClientMessage(playerid, RGBA_ORANGE, "Faster: {FFFFFF}~k~~PED_JUMPING~ + Direction Key");
  40. SendClientMessage(playerid, RGBA_ORANGE, "Slower: {FFFFFF}~k~~SNEAK_ABOUT~ + Direction Key");
  41. SendClientMessage(playerid, RGBA_ORANGE, " ");
  42. } else {
  43. GetPlayerPos(playerid, g_CamModeData[playerid][CAMMODE_DATA_SPAWN_X], g_CamModeData[playerid][CAMMODE_DATA_SPAWN_Y], g_CamModeData[playerid][CAMMODE_DATA_SPAWN_Z]);
  44. g_CamModeData[playerid][CAMMODE_DATA_SPAWN_SAVED] = true;
  45. DestroyPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]);
  46. g_CamModeData[playerid][CAMMODE_DATA_POID] = INVALID_OBJECT_ID;
  47. TogglePlayerSpectating(playerid, false);
  48. GameTextForPlayer(playerid, "~w~camera mode ~r~untoggled", 2000, 4);
  49. }
  50. return 1;
  51. }