Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * [FS] EditorAttachObjectToPlayer
- * Версия: 0.2
- * Автор: Island(Vitya) или моё 2 имя (Витёк)
- */
- #include <a_samp>
- #define DIALOG_Atta 1050
- #define DIALOG_CREATE DIALOG_Atta + 1
- #define DIALOG_SELECT DIALOG_Atta + 2
- #define DIALOG_TUTORIAL DIALOG_Atta + 3
- #define DIALOG_SAVE_1 DIALOG_Atta + 4
- #define DIALOG_SAVE_2 DIALOG_Atta + 5
- enum SavedEnums {
- Float:foX,
- Float:foY,
- Float:foZ,
- Float:roX,
- Float:roY,
- Float:roZ
- };
- new O[SavedEnums];
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp("/EAO", cmdtext, true, 10) == 0)
- {
- ShowPlayerDialog(playerid, DIALOG_Atta, DIALOG_STYLE_LIST, "Редактор объектов","Инструкция\nСоздать объект","Выбрать","Отмена");
- return 1;
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- switch(dialogid)
- {
- case DIALOG_Atta:
- {
- if(response)
- {
- if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_TUTORIAL, DIALOG_STYLE_MSGBOX, \
- "Инструкция","{FFFFFF}Горячие клавиши:\n\n{008080}Escape {FFFFFF}- чтобы выйти из редактора,\nили выбора объекта\n{008080}Shift {FFFFFF}- чтобы вращать камеру\nво время редактирования",\
- "Готово","Назад");
- if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_CREATE, DIALOG_STYLE_INPUT, \
- "Создание объекта","Введите ID модели объекта для того чтобы его создать\nОбъект появится перед вами, далее вы будете изменять его\n\nМаксимальный ID объекта - 19469",\
- "Создать","Назад");
- }
- }
- case DIALOG_CREATE:
- {
- if(!response) return OnPlayerCommandText(playerid, "/EAO");
- if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_CREATE, DIALOG_STYLE_INPUT, \
- "Создание объекта","Введите ID модели объекта для того чтобы его создать\nОбъект появится перед вами, далее вы будете изменять его\n\nМаксимальный ID объекта - 19469\n{FF0000}Ошибка: Недопустимое значение!",\
- "Создать","Назад");
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);
- new obj = CreateObject(strval(inputtext), X+1, Y+1, Z+1, 0.0,0.0,0.0);
- EditObject(playerid, obj);
- SetPVarInt(playerid, "ModelID", strval(inputtext));
- }
- case DIALOG_TUTORIAL: if(!response) return OnPlayerCommandText(playerid, "/EAO");
- case DIALOG_SAVE_1:
- {
- if(response) return ShowPlayerDialog(playerid, DIALOG_SAVE_2, DIALOG_STYLE_INPUT, "Название файла","Введите название текстового документа,\nв который сохранится ваш объект","Сохранить","Отмена");
- }
- case DIALOG_SAVE_2:
- {
- if(response)
- {
- if(!strlen(inputtext)) return SendClientMessage(playerid, 0xFF0000FF, "Вы оставили поле ввода пустым!");
- new string[300], File: objs;
- format(string, sizeof(string), "%s.txt", inputtext);
- objs = fopen(string, io_append);
- fwrite(objs, "new object;");
- format(string, sizeof(string), "object = CreateObject(%d, 0.0,0.0,0.0,0.0,0.0,0.0);\r\n",GetPVarInt(playerid, "ModelID"));
- fwrite(objs, string);
- 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]);
- fwrite(objs, string);
- fclose(objs);
- }
- }
- }
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- if(response == 0)
- {
- SendClientMessage(playerid, -1, !"Редактирование объекта было отменено!");
- DestroyObject(objectid);
- }
- if(response == 1)
- {
- ShowPlayerDialog(playerid, DIALOG_SAVE_1, DIALOG_STYLE_MSGBOX, "Объект изменён",\
- "Желаете ли вы сохранить объект в файл?\n\nФайл с объектами находится в {FFFFFF}scriptfiles/*.txt",\
- "Сохранить...","Отмена");
- new Float:p[3];
- GetPlayerPos(playerid, p[0],p[1],p[2]);
- O[foX] = fX-p[0];
- O[foY] = fY-p[1];
- O[foZ] = fZ-p[2];
- O[roX] = fRotX;
- O[roY] = fRotY;
- O[roZ] = fRotZ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement