Advertisement
Guest User

Витёк

a guest
Oct 6th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. /*
  2. * [FS] EditorAttachObjectToPlayer
  3. * Версия: 0.1
  4. * Автор: Vitya или моё 2 имя (Витёк)
  5. * Авторские права защищены
  6. */
  7. #include <a_samp>
  8.  
  9. #define DIALOG_Atta 1050
  10. #define DIALOG_CREATE DIALOG_Atta + 1
  11. #define DIALOG_SELECT DIALOG_Atta + 2
  12. #define DIALOG_TUTORIAL DIALOG_Atta + 3
  13. #define DIALOG_SAVE_1 DIALOG_Atta + 4
  14. #define DIALOG_SAVE_2 DIALOG_Atta + 5
  15.  
  16. enum SavedEnums {
  17. Float:foX,
  18. Float:foY,
  19. Float:foZ,
  20. Float:roX,
  21. Float:roY,
  22. Float:roZ
  23. };
  24.  
  25. new O[SavedEnums];
  26.  
  27. public OnPlayerCommandText(playerid, cmdtext[])
  28. {
  29. if(strcmp("/EAO", cmdtext, true, 10) == 0)
  30. {
  31. ShowPlayerDialog(playerid, DIALOG_Atta, DIALOG_STYLE_LIST, "Редактор объектов","Инструкция\nСоздать объект","Выбрать","Отмена");
  32. return 1;
  33. }
  34. return 0;
  35. }
  36.  
  37. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  38. {
  39. switch(dialogid)
  40. {
  41. case DIALOG_Atta:
  42. {
  43. if(response)
  44. {
  45. if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, \
  46. "Инструкция","{FFFFFF}Горячие клавиши:\n\n{008080}Escape {FFFFFF}- чтобы выйти из редактора,\nили выбора объекта\n{008080}Shift {FFFFFF}- чтобы вращать камеру\nво время редактирования",\
  47. "Готово","Назад");
  48. if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_CREATE, DIALOG_STYLE_INPUT, \
  49. "Создание объекта","Введите ID модели объекта для того чтобы его создать\nОбъект появится перед вами, далее вы будете изменять его\n\nМаксимальный ID объекта - 19469",\
  50. "Создать","Назад");
  51. }
  52. }
  53. case DIALOG_CREATE:
  54. {
  55. if(!response) return OnPlayerCommandText(playerid, "/EAO");
  56. if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_CREATE, DIALOG_STYLE_INPUT, \
  57. "Создание объекта","Введите ID модели объекта для того чтобы его создать\nОбъект появится перед вами, далее вы будете изменять его\n\nМаксимальный ID объекта - 19469\n{FF0000}Ошибка: Недопустимое значение!",\
  58. "Создать","Назад");
  59. new Float:X, Float:Y, Float:Z;
  60. GetPlayerPos(playerid, X, Y, Z);
  61. new obj;
  62. obj = CreateObject(strval(inputtext), X+1, Y+1, Z+1, 0.0,0.0,0.0);
  63. EditObject(playerid, obj);
  64. SetPVarInt(playerid, "ModelID", strval(inputtext));
  65. }
  66. case DIALOG_TUTORIAL: if(!response) return OnPlayerCommandText(playerid, "/EAO");
  67. case DIALOG_SAVE_1:
  68. {
  69. if(response) return ShowPlayerDialog(playerid, DIALOG_SAVE_2, DIALOG_STYLE_INPUT, "Название файла","Введите название текстового документа,\nв который сохранится ваш объект","Сохранить","Отмена");
  70. }
  71. case DIALOG_SAVE_2:
  72. {
  73. if(response)
  74. {
  75. if(!strlen(inputtext)) return SendClientMessage(playerid, 0xFF0000FF, "Вы оставили поле ввода пустым!");
  76. new string1[300], string2[128], string3[255], File: objs;
  77. format(string2, sizeof(string2), "%s.txt", inputtext);
  78. objs = fopen(string2, io_append);
  79. fwrite(objs, "new object;");
  80. format(string3, sizeof(string3), "object = CreateObject(%d, 0.0,0.0,0.0,0.0,0.0,0.0);\r\n",GetPVarInt(playerid, "ModelID"));
  81. fwrite(objs, string3);
  82. format(string1, sizeof(string1), "AttachObjectToPlayer(object,playerid, %f,%f,%f, %f,%f,%f);\r\n", \
  83. GetPVarInt(playerid, "ModelID"), O[foX],O[foY],O[foZ], O[roX],O[roY],O[roZ]);
  84. fwrite(objs, string1);
  85. fclose(objs);
  86. }
  87. }
  88. }
  89. return 1;
  90. }
  91.  
  92. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
  93. {
  94. if(response == 1)
  95. {
  96. ShowPlayerDialog(playerid, DIALOG_SAVE_1, DIALOG_STYLE_MSGBOX, "Объект изменён",\
  97. "Желаете ли вы сохранить объект в файл?\n\nФайл с объектами находится в {FFFFFF}scriptfiles/*.txt",\
  98. "Сохранить...","Отмена");
  99. new Float:p[3];
  100. GetPlayerPos(playerid, p[0],p[1],p[2]);
  101. O[foX] = fX-p[0];
  102. O[foY] = fY-p[1];
  103. O[foZ] = fZ-p[2];
  104. O[roX] = fRotX;
  105. O[roY] = fRotY;
  106. O[roZ] = fRotZ;
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement