· 8 years ago · Jan 25, 2018, 10:36 PM
1// TDEditor.pwn by Gammix
2#define FILTERSCRIPT
3
4#include <a_samp>
5#include <zcmd>
6#include <easydialog>
7#include <timestamptodate>
8#include <dini2>
9#include <sscanf2>
10#include <sqlitei>
11#include <crp>
12
13// Editor info.
14#define VERSION "v1.3.3"
15#define DATE "24 Jan, 2018"
16//
17
18#define PATH_PROJECT_FILES "TDEditor/Projects/"
19#define PATH_EXPORT_FILES "TDEditor/Exports/"
20#define PATH_RECORD_FILE "TDEditor/Records.txt"
21#define PATH_OBJECTS_FILE "TDEditor/ObjectsData.db"
22
23#define MAX_PROJECTS 32
24#define MAX_PROJECT_NAME 64
25
26#define MAX_GROUPS 32
27#define MAX_GROUP_NAME 32
28#define MAX_GROUP_TEXTDRAWS 64
29#define MAX_GROUP_TEXTDRAW_TEXT 256
30
31#define MAX_GROUP_TEXTDRAW_PREVIEW_CHARS 16
32
33#define MESSAGE_COLOR (0xfffd91ff)
34
35#define COL_WHITE "{ffffff}"
36#define COL_GREEN "{93ffbc}"
37#define COL_RED "{ff7f7f}"
38#define COL_ORANGE "{ffa172}"
39#define COL_BLUE "{96ceff}"
40#define COL_YELLOW "{f1ff96}"
41#define COL_GREY "{c4c4c4}"
42
43enum {
44 EDITING_NONE,
45 EDITING_POS,
46 EDITING_LETTER_SIZE,
47 EDITING_TEXT_SIZE,
48 EDITING_SHADOW_SIZE,
49 EDITING_OUTLINE_SIZE,
50 EDITING_PREVIEW_ROT,
51 EDITING_BACKGROUND_COLOR,
52 EDITING_TEXTDRAW_COLOR,
53 EDITING_BOX_COLOR,
54 EDITING_GROUP_POS
55};
56
57enum {
58 COLOR_ELEMENT_TEXTDRAW,
59 COLOR_ELEMENT_BOX,
60 COLOR_ELEMENT_BACKGROUND
61};
62
63enum E_GROUP {
64 E_GROUP_NAME[MAX_GROUP_NAME],
65 E_GROUP_TEXTDRAWS_COUNT,
66 bool:E_GROUP_VISIBLE
67};
68
69enum E_TEXTDRAW {
70 E_TEXTDRAW_SQLID,
71 Text:E_TEXTDRAW_ID,
72 E_TEXTDRAW_TEXT[MAX_GROUP_TEXTDRAW_TEXT],
73 Float:E_TEXTDRAW_X,
74 Float:E_TEXTDRAW_Y,
75 Float:E_TEXTDRAW_LETTERSIZE_X,
76 Float:E_TEXTDRAW_LETTERSIZE_Y,
77 Float:E_TEXTDRAW_TEXTSIZE_X,
78 Float:E_TEXTDRAW_TEXTSIZE_Y,
79 E_TEXTDRAW_ALIGNMENT,
80 E_TEXTDRAW_COLOR,
81 bool:E_TEXTDRAW_USE_BOX,
82 E_TEXTDRAW_BOX_COLOR,
83 E_TEXTDRAW_SHADOW,
84 E_TEXTDRAW_OUTLINE,
85 E_TEXTDRAW_BACKGROUND_COLOR,
86 E_TEXTDRAW_FONT,
87 bool:E_TEXTDRAW_PROPORTIONAL,
88 bool:E_TEXTDRAW_SELECTABLE,
89 E_TEXTDRAW_PREVIEW_MODEL,
90 Float:E_TEXTDRAW_PREVIEW_ROT_X,
91 Float:E_TEXTDRAW_PREVIEW_ROT_Y,
92 Float:E_TEXTDRAW_PREVIEW_ROT_Z,
93 Float:E_TEXTDRAW_PREVIEW_ROT_ZOOM,
94 E_TEXTDRAW_PREVIEW_VEH_COLOR1,
95 E_TEXTDRAW_PREVIEW_VEH_COLOR2,
96 bool:E_TEXTDRAW_TYPE_PLAYER
97};
98
99enum E_COLOR {
100 E_COLOR_NAME[32],
101 E_COLOR_CODE
102};
103
104new const COLORS[][E_COLOR] = {
105 {"Ðнтичный белый", 0xFAEBD7FF},
106 {"Ðква", 0x00FFFFFF},
107 {"Ðквамарин", 0x7FFFD4FF},
108 {"Лазурный", 0xF0FFFFFF},
109 {"Бежевый", 0xF5F5DCFF},
110 {"Белый миндаль", 0xFFE4C4FF},
111 {"Чёрный", 0x000000FF},
112 {"Бланшированный миндаль", 0xFFEBCDFF},
113 {"Синий", 0x0000FFFF},
114 {"Сине-фиолетовый", 0x8A2BE2FF},
115 {"Коричневый", 0xA52A2AFF},
116 {"Дерево", 0xDEB887FF},
117 {"Серовато-Ñиний", 0x5F9EA0FF},
118 {"Шартрёз", 0x7FFF00FF},
119 {"Шоколадный", 0xD2691EFF},
120 {"Коралловый", 0xFF7F50FF},
121 {"ВаÑильковый", 0x6495EDFF},
122 {"Светло-жёлтый", 0xFFF8DCFF},
123 {"Малиновый", 0xDC143CFF},
124 {"Голубой", 0x00FFFFFF},
125 {"Тёмно-Ñиний", 0x00008BFF},
126 {"Тёмно-голубой", 0x008B8BFF},
127 {"Тёмный золотиÑтый", 0xB8860BFF},
128 {"Тёмно-Ñерый", 0xA9A9A9FF},
129 {"Тёмно-зелёный", 0x006400FF},
130 {"Тёмный хаки", 0xBDB76BFF},
131 {"Тёмно-пурпурный", 0x8B008BFF},
132 {"Тёмный оливковый зеленый", 0x556B2FFF},
133 {"Тёмно-оранжевый", 0xFF8C00FF},
134 {"Ð¢Ñ‘Ð¼Ð½Ð°Ñ Ð¾Ñ€Ñ…Ð¸Ð´ÐµÑ", 0x9932CCFF},
135 {"Тёмно-краÑный", 0x8B0000FF},
136 {"Тёмный розово-оранжевый", 0xE9967AFF},
137 {"Ð¢Ñ‘Ð¼Ð½Ð°Ñ Ð¼Ð¾Ñ€ÑÐºÐ°Ñ Ð²Ð¾Ð»Ð½Ð°", 0x8FBC8FFF},
138 {"Сланцевый тёмно-Ñиний", 0x483D8BFF},
139 {"Сланцевый тёмно-Ñерый", 0x2F4F4FFF},
140 {"Тёмно-бирюзовый", 0x00CED1FF},
141 {"Тёмно-фиолетовый",0x9400D3FF},
142 {"Тёмно-розовый", 0xFF1493FF},
143 {"Лазурно-голубой", 0x00BFFFFF},
144 {"ТуÑкло-Ñерый", 0x696969FF},
145 {"Ярко-лазурный", 0x1E90FFFF},
146 {"Кирпичный", 0xB22222FF},
147 {"Цветочный белый", 0xFFFAF0FF},
148 {"ЛеÑной зелёный", 0x228B22FF},
149 {"ФукÑиÑ", 0xFF00FFFF},
150 {"Бледно-Ñерый", 0xDCDCDCFF},
151 {"Призрачный белый",0xF8F8FFFF},
152 {"Золотой", 0xFFD700FF},
153 {"ЗолотиÑтый", 0xDAA520FF},
154 {"Серый", 0x808080FF},
155 {"Зелёный", 0x008000FF},
156 {"Жёлто-зеленый", 0xADFF2FFF},
157 {"Ðектарный", 0xF0FFF0FF},
158 {"Ярко-розовый", 0xFF69B4FF},
159 {"ИндийÑкий краÑный ", 0xCD5C5CFF},
160 {"Индиго", 0x4B0082FF},
161 {"Ð¡Ð»Ð¾Ð½Ð¾Ð²Ð°Ñ ÐºÐ¾Ñть", 0xFFFFF0FF},
162 {"Хаки", 0xF0E68CFF},
163 {"Лавандовый", 0xE6E6FAFF},
164 {"Светло-лавандовый", 0xFFF0F5FF},
165 {"Зелёный газон", 0x7CFC00FF},
166 {"Светлый лимонный",0xFFFACDFF},
167 {"Светло-Ñиний", 0xADD8E6FF},
168 {"Светло-коралловый", 0xF08080FF},
169 {"Светло-голубой", 0xE0FFFFFF},
170 {"Светлый жёлто-золотиÑтый", 0xFAFAD2FF},
171 {"Светло-Ñерый", 0xD3D3D3FF},
172 {"Светло-зелёный", 0x90EE90FF},
173 {"Светло-розовый", 0xFFB6C1FF},
174 {"Светлый розово-оранжевый", 0xFFA07AFF},
175 {"Ð¡Ð²ÐµÑ‚Ð»Ð°Ñ Ð¼Ð¾Ñ€ÑÐºÐ°Ñ Ð²Ð¾Ð»Ð½Ð°", 0x20B2AAFF},
176 {"Бледно-лазурный", 0x87CEFAFF},
177 {"Сланцевый Ñветло-Ñерый", 0x778899FF},
178 {"Стальной Ñветло-Ñиний", 0xB0C4DEFF},
179 {"Светло-жёлтый", 0xFFFFE0FF},
180 {"Лаймовый", 0x00FF00FF},
181 {"Лаймово-зелёный", 0x32CD32FF},
182 {"Бельё", 0xFAF0E6FF},
183 {"Маджента", 0xFF00FFFF},
184 {"Каштановый", 0x800000FF},
185 {"Тёмный аквамарин",0x66CDAAFF},
186 {"Тёмно-Ñиний", 0x0000CDFF},
187 {"Ð¢Ñ‘Ð¼Ð½Ð°Ñ Ð¾Ñ€Ñ…Ð¸Ð´ÐµÑ", 0xBA55D3FF},
188 {"Тёмно-фиолетовый",0x9370DBFF},
189 {"Ð¢Ñ‘Ð¼Ð½Ð°Ñ Ð¼Ð¾Ñ€ÑÐºÐ°Ñ Ð²Ð¾Ð»Ð½Ð°", 0x3CB371FF},
190 {"Сланцевый тёмно-Ñиний", 0x7B68EEFF},
191 {"Тёмный веÑенний зелёный", 0x00FA9AFF},
192 {"Тёмно-бирюзовый", 0x48D1CCFF},
193 {"КраÑно-фиолетовый", 0xC71585FF},
194 {"Полуночный Ñиний",0x191970FF},
195 {"Кремовый", 0xF5FFFAFF},
196 {"Бледно-розовый", 0xFFE4E1FF},
197 {"Бело-оранжевый", 0xFFE4B5FF},
198 {"Оранжево-белый", 0xFFDEADFF},
199 {"Тёмно-Ñиний", 0x000080FF},
200 {"Бледно-жёлтый", 0xFDF5E6FF},
201 {"Оливковый", 0x808000FF},
202 {"Серый оливковый", 0x6B8E23FF},
203 {"Оранжевый", 0xFFA500FF},
204 {"Оранжево-краÑный",0xFF4500FF},
205 {"ОрхидеÑ", 0xDA70D6FF},
206 {"Бледно-золотиÑтый", 0xEEE8AAFF},
207 {"Бледно-зелёный", 0x98FB98FF},
208 {"Ð‘Ð»ÐµÐ´Ð½Ð°Ñ Ð±Ð¸Ñ€ÑŽÐ·Ð°", 0xAFEEEEFF},
209 {"Бледно-фиолетовый краÑный", 0xDB7093FF},
210 {"ПапайÑ", 0xFFEFD5FF},
211 {"ПерÑиковый", 0xFFDAB9FF},
212 {"Светло-коричневый", 0xCD853FFF},
213 {"Розовый", 0xFFC0CBFF},
214 {"Сливовый", 0xDDA0DDFF},
215 {"Бледно-Ñиний", 0xB0E0E6FF},
216 {"Пурпурный", 0x800080FF},
217 {"Тёмно-пурпурный", 0x663399FF},
218 {"КраÑный", 0xFF0000FF},
219 {"Розово-коричневый", 0xBC8F8FFF},
220 {"КоролевÑкий Ñиний", 0x4169E1FF},
221 {"Тёмно-коричневый", 0x8B4513FF},
222 {"Розово-оранжевый",0xFA8072FF},
223 {"ПеÑчано-коричневый", 0xF4A460FF},
224 {"МорÑÐºÐ°Ñ Ð²Ð¾Ð»Ð½Ð°", 0x2E8B57FF},
225 {"МорÑÐºÐ°Ñ Ñ€Ð°ÐºÑƒÑˆÐºÐ°", 0xFFF5EEFF},
226 {"Охра", 0xA0522DFF},
227 {"СеребрÑный", 0xC0C0C0FF},
228 {"Голубое небо", 0x87CEEBFF},
229 {"Сланцевый Ñиний", 0x6A5ACDFF},
230 {"Сланцевый Ñерый", 0x708090FF},
231 {"Снежный", 0xFFFAFAFF},
232 {"ВеÑенний зелёный",0x00FF7FFF},
233 {"Стальной Ñиний", 0x4682B4FF},
234 {"Бледно-коричневый", 0xD2B48CFF},
235 {"Сине-зелёный", 0x008080FF},
236 {"Чертополох", 0xD8BFD8FF},
237 {"Томатный", 0xFF6347FF},
238 {"Бирюзовый", 0x40E0D0FF},
239 {"Фиолетовый", 0xEE82EEFF},
240 {"Пшеничный", 0xF5DEB3FF},
241 {"Белый", 0xFFFFFFFF},
242 {"Белый дым", 0xF5F5F5FF},
243 {"Жёлтый", 0xFFFF00FF},
244 {"Жёлто-зелёный", 0x9ACD32FF}
245};
246
247new projectName[MAX_PROJECT_NAME];
248new DB:projectDB;
249new bool:showTextDrawCmds;
250
251new playerEditing[MAX_PLAYERS];
252new playerEditingTimer[MAX_PLAYERS];
253new PlayerText:playerEditingTextDraw[MAX_PLAYERS];
254new playerCurrentGroup[MAX_PLAYERS];
255new playerCurrentTextDraw[MAX_PLAYERS];
256
257new groupData[MAX_GROUPS][E_GROUP];
258new groupTextDrawData[MAX_GROUPS][MAX_GROUP_TEXTDRAWS][E_TEXTDRAW];
259new groupsCount;
260
261ReturnDate(timestamp) {
262 new year, month, day, unused;
263 TimestampToDate(timestamp, year, month, day, unused, unused, unused, 0);
264 #pragma unused unused
265
266 static const MONTH_NAMES[][] = {
267 "ЯнварÑ", "ФевралÑ", "Марта", "ÐпрелÑ", "МаÑ", "ИюнÑ", "ИюлÑ", "ÐвгуÑта", "СентÑбрÑ", "ОктÑбрÑ", "ÐоÑбрÑ", "ДекабрÑ"
268 };
269
270 new date[32];
271 if (month < 1 || month > sizeof (MONTH_NAMES)) {
272 format(date, sizeof (date), "%i/%i/%i", day, month, year);
273 }
274 else {
275 format(date, sizeof (date), "%i %s, %i", day, MONTH_NAMES[(month - 1)], year);
276 }
277 return date;
278}
279
280ResetGroupData(groupid) {
281 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
282 TextDrawDestroy(groupTextDrawData[groupid][i][E_TEXTDRAW_ID]);
283 groupTextDrawData[groupid][i][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
284 }
285
286 groupData[groupid][E_GROUP_NAME][0] = EOS;
287 groupData[groupid][E_GROUP_TEXTDRAWS_COUNT] = 0;
288 groupData[groupid][E_GROUP_VISIBLE] = true;
289}
290
291CreateGroupTextDraw(groupid, textdrawid) {
292 #define this(%0) \
293 groupTextDrawData[groupid][textdrawid][%0]
294
295 if (this(E_TEXTDRAW_ID) != Text:INVALID_TEXT_DRAW) {
296 TextDrawDestroy(this(E_TEXTDRAW_ID));
297 }
298 this(E_TEXTDRAW_ID) = TextDrawCreate(this(E_TEXTDRAW_X), this(E_TEXTDRAW_Y), this(E_TEXTDRAW_TEXT));
299
300 TextDrawLetterSize(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_LETTERSIZE_X), this(E_TEXTDRAW_LETTERSIZE_Y));
301 TextDrawTextSize(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_TEXTSIZE_X), this(E_TEXTDRAW_TEXTSIZE_Y));
302 TextDrawAlignment(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_ALIGNMENT));
303 TextDrawColor(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_COLOR));
304 TextDrawUseBox(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_USE_BOX));
305 TextDrawBoxColor(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_BOX_COLOR));
306 TextDrawSetShadow(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_SHADOW));
307 TextDrawSetOutline(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_OUTLINE));
308 TextDrawBackgroundColor(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_BACKGROUND_COLOR));
309 TextDrawFont(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_FONT));
310 TextDrawSetProportional(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_PROPORTIONAL));
311 TextDrawSetSelectable(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_SELECTABLE));
312 TextDrawSetPreviewModel(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_PREVIEW_MODEL));
313 TextDrawSetPreviewRot(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_PREVIEW_ROT_X), this(E_TEXTDRAW_PREVIEW_ROT_Y), this(E_TEXTDRAW_PREVIEW_ROT_Z), this(E_TEXTDRAW_PREVIEW_ROT_ZOOM));
314 TextDrawSetPreviewVehCol(this(E_TEXTDRAW_ID), this(E_TEXTDRAW_PREVIEW_VEH_COLOR1), this(E_TEXTDRAW_PREVIEW_VEH_COLOR2));
315
316 if (groupData[groupid][E_GROUP_VISIBLE]) {
317 TextDrawShowForAll(this(E_TEXTDRAW_ID));
318 }
319
320 #undef this
321}
322
323RGBA(red, green, blue, alpha) {
324 return ((red * 16777216) + (green * 65536) + (blue * 256) + alpha);
325}
326
327HexToInt(string[]) {
328 new cur = 1;
329 new res = 0;
330 for (new i = strlen(string); i > 0; i--) {
331 if (string[i - 1] < 58) {
332 res = res + cur * (string[i - 1] - 48);
333 }
334 else {
335 res = res + cur * (string[i - 1] - 65 + 10);
336 }
337
338 cur = cur * 16;
339 }
340 return res;
341}
342
343forward ShowPlayerGroupDialog(playerid, groupid);
344public ShowPlayerGroupDialog(playerid, groupid) {
345 static string[512 + (MAX_GROUP_TEXTDRAWS * (MAX_GROUP_TEXTDRAW_TEXT + 32))];
346 string = ""COL_GREEN"Создать новый текÑтдрав\t"COL_GREY"Добавление текÑтдрава в группу (макÑимальное количеÑтво текÑтдравов в группе: "#MAX_GROUP_TEXTDRAWS")\n\
347 "COL_YELLOW"Изменить позицию группы\t"COL_GREY"Одновременно изменÑет позицию вÑех текÑтдравов в группе\n";
348
349 if (groupData[groupid][E_GROUP_VISIBLE]) {
350 strcat(string, ""COL_YELLOW"Изменить видимоÑть группы\t"COL_GREY"ТекущаÑ: "COL_GREEN"ВКЛ\n");
351 }
352 else {
353 strcat(string, ""COL_YELLOW"Изменить видимоÑть группы\t"COL_GREY"ТекущаÑ: "COL_RED"ВЫКЛ\n");
354 }
355
356 strcat(string, ""COL_YELLOW"Изменить название группы\t"COL_GREY"Текущее: '"COL_GREEN"");
357 strcat(string, groupData[groupid][E_GROUP_NAME]);
358 strcat(string, ""COL_GREY"'\n");
359
360 strcat(string, ""COL_ORANGE"Скопировать группу\t"COL_GREY"Скопировать ÑвойÑтва группы в новую пуÑтую группу\n\
361 "COL_RED"Удалить группу\t"COL_GREY"Удалить группу Ñо вÑеми текÑтдравами в ней\n");
362
363 new previewChars[MAX_GROUP_TEXTDRAW_PREVIEW_CHARS + 4];
364 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
365 strmid(previewChars, groupTextDrawData[groupid][i][E_TEXTDRAW_TEXT], 0, MAX_GROUP_TEXTDRAW_PREVIEW_CHARS);
366 if (strlen(groupTextDrawData[groupid][i][E_TEXTDRAW_TEXT]) > MAX_GROUP_TEXTDRAW_PREVIEW_CHARS) {
367 strcat(previewChars, "...");
368 }
369
370 switch (groupTextDrawData[groupid][i][E_TEXTDRAW_FONT]) {
371 case 0, 1, 2, 3: {
372 format(string, sizeof (string), "%sТекÑÑ‚ #%i: '%s'\n", string, i, previewChars);
373 }
374
375 case 4: {
376 format(string, sizeof (string), "%sТекÑÑ‚ #%i: '%s' (Спрайт)\n", string, i, previewChars);
377 }
378
379 case 5: {
380 format(string, sizeof (string), "%sТекÑÑ‚ #%i: '%s' (Превью модель)\n", string, i, previewChars);
381 }
382 }
383 }
384
385 playerCurrentGroup[playerid] = groupid;
386 return Dialog_Show(playerid, GROUP_MENU, DIALOG_STYLE_TABLIST, "TDEditor: Меню группы", string, "Выбрать", "Ðазад");
387}
388
389forward ShowPlayerTextDrawDialog(playerid, textdrawid);
390public ShowPlayerTextDrawDialog(playerid, textdrawid) {
391 new groupid = playerCurrentGroup[playerid];
392
393 static string[1024];
394 string = "СвойÑтво\tЗначение\n";
395
396 new previewChars[MAX_GROUP_TEXTDRAW_PREVIEW_CHARS + 4];
397 strmid(previewChars, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], 0, MAX_GROUP_TEXTDRAW_PREVIEW_CHARS);
398 if (strlen(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT]) > MAX_GROUP_TEXTDRAW_PREVIEW_CHARS) {
399 strcat(previewChars, "...");
400 }
401
402 format(string, sizeof (string),
403 "%s\
404 ТекÑÑ‚ и позициÑ\t'%s'\n",
405 string,
406 previewChars,
407 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y]);
408
409 switch (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT]) {
410 case 0, 1, 2, 3: {
411 format(string, sizeof (string), "%sШрифт\t"COL_GREY"%i (ТекÑÑ‚)\n", string, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT]);
412 }
413
414 case 4: {
415 strcat(string, "Шрифт\t"COL_GREY"4 (Спрайт)\n");
416 }
417
418 case 5: {
419 strcat(string, "Шрифт\t"COL_GREY"5 (Превью модель)\n");
420 }
421
422 default: {
423 strcat(string, "Шрифт\t"COL_GREY"ÐеизвеÑтно\n");
424 }
425 }
426
427 switch (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ALIGNMENT]) {
428 case 1: {
429 strcat(string, "Выравнивание\t"COL_GREY"1 (По левому краю)\n");
430 }
431
432 case 2: {
433 strcat(string, "Выравнивание\t"COL_GREY"2 (По центру)\n");
434 }
435
436 case 3: {
437 strcat(string, "Выравнивание\t"COL_GREY"3 (По правому краю)\n");
438 }
439
440 default: {
441 strcat(string, "Выравнивание\t"COL_GREY"ÐеизвеÑтно\n");
442 }
443 }
444
445 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL]) {
446 strcat(string, "ПропорциональноÑть\t"COL_GREEN"ВКЛ\n");
447 }
448 else {
449 strcat(string, "ПропорциональноÑть\t"COL_RED"ВЫКЛ\n");
450 }
451
452 format(string, sizeof (string),
453 "%s\
454 Тень\t"COL_GREY"Размер: %i\n\
455 Обводка\t"COL_GREY"Размер: %i\n\
456 Обводка/Цвет тени\t{%06x}ПредпроÑмотр\n",
457 string,
458 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW],
459 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE],
460 (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] >>> 8));
461
462 format(string, sizeof (string),
463 "%s\
464 Размер текÑта\t"COL_GREY"%0.4f, %0.4f\n\
465 Цвет текÑта/текÑтдрава\t{%06x}ПредпроÑмотр\n",
466 string,
467 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y],
468 (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] >>> 8));
469
470 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX]) {
471 strcat(string, "ИÑпользовать box\t"COL_GREEN"ВКЛ\n");
472 }
473 else {
474 strcat(string, "ИÑпользовать box\t"COL_RED"ВЫКЛ\n");
475 }
476
477 format(string, sizeof (string),
478 "%s\
479 Размер Box'а\t"COL_GREY"%0.4f, %0.4f\n\
480 Цвет Box'а\t{%06x}ПредпроÑмотр\n",
481 string,
482 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y],
483 (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] >>> 8));
484
485 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE]) {
486 strcat(string, "КликабельноÑть\t"COL_GREEN"ВКЛ\n");
487 }
488 else {
489 strcat(string, "КликабельноÑть\t"COL_RED"ВЫКЛ\n");
490 }
491
492 strcat(string, "Опции превью модели\n");
493
494 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TYPE_PLAYER]) {
495 strcat(string, "Тип текÑтдрава\t"COL_BLUE"ПЕРСОÐÐЛЬÐЫЙ\n");
496 }
497 else {
498 strcat(string, "Тип текÑтдрава\t"COL_YELLOW"ГЛОБÐЛЬÐЫЙ\n");
499 }
500
501 strcat(string,
502 ""COL_ORANGE"Скопировать текÑтдрав\n\
503 "COL_RED"Удалить текÑтдрав\n");
504
505 playerCurrentTextDraw[playerid] = textdrawid;
506 return Dialog_Show(playerid, TEXTDRAW_MENU, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Меню текÑтдрава", string, "Выбрать", "Ðазад");
507}
508
509ExportProject(const filename[]) {
510 new File:h = fopen(filename, io_write);
511 if (!h) {
512 return 0;
513 }
514
515 new string[1024];
516 new globalTextdrawsCount;
517 new playerTextdrawsCount;
518 new bool:isThereAnyGlobalTextDraws;
519 new bool:isThereAnyPlayerTextDraws;
520 new pos;
521 new len;
522 new varname[41];
523 new idx;
524
525 fwrite(h, "// ТекÑтдрав(Ñ‹) Ñоздан(Ñ‹) при помощи Gammix's TextDraw editor\r\n");
526 fwrite(h, "#include <a_samp>\r\n\r\n");
527
528 fwrite(h, "// объÑвление переменной в начале Ñкрипта\r\n");
529 for (new i; i < groupsCount; i++) {
530 format(string, sizeof (string), "/*\r\n** группа текÑтдравов: \"%s\"\r\n*/\r\n", groupData[i][E_GROUP_NAME]);
531 fwrite(h, string);
532
533 globalTextdrawsCount = 0;
534 playerTextdrawsCount = 0;
535 for (new x; x < groupData[i][E_GROUP_TEXTDRAWS_COUNT]; x++) {
536
537 len = strlen(groupTextDrawData[i][x][E_TEXTDRAW_TEXT]);
538 while ((pos = strfind(groupTextDrawData[i][x][E_TEXTDRAW_TEXT], "\"")) != -1) {
539 strdel(groupTextDrawData[i][x][E_TEXTDRAW_TEXT], pos, (pos + 1));
540 strins(groupTextDrawData[i][x][E_TEXTDRAW_TEXT], "''", pos, len);
541 }
542
543 if (groupTextDrawData[i][x][E_TEXTDRAW_TYPE_PLAYER]) {
544 playerTextdrawsCount++;
545
546 isThereAnyPlayerTextDraws = true;
547 }
548 else {
549 globalTextdrawsCount++;
550
551 isThereAnyGlobalTextDraws = true;
552 }
553 }
554
555 if (globalTextdrawsCount == 1) {
556 format(string, sizeof (string), "new Text:%sTD;\r\n", groupData[i][E_GROUP_NAME]);
557 fwrite(h, string);
558 }
559 else if (globalTextdrawsCount > 1) {
560 format(string, sizeof (string), "new Text:%sTD[%i];\r\n", groupData[i][E_GROUP_NAME], globalTextdrawsCount);
561 fwrite(h, string);
562 }
563
564 if (playerTextdrawsCount == 1) {
565 format(string, sizeof (string), "new PlayerText:%sPTD[MAX_PLAYERS];\r\n", groupData[i][E_GROUP_NAME]);
566 fwrite(h, string);
567 }
568 else if (playerTextdrawsCount > 1) {
569 format(string, sizeof (string), "new PlayerText:%sPTD[MAX_PLAYERS][%i];\r\n", groupData[i][E_GROUP_NAME], playerTextdrawsCount);
570 fwrite(h, string);
571 }
572 }
573
574 fwrite(h, "\r\n");
575
576 if (isThereAnyGlobalTextDraws) {
577 fwrite(h, "// Ñоздание глобального(ых) текÑтдрава(ов) предпочтительнее в \"OnGameModeInit\"\r\n");
578 fwrite(h, "public OnGameModeInit() {\r\n");
579
580 for (new i; i < groupsCount; i++) {
581 globalTextdrawsCount = 0;
582 for (new x; x < groupData[i][E_GROUP_TEXTDRAWS_COUNT]; x++) {
583 if (!groupTextDrawData[i][x][E_TEXTDRAW_TYPE_PLAYER]) {
584 globalTextdrawsCount++;
585 }
586 }
587
588 if (globalTextdrawsCount == 0) {
589 continue;
590 }
591
592 format(string, sizeof (string), "\t/*\r\n\t** группа текÑтдравов: \"%s\"\r\n\t*/\r\n", groupData[i][E_GROUP_NAME]);
593 fwrite(h, string);
594
595 idx = 0;
596 for (new x; x < groupData[i][E_GROUP_TEXTDRAWS_COUNT]; x++) {
597 if (groupTextDrawData[i][x][E_TEXTDRAW_TYPE_PLAYER]) {
598 continue;
599 }
600
601 if (globalTextdrawsCount == 1) {
602 format(varname, sizeof (varname), "%sTD", groupData[i][E_GROUP_NAME]);
603 }
604 else {
605 format(varname, sizeof (varname), "%sTD[%i]", groupData[i][E_GROUP_NAME], idx++);
606 }
607
608 format(string, sizeof (string), "\t%s = TextDrawCreate(%0.4f, %0.4f, \"%s\");\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_X], groupTextDrawData[i][x][E_TEXTDRAW_Y], groupTextDrawData[i][x][E_TEXTDRAW_TEXT]);
609 fwrite(h, string);
610
611 format(string, sizeof (string), "\tTextDrawFont(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_FONT]);
612 fwrite(h, string);
613
614 format(string, sizeof (string), "\tTextDrawLetterSize(%s, %0.4f, %0.4f);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[i][x][E_TEXTDRAW_LETTERSIZE_Y]);
615 fwrite(h, string);
616
617 if (groupTextDrawData[i][x][E_TEXTDRAW_ALIGNMENT] != 1) {
618 format(string, sizeof (string), "\tTextDrawAlignment(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_ALIGNMENT]);
619 fwrite(h, string);
620 }
621
622 format(string, sizeof (string), "\tTextDrawColor(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_COLOR]);
623 fwrite(h, string);
624
625 format(string, sizeof (string), "\tTextDrawSetShadow(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_SHADOW]);
626 fwrite(h, string);
627
628 format(string, sizeof (string), "\tTextDrawSetOutline(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_OUTLINE]);
629 fwrite(h, string);
630
631 format(string, sizeof (string), "\tTextDrawBackgroundColor(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_BACKGROUND_COLOR]);
632 fwrite(h, string);
633
634 format(string, sizeof (string), "\tTextDrawSetProportional(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_PROPORTIONAL]);
635 fwrite(h, string);
636
637 if (groupTextDrawData[i][x][E_TEXTDRAW_USE_BOX]) {
638 format(string, sizeof (string), "\tTextDrawUseBox(%s, 1);\r\n", varname);
639 fwrite(h, string);
640 format(string, sizeof (string), "\tTextDrawBoxColor(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_BOX_COLOR]);
641 fwrite(h, string);
642 }
643
644 format(string, sizeof (string), "\tTextDrawTextSize(%s, %0.4f, %0.4f);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[i][x][E_TEXTDRAW_TEXTSIZE_Y]);
645 fwrite(h, string);
646
647 if (groupTextDrawData[i][x][E_TEXTDRAW_FONT] == 5) {
648 format(string, sizeof (string), "\tTextDrawSetPreviewModel(%s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_MODEL]);
649 fwrite(h, string);
650 format(string, sizeof (string), "\tTextDrawSetPreviewRot(%s, %0.4f, %0.4f, %0.4f, %0.4f);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
651 fwrite(h, string);
652 }
653
654 if (groupTextDrawData[i][x][E_TEXTDRAW_SELECTABLE]) {
655 format(string, sizeof (string), "\tTextDrawSetSelectable(%s, 1);\r\n", varname);
656 fwrite(h, string);
657 }
658
659 fwrite(h, "\r\n");
660 }
661 }
662
663 fwrite(h, "\treturn 1;\r\n");
664 fwrite(h, "}\r\n\r\n");
665 }
666
667 if (isThereAnyPlayerTextDraws) {
668 fwrite(h, "// Ñоздание перÑональных текÑтдрава(ов) предпочтительнее в \"OnPlayerConnect\"\r\n");
669 fwrite(h, "public OnPlayerConnect(playerid) {\r\n");
670
671 for (new i; i < groupsCount; i++) {
672 playerTextdrawsCount = 0;
673 for (new x; x < groupData[i][E_GROUP_TEXTDRAWS_COUNT]; x++) {
674 if (groupTextDrawData[i][x][E_TEXTDRAW_TYPE_PLAYER]) {
675 playerTextdrawsCount++;
676 }
677 }
678
679 if (playerTextdrawsCount == 0) {
680 continue;
681 }
682
683 format(string, sizeof (string), "\t/*\r\n\t** перÑÐ¾Ð½Ð°Ð»ÑŒÐ½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° текÑтдравов: \"%s\"\r\n\t*/\r\n", groupData[i][E_GROUP_NAME]);
684 fwrite(h, string);
685
686 idx = 0;
687 for (new x; x < groupData[i][E_GROUP_TEXTDRAWS_COUNT]; x++) {
688 if (!groupTextDrawData[i][x][E_TEXTDRAW_TYPE_PLAYER]) {
689 continue;
690 }
691
692 if (playerTextdrawsCount == 1) {
693 format(varname, sizeof (varname), "%sPTD[playerid]", groupData[i][E_GROUP_NAME]);
694 }
695 else {
696 format(varname, sizeof (varname), "%sPTD[playerid][%i]", groupData[i][E_GROUP_NAME], idx++);
697 }
698
699 format(string, sizeof (string), "\t%s = CreatePlayerTextDraw(playerid, %0.4f, %0.4f, \"%s\");\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_X], groupTextDrawData[i][x][E_TEXTDRAW_Y], groupTextDrawData[i][x][E_TEXTDRAW_TEXT]);
700 fwrite(h, string);
701
702 format(string, sizeof (string), "\tPlayerTextDrawFont(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_FONT]);
703 fwrite(h, string);
704
705 format(string, sizeof (string), "\tPlayerTextDrawLetterSize(playerid, %s, %0.4f, %0.4f);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[i][x][E_TEXTDRAW_LETTERSIZE_Y]);
706 fwrite(h, string);
707
708 if (groupTextDrawData[i][x][E_TEXTDRAW_ALIGNMENT] != 1) {
709 format(string, sizeof (string), "\tPlayerTextDrawAlignment(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_ALIGNMENT]);
710 fwrite(h, string);
711 }
712
713 format(string, sizeof (string), "\tPlayerTextDrawColor(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_COLOR]);
714 fwrite(h, string);
715
716 format(string, sizeof (string), "\tPlayerTextDrawSetShadow(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_SHADOW]);
717 fwrite(h, string);
718
719 format(string, sizeof (string), "\tPlayerTextDrawSetOutline(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_OUTLINE]);
720 fwrite(h, string);
721
722 format(string, sizeof (string), "\tPlayerTextDrawBackgroundColor(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_BACKGROUND_COLOR]);
723 fwrite(h, string);
724
725 format(string, sizeof (string), "\tPlayerTextDrawSetProportional(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_PROPORTIONAL]);
726 fwrite(h, string);
727
728 if (groupTextDrawData[i][x][E_TEXTDRAW_USE_BOX]) {
729 format(string, sizeof (string), "\tPlayerTextDrawUseBox(playerid, %s, 1);\r\n", varname);
730 fwrite(h, string);
731 format(string, sizeof (string), "\tPlayerTextDrawBoxColor(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_BOX_COLOR]);
732 fwrite(h, string);
733 }
734
735 format(string, sizeof (string), "\tPlayerTextDrawTextSize(playerid, %s, %0.4f, %0.4f);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[i][x][E_TEXTDRAW_TEXTSIZE_Y]);
736 fwrite(h, string);
737
738 if (groupTextDrawData[i][x][E_TEXTDRAW_FONT] == 5) {
739 format(string, sizeof (string), "\tPlayerTextDrawSetPreviewModel(playerid, %s, %i);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_MODEL]);
740 fwrite(h, string);
741 format(string, sizeof (string), "\tPlayerTextDrawSetPreviewRot(playerid, %s, %0.4f, %0.4f, %0.4f, %0.4f);\r\n", varname, groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[i][x][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
742 fwrite(h, string);
743 }
744
745 if (groupTextDrawData[i][x][E_TEXTDRAW_SELECTABLE]) {
746 format(string, sizeof (string), "\tPlayerTextDrawSetSelectable(playerid, %s, 1);\r\n", varname);
747 fwrite(h, string);
748 }
749
750 fwrite(h, "\r\n");
751 }
752 }
753
754 fwrite(h, "\treturn 1;\r\n");
755 fwrite(h, "}\r\n\r\n");
756 }
757
758 fclose(h);
759 return 1;
760}
761
762SaveProjectGroupTextDraw(groupid, textdrawid) {
763 new string[1024];
764 string = "UPDATE %s SET \
765 text = '%q', \
766 x = '%f', y = '%f', \
767 letter_x = '%f', letter_y = '%f', \
768 text_x = '%f', text_y = '%f', \
769 alignment = '%i', \
770 color = '%i', \
771 usebox = '%i', \
772 box_color = '%i', \
773 shadow = '%i', \
774 outline = '%i', \
775 background_color = '%i', \
776 font = '%i', \
777 proportional = '%i', \
778 selectable = '%i', \
779 preview_model = '%i', \
780 rot_x = '%f', rot_y = '%f', rot_z = '%f', rot_zoom = '%f', \
781 veh_color1 = '%i', veh_color2 = '%i', \
782 type_player = '%i' \
783 WHERE id = '%i'";
784 format(string, sizeof (string), string,
785 groupData[groupid][E_GROUP_NAME],
786 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT],
787 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y],
788 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y],
789 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y],
790 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ALIGNMENT],
791 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR],
792 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX],
793 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR],
794 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW],
795 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE],
796 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR],
797 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT],
798 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL],
799 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE],
800 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_MODEL],
801 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM],
802 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR1], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR2],
803 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TYPE_PLAYER],
804 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SQLID]);
805 db_query(projectDB, string);
806}
807
808SaveProjectGroup(groupid) {
809 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
810 SaveProjectGroupTextDraw(groupid, i);
811 }
812
813 new string[256] = "UPDATE GROUP_SETTINGS SET visibility = %i WHERE groupname = '%s'";
814 format(string, sizeof (string), string, groupData[groupid][E_GROUP_VISIBLE], groupData[groupid][E_GROUP_NAME]);
815 db_query(projectDB, string);
816}
817
818SaveProject() {
819 for (new i; i < groupsCount; i++) {
820 SaveProjectGroup(i);
821 }
822}
823
824public OnFilterScriptInit() {
825 printf("\n==========================================\n");
826
827 if (!fexist(PATH_PROJECT_FILES)) {
828 printf("[TDEditor.pwn] - Ошибка: Путь \"%s\" не ÑущеÑтвует. Ваши проекты не будут Ñохранены/загружены.", PATH_PROJECT_FILES);
829 }
830
831 if (!fexist(PATH_EXPORT_FILES)) {
832 printf("[TDEditor.pwn] - Ошибка: Путь \"%s\" не ÑущеÑтвует. Ваши проекты не будут ÑкÑпортированы.", PATH_EXPORT_FILES);
833 }
834
835 if (!fexist(PATH_RECORD_FILE)) {
836 new File:h = fopen(PATH_RECORD_FILE, io_write);
837 if (!h) {
838 printf("[TDEditor.pwn] - Ошибка: Путь \"%s\" не ÑущеÑтвует. СпиÑок ваших проектов не будет ÑохранÑть/загружать Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¾Ð² в качеÑтве иÑтории.", PATH_RECORD_FILE);
839 }
840 else {
841 fclose(h);
842 }
843 }
844
845 if (!fexist(PATH_OBJECTS_FILE)) {
846 printf("[TDEditor.pwn] - Предупреждение: Путь \"%s\" не ÑущеÑтвует. Ð’Ñ‹ не можете иÑкать модели объектов в Опции превью моделей; доÑтупны только modelids.", PATH_OBJECTS_FILE);
847 }
848
849 printf("[TDEditor.pwn] - Loaded "#VERSION" (updated: "#DATE") - By Gammix");
850
851 printf("\n==========================================\n");
852
853 projectDB = DB:0;
854 showTextDrawCmds = true;
855
856 for (new i; i < MAX_GROUPS; i++) {
857 for (new x; x < MAX_GROUP_TEXTDRAWS; x++) {
858 groupTextDrawData[i][x][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
859 }
860
861 ResetGroupData(i);
862 }
863 groupsCount = 0;
864
865 for (new i; i < MAX_PLAYERS; i++) {
866 playerEditing[i] = EDITING_NONE;
867 playerEditingTimer[i] = -1;
868 }
869 return 1;
870}
871
872public OnFilterScriptExit() {
873 if (projectDB) {
874 SaveProject();
875 db_close(projectDB);
876 projectDB = DB:0;
877 }
878
879 for (new i; i < groupsCount; i++) {
880 ResetGroupData(i);
881 }
882 groupsCount = 0;
883
884 for (new i; i < MAX_PLAYERS; i++) {
885 playerEditing[i] = EDITING_NONE;
886 playerEditingTimer[i] = -1;
887 }
888 return 1;
889}
890
891public OnPlayerConnect(playerid) {
892 playerEditingTextDraw[playerid] = CreatePlayerTextDraw(playerid, 7.0, 170.0, "-");
893 PlayerTextDrawBackgroundColor(playerid, playerEditingTextDraw[playerid], 255);
894 PlayerTextDrawFont(playerid, playerEditingTextDraw[playerid], 2);
895 PlayerTextDrawLetterSize(playerid, playerEditingTextDraw[playerid], 0.2, 1.0);
896 PlayerTextDrawColor(playerid, playerEditingTextDraw[playerid], -1);
897 PlayerTextDrawSetOutline(playerid, playerEditingTextDraw[playerid], 1);
898 PlayerTextDrawSetProportional(playerid, playerEditingTextDraw[playerid], 1);
899 PlayerTextDrawSetShadow(playerid, playerEditingTextDraw[playerid], 0);
900
901 for (new a = 0; a < groupsCount; a++) {
902 if (!groupData[a][E_GROUP_VISIBLE]) {
903 continue;
904 }
905
906 for (new b = 0; b < groupData[a][E_GROUP_TEXTDRAWS_COUNT]; b++) {
907 TextDrawShowForPlayer(playerid, groupTextDrawData[a][b][E_TEXTDRAW_ID]);
908 }
909 }
910 return 1;
911}
912
913public OnPlayerDisconnect(playerid, reason) {
914 playerEditing[playerid] = EDITING_NONE;
915 KillTimer(playerEditingTimer[playerid]);
916 playerEditingTimer[playerid] = -1;
917
918 if (projectDB) {
919 SaveProjectGroup(playerCurrentGroup[playerid]);
920 }
921 return 1;
922}
923
924public OnPlayerSpawn(playerid) {
925 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: ИÑпользуйте \"/text\", чтобы открыть меню TextDraw Editor'а.");
926 return 1;
927}
928
929forward OnPlayerTimerUpdate(playerid);
930public OnPlayerTimerUpdate(playerid) {
931 if (playerEditing[playerid] != EDITING_NONE) {
932 new groupid = playerCurrentGroup[playerid];
933 new textdrawid = playerCurrentTextDraw[playerid];
934
935 new keys, updown, leftright;
936 GetPlayerKeys(playerid, keys, updown, leftright);
937
938 if (updown < 0) {
939 switch (playerEditing[playerid]) {
940 case EDITING_GROUP_POS: {
941 if (keys == KEY_SPRINT) {
942 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
943 groupTextDrawData[groupid][i][E_TEXTDRAW_Y] -= 10.0;
944 CreateGroupTextDraw(groupid, i);
945 }
946 }
947 else {
948 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
949 groupTextDrawData[groupid][i][E_TEXTDRAW_Y] -= 0.5;
950 CreateGroupTextDraw(groupid, i);
951 }
952 }
953 }
954
955 case EDITING_POS: {
956 if (keys == KEY_SPRINT) {
957 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y] -= 10.0;
958 }
959 else {
960 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y] -= 0.5;
961 }
962 CreateGroupTextDraw(groupid, textdrawid);
963 }
964
965 case EDITING_LETTER_SIZE: {
966 if (keys == KEY_SPRINT) {
967 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] -= 1.0;
968 }
969 else {
970 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] -= 0.1;
971 }
972
973 TextDrawLetterSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y]);
974 if (groupData[groupid][E_GROUP_VISIBLE]) {
975 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
976 }
977 }
978
979 case EDITING_TEXT_SIZE: {
980 if (keys == KEY_SPRINT) {
981 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] -= 10.0;
982 }
983 else {
984 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] -= 0.5;
985 }
986
987 TextDrawTextSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y]);
988 if (groupData[groupid][E_GROUP_VISIBLE]) {
989 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
990 }
991 }
992
993 case EDITING_SHADOW_SIZE: {
994 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW] += 1;
995
996 TextDrawSetShadow(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW]);
997 if (groupData[groupid][E_GROUP_VISIBLE]) {
998 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
999 }
1000 }
1001
1002 case EDITING_OUTLINE_SIZE: {
1003 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE] += 1;
1004
1005 TextDrawSetOutline(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE]);
1006 if (groupData[groupid][E_GROUP_VISIBLE]) {
1007 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1008 }
1009 }
1010
1011 case EDITING_PREVIEW_ROT: {
1012 if (keys == KEY_SPRINT) {
1013 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] += 5.0;
1014 }
1015 else {
1016 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] += 1.0;
1017 }
1018
1019 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1020 if (groupData[groupid][E_GROUP_VISIBLE]) {
1021 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1022 }
1023 }
1024 }
1025 }
1026 else if (updown > 0) {
1027 switch (playerEditing[playerid]) {
1028 case EDITING_GROUP_POS: {
1029 if (keys == KEY_SPRINT) {
1030 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1031 groupTextDrawData[groupid][i][E_TEXTDRAW_Y] += 10.0;
1032 CreateGroupTextDraw(groupid, i);
1033 }
1034 }
1035 else {
1036 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1037 groupTextDrawData[groupid][i][E_TEXTDRAW_Y] += 0.5;
1038 CreateGroupTextDraw(groupid, i);
1039 }
1040 }
1041 }
1042
1043 case EDITING_POS: {
1044 if (keys == KEY_SPRINT) {
1045 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y] += 10.0;
1046 }
1047 else {
1048 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y] += 0.5;
1049 }
1050 CreateGroupTextDraw(groupid, textdrawid);
1051 }
1052
1053 case EDITING_LETTER_SIZE: {
1054 if (keys == KEY_SPRINT) {
1055 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] += 1.0;
1056 }
1057 else {
1058 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] += 0.1;
1059 }
1060
1061 TextDrawLetterSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y]);
1062 if (groupData[groupid][E_GROUP_VISIBLE]) {
1063 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1064 }
1065 }
1066
1067 case EDITING_TEXT_SIZE: {
1068 if (keys == KEY_SPRINT) {
1069 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] += 10.0;
1070 }
1071 else {
1072 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] += 0.5;
1073 }
1074
1075 TextDrawTextSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y]);
1076 if (groupData[groupid][E_GROUP_VISIBLE]) {
1077 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1078 }
1079 }
1080
1081 case EDITING_SHADOW_SIZE: {
1082 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW] -= 1;
1083
1084 TextDrawSetShadow(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW]);
1085 if (groupData[groupid][E_GROUP_VISIBLE]) {
1086 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1087 }
1088 }
1089
1090 case EDITING_OUTLINE_SIZE: {
1091 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE] -= 1;
1092
1093 TextDrawSetOutline(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE]);
1094 if (groupData[groupid][E_GROUP_VISIBLE]) {
1095 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1096 }
1097 }
1098
1099 case EDITING_PREVIEW_ROT: {
1100 if (keys == KEY_SPRINT) {
1101 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] -= 5.0;
1102 }
1103 else {
1104 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] -= 1.0;
1105 }
1106
1107 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1108 if (groupData[groupid][E_GROUP_VISIBLE]) {
1109 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1110 }
1111 }
1112 }
1113 }
1114
1115 if (leftright < 0) {
1116 switch (playerEditing[playerid]) {
1117 case EDITING_GROUP_POS: {
1118 if (keys == KEY_SPRINT) {
1119 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1120 groupTextDrawData[groupid][i][E_TEXTDRAW_X] -= 10.0;
1121 CreateGroupTextDraw(groupid, i);
1122 }
1123 }
1124 else {
1125 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1126 groupTextDrawData[groupid][i][E_TEXTDRAW_X] -= 0.5;
1127 CreateGroupTextDraw(groupid, i);
1128 }
1129 }
1130 }
1131
1132 case EDITING_POS: {
1133 if (keys == KEY_SPRINT) {
1134 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X] -= 10.0;
1135 }
1136 else {
1137 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X] -= 0.5;
1138 }
1139 CreateGroupTextDraw(groupid, textdrawid);
1140 }
1141
1142 case EDITING_LETTER_SIZE: {
1143 if (keys == KEY_SPRINT) {
1144 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X] -= 0.05;
1145 }
1146 else {
1147 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X] -= 0.01;
1148 }
1149
1150 TextDrawLetterSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y]);
1151 if (groupData[groupid][E_GROUP_VISIBLE]) {
1152 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1153 }
1154 }
1155
1156 case EDITING_TEXT_SIZE: {
1157 if (keys == KEY_SPRINT) {
1158 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X] -= 10.0;
1159 }
1160 else {
1161 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X] -= 0.5;
1162 }
1163
1164 TextDrawTextSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y]);
1165 if (groupData[groupid][E_GROUP_VISIBLE]) {
1166 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1167 }
1168 }
1169
1170 case EDITING_PREVIEW_ROT: {
1171 if (keys == KEY_SPRINT) {
1172 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] -= 5.0;
1173 }
1174 else {
1175 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] -= 1.0;
1176 }
1177
1178 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1179 if (groupData[groupid][E_GROUP_VISIBLE]) {
1180 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1181 }
1182 }
1183 }
1184 }
1185 else if (leftright > 0) {
1186 switch (playerEditing[playerid]) {
1187 case EDITING_GROUP_POS: {
1188 if (keys == KEY_SPRINT) {
1189 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1190 groupTextDrawData[groupid][i][E_TEXTDRAW_X] += 10.0;
1191 CreateGroupTextDraw(groupid, i);
1192 }
1193 }
1194 else {
1195 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1196 groupTextDrawData[groupid][i][E_TEXTDRAW_X] += 0.5;
1197 CreateGroupTextDraw(groupid, i);
1198 }
1199 }
1200 }
1201
1202 case EDITING_POS: {
1203 if (keys == KEY_SPRINT) {
1204 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X] += 10.0;
1205 }
1206 else {
1207 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X] += 0.5;
1208 }
1209 CreateGroupTextDraw(groupid, textdrawid);
1210 }
1211
1212 case EDITING_LETTER_SIZE: {
1213 if (keys == KEY_SPRINT) {
1214 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X] += 0.05;
1215 }
1216 else {
1217 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X] += 0.01;
1218 }
1219
1220 TextDrawLetterSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y]);
1221 if (groupData[groupid][E_GROUP_VISIBLE]) {
1222 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1223 }
1224 }
1225
1226 case EDITING_TEXT_SIZE: {
1227 if (keys == KEY_SPRINT) {
1228 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X] += 10.0;
1229 }
1230 else {
1231 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X] += 0.5;
1232 }
1233
1234 TextDrawTextSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y]);
1235 if (groupData[groupid][E_GROUP_VISIBLE]) {
1236 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1237 }
1238 }
1239
1240 case EDITING_PREVIEW_ROT: {
1241 if (keys == KEY_SPRINT) {
1242 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] += 5.0;
1243 }
1244 else {
1245 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] += 1.0;
1246 }
1247
1248 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1249 if (groupData[groupid][E_GROUP_VISIBLE]) {
1250 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1251 }
1252 }
1253 }
1254 }
1255
1256 if (showTextDrawCmds) {
1257 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1258 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid],
1259 "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1260 ~w~/position~n~\
1261 ~y~/x: ~b~~h~~h~?~n~\
1262 ~y~/y: ~b~~h~~h~?");
1263 return 1;
1264 }
1265
1266 new previewChars[MAX_GROUP_TEXTDRAW_PREVIEW_CHARS + 4];
1267 strmid(previewChars, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], 0, MAX_GROUP_TEXTDRAW_PREVIEW_CHARS);
1268 if (strlen(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT]) > MAX_GROUP_TEXTDRAW_PREVIEW_CHARS) {
1269 strcat(previewChars, "...");
1270 }
1271
1272 new string[1024];
1273 switch (playerEditing[playerid]) {
1274 case EDITING_POS, EDITING_GROUP_POS: {
1275 string = "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1276 ~w~/string: \"%s\"~n~\
1277 ~r~~h~~h~/position~n~\
1278 ~r~~h~~h~/x: ~h~%0.4f~n~\
1279 ~r~~h~~h~/y: ~h~%0.4f~n~\
1280 ~w~/lettersize~n~\
1281 ~w~/lx: %0.4f~n~\
1282 ~w~/ly: %0.4f~n~\
1283 ~w~/textsize~n~\
1284 ~w~/tx: %0.4f~n~\
1285 ~w~/ty: %0.4f~n~\
1286 ~w~/rotation~n~\
1287 ~w~/rx: %0.4f~n~\
1288 ~w~/ry: %0.4f~n~\
1289 ~w~/rz: %0.4f~n~\
1290 ~w~/zoom: %0.4f~n~\
1291 ~w~/shadow: %i~n~\
1292 ~w~/outline: %i";
1293 }
1294
1295 case EDITING_LETTER_SIZE: {
1296 string = "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1297 ~w~/string: \"%s\"~n~\
1298 ~w~/position~n~\
1299 ~w~/x: %0.4f~n~\
1300 ~w~/y: %0.4f~n~\
1301 ~r~~h~~h~/lettersize~n~\
1302 ~r~~h~~h~/lx: ~h~%0.4f~n~\
1303 ~r~~h~~h~/ly: ~h~%0.4f~n~\
1304 ~w~/textsize~n~\
1305 ~w~/tx: %0.4f~n~\
1306 ~w~/ty: %0.4f~n~\
1307 ~w~/rotation~n~\
1308 ~w~/rx: %0.4f~n~\
1309 ~w~/ry: %0.4f~n~\
1310 ~w~/rz: %0.4f~n~\
1311 ~w~/zoom: %0.4f~n~\
1312 ~w~/shadow: %i~n~\
1313 ~w~/outline: %i";
1314 }
1315
1316 case EDITING_TEXT_SIZE: {
1317 string = "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1318 ~w~/string: \"%s\"~n~\
1319 ~w~/position~n~\
1320 ~w~/x: %0.4f~n~\
1321 ~w~/y: %0.4f~n~\
1322 ~w~/lettersize~n~\
1323 ~w~/lx: %0.4f~n~\
1324 ~w~/ly: %0.4f~n~\
1325 ~r~~h~~h~/textsize~n~\
1326 ~r~~h~~h~/tx: ~h~%0.4f~n~\
1327 ~r~~h~~h~/ty: ~h~%0.4f~n~\
1328 ~w~/rotation~n~\
1329 ~w~/rx: %0.4f~n~\
1330 ~w~/ry: %0.4f~n~\
1331 ~w~/rz: %0.4f~n~\
1332 ~w~/zoom: %0.4f~n~\
1333 ~w~/shadow: %i~n~\
1334 ~w~/outline: %i";
1335 }
1336
1337 case EDITING_PREVIEW_ROT: {
1338 string = "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1339 ~w~/string: \"%s\"~n~\
1340 ~w~/position~n~\
1341 ~w~/x: %0.4f~n~\
1342 ~w~/y: %0.4f~n~\
1343 ~w~/lettersize~n~\
1344 ~w~/lx: %0.4f~n~\
1345 ~w~/ly: %0.4f~n~\
1346 ~w~/textsize~n~\
1347 ~w~/tx: %0.4f~n~\
1348 ~w~/ty: %0.4f~n~\
1349 ~r~~h~~h~/rotation~n~\
1350 ~r~~h~~h~/rx: ~h~%0.4f~n~\
1351 ~r~~h~~h~/ry: ~h~%0.4f~n~\
1352 ~r~~h~~h~/rz: ~h~%0.4f~n~\
1353 ~r~~h~~h~/zoom: ~h~%0.4f~n~\
1354 ~w~/shadow: %i~n~\
1355 ~w~/outline: %i";
1356 }
1357
1358 case EDITING_SHADOW_SIZE: {
1359 string = "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1360 ~w~/string: \"%s\"~n~\
1361 ~w~/position~n~\
1362 ~w~/x: %0.4f~n~\
1363 ~w~/y: %0.4f~n~\
1364 ~w~/lettersize~n~\
1365 ~w~/lx: %0.4f~n~\
1366 ~w~/ly: %0.4f~n~\
1367 ~w~/textsize~n~\
1368 ~w~/tx: %0.4f~n~\
1369 ~w~/ty: %0.4f~n~\
1370 ~w~/rotation~n~\
1371 ~w~/rx: %0.4f~n~\
1372 ~w~/ry: %0.4f~n~\
1373 ~w~/rz: %0.4f~n~\
1374 ~w~/zoom: %0.4f~n~\
1375 ~r~~h~~h~/shadow: ~h~%i~n~\
1376 ~w~/outline: %i";
1377 }
1378
1379 case EDITING_OUTLINE_SIZE: {
1380 string = "~w~КОМÐÐДЫ РЕДÐКТОРÐ: (/show)~n~\
1381 ~w~/string: \"%s\"~n~\
1382 ~w~/position~n~\
1383 ~w~/x: %0.4f~n~\
1384 ~w~/y: %0.4f~n~\
1385 ~w~/lettersize~n~\
1386 ~w~/lx: %0.4f~n~\
1387 ~w~/ly: %0.4f~n~\
1388 ~w~/textsize~n~\
1389 ~w~/tx: %0.4f~n~\
1390 ~w~/ty: %0.4f~n~\
1391 ~w~/rotation~n~\
1392 ~w~/rx: %0.4f~n~\
1393 ~w~/ry: %0.4f~n~\
1394 ~w~/rz: %0.4f~n~\
1395 ~w~/zoom: %0.4f~n~\
1396 ~w~/shadow: %i~n~\
1397 ~r~~h~~h~/outline: ~h~%i";
1398 }
1399 }
1400
1401 format(string, sizeof (string), string,
1402 previewChars,
1403 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y],
1404 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y],
1405 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y],
1406 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM],
1407 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW],
1408 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE]);
1409
1410 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], string);
1411 }
1412 }
1413 return 1;
1414}
1415
1416public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
1417 if (playerEditing[playerid] != EDITING_NONE) {
1418 if (newkeys == KEY_SECONDARY_ATTACK) {
1419 PlayerTextDrawHide(playerid, playerEditingTextDraw[playerid]);
1420
1421 TogglePlayerControllable(playerid, true);
1422
1423 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1424 SetTimerEx("ShowPlayerGroupDialog", 150, false, "ii", playerid, playerCurrentGroup[playerid]);
1425 }
1426 else {
1427 SetTimerEx("ShowPlayerTextDrawDialog", 150, false, "ii", playerid, playerCurrentTextDraw[playerid]);
1428 }
1429
1430 playerEditing[playerid] = EDITING_NONE;
1431 KillTimer(playerEditingTimer[playerid]);
1432 playerEditingTimer[playerid] = -1;
1433 }
1434 }
1435 return 1;
1436}
1437
1438CMD:x(playerid, params[]) {
1439 if (playerEditing[playerid] == EDITING_NONE) {
1440 return 1;
1441 }
1442
1443 new Float:value;
1444 if (sscanf(params, "f", value)) {
1445 SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /x [значение]");
1446 return SendClientMessage(playerid, MESSAGE_COLOR, "Ðта команда увеличит значение по X у вÑех текÑтдравов при иÑпользовании в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹.");
1447 }
1448
1449 new groupid = playerCurrentGroup[playerid];
1450 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1451 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1452 groupTextDrawData[groupid][i][E_TEXTDRAW_X] += value;
1453 CreateGroupTextDraw(groupid, i);
1454 }
1455 return 1;
1456 }
1457
1458 new textdrawid = playerCurrentTextDraw[playerid];
1459 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X] = value;
1460 CreateGroupTextDraw(groupid, textdrawid);
1461 return 1;
1462}
1463
1464CMD:y(playerid, params[]) {
1465 if (playerEditing[playerid] == EDITING_NONE) {
1466 return 1;
1467 }
1468
1469 new Float:value;
1470 if (sscanf(params, "f", value)) {
1471 SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /y [значение]");
1472 return SendClientMessage(playerid, MESSAGE_COLOR, "Ðта команда увеличит значение по Y у вÑех текÑтдравов при иÑпользовании в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹.");
1473 }
1474
1475 new groupid = playerCurrentGroup[playerid];
1476 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1477 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
1478 groupTextDrawData[groupid][i][E_TEXTDRAW_Y] += value;
1479 CreateGroupTextDraw(groupid, i);
1480 }
1481 return 1;
1482 }
1483
1484 new textdrawid = playerCurrentTextDraw[playerid];
1485 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y] = value;
1486 CreateGroupTextDraw(groupid, textdrawid);
1487 return 1;
1488}
1489
1490CMD:lx(playerid, params[]) {
1491 if (playerEditing[playerid] == EDITING_NONE) {
1492 return 1;
1493 }
1494
1495 new Float:value;
1496 if (sscanf(params, "f", value)) {
1497 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /lx [значение]");
1498 }
1499
1500 new groupid = playerCurrentGroup[playerid];
1501 new textdrawid = playerCurrentTextDraw[playerid];
1502
1503 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X] = value;
1504 TextDrawLetterSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y]);
1505 if (groupData[groupid][E_GROUP_VISIBLE]) {
1506 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1507 }
1508 return 1;
1509}
1510
1511CMD:ly(playerid, params[]) {
1512 if (playerEditing[playerid] == EDITING_NONE) {
1513 return 1;
1514 }
1515
1516 new Float:value;
1517 if (sscanf(params, "f", value)) {
1518 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /ly [значение]");
1519 }
1520
1521 new groupid = playerCurrentGroup[playerid];
1522 new textdrawid = playerCurrentTextDraw[playerid];
1523
1524 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] = value;
1525 TextDrawLetterSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y]);
1526 if (groupData[groupid][E_GROUP_VISIBLE]) {
1527 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1528 }
1529 return 1;
1530}
1531
1532CMD:tx(playerid, params[]) {
1533 if (playerEditing[playerid] == EDITING_NONE) {
1534 return 1;
1535 }
1536
1537 new Float:value;
1538 if (sscanf(params, "f", value)) {
1539 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /tx [значение]");
1540 }
1541
1542 new groupid = playerCurrentGroup[playerid];
1543 new textdrawid = playerCurrentTextDraw[playerid];
1544
1545 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X] = value;
1546 TextDrawTextSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y]);
1547 if (groupData[groupid][E_GROUP_VISIBLE]) {
1548 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1549 }
1550 return 1;
1551}
1552
1553CMD:ty(playerid, params[]) {
1554 if (playerEditing[playerid] == EDITING_NONE) {
1555 return 1;
1556 }
1557
1558 new Float:value;
1559 if (sscanf(params, "f", value)) {
1560 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /ty [значение]");
1561 }
1562
1563 new groupid = playerCurrentGroup[playerid];
1564 new textdrawid = playerCurrentTextDraw[playerid];
1565
1566 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] = value;
1567 TextDrawTextSize(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y]);
1568 if (groupData[groupid][E_GROUP_VISIBLE]) {
1569 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1570 }
1571 return 1;
1572}
1573
1574CMD:rx(playerid, params[]) {
1575 if (playerEditing[playerid] == EDITING_NONE) {
1576 return 1;
1577 }
1578
1579 new Float:value;
1580 if (sscanf(params, "f", value)) {
1581 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /rx [значение]");
1582 }
1583
1584 new groupid = playerCurrentGroup[playerid];
1585 new textdrawid = playerCurrentTextDraw[playerid];
1586
1587 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] = value;
1588 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1589 if (groupData[groupid][E_GROUP_VISIBLE]) {
1590 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1591 }
1592 return 1;
1593}
1594
1595CMD:ry(playerid, params[]) {
1596 if (playerEditing[playerid] == EDITING_NONE) {
1597 return 1;
1598 }
1599
1600 new Float:value;
1601 if (sscanf(params, "f", value)) {
1602 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /ry [значение]");
1603 }
1604
1605 new groupid = playerCurrentGroup[playerid];
1606 new textdrawid = playerCurrentTextDraw[playerid];
1607
1608 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] = value;
1609 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1610 if (groupData[groupid][E_GROUP_VISIBLE]) {
1611 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1612 }
1613 return 1;
1614}
1615
1616CMD:rz(playerid, params[]) {
1617 if (playerEditing[playerid] == EDITING_NONE) {
1618 return 1;
1619 }
1620
1621 new Float:value;
1622 if (sscanf(params, "f", value)) {
1623 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /rz [значение]");
1624 }
1625
1626 new groupid = playerCurrentGroup[playerid];
1627 new textdrawid = playerCurrentTextDraw[playerid];
1628
1629 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z] = value;
1630 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1631 if (groupData[groupid][E_GROUP_VISIBLE]) {
1632 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1633 }
1634 return 1;
1635}
1636
1637CMD:zoom(playerid, params[]) {
1638 if (playerEditing[playerid] == EDITING_NONE) {
1639 return 1;
1640 }
1641
1642 new Float:value;
1643 if (sscanf(params, "f", value)) {
1644 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /zoom [значение]");
1645 }
1646
1647 new groupid = playerCurrentGroup[playerid];
1648 new textdrawid = playerCurrentTextDraw[playerid];
1649
1650 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM] = value;
1651 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
1652 if (groupData[groupid][E_GROUP_VISIBLE]) {
1653 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1654 }
1655 return 1;
1656}
1657
1658CMD:position(playerid, params[]) {
1659 if (playerEditing[playerid] == EDITING_NONE) {
1660 return 1;
1661 }
1662
1663 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1664 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ уже находитеÑÑŒ в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸.");
1665 }
1666
1667 playerEditing[playerid] = EDITING_POS;
1668 return 1;
1669}
1670
1671CMD:lettersize(playerid, params[]) {
1672 if (playerEditing[playerid] == EDITING_NONE) {
1673 return 1;
1674 }
1675
1676 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1677 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ не можете иÑпользовать Ñту команду в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ группы.");
1678 }
1679
1680 playerEditing[playerid] = EDITING_LETTER_SIZE;
1681 return 1;
1682}
1683
1684CMD:textsize(playerid, params[]) {
1685 if (playerEditing[playerid] == EDITING_NONE) {
1686 return 1;
1687 }
1688
1689 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1690 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ не можете иÑпользовать Ñту команду в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ группы.");
1691 }
1692
1693 playerEditing[playerid] = EDITING_TEXT_SIZE;
1694 return 1;
1695}
1696
1697CMD:rotation(playerid, params[]) {
1698 if (playerEditing[playerid] == EDITING_NONE) {
1699 return 1;
1700 }
1701
1702 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1703 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ не можете иÑпользовать Ñту команду в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ группы.");
1704 }
1705
1706 playerEditing[playerid] = EDITING_PREVIEW_ROT;
1707 return 1;
1708}
1709
1710CMD:shadow(playerid, params[]) {
1711 if (playerEditing[playerid] == EDITING_NONE) {
1712 return 1;
1713 }
1714
1715 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1716 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ не можете иÑпользовать Ñту команду в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ группы.");
1717 }
1718
1719 playerEditing[playerid] = EDITING_SHADOW_SIZE;
1720 return 1;
1721}
1722
1723CMD:outline(playerid, params[]) {
1724 if (playerEditing[playerid] == EDITING_NONE) {
1725 return 1;
1726 }
1727
1728 if (playerEditing[playerid] == EDITING_GROUP_POS) {
1729 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ не можете иÑпользовать Ñту команду в режиме Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸ группы.");
1730 }
1731
1732 playerEditing[playerid] = EDITING_OUTLINE_SIZE;
1733 return 1;
1734}
1735
1736CMD:string(playerid, params[]) {
1737 if (playerEditing[playerid] == EDITING_NONE) {
1738 return 1;
1739 }
1740
1741 new string[MAX_GROUP_TEXTDRAW_TEXT];
1742 if (sscanf(params, "s["#MAX_GROUP_TEXTDRAW_TEXT"]", string)) {
1743 return SendClientMessage(playerid, MESSAGE_COLOR, "ИÑпользуйте: /string [текÑÑ‚]");
1744 }
1745
1746 new groupid = playerCurrentGroup[playerid];
1747 new textdrawid = playerCurrentTextDraw[playerid];
1748
1749 format(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], MAX_GROUP_TEXTDRAW_TEXT, string);
1750
1751 TextDrawSetString(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], string);
1752 if (groupData[groupid][E_GROUP_VISIBLE]) {
1753 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
1754 }
1755 return 1;
1756}
1757
1758CMD:show(playerid) {
1759 if (playerEditing[playerid] == EDITING_NONE) {
1760 return 1;
1761 }
1762
1763 if (showTextDrawCmds) {
1764 PlayerTextDrawHide(playerid, playerEditingTextDraw[playerid]);
1765 }
1766 else {
1767 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
1768 }
1769 showTextDrawCmds = !showTextDrawCmds;
1770 return 1;
1771}
1772
1773CMD:text(playerid) {
1774 if (playerEditing[playerid] != EDITING_NONE) {
1775 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’Ñ‹ не можете открывать меню редактора во Ð²Ñ€ÐµÐ¼Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ.");
1776 }
1777
1778 if (!projectDB) {
1779 return Dialog_Show(playerid, MAIN_MENU, DIALOG_STYLE_TABLIST, "TDEditor: Главное меню",
1780 ""COL_GREEN"Ðовый проект\t"COL_GREY"Создать пуÑтой GUI проект\n\
1781 "COL_YELLOW"Открыть проект\t"COL_GREY"Загрузка проекта из папки scriptfiles (Plug'n'Play)\n\
1782 "COL_YELLOW"Удалить проект\t"COL_GREY"Удаление проекта из папки scriptfiles",
1783 "Выбрать", "Закрыть");
1784 }
1785
1786 static string[512 + (MAX_GROUPS * (MAX_GROUP_NAME + 32))];
1787 string = ""COL_GREEN"Создать новую группу\t"COL_GREY"Добавить пуÑтую группу, в которую позже можно добавить текÑтдравы (макÑ. кол-во групп: "#MAX_GROUPS")\n\
1788 "COL_YELLOW"ÐкÑпортировать проект\t"COL_GREY"Ð’Ñ‹ можете ÑкÑпортировать веÑÑŒ проект в .pwn файл или же ÑкÑпортировать отдельные группы\n\
1789 "COL_RED"Закрыть проект\t"COL_GREY"Закрыть текущий проект и вернутьÑÑ Ð² главное меню\n";
1790
1791 for (new i; i < groupsCount; i++) {
1792 format(string, sizeof (string), "%sГруппа #%i: '%s'\t"COL_GREY"%i текÑтдрав(ов)\n", string, i, groupData[i][E_GROUP_NAME], groupData[i][E_GROUP_TEXTDRAWS_COUNT]);
1793 }
1794
1795 Dialog_Show(playerid, EDITOR_MENU, DIALOG_STYLE_TABLIST, "TDEditor: Меню редактора", string, "Выбрать", "Закрыть");
1796 return 1;
1797}
1798
1799Dialog:MAIN_MENU(playerid, response, listitem, inputtext[]) {
1800 if (!response) {
1801 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Редактор закрыт.");
1802 }
1803
1804 switch (listitem) {
1805 case 0: {
1806 Dialog_Show(playerid, NEW_PROJECT, DIALOG_STYLE_INPUT, "TDEditor: Ðовый проект", ""COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ПРОЕКТÐ"COL_WHITE" ниже Ð´Ð»Ñ ÐµÐ³Ð¾ ÑозданиÑ.\n\n"COL_GREY"Проект будет Ñохранён как \".db\" файл. Каждый проект имеет\n"COL_GREY"ÑобÑтвенный файл базы данных, которым легко управлÑть и даже делитьÑÑ!", "Создать", "Ðазад");
1807 }
1808
1809 case 1, 2: {
1810 if (dini_NumKeys(PATH_RECORD_FILE) == 0) {
1811 dini_Timeout(PATH_RECORD_FILE);
1812
1813 if (listitem == 1) {
1814 return Dialog_Show(playerid, LOAD_PROJECT, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Открыть проект", "Файл\tДата ÑозданиÑ\n"COL_RED"null\t"COL_RED"null", "Открыть", "Ðазад");
1815 }
1816 else {
1817 return Dialog_Show(playerid, DELETE_PROJECT, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Удалить проект", "Файл\tДата ÑозданиÑ\n"COL_RED"null\t"COL_RED"null", "Удалить", "Ðазад");
1818 }
1819 }
1820
1821 new count;
1822 static string[MAX_PROJECTS * (MAX_PROJECT_NAME + 16 + 2)];
1823 new field[DINI_MAX_FIELD_NAME];
1824
1825 string = "Файл\tДата ÑозданиÑ\n";
1826 for (new i, j = dini_NumKeys(PATH_RECORD_FILE); i < j; i++) {
1827 if (++count == MAX_PROJECTS) {
1828 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: МакÑимальный предел проектов уÑтановлен на "#MAX_PROJECTS" и он доÑтигнут.");
1829 SendClientMessage(playerid, MESSAGE_COLOR, "Может быть больше проектов, которые не указаны в диалоговом окне.");
1830 break;
1831 }
1832
1833 field = dini_GetKeyName(PATH_RECORD_FILE, i);
1834 format(string, sizeof (string), "%s%s\t%s\n", string, field, dini_Get(PATH_RECORD_FILE, field));
1835 }
1836
1837 dini_Timeout(PATH_RECORD_FILE);
1838
1839 if (count == 0) {
1840 if (listitem == 1) {
1841 return Dialog_Show(playerid, LOAD_PROJECT, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Открыть проект", "Файл\tДата ÑозданиÑ\n"COL_RED"null\t"COL_RED"null", "Открыть", "Ðазад");
1842 }
1843 else {
1844 return Dialog_Show(playerid, DELETE_PROJECT, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Удалить проект", "Файл\tДата ÑозданиÑ\n"COL_RED"null\t"COL_RED"null", "Удалить", "Ðазад");
1845 }
1846 }
1847
1848 if (listitem == 1) {
1849 return Dialog_Show(playerid, LOAD_PROJECT, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Открыть проект", string, "Открыть", "Ðазад");
1850 }
1851 else {
1852 return Dialog_Show(playerid, DELETE_PROJECT, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: Удалить проект", string, "Удалить", "Ðазад");
1853 }
1854 }
1855 }
1856 return 1;
1857}
1858
1859Dialog:NEW_PROJECT(playerid, response, listitem, inputtext[]) {
1860 if (!response) {
1861 return cmd_text(playerid);
1862 }
1863
1864 new name[MAX_PROJECT_NAME + 3];
1865 if (sscanf(inputtext, "s["#MAX_PROJECT_NAME"]", name)) {
1866 return Dialog_Show(playerid, NEW_PROJECT, DIALOG_STYLE_INPUT, "TDEditor: Ðовый проект", ""COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ПРОЕКТÐ"COL_WHITE" ниже Ð´Ð»Ñ ÐµÐ³Ð¾ ÑозданиÑ.\n\n"COL_GREY"Проект будет Ñохранён как \".db\" файл. Каждый проект имеет\n"COL_GREY"ÑобÑтвенный файл базы данных, которым легко управлÑть и даже делитьÑÑ!\n\n"COL_RED"Ошибка: "COL_GREY"Ðазвание проекта не может быть пуÑтым или пробелами.", "Создать", "Ðазад");
1867 }
1868
1869 new pos = strfind(name, ".db", true);
1870 if (pos == -1) {
1871 strcat(name, ".db");
1872 }
1873
1874 if (dini_Isset(PATH_RECORD_FILE, name) || fexist(name)) {
1875 dini_Timeout(PATH_RECORD_FILE);
1876 return Dialog_Show(playerid, NEW_PROJECT, DIALOG_STYLE_INPUT, "TDEditor: Ðовый проект", ""COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ПРОЕКТÐ"COL_WHITE" ниже Ð´Ð»Ñ ÐµÐ³Ð¾ ÑозданиÑ.\n\n"COL_GREY"Проект будет Ñохранён как \".db\" файл. Каждый проект имеет\n"COL_GREY"ÑобÑтвенный файл базы данных, которым легко управлÑть и даже делитьÑÑ!\n\n"COL_RED"Ошибка: "COL_GREY"Такой проект уже ÑущеÑтвует. Введите что-то другое, или вы можете продолжить Ñвою работу, загрузив Ñтот проект!", "Создать", "Ðазад");
1877 }
1878
1879 if (!strcmp(inputtext, "null", true)) {
1880 dini_Timeout(PATH_RECORD_FILE);
1881 return Dialog_Show(playerid, NEW_PROJECT, DIALOG_STYLE_INPUT, "TDEditor: Ðовый проект", ""COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ПРОЕКТÐ"COL_WHITE" ниже Ð´Ð»Ñ ÐµÐ³Ð¾ ÑозданиÑ.\n\n"COL_GREY"Проект будет Ñохранён как \".db\" файл. Каждый проект имеет\n"COL_GREY"ÑобÑтвенный файл базы данных, которым легко управлÑть и даже делитьÑÑ!\n\n"COL_RED"Ошибка: "COL_GREY"Ðазвание проекта не может быть \"null\"!", "Создать", "Ðазад");
1882 }
1883
1884 format(projectName, MAX_PROJECT_NAME, name);
1885 pos = strfind(projectName, ".db", true);
1886 if (pos != -1) {
1887 strdel(projectName, pos, (pos + strlen(".db")));
1888 }
1889
1890 new string[150] = PATH_PROJECT_FILES;
1891 strcat(string, name);
1892 projectDB = db_open(string);
1893 if (!projectDB) {
1894 return Dialog_Show(playerid, NEW_PROJECT, DIALOG_STYLE_INPUT, "TDEditor: Ðовый проект", ""COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ПРОЕКТÐ"COL_WHITE" ниже Ð´Ð»Ñ ÐµÐ³Ð¾ ÑозданиÑ.\n\n"COL_GREY"Проект будет Ñохранён как \".db\" файл. Каждый проект имеет\n"COL_GREY"ÑобÑтвенный файл базы данных, которым легко управлÑть и даже делитьÑÑ!\n\n"COL_RED"Ошибка: "COL_GREY"Что-то пошло не так! Повторите попытку или проверьте название Ñвоего проекта на недопуÑтимые Ñимволы!", "Создать", "Ðазад");
1895 }
1896 db_query(projectDB, "PRAGMA synchronous = NORMAL");
1897 db_query(projectDB, "PRAGMA journal_mode = WAL");
1898 db_query(projectDB, "CREATE TABLE IF NOT EXISTS `GROUP_SETTINGS` (`groupname` VARCHAR("#MAX_GROUP_NAME"), `visibility` INTEGER)");
1899
1900 format(string, sizeof (string), "TDEditor: Ðовый проект \"%s\" Ñоздан. Ðачните редактирование!", name);
1901 SendClientMessage(playerid, MESSAGE_COLOR, string);
1902
1903 if (!dini_Set(PATH_RECORD_FILE, name, ReturnDate(gettime()))) {
1904 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ðе удалоÑÑŒ открыть файл ÑпиÑка проектов, потому проект может не поÑвитьÑÑ Ð² диалоге открытиÑ, но бд проекта в порÑдке!");
1905 }
1906
1907 dini_Timeout(PATH_RECORD_FILE);
1908
1909 return cmd_text(playerid);
1910}
1911
1912Dialog:LOAD_PROJECT(playerid, response, listitem, inputtext[]) {
1913 if (!response) {
1914 return cmd_text(playerid);
1915 }
1916
1917 if (!strcmp(inputtext, "null", true)) {
1918 return dialog_MAIN_MENU(playerid, 1, 1, "\1");
1919 }
1920
1921 new string[512] = PATH_PROJECT_FILES;
1922 strcat(string, inputtext);
1923 projectDB = db_open(string);
1924 if (!projectDB) {
1925 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ðе удалоÑÑŒ загрузить файл проекта. Попробуйте Ñнова!");
1926 return dialog_MAIN_MENU(playerid, 1, 1, "\1");
1927 }
1928 db_query(projectDB, "PRAGMA synchronous = NORMAL");
1929 db_query(projectDB, "PRAGMA journal_mode = WAL");
1930 db_query(projectDB, "CREATE TABLE IF NOT EXISTS `GROUP_SETTINGS` (`groupname` VARCHAR("#MAX_GROUP_NAME"), `visibility` INTEGER)");
1931
1932 format(projectName, MAX_PROJECT_NAME, inputtext);
1933 new pos = strfind(projectName, ".db", true);
1934 strdel(projectName, pos, (pos + strlen(".db")));
1935
1936 new DBResult:result = db_query(projectDB, "SELECT name FROM sqlite_master WHERE type = 'table'");
1937 if (db_num_rows(result) > 0) {
1938 new DBResult:result2;
1939 new textdrawid;
1940 new groupname[MAX_GROUP_NAME];
1941
1942 do {
1943 db_get_field(result, 0, groupname, MAX_GROUP_NAME);
1944 if (!strcmp("GROUP_SETTINGS", groupname, true)) {
1945 continue;
1946 }
1947
1948 if (groupsCount == MAX_GROUPS) {
1949 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Загружены только первые \""#MAX_GROUPS"\" групп.");
1950 SendClientMessage(playerid, MESSAGE_COLOR, "ЕÑли в вашей бд их больше, вам необходимо изменить лимит в Ñкрипте (MAX_GROUPS) и перекомпилировать его.");
1951 break;
1952 }
1953
1954 groupData[groupsCount][E_GROUP_NAME] = groupname;
1955
1956 format(string, sizeof (string), "SELECT `visibility` FROM `GROUP_SETTINGS` WHERE `groupname` = '%s' LIMIT 1", groupData[groupsCount][E_GROUP_NAME]);
1957 result2 = db_query(projectDB, string);
1958 if (result2) {
1959 if (db_num_rows(result2) == 1) {
1960 groupData[groupsCount][E_GROUP_VISIBLE] = bool:db_get_field_int(result2, 0);
1961 }
1962 else {
1963 groupData[groupsCount][E_GROUP_VISIBLE] = true;
1964
1965 format(string, sizeof (string), "INSERT INTO `GROUP_SETTINGS` (`groupname`, `visibility`) VALUES ('%s', '1')", groupData[groupsCount][E_GROUP_NAME]);
1966 db_query(projectDB, string);
1967 }
1968
1969 db_free_result(result2);
1970 }
1971 else {
1972 groupData[groupsCount][E_GROUP_VISIBLE] = true;
1973
1974 format(string, sizeof (string), "INSERT INTO `GROUP_SETTINGS` (`groupname`, `visibility`) VALUES ('%s', '1')", groupData[groupsCount][E_GROUP_NAME]);
1975 db_query(projectDB, string);
1976 }
1977
1978 groupData[groupsCount][E_GROUP_TEXTDRAWS_COUNT] = 0;
1979
1980 format(string, sizeof (string), "SELECT * FROM %s", groupData[groupsCount][E_GROUP_NAME]);
1981 result2 = db_query(projectDB, string);
1982 if (result2) {
1983 if (db_num_rows(result2) > 0) {
1984 do {
1985 if (groupData[groupsCount][E_GROUP_TEXTDRAWS_COUNT] == MAX_GROUP_TEXTDRAWS) {
1986 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Только первые \""#MAX_GROUP_TEXTDRAWS"\" текÑтдравов были загружены из группы.");
1987 SendClientMessage(playerid, MESSAGE_COLOR, "ЕÑли в вашей бд их больше, вам необходимо изменить лимит в Ñкрипте (MAX_GROUP_TEXTDRAWS) и перекомпилировать его.");
1988 break;
1989 }
1990
1991 textdrawid = groupData[groupsCount][E_GROUP_TEXTDRAWS_COUNT]++;
1992
1993 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_SQLID] = db_get_field_assoc_int(result2, "id");
1994 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
1995 db_get_field_assoc(result2, "text", groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_TEXT], MAX_GROUP_TEXTDRAW_TEXT);
1996 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_X] = db_get_field_assoc_float(result2, "x");
1997 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_Y] = db_get_field_assoc_float(result2, "y");
1998 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_LETTERSIZE_X] = db_get_field_assoc_float(result2, "letter_x");
1999 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] = db_get_field_assoc_float(result2, "letter_y");
2000 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_TEXTSIZE_X] = db_get_field_assoc_float(result2, "text_x");
2001 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] = db_get_field_assoc_float(result2, "text_y");
2002 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_ALIGNMENT] = db_get_field_assoc_int(result2, "alignment");
2003 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_COLOR] = db_get_field_assoc_int(result2, "color");
2004 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_USE_BOX] = bool:db_get_field_assoc_int(result2, "usebox");
2005 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_BOX_COLOR] = db_get_field_assoc_int(result2, "box_color");
2006 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_SHADOW] = db_get_field_assoc_int(result2, "shadow");
2007 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_OUTLINE] = db_get_field_assoc_int(result2, "outline");
2008 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] = db_get_field_assoc_int(result2, "background_color");
2009 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_FONT] = db_get_field_assoc_int(result2, "font");
2010 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PROPORTIONAL] = bool:db_get_field_assoc_int(result2, "proportional");
2011 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_SELECTABLE] = bool:db_get_field_assoc_int(result2, "selectable");
2012 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_MODEL] = db_get_field_assoc_int(result2, "preview_model");
2013 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] = db_get_field_assoc_float(result2, "rot_x");
2014 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] = db_get_field_assoc_float(result2, "rot_y");
2015 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z] = db_get_field_assoc_float(result2, "rot_z");
2016 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM] = db_get_field_assoc_float(result2, "rot_zoom");
2017 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR1] = db_get_field_assoc_int(result2, "veh_color1");
2018 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR2] = db_get_field_assoc_int(result2, "veh_color2");
2019 groupTextDrawData[groupsCount][textdrawid][E_TEXTDRAW_TYPE_PLAYER] = bool:db_get_field_assoc_int(result2, "type_player");
2020
2021 CreateGroupTextDraw(groupsCount, textdrawid);
2022 }
2023 while (db_next_row(result2));
2024 }
2025 db_free_result(result2);
2026 }
2027
2028 groupsCount++;
2029 }
2030 while (db_next_row(result));
2031 db_free_result(result);
2032 }
2033
2034 format(string, sizeof (string), "TDEditor: Проект \"%s\" загружен. Ðачните редактирование!", inputtext);
2035 SendClientMessage(playerid, MESSAGE_COLOR, string);
2036
2037 return cmd_text(playerid);
2038}
2039
2040Dialog:DELETE_PROJECT(playerid, response, listitem, inputtext[]) {
2041 if (!response) {
2042 return cmd_text(playerid);
2043 }
2044
2045 if (!strcmp(inputtext, "null", true)) {
2046 return dialog_MAIN_MENU(playerid, 1, 1, "\1");
2047 }
2048
2049 format(projectName, MAX_PROJECT_NAME, inputtext);
2050
2051 new string[512];
2052 format(string, sizeof (string), ""COL_WHITE"Ð’Ñ‹ уверены, что хотите удалить Ñтот "COL_ORANGE"ПРОЕКТ"COL_WHITE"?\n\n"COL_RED"Ðазвание проекта:\t"COL_GREY"%s\n\n"COL_GREY"Примечание: Удаление проекта полноÑтью удалит его из папки scriptfiles. ВоÑÑтановить будет нельзÑ!", inputtext);
2053 return Dialog_Show(playerid, CONFIRM_DELETE_PROJECT, DIALOG_STYLE_MSGBOX, "TDEditor: Подтверждение ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°", string, "Да", "Ðет");
2054}
2055
2056Dialog:CONFIRM_DELETE_PROJECT(playerid, response, listitem, inputtext[]) {
2057 if (!response) {
2058 return dialog_MAIN_MENU(playerid, 1, 2, "\1");
2059 }
2060
2061 db_close(projectDB);
2062 fremove(projectName);
2063
2064 if (!dini_Unset(PATH_RECORD_FILE, projectName)) {
2065 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ðе удалоÑÑŒ открыть файл ÑпиÑка проектов, потому проект до Ñих пор может быть в диалоге открытиÑ/удалениÑ, но бд проекта удалена!");
2066 }
2067 dini_Timeout(PATH_RECORD_FILE);
2068
2069 new string[150];
2070 format(string, sizeof (string), "TDEditor: Проект \"%s\" удалён.", projectName);
2071 SendClientMessage(playerid, MESSAGE_COLOR, string);
2072
2073 return dialog_MAIN_MENU(playerid, 1, 2, "\1");
2074}
2075
2076Dialog:EDITOR_MENU(playerid, response, listitem, inputtext[]) {
2077 if (!response) {
2078 return SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Редактор закрыт.");
2079 }
2080
2081 switch (listitem) {
2082 case 0: {
2083 if (groupsCount == MAX_GROUPS) {
2084 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: ÐÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ более \""#MAX_GROUPS"\" групп.");
2085 SendClientMessage(playerid, MESSAGE_COLOR, "Измените лимит в Ñкрипте (MAX_GROUPS) и перекомпилируйте, чтобы иметь возможноÑть добавить больше.");
2086 return cmd_text(playerid);
2087 }
2088
2089 static string[512];
2090 string = COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ГРУППЫ"COL_WHITE" текÑтдравов ниже Ð´Ð»Ñ ÐµÑ‘ ÑозданиÑ.\n\n"COL_GREY"Что такое группа текÑтдравов?\n";
2091 strcat(string, COL_GREY"Группа текÑтдравов - Ñто неÑколько объединённых текÑтдравов Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ…-либо задач; например, группа Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼\n");
2092 strcat(string, "'кнопка' и текÑтдравами, Ñделанными в виде кнопки в ней. Далее вы Ñможете дублировать группу, перемещать вÑе текÑтдравы в ней и Ñ‚.д.");
2093
2094 return Dialog_Show(playerid, NEW_GROUP, DIALOG_STYLE_INPUT, "TDEditor: Создание новой группы", string, "Создать", "Ðазад");
2095 }
2096
2097 case 1: {
2098 new name[MAX_PROJECT_NAME * 2] = PATH_EXPORT_FILES;
2099 strcat(name, projectName);
2100 strcat(name, ".pwn");
2101
2102 if (!ExportProject(name)) {
2103 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ðе удалоÑÑŒ Ñоздать файл проекта. Попробуйте еще раз!");
2104 return dialog_EDITOR_MENU(playerid, 1, 1, "\1");
2105 }
2106
2107 new string[150];
2108 format(string, sizeof (string), "TDEditor: Проект \"%s\" был ÑкÑпортирован в файл \"%s\".", projectName, name);
2109 SendClientMessage(playerid, MESSAGE_COLOR, string);
2110
2111 return cmd_text(playerid);
2112 }
2113
2114 case 2: {
2115 OnFilterScriptExit();
2116 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Проект Ñохранён и закрыт.");
2117 return cmd_text(playerid);
2118 }
2119
2120 default: {
2121 return ShowPlayerGroupDialog(playerid, (listitem - 3));
2122 }
2123 }
2124
2125 return 1;
2126}
2127
2128Dialog:NEW_GROUP(playerid, response, listitem, inputtext[]) {
2129 if (!response) {
2130 return cmd_text(playerid);
2131 }
2132
2133 new name[MAX_GROUP_NAME];
2134 if (sscanf(inputtext, "s["#MAX_GROUP_NAME"]", name)) {
2135 static string[512];
2136 string = COL_WHITE"Введите "COL_GREEN"ÐÐЗВÐÐИЕ ГРУППЫ"COL_WHITE" текÑтдравов ниже Ð´Ð»Ñ ÐµÑ‘ ÑозданиÑ.\n\n"COL_GREY"Что такое группа текÑтдравов?\n";
2137 strcat(string, COL_GREY"Группа текÑтдравов - Ñто неÑколько объединённых текÑтдравов Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¸Ñ…-либо задач; например, группа Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼\n");
2138 strcat(string, "'кнопка' и текÑтдравами, Ñделанными в виде кнопки в ней. Далее вы Ñможете дублировать группу, перемещать вÑе текÑтдравы в ней и Ñ‚.д.\n\n");
2139 strcat(string, COL_RED"Ошибка: "COL_GREY"Ðазвание группы не может быть пуÑтым или пробелами.");
2140
2141 return Dialog_Show(playerid, NEW_GROUP, DIALOG_STYLE_INPUT, "TDEditor: Создание новой группы", string, "Создать", "Ðазад");
2142 }
2143
2144 format(groupData[groupsCount][E_GROUP_NAME], MAX_GROUP_NAME, name);
2145 groupData[groupsCount][E_GROUP_TEXTDRAWS_COUNT] = 0;
2146 groupData[groupsCount][E_GROUP_VISIBLE] = true;
2147
2148 new string[1024] = "CREATE TABLE IF NOT EXISTS ";
2149 strcat(string, name);
2150 strcat(string, " (`id` INTEGER PRIMARY KEY, \
2151 `text` VARCHAR("#MAX_GROUP_TEXTDRAW_TEXT"), \
2152 `x` FLOAT, \
2153 `y` FLOAT, \
2154 `letter_x` FLOAT, \
2155 `letter_y` FLOAT, \
2156 `text_x` FLOAT, \
2157 `text_y` FLOAT, \
2158 `alignment` INTEGER, \
2159 `color` INTEGER, \
2160 `usebox` INTEGER, \
2161 `box_color` INTEGER, \
2162 `shadow` INTEGER, ");
2163 strcat(string, "`outline` INTEGER, \
2164 `background_color` INTEGER, \
2165 `font` INTEGER, \
2166 `proportional` INTEGER, \
2167 `selectable` INTEGER, \
2168 `preview_model` INTEGER, \
2169 `rot_x` FLOAT, \
2170 `rot_y` FLOAT, \
2171 `rot_z` FLOAT, \
2172 `rot_zoom` FLOAT, \
2173 `veh_color1` INTEGER, \
2174 `veh_color2` INTEGER, \
2175 `type_player` INTEGER)");
2176 db_query(projectDB, string);
2177
2178 string = "INSERT INTO `GROUP_SETTINGS` (`groupname`, `visibility`) VALUES ('";
2179 strcat(string, name);
2180 strcat(string, "', '1')");
2181 db_query(projectDB, string);
2182
2183 groupsCount++;
2184
2185 format(string, sizeof (string), "TDEditor: Добавлена Ð½Ð¾Ð²Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° текÑтдравов: %s [Группа #%i].", name, (groupsCount - 1));
2186 SendClientMessage(playerid, MESSAGE_COLOR, string);
2187
2188 return cmd_text(playerid);
2189}
2190
2191Dialog:GROUP_MENU(playerid, response, listitem, inputtext[]) {
2192 if (!response) {
2193 SaveProjectGroup(playerCurrentGroup[playerid]);
2194 return cmd_text(playerid);
2195 }
2196
2197 new groupid = playerCurrentGroup[playerid];
2198
2199 switch (listitem) {
2200 case 0: {
2201 if (groupData[groupid][E_GROUP_TEXTDRAWS_COUNT] == MAX_GROUP_TEXTDRAWS) {
2202 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: ÐÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ более \""#MAX_GROUP_TEXTDRAWS"\" текÑтдравов в группу.");
2203 SendClientMessage(playerid, MESSAGE_COLOR, "Измените лимит в Ñкрипте (MAX_GROUP_TEXTDRAWS) и перекомпилируйте, чтобы иметь возможноÑть добавить больше.");
2204 return ShowPlayerGroupDialog(playerid, groupid);
2205 }
2206
2207 new textdrawid = groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]++;
2208
2209 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
2210 format(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], MAX_GROUP_TEXTDRAW_TEXT, "Ðовый ТекÑтдрав");
2211 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_X] = 250.0;
2212 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_Y] = 10.0;
2213 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_X] = 0.5;
2214 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_LETTERSIZE_Y] = 1.0;
2215 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_X] = 0.0;
2216 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXTSIZE_Y] = 0.0;
2217 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ALIGNMENT] = 1;
2218 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] = 0xFFFFFFFF;
2219 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX] = false;
2220 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] = 0x000000FF;
2221 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SHADOW] = 0;
2222 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_OUTLINE] = 0;
2223 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] = 0x000000FF;
2224 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT] = 1;
2225 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL] = true;
2226 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE] = false;
2227 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_MODEL] = 0;
2228 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] = 0.0;
2229 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] = 0.0;
2230 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z] = 0.0;
2231 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM] = 1.0;
2232 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR1] = -1;
2233 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR2] = -1;
2234 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TYPE_PLAYER] = false;
2235
2236 CreateGroupTextDraw(groupid, textdrawid);
2237
2238 new string[1024] = "INSERT INTO ";
2239 strcat(string, groupData[groupid][E_GROUP_NAME]);
2240 strcat(string, "(text, x, y, letter_x, letter_y, text_x, text_y, alignment, color, usebox, box_color, shadow, outline, background_color, font, proportional, selectable, preview_model, rot_x, rot_y, rot_z, rot_zoom, veh_color1, veh_color2, type_player)");
2241 strcat(string, "VALUES ('New TextDraw', '250.0', '10.0', '0.5', '1.0', '0.0', '0.0', '1', '-1', '0', '0xFF', '0', '0', '0xFF', '1', '1', '0', '0', '0.0', '0.0', '0.0', '1.0', '-1', '-1', '0')");
2242 db_query(projectDB, string);
2243
2244 format(string, sizeof (string), "SELECT id FROM %s ORDER BY id DESC LIMIT 1", groupData[groupid][E_GROUP_NAME]);
2245 new DBResult:result = db_query(projectDB, string);
2246 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SQLID] = db_get_field_int(result, 0);
2247 db_free_result(result);
2248
2249 format(string, sizeof (string), "TDEditor: Добавлен новый текÑтдрав: ТекÑÑ‚ #%i [Группа: %s].", textdrawid, groupData[groupid][E_GROUP_NAME]);
2250 SendClientMessage(playerid, MESSAGE_COLOR, string);
2251
2252 return ShowPlayerGroupDialog(playerid, groupid);
2253 }
2254
2255 case 1: {
2256 if (groupData[groupid][E_GROUP_TEXTDRAWS_COUNT] == 0) {
2257 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Ð’ группе нет текÑтдравов!");
2258 return ShowPlayerGroupDialog(playerid, groupid);
2259 }
2260
2261 playerEditing[playerid] = EDITING_GROUP_POS;
2262 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
2263 if (showTextDrawCmds) {
2264 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
2265 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
2266 }
2267
2268 TogglePlayerControllable(playerid, false);
2269 }
2270
2271 case 2: {
2272 if (groupData[groupid][E_GROUP_VISIBLE]) {
2273 groupData[groupid][E_GROUP_VISIBLE] = false;
2274 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
2275 TextDrawHideForAll(groupTextDrawData[groupid][i][E_TEXTDRAW_ID]);
2276 }
2277
2278 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: ВидимоÑть группы текÑтдравов выключена.");
2279 }
2280 else {
2281 groupData[groupid][E_GROUP_VISIBLE] = true;
2282 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
2283 TextDrawShowForAll(groupTextDrawData[groupid][i][E_TEXTDRAW_ID]);
2284 }
2285
2286 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: ВидимоÑть группы текÑтдравов включена.");
2287 }
2288
2289 return ShowPlayerGroupDialog(playerid, groupid);
2290 }
2291
2292 case 3: {
2293 new string[512];
2294 format(string, sizeof (string), ""COL_WHITE"Введите новое "COL_GREEN"ÐÐЗВÐÐИЕ ГРУППЫ"COL_WHITE" текÑтдравов, которое вам нужно!\n\n"COL_YELLOW"Текущее название:\t"COL_WHITE"%s", groupData[groupid][E_GROUP_NAME]);
2295 return Dialog_Show(playerid, CHANGE_GROUP_NAME, DIALOG_STYLE_INPUT, "TDEditor: Изменить название группы", string, "Изменить", "Ðазад");
2296 }
2297
2298 case 4: {
2299 if (groupsCount == MAX_GROUPS) {
2300 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: Вы не можете добавить более \""#MAX_GROUPS"\" групп.");
2301 SendClientMessage(playerid, MESSAGE_COLOR, "Измените лимит в Ñкрипте (MAX_GROUPS) и перекомпилируйте, чтобы иметь возможноÑть добавить больше.");
2302 return ShowPlayerGroupDialog(playerid, groupid);
2303 }
2304
2305 groupData[groupsCount] = groupData[groupid];
2306
2307 new bool:nameExist;
2308 new newName[MAX_GROUP_NAME];
2309 new groupName[MAX_GROUP_NAME];
2310 strmid(groupName, groupData[groupid][E_GROUP_NAME], 0, (MAX_GROUP_NAME - 3));
2311
2312 for (new x = 1; ; x++) {
2313 format(newName, MAX_GROUP_NAME, "%s_%i", groupName, x);
2314 nameExist = false;
2315
2316 for (new i; i < groupsCount; i++) {
2317 if (!strcmp(groupData[i][E_GROUP_NAME], newName, true)) {
2318 nameExist = true;
2319 break;
2320 }
2321 }
2322
2323 if (!nameExist) {
2324 break;
2325 }
2326 }
2327
2328 format(groupData[groupsCount][E_GROUP_NAME], MAX_GROUP_NAME, newName);
2329
2330 new string[1024] = "CREATE TABLE IF NOT EXISTS ";
2331 strcat(string, groupData[groupsCount][E_GROUP_NAME]);
2332 strcat(string, " (`id` INTEGER PRIMARY KEY, \
2333 `text` VARCHAR("#MAX_GROUP_TEXTDRAW_TEXT"), \
2334 `x` FLOAT, \
2335 `y` FLOAT, \
2336 `letter_x` FLOAT, \
2337 `letter_y` FLOAT, \
2338 `text_x` FLOAT, \
2339 `text_y` FLOAT, \
2340 `alignment` INTEGER, \
2341 `color` INTEGER, \
2342 `usebox` INTEGER, \
2343 `box_color` INTEGER, \
2344 `shadow` INTEGER, ");
2345 strcat(string, "`outline` INTEGER, \
2346 `background_color` INTEGER, \
2347 `font` INTEGER, \
2348 `proportional` INTEGER, \
2349 `selectable` INTEGER, \
2350 `preview_model` INTEGER, \
2351 `rot_x` FLOAT, \
2352 `rot_y` FLOAT, \
2353 `rot_z` FLOAT, \
2354 `rot_zoom` FLOAT, \
2355 `veh_color1` INTEGER, \
2356 `veh_color2` INTEGER, \
2357 `type_player` INTEGER)");
2358 db_query(projectDB, string);
2359
2360 new DBResult:result;
2361 for (new i; i < groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]; i++) {
2362 for (new x; E_TEXTDRAW:x < E_TEXTDRAW; x++) {
2363 if (E_TEXTDRAW:x == E_TEXTDRAW_ID || E_TEXTDRAW:x == E_TEXTDRAW_SQLID) {
2364 continue;
2365 }
2366
2367 groupTextDrawData[groupsCount][i][E_TEXTDRAW:x] = groupTextDrawData[groupid][i][E_TEXTDRAW:x];
2368 }
2369
2370 string = "INSERT INTO ";
2371 strcat(string, groupData[groupsCount][E_GROUP_NAME]);
2372 strcat(string, "(text, x, y, letter_x, letter_y, text_x, text_y, alignment, color, usebox, box_color, shadow, outline, background_color, font, proportional, selectable, preview_model, rot_x, rot_y, rot_z, rot_zoom, veh_color1, veh_color2, type_player)");
2373 strcat(string, "VALUES ('%q', '%f', '%f', '%f', '%f', '%f', '%f', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f', '%i', '%i', '%i')");
2374 format(string, sizeof (string), string,
2375 groupTextDrawData[groupsCount][i][E_TEXTDRAW_TEXT],
2376 groupTextDrawData[groupsCount][i][E_TEXTDRAW_X], groupTextDrawData[groupsCount][i][E_TEXTDRAW_Y],
2377 groupTextDrawData[groupsCount][i][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupsCount][i][E_TEXTDRAW_LETTERSIZE_Y],
2378 groupTextDrawData[groupsCount][i][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupsCount][i][E_TEXTDRAW_TEXTSIZE_Y],
2379 groupTextDrawData[groupsCount][i][E_TEXTDRAW_ALIGNMENT],
2380 groupTextDrawData[groupsCount][i][E_TEXTDRAW_COLOR],
2381 groupTextDrawData[groupsCount][i][E_TEXTDRAW_USE_BOX],
2382 groupTextDrawData[groupsCount][i][E_TEXTDRAW_BOX_COLOR],
2383 groupTextDrawData[groupsCount][i][E_TEXTDRAW_SHADOW],
2384 groupTextDrawData[groupsCount][i][E_TEXTDRAW_OUTLINE],
2385 groupTextDrawData[groupsCount][i][E_TEXTDRAW_BACKGROUND_COLOR],
2386 groupTextDrawData[groupsCount][i][E_TEXTDRAW_FONT],
2387 groupTextDrawData[groupsCount][i][E_TEXTDRAW_PROPORTIONAL],
2388 groupTextDrawData[groupsCount][i][E_TEXTDRAW_SELECTABLE],
2389 groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_MODEL],
2390 groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_ROT_ZOOM],
2391 groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_VEH_COLOR1], groupTextDrawData[groupsCount][i][E_TEXTDRAW_PREVIEW_VEH_COLOR2],
2392 groupTextDrawData[groupsCount][i][E_TEXTDRAW_TYPE_PLAYER]);
2393 db_query(projectDB, string);
2394
2395 format(string, sizeof (string), "SELECT id FROM %s ORDER BY id DESC LIMIT 1", groupData[groupsCount][E_GROUP_NAME]);
2396 result = db_query(projectDB, string);
2397 groupTextDrawData[groupsCount][i][E_TEXTDRAW_SQLID] = db_get_field_int(result, 0);
2398 db_free_result(result);
2399
2400 groupTextDrawData[groupsCount][i][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
2401 CreateGroupTextDraw(groupsCount, i);
2402 }
2403 groupsCount++;
2404
2405
2406 format(string, sizeof (string), "TDEditor: Группа '%s' Ñкопирована в '%s_1'.", groupData[groupid][E_GROUP_NAME], groupData[groupid][E_GROUP_NAME]);
2407 SendClientMessage(playerid, MESSAGE_COLOR, string);
2408 return cmd_text(playerid);
2409 }
2410
2411 case 5: {
2412 new string[512];
2413 format(string, sizeof (string), ""COL_WHITE"Ð’Ñ‹ уверены, что хотите удалить Ñту "COL_ORANGE"ГРУППУ ТЕКСТДРÐВОВ"COL_WHITE"?\n\n"COL_RED"Ðазвание группы:\t"COL_GREY"%s\n"COL_RED"ТекÑтдравы:\t"COL_GREY"%i штук\n\n"COL_GREY"Примечание: Удаление группы полноÑтью удалит текÑтдравы в ней из папки scriptfiles. ВоÑÑтановить будет нельзÑ!", groupData[groupid][E_GROUP_NAME], groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]);
2414 return Dialog_Show(playerid, CONFIRM_DELETE_GROUP, DIALOG_STYLE_MSGBOX, "TDEditor: Подтверждение ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹", string, "Да", "Ðет");
2415 }
2416
2417 default: {
2418 return ShowPlayerTextDrawDialog(playerid, (listitem - 6));
2419 }
2420 }
2421 return 1;
2422}
2423
2424Dialog:CONFIRM_DELETE_GROUP(playerid, response, listitem, inputtext[]) {
2425 if (!response) {
2426 return ShowPlayerGroupDialog(playerid, playerCurrentGroup[playerid]);
2427 }
2428
2429 new groupid = playerCurrentGroup[playerid];
2430
2431 new string[150];
2432 format(string, sizeof (string), "DROP TABLE %s", groupData[groupid][E_GROUP_NAME]);
2433 db_query(projectDB, string);
2434
2435 format(string, sizeof (string), "TDEditor: Группа \"%s\" удалена.", groupData[groupid][E_GROUP_NAME]);
2436
2437 ResetGroupData(groupid);
2438
2439 for (new i = groupid; i < (groupsCount - 1); i++) {
2440 for (new x; x < groupData[i + 1][E_GROUP_TEXTDRAWS_COUNT]; x++) {
2441 groupTextDrawData[i][x] = groupTextDrawData[i + 1][x];
2442 }
2443 groupData[i] = groupData[i + 1];
2444 }
2445 groupsCount--;
2446
2447 SendClientMessage(playerid, MESSAGE_COLOR, string);
2448 return cmd_text(playerid);
2449}
2450
2451Dialog:CHANGE_GROUP_NAME(playerid, response, listitem, inputtext[]) {
2452 if (response) {
2453 new name[MAX_GROUP_NAME];
2454 if (sscanf(inputtext, "s["#MAX_GROUP_NAME"]", name)) {
2455 new string[512];
2456 format(string, sizeof (string), ""COL_WHITE"Введите новое "COL_GREEN"ÐÐЗВÐÐИЕ ГРУППЫ"COL_WHITE" текÑтдравов, которое вам нужно!\n\n"COL_YELLOW"Текущее название:\t"COL_WHITE"%s\n\n"COL_RED"Ошибка: "COL_GREY"Ðазвание группы не может быть пуÑтым или пробелами.", groupData[playerCurrentGroup[playerid]][E_GROUP_NAME]);
2457 return Dialog_Show(playerid, CHANGE_GROUP_NAME, DIALOG_STYLE_INPUT, "TDEditor: Изменить название группы", string, "Изменить", "Ðазад");
2458 }
2459
2460 for (new i; i < groupsCount; i++) {
2461 if (!strcmp(name, groupData[i][E_GROUP_NAME], true)) {
2462 new string[512];
2463 format(string, sizeof (string), ""COL_WHITE"Введите новое "COL_GREEN"ÐÐЗВÐÐИЕ ГРУППЫ"COL_WHITE" текÑтдравов, которое вам нужно!\n\n"COL_YELLOW"Текущее название:\t"COL_WHITE"%s\n\n"COL_RED"Ошибка: "COL_GREY"Ð¢Ð°ÐºÐ°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° уже ÑущеÑтвует, выберите уникальное название.", groupData[playerCurrentGroup[playerid]][E_GROUP_NAME]);
2464 return Dialog_Show(playerid, CHANGE_GROUP_NAME, DIALOG_STYLE_INPUT, "TDEditor: Изменить название группы", string, "Изменить", "Ðазад");
2465 }
2466 }
2467
2468 new groupid = playerCurrentGroup[playerid];
2469
2470 new string[150];
2471 format(string, sizeof (string), "ALTER TABLE %s RENAME TO %s", groupData[groupid][E_GROUP_NAME], name);
2472 db_query(projectDB, string);
2473
2474 format(string, sizeof (string), "TDEditor: Ðазвание группы изменено Ñ \"%s\" на \"%s\".", groupData[groupid][E_GROUP_NAME], name);
2475 SendClientMessage(playerid, MESSAGE_COLOR, string);
2476
2477 format(groupData[groupid][E_GROUP_NAME], MAX_GROUP_NAME, name);
2478 }
2479
2480 return ShowPlayerGroupDialog(playerid, playerCurrentGroup[playerid]);
2481}
2482
2483Dialog:TEXTDRAW_MENU(playerid, response, listitem, inputtext[]) {
2484 if (!response) {
2485 SaveProjectGroupTextDraw(playerCurrentGroup[playerid], playerCurrentTextDraw[playerid]);
2486 return ShowPlayerGroupDialog(playerid, playerCurrentGroup[playerid]);
2487 }
2488
2489 new groupid = playerCurrentGroup[playerid];
2490 new textdrawid = playerCurrentTextDraw[playerid];
2491
2492 switch (listitem) {
2493 case 0: {
2494 return Dialog_Show(playerid, CHANGE_TEXT_OR_POSITION, DIALOG_STYLE_LIST, "TDEditor: Изменить текÑÑ‚/позицию", "Изменить текÑÑ‚\nИзменить позицию", "Выбрать", "Ðазад");
2495 }
2496
2497 case 1: {
2498 return Dialog_Show(playerid, CHANGE_FONT, DIALOG_STYLE_LIST, "TDEditor: Изменить шрифт", "Шрифт 0\nШрифт 1\nШрифт 2\nШрифт 3\nШрифт 4 (Спрайт)\nШрифт 5 (Превью модель)", "Выбрать", "Ðазад");
2499 }
2500
2501 case 2: {
2502 return Dialog_Show(playerid, CHANGE_ALIGNMENT, DIALOG_STYLE_LIST, "TDEditor: Изменить выравнивание", "Выравнивание 1 (По левому краю)\nВыравнивание 2 (По центру)\nВыравнивание 3 (По правому краю)", "Выбрать", "Ðазад");
2503 }
2504
2505 case 3: {
2506 new string[150];
2507
2508 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL]) {
2509 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL] = false;
2510
2511 format(string, sizeof (string), "TDEditor: ПропорциональноÑть текÑтдрава #%i выключена.", textdrawid);
2512 }
2513 else {
2514 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL] = true;
2515
2516 format(string, sizeof (string), "TDEditor: ПропорциональноÑть текÑтдрава #%i включена.", textdrawid);
2517 }
2518
2519 TextDrawSetProportional(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PROPORTIONAL]);
2520 if (groupData[groupid][E_GROUP_VISIBLE]) {
2521 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2522 }
2523
2524 SendClientMessage(playerid, MESSAGE_COLOR, string);
2525
2526 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2527 }
2528
2529 case 4: {
2530 playerEditing[playerid] = EDITING_SHADOW_SIZE;
2531 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
2532 if (showTextDrawCmds) {
2533 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
2534 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
2535 }
2536
2537 TogglePlayerControllable(playerid, false);
2538 }
2539
2540 case 5: {
2541 playerEditing[playerid] = EDITING_OUTLINE_SIZE;
2542 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
2543 if (showTextDrawCmds) {
2544 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
2545 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
2546 }
2547
2548 TogglePlayerControllable(playerid, false);
2549 }
2550
2551 case 6: {
2552 playerEditing[playerid] = EDITING_BACKGROUND_COLOR;
2553 Dialog_Show(playerid, CHANGE_COLOR, DIALOG_STYLE_LIST, "TDEditor: Изменить цвет обводки/тени", "ВвеÑти Ñвой HEX цвет\nВвеÑти Ñвой RGBA цвет\nСпиÑок цветов TDEditor'а", "Выбрать", "Ðазад");
2554 }
2555
2556 case 7: {
2557 playerEditing[playerid] = EDITING_LETTER_SIZE;
2558 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
2559 if (showTextDrawCmds) {
2560 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
2561 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
2562 }
2563
2564 TogglePlayerControllable(playerid, false);
2565 }
2566
2567 case 8: {
2568 playerEditing[playerid] = EDITING_TEXTDRAW_COLOR;
2569 Dialog_Show(playerid, CHANGE_COLOR, DIALOG_STYLE_LIST, "TDEditor: Изменить цвет текÑтдрава", "ВвеÑти Ñвой HEX цвет\nВвеÑти Ñвой RGBA цвет\nСпиÑок цветов TDEditor'а", "Выбрать", "Ðазад");
2570 }
2571
2572 case 9: {
2573 new string[150];
2574
2575 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX]) {
2576 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX] = false;
2577
2578 format(string, sizeof (string), "TDEditor: ИÑпользование Box'а Ð´Ð»Ñ Ñ‚ÐµÐºÑтдрава #%i выключено.", textdrawid);
2579 }
2580 else {
2581 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX] = true;
2582
2583 format(string, sizeof (string), "TDEditor: ИÑпользование Box'а Ð´Ð»Ñ Ñ‚ÐµÐºÑтдрава #%i включено.", textdrawid);
2584 }
2585
2586 TextDrawUseBox(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_USE_BOX]);
2587 if (groupData[groupid][E_GROUP_VISIBLE]) {
2588 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2589 }
2590
2591 SendClientMessage(playerid, MESSAGE_COLOR, string);
2592
2593 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2594 }
2595
2596 case 10: {
2597 playerEditing[playerid] = EDITING_TEXT_SIZE;
2598 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
2599 if (showTextDrawCmds) {
2600 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
2601 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
2602 }
2603
2604 TogglePlayerControllable(playerid, false);
2605 }
2606
2607 case 11: {
2608 playerEditing[playerid] = EDITING_BOX_COLOR;
2609 Dialog_Show(playerid, CHANGE_COLOR, DIALOG_STYLE_LIST, "TDEditor: Изменить цвет box'а", "ВвеÑти Ñвой HEX цвет\nВвеÑти Ñвой RGBA цвет\nСпиÑок цветов TDEditor'а", "Выбрать", "Ðазад");
2610 }
2611
2612 case 12: {
2613 new string[150];
2614
2615 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE]) {
2616 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE] = false;
2617
2618 format(string, sizeof (string), "TDEditor: КликабельноÑть текÑтдрава #%i выключена.", textdrawid);
2619 }
2620 else {
2621 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE] = true;
2622
2623 format(string, sizeof (string), "TDEditor: КликабельноÑть текÑтдрава #%i включена.", textdrawid);
2624 }
2625
2626 TextDrawSetSelectable(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SELECTABLE]);
2627 if (groupData[groupid][E_GROUP_VISIBLE]) {
2628 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2629 }
2630
2631 SendClientMessage(playerid, MESSAGE_COLOR, string);
2632
2633 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2634 }
2635
2636 case 13: {
2637 Dialog_Show(playerid, PREVIEW_MODEL_OPTIONS, DIALOG_STYLE_LIST, "TDEditor: Опции превью модели", "ID модели\nИзменить вращение Ñ ÐºÐ»Ð°Ð²Ð¸Ð°Ñ‚ÑƒÑ€Ñ‹ (только X, Y)\nВвеÑти вращение (X, Y, Z, МаÑштаб)", "Выбрать", "Ðазад");
2638 }
2639
2640 case 14: {
2641 new string[150];
2642
2643 if (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TYPE_PLAYER]) {
2644 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TYPE_PLAYER] = false;
2645
2646 format(string, sizeof (string), "TDEditor: Тип текÑтдрава #%i изменён на ГЛОБÐЛЬÐЫЙ ('Text:').", textdrawid);
2647 }
2648 else {
2649 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TYPE_PLAYER] = true;
2650
2651 format(string, sizeof (string), "TDEditor: Тип текÑтдрава #%i изменён на ПЕРСОÐÐЛЬÐЫЙ ('PlayerText:').", textdrawid);
2652 }
2653
2654 if (groupData[groupid][E_GROUP_VISIBLE]) {
2655 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2656 }
2657
2658 SendClientMessage(playerid, MESSAGE_COLOR, string);
2659
2660 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2661 }
2662
2663 case 15: {
2664 if (groupData[groupid][E_GROUP_TEXTDRAWS_COUNT] == MAX_GROUP_TEXTDRAWS) {
2665 SendClientMessage(playerid, MESSAGE_COLOR, "TDEditor: ÐÐµÐ»ÑŒÐ·Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ более \""#MAX_GROUP_TEXTDRAWS"\" текÑтдравов в группу.");
2666 SendClientMessage(playerid, MESSAGE_COLOR, "Измените лимит в Ñкрипте (MAX_GROUP_TEXTDRAWS) и перекомпилируйте, чтобы иметь возможноÑть добавить больше.");
2667 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2668 }
2669
2670 new newTextdrawid = groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]++;
2671 for (new i; E_TEXTDRAW:i < E_TEXTDRAW; i++) {
2672 if (E_TEXTDRAW:i == E_TEXTDRAW_ID || E_TEXTDRAW:i == E_TEXTDRAW_SQLID) {
2673 continue;
2674 }
2675
2676 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW:i] = groupTextDrawData[groupid][textdrawid][E_TEXTDRAW:i];
2677 }
2678
2679 new string[1024] = "INSERT INTO ";
2680 strcat(string, groupData[groupid][E_GROUP_NAME]);
2681 strcat(string, "(text, x, y, letter_x, letter_y, text_x, text_y, alignment, color, usebox, box_color, shadow, outline, background_color, font, proportional, selectable, preview_model, rot_x, rot_y, rot_z, rot_zoom, veh_color1, veh_color2, type_player)");
2682 strcat(string, "VALUES ('%q', '%f', '%f', '%f', '%f', '%f', '%f', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f', '%i', '%i', '%i')");
2683 format(string, sizeof (string), string,
2684 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_TEXT],
2685 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_X], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_Y],
2686 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_LETTERSIZE_X], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_LETTERSIZE_Y],
2687 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_TEXTSIZE_X], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_TEXTSIZE_Y],
2688 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_ALIGNMENT],
2689 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_COLOR],
2690 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_USE_BOX],
2691 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_BOX_COLOR],
2692 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_SHADOW],
2693 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_OUTLINE],
2694 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_BACKGROUND_COLOR],
2695 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_FONT],
2696 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PROPORTIONAL],
2697 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_SELECTABLE],
2698 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_MODEL],
2699 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM],
2700 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR1], groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_PREVIEW_VEH_COLOR2],
2701 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_TYPE_PLAYER]);
2702 db_query(projectDB, string);
2703
2704 format(string, sizeof (string), "SELECT id FROM %s ORDER BY id DESC LIMIT 1", groupData[groupid][E_GROUP_NAME]);
2705 new DBResult:result = db_query(projectDB, string);
2706 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_SQLID] = db_get_field_int(result, 0);
2707 db_free_result(result);
2708
2709 groupTextDrawData[groupid][newTextdrawid][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
2710 CreateGroupTextDraw(groupid, newTextdrawid);
2711
2712 format(string, sizeof (string), "TDEditor: ТекÑтдрав Ñкопирован: ТекÑÑ‚ #%i [Группа: %s].", newTextdrawid, groupData[groupid][E_GROUP_NAME]);
2713 SendClientMessage(playerid, MESSAGE_COLOR, string);
2714
2715 return ShowPlayerGroupDialog(playerid, groupid);
2716 }
2717
2718 case 16: {
2719 new previewChars[MAX_GROUP_TEXTDRAW_PREVIEW_CHARS + 4];
2720 strmid(previewChars, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], 0, MAX_GROUP_TEXTDRAW_PREVIEW_CHARS);
2721 if (strlen(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT]) > MAX_GROUP_TEXTDRAW_PREVIEW_CHARS) {
2722 strcat(previewChars, "...");
2723 }
2724
2725 new fontName[16];
2726 switch (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT]) {
2727 case 0, 1, 2, 3: {
2728 fontName = "ТекÑÑ‚";
2729 }
2730
2731 case 4: {
2732 fontName = "Спрайт";
2733 }
2734
2735 case 5: {
2736 fontName = "Превью модель";
2737 }
2738 }
2739
2740 new string[256];
2741 format(string, sizeof (string), ""COL_WHITE"Ð’Ñ‹ уверены, что хотите удалить "COL_ORANGE"ТЕКСТДРÐÐ’: #%i"COL_WHITE"?\n\n"COL_RED"ТекÑÑ‚ текÑтдрава:\t"COL_WHITE"'%s'\n"COL_RED"Шрифт текÑтдрава:\t"COL_WHITE"%i (%s)", textdrawid, previewChars, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT], fontName);
2742 return Dialog_Show(playerid, CONFIRM_DELETE_TEXTDRAW, DIALOG_STYLE_MSGBOX, "TDEditor: Подтверждение ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹", string, "Да", "Ðет");
2743 }
2744 }
2745 return 1;
2746}
2747
2748Dialog:CHANGE_TEXT_OR_POSITION(playerid, response, listitem, inputtext[]) {
2749 if (!response) {
2750 return ShowPlayerTextDrawDialog(playerid, playerCurrentTextDraw[playerid]);
2751 }
2752
2753 switch (listitem) {
2754 case 0: {
2755 new groupid = playerCurrentGroup[playerid];
2756 new textdrawid = playerCurrentTextDraw[playerid];
2757
2758 new previewChars[MAX_GROUP_TEXTDRAW_PREVIEW_CHARS + 4];
2759 strmid(previewChars, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], 0, MAX_GROUP_TEXTDRAW_PREVIEW_CHARS);
2760 if (strlen(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT]) > MAX_GROUP_TEXTDRAW_PREVIEW_CHARS) {
2761 strcat(previewChars, "...");
2762 }
2763
2764 new string[256];
2765 format(string, sizeof(string), ""COL_WHITE"Введите Ñтроку в качеÑтве "COL_GREEN"ТЕКСТÐ"COL_WHITE" текÑтдрава.\n\n"COL_YELLOW"Текущий текÑÑ‚: "COL_WHITE"'%s'", previewChars);
2766 Dialog_Show(playerid, CHANGE_TEXT, DIALOG_STYLE_INPUT, "TDEditor: Изменить текÑÑ‚", string, "Ок", "Ðазад");
2767 }
2768
2769 case 1: {
2770 playerEditing[playerid] = EDITING_POS;
2771 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
2772 if (showTextDrawCmds) {
2773 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
2774 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
2775 }
2776
2777 TogglePlayerControllable(playerid, false);
2778 }
2779 }
2780 return 1;
2781}
2782
2783Dialog:CHANGE_TEXT(playerid, response, listitem, inputtext[]) {
2784 if (!response) {
2785 return dialog_TEXTDRAW_MENU(playerid, 1, 0, "\1");
2786 }
2787
2788 new groupid = playerCurrentGroup[playerid];
2789 new textdrawid = playerCurrentTextDraw[playerid];
2790
2791 new previewChars[MAX_GROUP_TEXTDRAW_PREVIEW_CHARS + 4];
2792 strmid(previewChars, groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], 0, MAX_GROUP_TEXTDRAW_PREVIEW_CHARS);
2793 if (strlen(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT]) > MAX_GROUP_TEXTDRAW_PREVIEW_CHARS) {
2794 strcat(previewChars, "...");
2795 }
2796
2797 new text[MAX_GROUP_TEXTDRAW_TEXT];
2798 if (sscanf(inputtext, "s["#MAX_GROUP_TEXTDRAW_TEXT"]", text)) {
2799 new string[256];
2800 format(string, sizeof(string), ""COL_WHITE"Введите Ñтроку в качеÑтве "COL_GREEN"ТЕКСТÐ"COL_WHITE" текÑтдрава.\n\n"COL_YELLOW"Текущий текÑÑ‚: "COL_WHITE"'%s'\n\n"COL_RED"Ошибка: "COL_GREY"ТекÑÑ‚ не введён.", previewChars);
2801 return Dialog_Show(playerid, CHANGE_TEXT, DIALOG_STYLE_INPUT, "TDEditor: Изменить текÑÑ‚", string, "Ок", "Ðазад");
2802 }
2803
2804 format(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_TEXT], MAX_GROUP_TEXTDRAW_TEXT, text);
2805 TextDrawSetString(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], text);
2806 if (groupData[groupid][E_GROUP_VISIBLE]) {
2807 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2808 }
2809
2810 return dialog_TEXTDRAW_MENU(playerid, 1, 0, "\1");
2811}
2812
2813Dialog:CHANGE_FONT(playerid, response, listitem, inputtext[]) {
2814 if (!response) {
2815 return ShowPlayerTextDrawDialog(playerid, playerCurrentTextDraw[playerid]);
2816 }
2817
2818 new groupid = playerCurrentGroup[playerid];
2819 new textdrawid = playerCurrentTextDraw[playerid];
2820
2821 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_FONT] = listitem;
2822 TextDrawFont(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], listitem);
2823 if (groupData[groupid][E_GROUP_VISIBLE]) {
2824 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2825 }
2826
2827 new string[150];
2828 format(string, sizeof (string), "TDEditor: Шрифт текÑтдрава #%i изменён на '%i'.", textdrawid, listitem);
2829 SendClientMessage(playerid, MESSAGE_COLOR, string);
2830
2831 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2832}
2833
2834Dialog:CHANGE_ALIGNMENT(playerid, response, listitem, inputtext[]) {
2835 if (!response) {
2836 return ShowPlayerTextDrawDialog(playerid, playerCurrentTextDraw[playerid]);
2837 }
2838
2839 new groupid = playerCurrentGroup[playerid];
2840 new textdrawid = playerCurrentTextDraw[playerid];
2841
2842 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ALIGNMENT] = (listitem + 1);
2843 TextDrawAlignment(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], (listitem + 1));
2844 if (groupData[groupid][E_GROUP_VISIBLE]) {
2845 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2846 }
2847
2848 new string[150];
2849 format(string, sizeof (string), "TDEditor: Выравнивание текÑтдрава #%i изменено на '%i'.", textdrawid, (listitem + 1));
2850 SendClientMessage(playerid, MESSAGE_COLOR, string);
2851
2852 return ShowPlayerTextDrawDialog(playerid, textdrawid);
2853}
2854
2855Dialog:CONFIRM_DELETE_TEXTDRAW(playerid, response, listitem, inputtext[]) {
2856 if (!response) {
2857 return ShowPlayerTextDrawDialog(playerid, playerCurrentTextDraw[playerid]);
2858 }
2859
2860 new groupid = playerCurrentGroup[playerid];
2861 new textdrawid = playerCurrentTextDraw[playerid];
2862
2863 new string[150];
2864 format(string, sizeof (string), "DELETE FROM %s WHERE id = %i", groupData[groupid][E_GROUP_NAME], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_SQLID]);
2865 db_query(projectDB, string);
2866
2867 TextDrawDestroy(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
2868 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID] = Text:INVALID_TEXT_DRAW;
2869
2870 format(string, sizeof (string), "TDEditor: ТекÑтдрав #%i удалён.", textdrawid);
2871
2872 for (new i = textdrawid; i < (groupData[groupid][E_GROUP_TEXTDRAWS_COUNT] - 1); i++) {
2873 groupTextDrawData[groupid][i] = groupTextDrawData[groupid][i + 1];
2874 }
2875 groupData[groupid][E_GROUP_TEXTDRAWS_COUNT]--;
2876
2877 SendClientMessage(playerid, MESSAGE_COLOR, string);
2878 return ShowPlayerGroupDialog(playerid, playerCurrentGroup[playerid]);
2879}
2880
2881Dialog:CHANGE_COLOR(playerid, response, listitem, inputtext[]) {
2882 if (!response) {
2883 playerEditing[playerid] = EDITING_NONE;
2884 return ShowPlayerTextDrawDialog(playerid, playerCurrentTextDraw[playerid]);
2885 }
2886
2887 switch (listitem) {
2888 case 0: {
2889 return Dialog_Show(playerid, CUSTOM_HEX_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой HEX цвет", ""COL_WHITE"Ð’Ñтавьте код цвета "COL_GREEN"HEXA-DECIMAL"COL_WHITE" ниже.\n\n"COL_WHITE"(например: '0xFFFFFFF' - Ñто белый)", "Ок", "Ðазад");
2890 }
2891
2892 case 1: {
2893 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_RED"КРÐСÐОГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
2894 }
2895
2896 default: {
2897 static string[sizeof (COLORS) * ((32 * 2) + 1)];
2898 string[0] = EOS;
2899 for (new i; i < sizeof (COLORS); i++) {
2900 format(string, sizeof (string), "%s{%06x}%s\n", string, (COLORS[i][E_COLOR_CODE] >>> 8), COLORS[i][E_COLOR_NAME]);
2901 }
2902 return Dialog_Show(playerid, COLOR_MENU, DIALOG_STYLE_LIST, "TDEditor: Меню цветов", string, "Выбрать", "Ðазад");
2903 }
2904 }
2905 return 1;
2906}
2907
2908Dialog:CUSTOM_HEX_COLOR(playerid, response, listitem, inputtext[]) {
2909 if (!response) {
2910 switch (playerEditing[playerid]) {
2911 case EDITING_BACKGROUND_COLOR: {
2912 return dialog_TEXTDRAW_MENU(playerid, 1, 6, "\1");
2913 }
2914
2915 case EDITING_TEXTDRAW_COLOR: {
2916 return dialog_TEXTDRAW_MENU(playerid, 1, 8, "\1");
2917 }
2918
2919 case EDITING_BOX_COLOR: {
2920 return dialog_TEXTDRAW_MENU(playerid, 1, 11, "\1");
2921 }
2922 }
2923 }
2924
2925 new red[3], green[3], blue[3], alpha[3];
2926
2927 if (inputtext[0] == '0' && inputtext[1] == 'x') { // He's using 0xFFFFFF format
2928 if (strlen(inputtext) != 8 && strlen(inputtext) != 10) {
2929 return Dialog_Show(playerid, CUSTOM_HEX_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой HEX цвет", ""COL_WHITE"Ð’Ñтавьте код цвета "COL_GREEN"HEXA-DECIMAL"COL_WHITE" ниже.\n\n"COL_WHITE"(например: '0xFFFFFFF' - Ñто белый)\n\n"COL_RED"Ошибка: "COL_GREY"Введён неверный hexa-decimal код цвета.", "Ок", "Ðазад");
2930 }
2931
2932 format(red, sizeof (red), "%c%c", inputtext[2], inputtext[3]);
2933 format(green, sizeof (green), "%c%c", inputtext[4], inputtext[5]);
2934 format(blue, sizeof (blue), "%c%c", inputtext[6], inputtext[7]);
2935
2936 if (inputtext[8] != '\0') {
2937 format(alpha, sizeof (alpha), "%c%c", inputtext[8], inputtext[9]);
2938 }
2939 else {
2940 alpha = "FF";
2941 }
2942 }
2943 else if (inputtext[0] == '#') { // He's using #FFFFFF format
2944 if (strlen(inputtext) != 7 && strlen(inputtext) != 9) {
2945 return Dialog_Show(playerid, CUSTOM_HEX_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой HEX цвет", ""COL_WHITE"Ð’Ñтавьте код цвета "COL_GREEN"HEXA-DECIMAL"COL_WHITE" ниже.\n\n"COL_WHITE"(например: '0xFFFFFFF' - Ñто белый)\n\n"COL_RED"Ошибка: "COL_GREY"Введён неверный hexa-decimal код цвета.", "Ок", "Ðазад");
2946 }
2947
2948 format(red, sizeof (red), "%c%c", inputtext[1], inputtext[2]);
2949 format(green, sizeof (green), "%c%c", inputtext[3], inputtext[4]);
2950 format(blue, sizeof (blue), "%c%c", inputtext[5], inputtext[6]);
2951
2952 if (inputtext[7] != '\0') {
2953 format(alpha, sizeof (alpha), "%c%c", inputtext[7], inputtext[8]);
2954 }
2955 else {
2956 alpha = "FF";
2957 }
2958 }
2959 else { // He's using FFFFFF format
2960 if (strlen(inputtext) != 6 && strlen(inputtext) != 8) {
2961 return Dialog_Show(playerid, CUSTOM_HEX_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой HEX цвет", ""COL_WHITE"Ð’Ñтавьте код цвета "COL_GREEN"HEXA-DECIMAL"COL_WHITE" ниже.\n\n"COL_WHITE"(например: '0xFFFFFFF' - Ñто белый)\n\n"COL_RED"Ошибка: "COL_GREY"Введён неверный hexa-decimal код цвета.", "Ок", "Ðазад");
2962 }
2963
2964 format(red, sizeof (red), "%c%c", inputtext[0], inputtext[1]);
2965 format(green, sizeof (green), "%c%c", inputtext[2], inputtext[3]);
2966 format(blue, sizeof (blue), "%c%c", inputtext[4], inputtext[5]);
2967
2968 if (inputtext[7] != '\0') {
2969 format(alpha, sizeof (alpha), "%c%c", inputtext[6], inputtext[7]);
2970 }
2971 else {
2972 alpha = "FF";
2973 }
2974 }
2975
2976 new groupid = playerCurrentGroup[playerid];
2977 new textdrawid = playerCurrentTextDraw[playerid];
2978
2979 new string[150];
2980 switch (playerEditing[playerid]) {
2981 case EDITING_TEXTDRAW_COLOR: {
2982 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] = RGBA(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
2983 TextDrawColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR]);
2984
2985 format(string, sizeof (string), "TDEditor: Цвет текÑтдрава #%i изменён на {%06x}ПредпроÑмотр цвета", textdrawid, (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] >>> 8));
2986 }
2987
2988 case EDITING_BOX_COLOR: {
2989 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] = RGBA(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
2990 TextDrawBoxColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR]);
2991
2992 format(string, sizeof (string), "TDEditor: Цвет box'а текÑтдрава #%i изменён на {%06x}ПредпроÑмотр цвета", textdrawid, (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] >>> 8));
2993 }
2994
2995 case EDITING_BACKGROUND_COLOR: {
2996 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] = RGBA(HexToInt(red), HexToInt(green), HexToInt(blue), HexToInt(alpha));
2997 TextDrawBackgroundColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR]);
2998
2999 format(string, sizeof (string), "TDEditor: Цвет обводки/тени текÑтдрава #%i изменён на {%06x}ПредпроÑмотр цвета", textdrawid, (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] >>> 8));
3000 }
3001 }
3002
3003 if (groupData[groupid][E_GROUP_VISIBLE]) {
3004 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3005 }
3006
3007 playerEditing[playerid] = EDITING_NONE;
3008 SendClientMessage(playerid, MESSAGE_COLOR, string);
3009
3010 return ShowPlayerTextDrawDialog(playerid, textdrawid);
3011}
3012
3013Dialog:CUSTOM_RGBA_COLOR(playerid, response, listitem, inputtext[]) {
3014 if (!response) {
3015 switch (GetPVarInt(playerid, "ColorElement")) {
3016 case 0: {
3017 DeletePVar(playerid, "ColorElement");
3018 DeletePVar(playerid, "ColorElement_R");
3019 DeletePVar(playerid, "ColorElement_G");
3020 DeletePVar(playerid, "ColorElement_B");
3021 DeletePVar(playerid, "ColorElement_A");
3022
3023 switch (playerEditing[playerid]) {
3024 case EDITING_BACKGROUND_COLOR: {
3025 return dialog_TEXTDRAW_MENU(playerid, 1, 6, "\1");
3026 }
3027
3028 case EDITING_TEXTDRAW_COLOR: {
3029 return dialog_TEXTDRAW_MENU(playerid, 1, 8, "\1");
3030 }
3031
3032 case EDITING_BOX_COLOR: {
3033 return dialog_TEXTDRAW_MENU(playerid, 1, 11, "\1");
3034 }
3035 }
3036 }
3037
3038 case 1: {
3039 SetPVarInt(playerid, "ColorElement", 0);
3040 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_RED"КРÐСÐОГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3041 }
3042
3043 case 2: {
3044 SetPVarInt(playerid, "ColorElement", 1);
3045 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_GREEN"ЗЕЛÐÐОГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3046 }
3047
3048 case 3: {
3049 SetPVarInt(playerid, "ColorElement", 2);
3050 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_BLUE"СИÐЕГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3051 }
3052 }
3053 }
3054
3055 new val;
3056 if (!sscanf(inputtext, "i", val)) {
3057 if (val >= 0 && val <= 255) {
3058 switch (GetPVarInt(playerid, "ColorElement")) {
3059 case 0: {
3060 SetPVarInt(playerid, "ColorElement", 1);
3061 SetPVarInt(playerid, "ColorElement_R", val);
3062 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_GREEN"ЗЕЛÐÐОГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3063 }
3064
3065 case 1: {
3066 SetPVarInt(playerid, "ColorElement", 2);
3067 SetPVarInt(playerid, "ColorElement_G", val);
3068 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_BLUE"СИÐЕГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3069 }
3070
3071 case 2: {
3072 SetPVarInt(playerid, "ColorElement", 3);
3073 SetPVarInt(playerid, "ColorElement_B", val);
3074 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_GREY"ПРОЗРÐЧÐОСТИ"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3075 }
3076
3077 case 3: {
3078 new groupid = playerCurrentGroup[playerid];
3079 new textdrawid = playerCurrentTextDraw[playerid];
3080
3081 new string[150];
3082 switch (playerEditing[playerid]) {
3083 case EDITING_TEXTDRAW_COLOR: {
3084 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] = RGBA(GetPVarInt(playerid, "ColorElement_R"), GetPVarInt(playerid, "ColorElement_G"), GetPVarInt(playerid, "ColorElement_B"), val);
3085 TextDrawColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR]);
3086
3087 format(string, sizeof (string), "TDEditor: Цвет текÑтдрава #%i изменён на {%06x}ПредпроÑмотр цвета", textdrawid, (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] >>> 8));
3088 }
3089
3090 case EDITING_BOX_COLOR: {
3091 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] = RGBA(GetPVarInt(playerid, "ColorElement_R"), GetPVarInt(playerid, "ColorElement_G"), GetPVarInt(playerid, "ColorElement_B"), val);
3092 TextDrawBoxColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR]);
3093
3094 format(string, sizeof (string), "TDEditor: Цвет box'а текÑтдрава #%i изменён на {%06x}ПредпроÑмотр цвета", textdrawid, (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] >>> 8));
3095 }
3096
3097 case EDITING_BACKGROUND_COLOR: {
3098 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] = RGBA(GetPVarInt(playerid, "ColorElement_R"), GetPVarInt(playerid, "ColorElement_G"), GetPVarInt(playerid, "ColorElement_B"), val);
3099 TextDrawBackgroundColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR]);
3100
3101 format(string, sizeof (string), "TDEditor: Цвет обводки/тени текÑтдрава #%i изменён на {%06x}ПредпроÑмотр цвета", textdrawid, (groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] >>> 8));
3102 }
3103 }
3104
3105 DeletePVar(playerid, "ColorElement");
3106 DeletePVar(playerid, "ColorElement_R");
3107 DeletePVar(playerid, "ColorElement_G");
3108 DeletePVar(playerid, "ColorElement_B");
3109 DeletePVar(playerid, "ColorElement_A");
3110
3111 if (groupData[groupid][E_GROUP_VISIBLE]) {
3112 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3113 }
3114
3115 playerEditing[playerid] = EDITING_NONE;
3116 SendClientMessage(playerid, MESSAGE_COLOR, string);
3117
3118 return ShowPlayerTextDrawDialog(playerid, textdrawid);
3119 }
3120 }
3121 }
3122 }
3123
3124 switch (GetPVarInt(playerid, "ColorElement")) {
3125 case 0: {
3126 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_RED"КРÐСÐОГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3127 }
3128
3129 case 1: {
3130 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_GREEN"ЗЕЛÐÐОГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3131 }
3132
3133 case 2: {
3134 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_BLUE"СИÐЕГО"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3135 }
3136
3137 case 3: {
3138 return Dialog_Show(playerid, CUSTOM_RGBA_COLOR, DIALOG_STYLE_INPUT, "TDEditor: ВвеÑти Ñвой RGBA цвет", ""COL_WHITE"Введите значение Ñлемента цвета Ð´Ð»Ñ "COL_GREY"ПРОЗРÐЧÐОСТИ"COL_WHITE" ниже.\n\n"COL_WHITE"МакÑимальное значение цветового компонента может быть 255.", "Далее", "Ðазад");
3139 }
3140 }
3141 return 1;
3142}
3143
3144Dialog:COLOR_MENU(playerid, response, listitem, inputtext[]) {
3145 if (!response) {
3146 switch (playerEditing[playerid]) {
3147 case EDITING_BACKGROUND_COLOR: {
3148 return dialog_TEXTDRAW_MENU(playerid, 1, 6, "\1");
3149 }
3150
3151 case EDITING_TEXTDRAW_COLOR: {
3152 return dialog_TEXTDRAW_MENU(playerid, 1, 8, "\1");
3153 }
3154
3155 case EDITING_BOX_COLOR: {
3156 return dialog_TEXTDRAW_MENU(playerid, 1, 11, "\1");
3157 }
3158 }
3159 }
3160
3161 new groupid = playerCurrentGroup[playerid];
3162 new textdrawid = playerCurrentTextDraw[playerid];
3163
3164 new string[150];
3165 switch (playerEditing[playerid]) {
3166 case EDITING_TEXTDRAW_COLOR: {
3167 TextDrawColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], COLORS[listitem][E_COLOR_CODE]);
3168 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_COLOR] = COLORS[listitem][E_COLOR_CODE];
3169
3170 format(string, sizeof (string), "TDEditor: Цвет текÑтдрава #%i изменён на {%06x}%s", textdrawid, (COLORS[listitem][E_COLOR_CODE] >>> 8), COLORS[listitem][E_COLOR_NAME]);
3171 }
3172
3173 case EDITING_BOX_COLOR: {
3174 TextDrawBoxColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], COLORS[listitem][E_COLOR_CODE]);
3175 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BOX_COLOR] = COLORS[listitem][E_COLOR_CODE];
3176
3177 format(string, sizeof (string), "TDEditor: Цвет box'а текÑтдрава #%i изменён на {%06x}%s", textdrawid, (COLORS[listitem][E_COLOR_CODE] >>> 8), COLORS[listitem][E_COLOR_NAME]);
3178 }
3179
3180 case EDITING_BACKGROUND_COLOR: {
3181 TextDrawBackgroundColor(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], COLORS[listitem][E_COLOR_CODE]);
3182 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_BACKGROUND_COLOR] = COLORS[listitem][E_COLOR_CODE];
3183
3184 format(string, sizeof (string), "TDEditor: Цвет обводки/тени текÑтдрава #%i изменён на {%06x}%s", textdrawid, (COLORS[listitem][E_COLOR_CODE] >>> 8), COLORS[listitem][E_COLOR_NAME]);
3185 }
3186 }
3187
3188 if (groupData[groupid][E_GROUP_VISIBLE]) {
3189 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3190 }
3191
3192 playerEditing[playerid] = EDITING_NONE;
3193 SendClientMessage(playerid, MESSAGE_COLOR, string);
3194
3195 return ShowPlayerTextDrawDialog(playerid, textdrawid);
3196}
3197
3198Dialog:PREVIEW_MODEL_OPTIONS(playerid, response, listitem, inputtext[]) {
3199 if (!response) {
3200 return ShowPlayerTextDrawDialog(playerid, playerCurrentTextDraw[playerid]);
3201 }
3202
3203 switch (listitem) {
3204 case 0: {
3205 Dialog_Show(playerid, SEARCH_PREVIEW_MODEL, DIALOG_STYLE_INPUT, "TDEditor: Изменить превью модель", ""COL_WHITE"Введите точный "COL_GREEN"ID МОДЕЛИ"COL_WHITE", или "COL_GREEN"ÐÐЗВÐÐИЕ ОБЪЕКТÐ"COL_WHITE", или какую-то подÑказку, чтобы мы Ñмогли найти вÑе ÑвÑзаные модели объектов и дать вам ÑпиÑок!", "ПоиÑк", "Ðазад");
3206 }
3207
3208 case 1: {
3209 playerEditing[playerid] = EDITING_PREVIEW_ROT;
3210 playerEditingTimer[playerid] = SetTimerEx("OnPlayerTimerUpdate", 200, true, "i", playerid);
3211 if (showTextDrawCmds) {
3212 PlayerTextDrawSetString(playerid, playerEditingTextDraw[playerid], "~w~Подождите...");
3213 PlayerTextDrawShow(playerid, playerEditingTextDraw[playerid]);
3214 }
3215
3216 TogglePlayerControllable(playerid, false);
3217 }
3218
3219 case 2: {
3220 new groupid = playerCurrentGroup[playerid];
3221 new textdrawid = playerCurrentTextDraw[playerid];
3222
3223 new string[256];
3224 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ X"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-X: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X]);
3225 Dialog_Show(playerid, INPUT_ROTATION, DIALOG_STYLE_INPUT, "TDEditor: Ввод X, Y, Z, МаÑштаба вручную", string, "Далее", "Ðазад");
3226
3227 SetPVarInt(playerid, "RotationType", 0);
3228 }
3229 }
3230 return 1;
3231}
3232
3233Dialog:SEARCH_PREVIEW_MODEL(playerid, response, listitem, inputtext[]) {
3234 if (!response) {
3235 return dialog_TEXTDRAW_MENU(playerid, 1, 13, "\1");
3236 }
3237
3238 new name[32];
3239 if (sscanf(inputtext, "s[32]", name)) {
3240 return Dialog_Show(playerid, SEARCH_PREVIEW_MODEL, DIALOG_STYLE_INPUT, "TDEditor: ПоиÑк по модели", ""COL_WHITE"Введите точный "COL_GREEN"ID МОДЕЛИ"COL_WHITE", или "COL_GREEN"ÐÐЗВÐÐИЕ ОБЪЕКТÐ"COL_WHITE", или какую-то подÑказку, чтобы мы Ñмогли найти вÑе ÑвÑзаные модели объектов и дать вам ÑпиÑок!\n\n"COL_RED"Ошибка: "COL_GREY"Ðазвание модели не введено.", "ПоиÑк", "Ðазад");
3241 }
3242
3243 if (!sscanf(name, "{i}")) {
3244 new modelid = strval(name);
3245 if (modelid < 0 || modelid >= 44764) {
3246 return Dialog_Show(playerid, SEARCH_PREVIEW_MODEL, DIALOG_STYLE_INPUT, "TDEditor: ПоиÑк по модели", ""COL_WHITE"Введите точный "COL_GREEN"ID МОДЕЛИ"COL_WHITE", или "COL_GREEN"ÐÐЗВÐÐИЕ ОБЪЕКТÐ"COL_WHITE", или какую-то подÑказку, чтобы мы Ñмогли найти вÑе ÑвÑзаные модели объектов и дать вам ÑпиÑок!\n\n"COL_RED"Ошибка: "COL_GREY"ÐедопуÑтимый ID модели, должен находитьÑÑ Ð² диапазоне от 0 до 44764.", "ПоиÑк", "Ðазад");
3247 }
3248
3249 return dialog_CHOOSE_PREVIEW_MODEL(playerid, 1, 0, name);
3250 }
3251 else {
3252 new DB:db = db_open(PATH_OBJECTS_FILE);
3253 if (!db) {
3254 return Dialog_Show(playerid, SEARCH_PREVIEW_MODEL, DIALOG_STYLE_INPUT, "TDEditor: ПоиÑк по модели", ""COL_WHITE"Введите точный "COL_GREEN"ID МОДЕЛИ"COL_WHITE", или "COL_GREEN"ÐÐЗВÐÐИЕ ОБЪЕКТÐ"COL_WHITE", или какую-то подÑказку, чтобы мы Ñмогли найти вÑе ÑвÑзаные модели объектов и дать вам ÑпиÑок!\n\n"COL_RED"Ошибка: "COL_GREY"Файл бд \"allbuildings.db\" не найден в scriptfiles.", "ПоиÑк", "Ðазад");
3255 }
3256
3257 new string[256];
3258 format(string, sizeof (string), "SELECT Model, Model_Name FROM buildings WHERE Model_Name LIKE '%s%q%s'", "%", name, "%");
3259 new DBResult:result = db_query(db, string);
3260 if (!result) {
3261 db_close(db);
3262 return Dialog_Show(playerid, SEARCH_PREVIEW_MODEL, DIALOG_STYLE_INPUT, "TDEditor: ПоиÑк по модели", ""COL_WHITE"Введите точный "COL_GREEN"ID МОДЕЛИ"COL_WHITE", или "COL_GREEN"ÐÐЗВÐÐИЕ ОБЪЕКТÐ"COL_WHITE", или какую-то подÑказку, чтобы мы Ñмогли найти вÑе ÑвÑзаные модели объектов и дать вам ÑпиÑок!\n\n"COL_RED"Ошибка: "COL_GREY"При выполнении запроÑа что-то пошло не так, попробуйте еще раз.", "ПоиÑк", "Ðазад");
3263 }
3264
3265 if (db_num_rows(result) == 0) {
3266 db_free_result(result);
3267 db_close(db);
3268 return Dialog_Show(playerid, SEARCH_PREVIEW_MODEL, DIALOG_STYLE_INPUT, "TDEditor: ПоиÑк по модели", ""COL_WHITE"Введите точный "COL_GREEN"ID МОДЕЛИ"COL_WHITE", или "COL_GREEN"ÐÐЗВÐÐИЕ ОБЪЕКТÐ"COL_WHITE", или какую-то подÑказку, чтобы мы Ñмогли найти вÑе ÑвÑзаные модели объектов и дать вам ÑпиÑок!\n\n"COL_RED"Ошибка: "COL_GREY"Результаты не найдены, попробуйте другое название.", "ПоиÑк", "Ðазад");
3269 }
3270
3271 new count;
3272 static info[100 * (32 + 1)];
3273 info = "Модель\tÐазвание модели\n";
3274
3275 do {
3276 if (count++ == 100) {
3277 break;
3278 }
3279
3280 db_get_field(result, 1, name, sizeof (name));
3281 format(info, sizeof (info), "%s%i\t%s\n", info, db_get_field_int(result, 0), name);
3282 }
3283 while (db_next_row(result));
3284
3285 db_free_result(result);
3286 db_close(db);
3287
3288 return Dialog_Show(playerid, CHOOSE_PREVIEW_MODEL, DIALOG_STYLE_TABLIST_HEADERS, "TDEditor: ПоиÑк по модели", info, "Ок", "Ðазад");
3289 }
3290}
3291
3292Dialog:CHOOSE_PREVIEW_MODEL(playerid, response, listitem, inputtext[]) {
3293 if (!response) {
3294 return dialog_PREVIEW_MODEL_OPTIONS(playerid, 1, 0, "\1");
3295 }
3296
3297 new modelid = strval(inputtext);
3298
3299 new groupid = playerCurrentGroup[playerid];
3300 new textdrawid = playerCurrentTextDraw[playerid];
3301
3302 TextDrawSetPreviewModel(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], modelid);
3303 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_MODEL] = modelid;
3304 if (groupData[groupid][E_GROUP_VISIBLE]) {
3305 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3306 }
3307
3308 new string[150];
3309 format(string, sizeof (string), "TDEditor: Превью модель текÑтдрава #%i изменена на \"%i\"", textdrawid, modelid);
3310 SendClientMessage(playerid, MESSAGE_COLOR, string);
3311 return dialog_TEXTDRAW_MENU(playerid, 1, 13, "\1");
3312}
3313
3314Dialog:INPUT_ROTATION(playerid, response, listitem, inputtext[]) {
3315 new groupid = playerCurrentGroup[playerid];
3316 new textdrawid = playerCurrentTextDraw[playerid];
3317
3318 if (!response) {
3319 new string[256];
3320 switch (GetPVarInt(playerid, "RotationType")) {
3321 case 0: {
3322 DeletePVar(playerid, "RotationType");
3323
3324 return dialog_TEXTDRAW_MENU(playerid, 1, 13, "\1");
3325 }
3326
3327 case 1: {
3328 SetPVarInt(playerid, "RotationType", 0);
3329
3330 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ X"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-X: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X]);
3331 }
3332
3333 case 2: {
3334 SetPVarInt(playerid, "RotationType", 1);
3335
3336 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ Y"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-Y: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y]);
3337 }
3338
3339 case 3: {
3340 SetPVarInt(playerid, "RotationType", 2);
3341
3342 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ Z"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-Z: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z]);
3343 }
3344 }
3345
3346 return Dialog_Show(playerid, INPUT_ROTATION, DIALOG_STYLE_INPUT, "TDEditor: Ввод X, Y, Z, МаÑштаба вручную", string, "Далее", "Ðазад");
3347 }
3348
3349 new Float:val = -1.0;
3350 if (sscanf(inputtext, "f", val) || ((GetPVarInt(playerid, "RotationType") == 3) ? (val < 0.0 || val > 100.0) : (val < -360.0 || val > 360.0))) {
3351 new string[256];
3352 switch (GetPVarInt(playerid, "RotationType")) {
3353 case 0: {
3354 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ X"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-X: "COL_WHITE"%0.2f\n\n"COL_RED"Ошибка: "COL_GREY"Значение не введено или выходит за пределы (должно быть в промежутке '-360' - '360')", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X]);
3355 }
3356
3357 case 1: {
3358 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ Y"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-Y: "COL_WHITE"%0.2f\n\n"COL_RED"Ошибка: "COL_GREY"Значение не введено или выходит за пределы (должно быть в промежутке '-360' - '360')", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y]);
3359 }
3360
3361 case 2: {
3362 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ Z"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-Z: "COL_WHITE"%0.2f\n\n"COL_RED"Ошибка: "COL_GREY"Значение не введено или выходит за пределы (должно быть в промежутке '-360' - '360')", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z]);
3363 }
3364
3365 case 3: {
3366 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"МÐСШТÐБÐ"COL_WHITE" превью модели.\n\n"COL_YELLOW"Текущий маÑштаб: "COL_WHITE"%0.2f\n\n"COL_RED"Ошибка: "COL_GREY"Значение не введено или выходит за пределы (должно быть в промежутке '0' - '100')", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
3367 return Dialog_Show(playerid, INPUT_ROTATION, DIALOG_STYLE_INPUT, "TDEditor: Ввод X, Y, Z, МаÑштаба вручную", string, "Ок", "Ðазад");
3368 }
3369 }
3370 return Dialog_Show(playerid, INPUT_ROTATION, DIALOG_STYLE_INPUT, "TDEditor: Ввод X, Y, Z, МаÑштаба вручную", string, "Далее", "Ðазад");
3371 }
3372
3373 new string[256];
3374 switch (GetPVarInt(playerid, "RotationType")) {
3375 case 0: {
3376 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X] = val;
3377 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
3378 if (groupData[groupid][E_GROUP_VISIBLE]) {
3379 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3380 }
3381
3382 SetPVarInt(playerid, "RotationType", 1);
3383
3384 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ Y"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-Y: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y]);
3385 }
3386
3387 case 1: {
3388 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y] = val;
3389 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
3390 if (groupData[groupid][E_GROUP_VISIBLE]) {
3391 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3392 }
3393
3394 SetPVarInt(playerid, "RotationType", 2);
3395
3396 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"КООРДИÐÐТЫ Z"COL_WHITE" Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ²ÑŒÑŽ модели.\n\n"COL_YELLOW"Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Rot-Z: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z]);
3397 }
3398
3399 case 2: {
3400 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z] = val;
3401 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
3402 if (groupData[groupid][E_GROUP_VISIBLE]) {
3403 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3404 }
3405
3406 SetPVarInt(playerid, "RotationType", 3);
3407
3408 format(string, sizeof(string), ""COL_WHITE"Введите дробное значение Ð´Ð»Ñ "COL_GREEN"МÐСШТÐБÐ"COL_WHITE" превью модели.\n\n"COL_YELLOW"Текущий маÑштаб: "COL_WHITE"%0.2f", groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
3409 return Dialog_Show(playerid, INPUT_ROTATION, DIALOG_STYLE_INPUT, "TDEditor: Ввод X, Y, Z, МаÑштаба вручную", string, "Ок", "Ðазад");
3410 }
3411
3412 case 3: {
3413 groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM] = val;
3414 TextDrawSetPreviewRot(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_X], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Y], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_Z], groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_PREVIEW_ROT_ZOOM]);
3415 if (groupData[groupid][E_GROUP_VISIBLE]) {
3416 TextDrawShowForAll(groupTextDrawData[groupid][textdrawid][E_TEXTDRAW_ID]);
3417 }
3418
3419 DeletePVar(playerid, "RotationType");
3420
3421 return dialog_TEXTDRAW_MENU(playerid, 1, 13, "\1");
3422 }
3423 }
3424
3425 return Dialog_Show(playerid, INPUT_ROTATION, DIALOG_STYLE_INPUT, "TDEditor: Ввод X, Y, Z, МаÑштаба вручную", string, "Далее", "Ðазад");
3426}