call.pwn 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. public OnFilterScriptInit() {
  2. for(new playerid, max_playerid = GetPlayerPoolSize(); playerid <= max_playerid; playerid ++) {
  3. if( IsPlayerConnected(playerid) ) {
  4. DefaultCamModeData(playerid);
  5. }
  6. }
  7. g_CamModeTimer = SetTimer("OnCamModeUpdate", CAMMODE_UPDATE_INTERVAL_MS, true);
  8. #if defined cmode_OnFilterScriptInit
  9. cmode_OnFilterScriptInit();
  10. #endif
  11. }
  12. #if defined _ALS_OnFilterScriptInit
  13. #undef OnFilterScriptInit
  14. #else
  15. #define _ALS_OnFilterScriptInit
  16. #endif
  17. #define OnFilterScriptInit cmode_OnFilterScriptInit
  18. #if defined cmode_OnFilterScriptInit
  19. forward cmode_OnFilterScriptInit();
  20. #endif
  21. public OnFilterScriptExit() {
  22. KillTimer(g_CamModeTimer);
  23. for(new playerid, max_playerid = GetPlayerPoolSize(); playerid <= max_playerid; playerid ++) {
  24. if( !IsPlayerConnected(playerid) ) {
  25. continue;
  26. }
  27. if( g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] ) {
  28. ToggleCam(playerid, false);
  29. }
  30. }
  31. #if defined cmode_OnFilterScriptExit
  32. cmode_OnFilterScriptExit();
  33. #endif
  34. }
  35. #if defined _ALS_OnFilterScriptExit
  36. #undef OnFilterScriptExit
  37. #else
  38. #define _ALS_OnFilterScriptExit
  39. #endif
  40. #define OnFilterScriptExit cmode_OnFilterScriptExit
  41. #if defined cmode_OnFilterScriptExit
  42. forward cmode_OnFilterScriptExit();
  43. #endif
  44. public OnPlayerConnect(playerid) {
  45. DefaultCamModeData(playerid);
  46. #if defined cmode_OnPlayerConnect
  47. return cmode_OnPlayerConnect(playerid);
  48. #else
  49. return 1;
  50. #endif
  51. }
  52. #if defined _ALS_OnPlayerConnect
  53. #undef OnPlayerConnect
  54. #else
  55. #define _ALS_OnPlayerConnect
  56. #endif
  57. #define OnPlayerConnect cmode_OnPlayerConnect
  58. #if defined cmode_OnPlayerConnect
  59. forward cmode_OnPlayerConnect(playerid);
  60. #endif
  61. public OnPlayerSpawn(playerid) {
  62. if( g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] && IsValidPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]) ) {
  63. TogglePlayerSpectating(playerid, true);
  64. AttachCameraToPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]);
  65. }
  66. #if defined cmode_OnPlayerSpawn
  67. return cmode_OnPlayerSpawn(playerid);
  68. #else
  69. return 1;
  70. #endif
  71. }
  72. #if defined _ALS_OnPlayerSpawn
  73. #undef OnPlayerSpawn
  74. #else
  75. #define _ALS_OnPlayerSpawn
  76. #endif
  77. #define OnPlayerSpawn cmode_OnPlayerSpawn
  78. #if defined cmode_OnPlayerSpawn
  79. forward cmode_OnPlayerSpawn(playerid);
  80. #endif
  81. public OnPlayerStateChange(playerid, newstate, oldstate) {
  82. if( !g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] && g_CamModeData[playerid][CAMMODE_DATA_SPAWN_SAVED] && newstate == PLAYER_STATE_ONFOOT ) {
  83. SetPlayerPos(playerid, g_CamModeData[playerid][CAMMODE_DATA_SPAWN_X], g_CamModeData[playerid][CAMMODE_DATA_SPAWN_Y], g_CamModeData[playerid][CAMMODE_DATA_SPAWN_Z]);
  84. g_CamModeData[playerid][CAMMODE_DATA_SPAWN_SAVED] = false;
  85. }
  86. #if defined cmode_OnPlayerStateChange
  87. cmode_OnPlayerStateChange(playerid, newstate, oldstate);
  88. #endif
  89. }
  90. #if defined _ALS_OnPlayerStateChange
  91. #undef OnPlayerStateChange
  92. #else
  93. #define _ALS_OnPlayerStateChange
  94. #endif
  95. #define OnPlayerStateChange cmode_OnPlayerStateChange
  96. #if defined cmode_OnPlayerStateChange
  97. forward cmode_OnPlayerStateChange(playerid, newstate, oldstate);
  98. #endif
  99. public OnCamModeUpdate() {
  100. for(new playerid, max_playerid = GetPlayerPoolSize(); playerid <= max_playerid; playerid ++) {
  101. if( !IsPlayerConnected(playerid) ) {
  102. continue;
  103. }
  104. if( !g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] ) {
  105. continue;
  106. }
  107. new keys, ud, lr;
  108. GetPlayerKeys(playerid, keys, ud, lr);
  109. if(ud == 0 && lr == 0) {
  110. if(g_CamModeData[playerid][CAMMODE_DATA_MOVING]) {
  111. StopPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]);
  112. g_CamModeData[playerid][CAMMODE_DATA_MOVING] = false;
  113. g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] = 0.0;
  114. }
  115. } else {
  116. new
  117. Float:x,
  118. Float:y,
  119. Float:z,
  120. Float:vx,
  121. Float:vy,
  122. Float:vz,
  123. Float:speed
  124. ;
  125. GetPlayerCameraPos(playerid, x, y, z);
  126. GetPlayerCameraFrontVector(playerid, vx, vy, vz);
  127. if(ud < 0) {
  128. x += (vx * CAMMODE_MOVE_DISTANCE);
  129. y += (vy * CAMMODE_MOVE_DISTANCE);
  130. z += (vz * CAMMODE_MOVE_DISTANCE);
  131. } else if(ud > 0) {
  132. x -= (vx * CAMMODE_MOVE_DISTANCE);
  133. y -= (vy * CAMMODE_MOVE_DISTANCE);
  134. z -= (vz * CAMMODE_MOVE_DISTANCE);
  135. }
  136. if(lr > 0) {
  137. x += (vy * CAMMODE_MOVE_DISTANCE);
  138. y -= (vx * CAMMODE_MOVE_DISTANCE);
  139. } else if(lr < 0) {
  140. x -= (vy * CAMMODE_MOVE_DISTANCE);
  141. y += (vx * CAMMODE_MOVE_DISTANCE);
  142. }
  143. g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] += CAMMODE_MULTIPLIER_ADD;
  144. if(g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] > CAMMODE_MULTIPLIER_LIMIT) {
  145. g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] = CAMMODE_MULTIPLIER_LIMIT;
  146. }
  147. if(keys & KEY_JUMP) {
  148. speed = g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] * CAMMODE_SPEED_FAST;
  149. } else if(keys & KEY_WALK) {
  150. speed = g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] * CAMMODE_SPEED_SLOW;
  151. } else {
  152. speed = g_CamModeData[playerid][CAMMODE_DATA_MULTIPLIER] * CAMMODE_SPEED_NORMAL;
  153. }
  154. MovePlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID], x, y, z, speed, 0.0, 0.0, 0.0);
  155. g_CamModeData[playerid][CAMMODE_DATA_MOVING] = true;
  156. }
  157. }
  158. #if defined cmode_OnCamModeUpdate
  159. cmode_OnCamModeUpdate();
  160. #endif
  161. }
  162. #if defined _ALS_OnCamModeUpdate
  163. #undef OnCamModeUpdate
  164. #else
  165. #define _ALS_OnCamModeUpdate
  166. #endif
  167. #define OnCamModeUpdate cmode_OnCamModeUpdate
  168. #if defined cmode_OnCamModeUpdate
  169. forward cmode_OnCamModeUpdate();
  170. #endif