call.pwn 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. public OnFilterScriptInit() {
  2. g_OffsetEditTimer = SetTimer("OnOffsetEditUpdate", OFFSETEDIT_UPDATE_INTERVAL, true);
  3. for(new playerid, max_playerid = GetPlayerPoolSize(); playerid <= max_playerid; playerid ++) {
  4. if( IsPlayerConnected(playerid) ) {
  5. DefaultOffsetEditData(playerid);
  6. }
  7. }
  8. #if defined oe_OnFilterScriptInit
  9. oe_OnFilterScriptInit();
  10. #endif
  11. }
  12. #if defined _ALS_OnFilterScriptInit
  13. #undef OnFilterScriptInit
  14. #else
  15. #define _ALS_OnFilterScriptInit
  16. #endif
  17. #define OnFilterScriptInit oe_OnFilterScriptInit
  18. #if defined oe_OnFilterScriptInit
  19. forward oe_OnFilterScriptInit();
  20. #endif
  21. public OnFilterScriptExit() {
  22. KillTimer(g_OffsetEditTimer);
  23. #if defined oe_OnFilterScriptExit
  24. oe_OnFilterScriptExit();
  25. #endif
  26. }
  27. #if defined _ALS_OnFilterScriptExit
  28. #undef OnFilterScriptExit
  29. #else
  30. #define _ALS_OnFilterScriptExit
  31. #endif
  32. #define OnFilterScriptExit oe_OnFilterScriptExit
  33. #if defined oe_OnFilterScriptExit
  34. forward oe_OnFilterScriptExit();
  35. #endif
  36. public OnPlayerConnect(playerid) {
  37. DefaultOffsetEditData(playerid);
  38. #if defined oe_OnPlayerConnect
  39. return oe_OnPlayerConnect(playerid);
  40. #else
  41. return 1;
  42. #endif
  43. }
  44. #if defined _ALS_OnPlayerConnect
  45. #undef OnPlayerConnect
  46. #else
  47. #define _ALS_OnPlayerConnect
  48. #endif
  49. #define OnPlayerConnect oe_OnPlayerConnect
  50. #if defined oe_OnPlayerConnect
  51. forward oe_OnPlayerConnect(playerid);
  52. #endif
  53. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
  54. if( g_OffsetEditData[playerid][OFFSETEDIT_DATA_TOGGLE] ) {
  55. if( PRESSED(KEY_SECONDARY_ATTACK) ) {
  56. ToggleOffsetEdit(playerid, false);
  57. ClearAnimations(playerid);
  58. ShowObjectDialog(playerid, DIALOGID_OBJECT_MAIN);
  59. SelectTextDraw(playerid, SELECT_TD_COLOR);
  60. }
  61. if( HOLDING(KEY_SPRINT) ) {
  62. if( PRESSED(KEY_ANALOG_LEFT) ) {
  63. if( -- g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE] < OFFSETEDIT_MODE_X ) {
  64. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE] = OFFSETEDIT_MODE_RZ;
  65. }
  66. ShowOffsetEditMode(playerid);
  67. } else if( PRESSED(KEY_ANALOG_RIGHT) ) {
  68. if( ++ g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE] > OFFSETEDIT_MODE_RZ ) {
  69. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE] = OFFSETEDIT_MODE_X;
  70. }
  71. ShowOffsetEditMode(playerid);
  72. }
  73. }
  74. }
  75. #if defined oe_OnPlayerKeyStateChange
  76. oe_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  77. #endif
  78. }
  79. #if defined _ALS_OnPlayerKeyStateChange
  80. #undef OnPlayerKeyStateChange
  81. #else
  82. #define _ALS_OnPlayerKeyStateChange
  83. #endif
  84. #define OnPlayerKeyStateChange oe_OnPlayerKeyStateChange
  85. #if defined oe_OnPlayerKeyStateChange
  86. forward oe_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  87. #endif
  88. public OnOffsetEditUpdate() {
  89. new keys, ud, lr;
  90. for(new playerid, max_playerid = GetPlayerPoolSize(); playerid <= max_playerid; playerid ++) {
  91. if( !IsPlayerConnected(playerid) ) {
  92. continue;
  93. }
  94. if( !g_OffsetEditData[playerid][OFFSETEDIT_DATA_TOGGLE] ) {
  95. continue;
  96. }
  97. GetPlayerKeys(playerid, keys, ud, lr);
  98. if(keys & KEY_SPRINT) {
  99. continue;
  100. }
  101. if(keys & KEY_ANALOG_RIGHT) {
  102. if(g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] < 0.0) {
  103. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = 0.0;
  104. }
  105. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] += OFFSETEDIT_MULTIPLIER_ADD;
  106. if(g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] > OFFSETEDIT_MULTIPLIER_LIMIT) {
  107. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = OFFSETEDIT_MULTIPLIER_LIMIT;
  108. }
  109. } else if(keys & KEY_ANALOG_LEFT) {
  110. if(g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] > 0.0) {
  111. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = 0.0;
  112. }
  113. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] -= OFFSETEDIT_MULTIPLIER_ADD;
  114. if(g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] < -OFFSETEDIT_MULTIPLIER_LIMIT) {
  115. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = -OFFSETEDIT_MULTIPLIER_LIMIT;
  116. }
  117. } else {
  118. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = 0.0;
  119. continue;
  120. }
  121. new objectid = GetPlayerEditObject(playerid);
  122. if( !IsValidObject(objectid) ) {
  123. ToggleOffsetEdit(playerid, false);
  124. continue;
  125. }
  126. new Float:move_amount;
  127. if(keys & KEY_WALK) {
  128. move_amount = g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] * OFFSETEDIT_MOVE_SLOW;
  129. } else {
  130. move_amount = g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] * OFFSETEDIT_MOVE_NORMAL;
  131. }
  132. switch(g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE]) {
  133. case OFFSETEDIT_MODE_X: {
  134. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_X] += move_amount;
  135. }
  136. case OFFSETEDIT_MODE_Y: {
  137. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Y] += move_amount;
  138. }
  139. case OFFSETEDIT_MODE_Z: {
  140. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Z] += move_amount;
  141. }
  142. case OFFSETEDIT_MODE_RX: {
  143. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RX] = fixrot( g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RX] + move_amount );
  144. }
  145. case OFFSETEDIT_MODE_RY: {
  146. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RY] = fixrot( g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RY] + move_amount );
  147. }
  148. case OFFSETEDIT_MODE_RZ: {
  149. g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RZ] = fixrot( g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RZ] + move_amount );
  150. }
  151. default: {
  152. continue;
  153. }
  154. }
  155. ShowOffsetEditOffset(playerid, objectid);
  156. ApplyObjectAttachData(objectid);
  157. }
  158. #if defined oe_OnOffsetEditUpdate
  159. oe_OnOffsetEditUpdate();
  160. #endif
  161. }
  162. #if defined _ALS_OnOffsetEditUpdate
  163. #undef OnOffsetEditUpdate
  164. #else
  165. #define _ALS_OnOffsetEditUpdate
  166. #endif
  167. #define OnOffsetEditUpdate oe_OnOffsetEditUpdate
  168. #if defined oe_OnOffsetEditUpdate
  169. forward oe_OnOffsetEditUpdate();
  170. #endif