func.pwn 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. forward OnOffsetEditUpdate();
  2. GetOffsetEditModeName(mode) {
  3. new modename[3];
  4. switch(mode) {
  5. case OFFSETEDIT_MODE_X: {
  6. strunpack(modename, !"x");
  7. }
  8. case OFFSETEDIT_MODE_Y: {
  9. strunpack(modename, !"y");
  10. }
  11. case OFFSETEDIT_MODE_Z: {
  12. strunpack(modename, !"z");
  13. }
  14. case OFFSETEDIT_MODE_RX: {
  15. strunpack(modename, !"rx");
  16. }
  17. case OFFSETEDIT_MODE_RY: {
  18. strunpack(modename, !"ry");
  19. }
  20. case OFFSETEDIT_MODE_RZ: {
  21. strunpack(modename, !"rz");
  22. }
  23. default: {
  24. strunpack(modename, !"-");
  25. }
  26. }
  27. return modename;
  28. }
  29. ShowOffsetEditMode(playerid) {
  30. new text[21];
  31. format(text, sizeof text, "~r~editing %s offset", GetOffsetEditModeName(g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE]));
  32. GameTextForPlayer(playerid, text, 2000, 4);
  33. }
  34. ShowOffsetEditOffset(playerid, objectid) {
  35. new text[28];
  36. switch( g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE] ) {
  37. case OFFSETEDIT_MODE_X: {
  38. format(text, sizeof text, "~r~%s offset: ~w~%.4f", GetOffsetEditModeName(OFFSETEDIT_MODE_X), g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_X] );
  39. }
  40. case OFFSETEDIT_MODE_Y: {
  41. format(text, sizeof text, "~r~%s offset: ~w~%.4f", GetOffsetEditModeName(OFFSETEDIT_MODE_Y), g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Y] );
  42. }
  43. case OFFSETEDIT_MODE_Z: {
  44. format(text, sizeof text, "~r~%s offset: ~w~%.4f", GetOffsetEditModeName(OFFSETEDIT_MODE_Z), g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_Z] );
  45. }
  46. case OFFSETEDIT_MODE_RX: {
  47. format(text, sizeof text, "~r~%s offset: ~w~%.4f", GetOffsetEditModeName(OFFSETEDIT_MODE_RX), g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RX] );
  48. }
  49. case OFFSETEDIT_MODE_RY: {
  50. format(text, sizeof text, "~r~%s offset: ~w~%.4f", GetOffsetEditModeName(OFFSETEDIT_MODE_RY), g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RY] );
  51. }
  52. case OFFSETEDIT_MODE_RZ: {
  53. format(text, sizeof text, "~r~%s offset: ~w~%.4f", GetOffsetEditModeName(OFFSETEDIT_MODE_RZ), g_ObjectData[objectid-1][OBJECT_DATA_ATTACH_RZ] );
  54. }
  55. default: {
  56. return 0;
  57. }
  58. }
  59. GameTextForPlayer(playerid, text, 1000, 4);
  60. return 1;
  61. }
  62. ToggleOffsetEdit(playerid, bool:toggle) {
  63. if(toggle == g_OffsetEditData[playerid][OFFSETEDIT_DATA_TOGGLE]) {
  64. return 0;
  65. }
  66. g_OffsetEditData[playerid][OFFSETEDIT_DATA_TOGGLE] = toggle;
  67. if(toggle) {
  68. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = 0.0;
  69. GameTextForPlayer(playerid, "~w~offset editor ~g~toggled", 4000, 4);
  70. SendClientMessage(playerid, RGBA_ORANGE, "Offset Edit Keys:");
  71. SendClientMessage(playerid, RGBA_ORANGE, "Direction: {FFFFFF}+~k~~VEHICLE_TURRETRIGHT~ / -~k~~VEHICLE_TURRETLEFT~");
  72. SendClientMessage(playerid, RGBA_ORANGE, "Move Slower: {FFFFFF}~k~~SNEAK_ABOUT~ + Direction Key");
  73. SendClientMessage(playerid, RGBA_ORANGE, "Change Mode: {FFFFFF}~k~~PED_SPRINT~ + Direction Key");
  74. SendClientMessage(playerid, RGBA_ORANGE, " ");
  75. } else {
  76. GameTextForPlayer(playerid, "~w~offset editor ~r~untoggled", 4000, 4);
  77. }
  78. return 1;
  79. }
  80. DefaultOffsetEditData(playerid) {
  81. g_OffsetEditData[playerid][OFFSETEDIT_DATA_TOGGLE] = false;
  82. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MODE] = OFFSETEDIT_MODE_X;
  83. g_OffsetEditData[playerid][OFFSETEDIT_DATA_MULTIPLIER] = 0.0;
  84. }