Advertisement
Guest User

[FS] EditorAttachObjectToPlayer

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