call.pwn 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. public OnFilterScriptInit() {
  2. for(new pickupid; pickupid < MAX_PICKUPS; pickupid ++) {
  3. DestroyPickup(pickupid);
  4. }
  5. #if defined pick_OnFilterScriptInit
  6. pick_OnFilterScriptInit();
  7. #endif
  8. }
  9. #if defined _ALS_OnFilterScriptInit
  10. #undef OnFilterScriptInit
  11. #else
  12. #define _ALS_OnFilterScriptInit
  13. #endif
  14. #define OnFilterScriptInit pick_OnFilterScriptInit
  15. #if defined pick_OnFilterScriptInit
  16. forward pick_OnFilterScriptInit();
  17. #endif
  18. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  19. new pickupid = GetPlayerEditPickup(playerid);
  20. if(
  21. playerobject &&
  22. objectid == g_PlayerData[playerid][PLAYER_DATA_CLICKDRAG_POID] &&
  23. IsValidPickup(pickupid)
  24. ) {
  25. switch(response) {
  26. case EDIT_RESPONSE_FINAL: {
  27. g_PickupData[pickupid][PICKUP_DATA_X] = fX;
  28. g_PickupData[pickupid][PICKUP_DATA_Y] = fY;
  29. g_PickupData[pickupid][PICKUP_DATA_Z] = fZ;
  30. if( RecreatePickup(pickupid) == INVALID_PICKUP_ID) {
  31. SendClientMessage(playerid, RGBA_RED, "ERROR: This pickup could not be moved / re-created");
  32. }
  33. DestroyClickDragObject(playerid);
  34. ShowPickupDialog(playerid, DIALOGID_PICKUP_MAIN);
  35. }
  36. case EDIT_RESPONSE_CANCEL: {
  37. g_PickupData[pickupid][PICKUP_DATA_X] = g_PickupData[pickupid][PICKUP_DATA_MEMORY_X];
  38. g_PickupData[pickupid][PICKUP_DATA_Y] = g_PickupData[pickupid][PICKUP_DATA_MEMORY_Y];
  39. g_PickupData[pickupid][PICKUP_DATA_Z] = g_PickupData[pickupid][PICKUP_DATA_MEMORY_Z];
  40. if( RecreatePickup(pickupid) == INVALID_PICKUP_ID) {
  41. SendClientMessage(playerid, RGBA_RED, "ERROR: This pickup could not be moved / re-created");
  42. }
  43. }
  44. case EDIT_RESPONSE_UPDATE: {
  45. g_PickupData[pickupid][PICKUP_DATA_X] = fX;
  46. g_PickupData[pickupid][PICKUP_DATA_Y] = fY;
  47. g_PickupData[pickupid][PICKUP_DATA_Z] = fZ;
  48. RecreatePickup(pickupid);
  49. }
  50. }
  51. }
  52. #if defined pick_OnPlayerEditObject
  53. return pick_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  54. #else
  55. return 0;
  56. #endif
  57. }
  58. #if defined _ALS_OnPlayerEditObject
  59. #undef OnPlayerEditObject
  60. #else
  61. #define _ALS_OnPlayerEditObject
  62. #endif
  63. #define OnPlayerEditObject pick_OnPlayerEditObject
  64. #if defined pick_OnPlayerEditObject
  65. forward pick_OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ);
  66. #endif
  67. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
  68. switch(dialogid) {
  69. case DIALOGID_PICKUP_MAIN: {
  70. new pickupid = GetPlayerEditPickup(playerid);
  71. if( pickupid == INVALID_PICKUP_ID || !g_PickupData[pickupid][PICKUP_DATA_ISVALID] ) {
  72. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  73. }
  74. if( !response ) {
  75. return 1;
  76. }
  77. switch(listitem) {
  78. case LISTITEM_PICKUP_GOTO: {
  79. new
  80. Float:x = g_PickupData[pickupid][PICKUP_DATA_X],
  81. Float:y = g_PickupData[pickupid][PICKUP_DATA_Y],
  82. Float:z = g_PickupData[pickupid][PICKUP_DATA_Z]
  83. ;
  84. if( g_CamModeData[playerid][CAMMODE_DATA_TOGGLE] ) {
  85. StopPlayerObject(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID]);
  86. SetPlayerObjectPos(playerid, g_CamModeData[playerid][CAMMODE_DATA_POID], x, y, z);
  87. } else {
  88. SetPlayerPos(playerid, x, y, z);
  89. }
  90. }
  91. case LISTITEM_PICKUP_GET: {
  92. GetPlayerPos(playerid, g_PickupData[pickupid][PICKUP_DATA_X], g_PickupData[pickupid][PICKUP_DATA_Y], g_PickupData[pickupid][PICKUP_DATA_Z]);
  93. new new_pickupid = RecreatePickup(pickupid);
  94. if( new_pickupid == INVALID_PICKUP_ID) {
  95. SendClientMessage(playerid, RGBA_RED, "ERROR: This pickup could not be moved / re-created");
  96. }
  97. }
  98. case LISTITEM_PICKUP_COORD: {
  99. return ShowPickupDialog(playerid, DIALOGID_PICKUP_COORD), 1;
  100. }
  101. case LISTITEM_PICKUP_MOVE: {
  102. new objectid = RefreshClickDragObject(playerid);
  103. if(objectid == INVALID_OBJECT_ID) {
  104. SendClientMessage(playerid, RGBA_RED, "ERROR: This pickup cannot be moved right now!");
  105. } else {
  106. g_PickupData[pickupid][PICKUP_DATA_MEMORY_X] = g_PickupData[pickupid][PICKUP_DATA_X];
  107. g_PickupData[pickupid][PICKUP_DATA_MEMORY_Y] = g_PickupData[pickupid][PICKUP_DATA_Y];
  108. g_PickupData[pickupid][PICKUP_DATA_MEMORY_Z] = g_PickupData[pickupid][PICKUP_DATA_Z];
  109. EditPlayerObject(playerid, objectid);
  110. SendClientMessage(playerid, RGBA_ORANGE, "Click & Drag Edit: {FFFFFF}Hold ~k~~PED_SPRINT~ to look around and press ESC to cancel.");
  111. return 1;
  112. }
  113. }
  114. case LISTITEM_PICKUP_REMOVE: {
  115. DestroyPickup(pickupid);
  116. return 1;
  117. }
  118. case LISTITEM_PICKUP_DUPLICATE: {
  119. new new_pickupid = CopyPickup(pickupid);
  120. if( new_pickupid == INVALID_PICKUP_ID ) {
  121. SendClientMessage(playerid, RGBA_RED, "ERROR: This pickup could not be duplicated!");
  122. } else {
  123. g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_PICKUP;
  124. g_PlayerData[playerid][PLAYER_DATA_EDIT_ID] = new_pickupid;
  125. }
  126. }
  127. case LISTITEM_PICKUP_COMMENT: {
  128. return ShowPickupDialog(playerid, DIALOGID_PICKUP_COMMENT), 1;
  129. }
  130. case LISTITEM_PICKUP_COMMENT_RESET: {
  131. GetModelName(g_PickupData[pickupid][PICKUP_DATA_MODEL], g_CommentString, sizeof g_CommentString);
  132. strpack(g_PickupData[pickupid][PICKUP_DATA_COMMENT], g_CommentString, MAX_COMMENT_LEN+1); // Set Pickup Comment
  133. }
  134. }
  135. return ShowPickupDialog(playerid, dialogid), 1;
  136. }
  137. case DIALOGID_PICKUP_COORD: {
  138. new pickupid = GetPlayerEditPickup(playerid);
  139. if( pickupid == INVALID_PICKUP_ID || !g_PickupData[pickupid][PICKUP_DATA_ISVALID] ) {
  140. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  141. }
  142. if(!response) {
  143. return ShowPickupDialog(playerid, DIALOGID_PICKUP_MAIN), 1;
  144. }
  145. new cmd[10], Float:value;
  146. if(sscanf(inputtext, "s[10]f", cmd, value)) {
  147. return ShowPickupDialog(playerid, dialogid), 1;
  148. }
  149. if(!strcmp(cmd, "x", true)) {
  150. g_PickupData[pickupid][PICKUP_DATA_X] = value;
  151. } else if(!strcmp(cmd, "y", true)) {
  152. g_PickupData[pickupid][PICKUP_DATA_Y] = value;
  153. } else if(!strcmp(cmd, "z", true)) {
  154. g_PickupData[pickupid][PICKUP_DATA_Z] = value;
  155. } else {
  156. return ShowPickupDialog(playerid, dialogid), 1;
  157. }
  158. new new_pickupid = RecreatePickup(pickupid);
  159. if( new_pickupid == INVALID_PICKUP_ID) {
  160. SendClientMessage(playerid, RGBA_RED, "ERROR: This pickup could not be moved / re-created");
  161. }
  162. return ShowPickupDialog(playerid, dialogid), 1;
  163. }
  164. case DIALOGID_PICKUP_COMMENT: {
  165. new pickupid = GetPlayerEditPickup(playerid);
  166. if( pickupid == INVALID_PICKUP_ID || !g_PickupData[pickupid][PICKUP_DATA_ISVALID] ) {
  167. return g_PlayerData[playerid][PLAYER_DATA_EDIT_IDTYPE] = ID_TYPE_NONE, 1;
  168. }
  169. if(!response) {
  170. ShowPickupDialog(playerid, DIALOGID_PICKUP_MAIN);
  171. } else {
  172. strpack(g_PickupData[pickupid][PICKUP_DATA_COMMENT], inputtext, MAX_COMMENT_LEN+1); // Set Comment
  173. ShowPickupDialog(playerid, dialogid);
  174. }
  175. return 1;
  176. }
  177. }
  178. #if defined pick_OnDialogResponse
  179. return pick_OnDialogResponse(playerid, dialogid, response, listitem, inputtext);
  180. #else
  181. return 0;
  182. #endif
  183. }
  184. #if defined _ALS_OnDialogResponse
  185. #undef OnDialogResponse
  186. #else
  187. #define _ALS_OnDialogResponse
  188. #endif
  189. #define OnDialogResponse pick_OnDialogResponse
  190. #if defined pick_OnDialogResponse
  191. forward pick_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  192. #endif