· 5 years ago · Jul 24, 2020, 08:30 AM
1const
2 MAX_PLAYER_LISTITEM = 25;
3
4new
5 pListitemValue[MAX_PLAYERS][MAX_PLAYER_LISTITEM];
6
7enum
8{
9 DIALOG_QM_MAIN_MENU = 6565,
10 DIALOG_QM_EDIT_MENU,
11 DIALOG_QM_EDIT_CONTENTS,
12 DIALOG_QM_ADD_MESSAGE,
13 DIALOG_QM_INSTRUCTION
14}
15
16const
17 MAX_QUICK_MESSAGE_HAVE_PLAYER = 5,
18 MAX_QUICK_MESSAGE_LENGTH = 128,
19 MIN_QUICK_MESSAGE_LENGTH = 3;
20
21enum e_QuickMessageParams
22{
23 QM_TABLE_ID,
24 QM_MESSAGE[MAX_QUICK_MESSAGE_LENGTH]
25}
26
27new
28 pQuickMessage[MAX_PLAYERS][MAX_QUICK_MESSAGE_HAVE_PLAYER][e_QuickMessageParams];
29
30// Чтобы исбавить от опечатки и экономии стэковой памяти
31new
32 pVar__QuickMessage_IDX[] = "pVar__QuickMessage_IDX";
33
34const
35 MAX_QUICK_MESSAGE_TAG_NAME_LEN = 8,
36 MAX_QUICK_MESSAGE_TAG_REPL_LEN = 31,
37 MAX_QUICK_MESSAGE_TAG_DESC_LEN = 57;
38
39enum
40{
41 QUICK_MESSAGE_TAG_NAME,
42 QUICK_MESSAGE_TAG_FRACTION,
43 QUICK_MESSAGE_TAG_PASSPORT,
44 QUICK_MESSAGE_TAG_LICENSE,
45 QUICK_MESSAGE_TAG_ALL_DOC,
46 QUICK_MESSAGE_TAG_COUNT
47}
48
49enum e_QuickMessageTag
50{
51 QMT_NAME[MAX_QUICK_MESSAGE_TAG_NAME_LEN],
52 QMT_DESCRIPTION[MAX_QUICK_MESSAGE_TAG_DESC_LEN],
53 QMT_NAME_LENGTH
54}
55
56// Регистрация тэггов
57new
58 gQuickMessageTag[QUICK_MESSAGE_TAG_COUNT][e_QuickMessageTag] =
59{
60 {"@name", "отобразит ваше имя в сообщении"},
61 {"@frac", "отобразит название организации в которой вы состоите"},
62 {"@pass", "отобразит текст команды с вашим ID п.: '(( /pass 24 ))'"},
63 {"@lic", "отобразит текст команды с вашим ID п.: '(( /lic 24 ))'"},
64 {"@alldoc", "отобразит (( /pass *id* /lic *id* ))"}
65};
66
67const
68 MAX_QUICK_MESSAGE_COMMAND_LEN = 5;
69
70enum e_QuickMessageCommands
71{
72 QMC_NAME[MAX_QUICK_MESSAGE_COMMAND_LEN],
73 QMC_NAME_LENGTH
74}
75
76// Регистрация команд
77new
78 gQucikMessageCommands[][e_QuickMessageCommands]
79 {
80 {"/me"},
81 {"/do"},
82 {"/try"}
83 };
84
85static const
86 QUICK_MESSAGE_DESCRIPTION[][] =
87 {
88 {
89 !"{FFBF00}Quick Message{FFFFFF} - система быстрых сообщений, замена сторонней программы {67E667}QuickBinder{FFFFFF}\n\
90 Для вашего удобства созданны макросы, которые динамически отобразят данные в сообщение.\n\n\{FFBF00}1: Макросы:\n\n"
91 },
92 {
93 !"\n{FFBF00}Отобразит:{FFFFFF}\n\n\
94 Добрый день, вас беспокоит сотрудник Los Santos Police - Carl Johnson, предъявите ваши документы (( /pass 211 )).\n\n\
95 2: Так же, можно использовать команды {FFBF00}"
96 }
97 { !"\n\n{FFBF00}Примеры сообщений:{FFFFFF}\n\n\
98 {FFFFFF}/do в правой руке табель с надписью @frac\n/me показал распальцовку @frac\n\n{FFBF00}Отобразит:{FFFFFF}\n\n\
99 {DE92FF}в правой руке табель с надписью Police Los Santos (*Имя*)\n{DE92FF}*имя* показал распольцовку E.S Ballas"
100 }
101 };
102
103stock QM_Init()
104{
105 /*
106 accounts - таблица с игроками
107 quick_message - таблица с биндами
108 */
109
110 new
111 Cache:cache_id;
112 // Создана ли таблица
113 cache_id = mysql_query(DIARY_MYSQL_CONNECTION_ID, !"SHOW TABLES LIKE 'quick_message'",
114 true);
115
116 if (!cache_num_rows())
117 {
118 // Если нет - оздаём таблицу
119 mysql_query(/*Переменная с ID-табилцей*/, "
120 CREATE TABLE IF NOT EXISTS `quick_message` ( \
121 `id` int(11) NOT NULL AUTO_INCREMENT, \
122 `account_id` int(11) NOT NULL, \
123 `message` varchar(128) NOT NULL, \
124 PRIMARY KEY (`id`) \
125 ) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;", false);
126 mysql_query(/*Переменная с ID-табилцей*/, query_string, false);
127
128 // Создаём индексы для account_id для быстрого обращения к ним
129 mysql_query(/*Переменная с ID-табилцей*/, !"\
130 CREATE INDEX \
131 account_id \
132 ON \
133 quick_message(account_id)", false);
134
135 // Привязываемся к основной таблице, дабы при удалении аккаунта - все записи удалились
136 mysql_query(/*Переменная с ID-табилцей*/, !"\
137 ALTER TABLE \
138 `quick_message`\
139 ADD CONSTRAINT \
140 `quick_message_accounts_fk_1` \
141 FOREIGN KEY \
142 (`account_id`) \
143 REFERENCES \
144 `accounts` (`id`) \
145 ON DELETE CASCADE ON UPDATE CASCADE", false);
146 }
147
148 cache_delete(cache_id);
149
150 // Изменим размер столбца message на максимальный
151 new
152 query_string[52 + (-2 + 11)];
153
154 format(query_string, sizeof query_string, "ALTER TABLE quick_message MODIFY message varchar(%d)", MAX_QUICK_MESSAGE_LENGTH);
155 mysql_query(/*Переменная с ID-табилцей*/, query_string, false);
156
157 for (new i = 0; i < QUICK_MESSAGE_TAG_COUNT; ++i)
158 {
159 gQuickMessageTag[i][QMT_NAME_LENGTH] = strlen(gQuickMessageTag[i][QMT_NAME]);
160 }
161
162 for (new i = 0; i < sizeof gQucikMessageCommands; ++i)
163 {
164 gQucikMessageCommands[i][QMC_NAME_LENGTH] = strlen(gQucikMessageCommands[i][QMC_NAME]);
165 }
166}
167
168// Фнукция создаёт сообщение для игрока
169stock QM_Insert(playerid, idx, const message[], const size = sizeof message)
170{
171 if (!(0 <= idx <= MAX_QUICK_MESSAGE_HAVE_PLAYER - 1) || pQuickMessage[playerid][idx][QM_TABLE_ID] != 0)
172 {
173 return 0;
174 }
175
176 strmid(pQuickMessage[playerid][idx][QM_MESSAGE], message, 0, size, MAX_QUICK_MESSAGE_LENGTH);
177
178 new
179 Cache:cache_id,
180 query_string[64 + (-2 + MAX_QUICK_MESSAGE_LENGTH) + (-2 + 5) + 1];
181
182 mysq_format(/*Переменная с ID-табилцей*/, query_string, sizeof query_string, "\
183 INSERT INTO \
184 message(account_id, message) \
185 VALUES('%e', %d)", pQuickMessage[playerid][idx][QM_MESSAGE], /*Переменная с ID аккаунтом игрока*/);
186
187 cache_id = mysql_query(/*Переменная с ID-табилцей*/, query_string, true);
188
189 if (cache_num_rows())
190 {
191 pQuickMessage[playerid][idx][QM_TABLE_ID] = cache_get_field_content_int(0, "id", /*Переменная с ID-табилцей*/);
192 }
193
194 cache_delete(cache_id);
195
196 return 1;
197}
198
199// Функция удаляет сообщение для игрока
200stock QM_Delete(playerid, idx)
201{
202 if (!(0 <= idx <= MAX_QUICK_MESSAGE_HAVE_PLAYER - 1) || pQuickMessage[playerid][idx][QM_TABLE_ID] == 0)
203 {
204 return 0;
205 }
206
207 new
208 query_string[39 + (-2 + 11) + 1];
209
210 format(query_string, sizeof query_string, "DELETE FROM quick_message WHERE id = %d", pQuickMessage[playerid][i][QM_TABLE_ID]);
211 mysql_tquery(/*Переменная с ID-табилцей*/, query_string);
212
213 pQuickMessage[playerid][idx][QM_TABLE_ID] = 0;
214 pQuickMessage[playerid][idx][QM_MESSAGE] = "";
215
216 return 1;
217}
218
219// Функция обновляет информацию уже существующего сообщения
220stock QM_Update(playerid, idx, const contents[], const size = sizeof contents)
221{
222 if (!(0 <= idx <= MAX_QUICK_MESSAGE_HAVE_PLAYER - 1) || pQuickMessage[playerid][idx][QM_TABLE_ID] == 0)
223 {
224 return 0;
225 }
226
227 strmid(pQuickMessage[playerid][idx][QM_MESSAGE], contents, 0, size, MAX_QUICK_MESSAGE_LENGTH);
228
229 static
230 query_string[79 + (-2 + MAX_QUICK_MESSAGE_LENGTH) + (-2 + 11) + 1];
231
232 mysql_format(/*Переменная с ID-табилцей*/, query_string, sizeof query_string, "\
233 UPDATE \
234 quick_message \
235 SET \
236 message = '%e' \
237 WHERE \
238 id = %d LIMIT 1",
239 contents, pQuickMessage[playerid][idx][QM_TABLE_ID]);
240 mysql_tquery(/*Переменная с ID-табилцей*/, query_string);
241
242 return 1;
243}
244
245// Функция очищает локальную информацию для игрока
246stock QM_Clear(playerid)
247{
248 for (new i = 0; i < MAX_QUICK_MESSAGE_HAVE_PLAYER)
249 {
250 pQuickMessage[playerid][i][QM_TABLE_ID] = 0;
251 pQuickMessage[playerid][i][QM_MESSAGE] = "";
252 }
253}
254
255// Функция получает свободную ячейку для сообщения
256stock QM_GetFreeIDX(playerid)
257{
258 for (new i = 0; i < MAX_QUICK_MESSAGE_HAVE_PLAYER; ++i)
259 {
260 if (pQuickMessage[playerid][i][QM_TABLE_ID] == 0)
261 {
262 return i;
263 }
264 }
265
266 return -1;
267}
268
269// Показываем главное меню биндера
270stock QM_ShowPlayerMainMenu(playerid)
271{
272 static const
273 quick_message_fmt_1[] = "{FFBF00}%d. {FFFFFF}%s\n",
274 quick_message_fmt_2[] = " \n\
275 {67E667}%s\
276 Отправить все сообщения\n\
277 {FFBF00}Редактировать\n\
278 Инструкция";
279
280 static
281 quick_message_str_1[sizeof quick_message_fmt_1 + (-2 + 5) + (-2 + MAX_QUICK_MESSAGE_LENGTH)],
282 quick_message_str_2[sizeof quick_message_fmt_2 + 8 + 1],
283 quick_message_str[sizeof quick_message_str_1 + sizeof quick_message_str_2 + 1];
284
285 quick_message_str_1 = quick_message_str = "";
286
287 for (new i = 0, count = 0; i < MAX_QUICK_MESSAGE_HAVE_PLAYER; ++i)
288 {
289 if (pQuickMessage[playerid][i][QM_TABLE_ID] == 0)
290 {
291 continue;
292 }
293
294 pListitemValue[playerid][count++] = i;
295
296 format(quick_message_str_1, sizeof quick_message_str_1, quick_message_fmt_1,
297 i, pQuickMessage[playerid][i][QM_MESSAGE]);
298 strcat(quick_message_str, quick_message_str_1);
299 }
300
301 format(quick_message_str_2, sizeof quick_message_str_2, quick_message_fmt_2, (QM_GetFreeIDX(playerid) != -1) ?
302 ("Добавить\n") : (""));
303 strcat(quick_message_str, quick_message_str_2);
304
305 return ShowPlayerDialog(
306 playerid,
307 DIALOG_QM_MAIN_MENU,
308 !"{37B6CE}Быстрые сообщения:",
309 quick_message_str,
310 !"Выбрать", !"Закрыть"
311 );
312}
313
314// Эта функция показывает инструкцию об биндере
315stock QM_ShowPlayerInstruction(playerid)
316{
317 static const
318 instruction_fmt_1[] = "{FFBF00}%s {FFFFFF}- %s\n";
319
320 static
321 instruction_str_1[sizeof instruction_fmt_1 + (MAX_QUICK_MESSAGE_TAG_NAME_LEN + MAX_QUICK_MESSAGE_TAG_DESC_LEN + 2)],
322 instruction_str[(sizeof instruction_str_1 + 1) * QUICK_MESSAGE_TAG_COUNT + (sizeof QUICK_MESSAGE_DESCRIPTION[] * sizeof QUICK_MESSAGE_DESCRIPTION) +
323 sizeof gQucikMessageCommands * MAX_QUICK_MESSAGE_COMMAND_LEN];
324
325 instruction_str_1 = instruction_str = "";
326
327 new
328 len;
329
330 // Запишем часть инструкции об QuickBinder и описании макросов
331 len = strunpack(instruction_str, QUICK_MESSAGE_DESCRIPTION[0]);
332
333 // Запишем информацию об тэгах
334 for (new i = 0; i < sizeof gQuickMessageTag; ++i)
335 {
336 format(instruction_str_1, sizeof instruction_str_1, instruction_fmt_1,
337 gQuickMessageTag[i][QMT_NAME], gQuickMessageTag[i][QMT_DESCRIPTION]);
338 len += strcat(instruction_str[len], instruction_str_1);
339 }
340
341 // Запишем часть инструкции об примерах макросах и описании команд
342 len += strunpack(instruction_str[len], QUICK_MESSAGE_DESCRIPTION[1]);
343
344 // Запишем информацию об командах
345 for (new i = 0; i < sizeof gQucikMessageCommands; ++i)
346 {
347 len += strcat(instruction_str[len], gQucikMessageCommands[i][QMC_NAME]);
348 instruction_str[len++] = " ";
349 }
350
351 // Запишем информацию об примерах сообщений
352 strunpack(instruction_str[len], QUICK_MESSAGE_DESCRIPTION[2]);
353
354 return ShowPlayerDialog(
355 playerid,
356 DIALOG_QM_INSTRUCTION,
357 DIALOG_STYLE_MSGBOX,
358 !"{FFBF00}Инструкция:",
359 instruction_str,
360 !"Понял", " "
361 );
362}
363
364// Показываем меню редактирования сообщения
365stock QM_ShowPlayerEditIDX(playerid, idx)
366{
367 if (!(0 <= idx <= MAX_QUICK_MESSAGE_HAVE_PLAYER - 1))
368 {
369 return 0;
370 }
371
372 SetPVarInt(playerid, pVar__QuickMessage_IDX, idx);
373
374 return ShowPlayerDialog(
375 playerid,
376 DIALOG_QM_EDIT_MENU,
377 DIALOG_STYLE_LIST,
378 !"{FFBF00}Редакитрование:",
379 !"Изменить\nУдалить",
380 !"Выбрать", !"Назад"
381 );
382}
383
384/*
385 Функция для редактирования сообщения
386 *не предназначена для использования из вне системы
387*/
388stock _QM_ShowPlayerEditContents(playerid, idx)
389{
390 if (!(0 <= idx <= MAX_QUICK_MESSAGE_HAVE_PLAYER - 1))
391 {
392 return 0;
393 }
394
395 new
396 contents_str[79] = !"{FFFFFF}Содержимое: {FFBF00}";
397
398 strcat(contents_str, pQuickMessage[playerid][idx][QM_MESSAGE]);
399 strcat(contents_str, !"\n\n{FFFFFF}Введите новое содежримое в поле ниже.");
400
401 return ShowPlayerDialog(
402 playerid,
403 DIALOG_QM_EDIT_CONTENTS,
404 DIALOG_STYLE_INPUT,
405 " ",
406 contents_str,
407 !"Далее", !"Назад"
408 );
409}
410
411// Покажем меню для добавления сообщения
412stock QM_ShowPlayerAddMessage(playerid)
413{
414 new
415 idx = QM_GetFreeIDX(playerid);
416 if (idx == -1)
417 {
418 return 0;
419 }
420
421 SetPVarInt(playerid, pVar__QuickMessage_IDX, idx);
422
423 new
424 info_str[73 + (-4 + 22) + 1];
425
426 format(info_str, sizeof info_str, "\n{FFFFFF}Введите бинд в поле ниже (не меньше %d и не больше %d символов)",
427 MIN_QUICK_MESSAGE_LENGTH, MAX_QUICK_MESSAGE_LENGTH);
428
429 return ShowPlayerDialog(
430 playerid,
431 DIALOG_QM_ADD_MESSAGE,
432 DIALOG_STYLE_INPUT,
433 " ",
434 info_str,
435 !"Добавить", !"Назад"
436 );
437}
438
439// Загрузим информацию об сообщения для игрока при залогировании
440stock QM_PlayerLoad(playerid)
441{
442 new
443 query_string[77 + (-2 + 11)];
444
445 format(query_string, sizeof query_string, "\
446 SELECT \
447 id, message \
448 FROM \
449 quick_message \
450 WHERE \
451 account_id = %d", /*Переменная с ID аккаунтом игрока*/);
452 mysql_tquery(/*Переменная с ID-табилцей*/, query_string, !"@MySQL__LoadPlayerQuickMessage", playerid);
453}
454
455@MySQL__LoadPlayerQuickMessage(playerid);
456@MySQL__LoadPlayerQuickMessage(playerid)
457{
458 new
459 rows = cache_num_rows();
460 if (rows)
461 {
462 for (new i = 0; i < rows; ++i)
463 {
464 if (i >= MAX_QUICK_MESSAGE_HAVE_PLAYER)
465 {
466 break;
467 }
468
469 pQuickMessage[playerid][i][QM_TABLE_ID] = cache_get_field_content_int(i, "id", /*Переменная с ID-табилцей*/);
470 cache_get_field_content(i, "message", pQuickMessage[playerid][i][QM_MESSAGE], /*Переменная с ID-табилцей*/, MAX_QUICK_MESSAGE_LENGTH);
471 }
472 }
473}
474
475// Функция отправляет уже форматированный текст
476stock SendPlayerQuickMessage(playerid, input_string[], const size = sizeof input_string)
477{
478 new
479 string[MAX_CHATBUBBLE_LENGTH + 1],
480 idx;
481
482 QM_GetFormatedTag(playerid, input_string, string);
483 idx = QM_GetFormatedCommand(string);
484
485 if (idx != -1)
486 {
487 #if defined DC_CMD
488 DC_CMD(playerid, string);
489 #elseif defined PAWNCMD_INC_
490 PC_EmulateCommand(playerid, string);
491 #else
492 OnPlayerCommandText(playerid, string);
493 #endif
494 }
495 else
496 {
497 OnPlayerText(playerid, string);
498 }
499
500 return 1;
501}
502
503// Функция для форматирования (преобразования) тэга
504stock QM_GetFormatedTag(playerid, input_string[], output_string[], const size_input = sizeof input_string,
505 const size_output = sizeof output_string)
506{
507 strcat(output_string, input_string, size_output);
508
509 for (new i = 0, pos, tmp_string[40]; i < QUICK_MESSAGE_TAG_COUNT; ++i)
510 {
511 while ((pos = strfind(output_string, gQuickMessageTag[i][QMT_NAME]) != -1))
512 {
513 strdel(output_string, pos, pos + gQuickMessageTag[i][QMT_NAME_LENGTH]);
514
515 switch (i)
516 {
517 case QUICK_MESSAGE_TAG_NAME:
518 {
519 strins(output_string, /*Массив с ником игрока*/, pos, size_output);
520 }
521 case QUICK_MESSAGE_TAG_FRACTION:
522 {
523 strins(output_string, /*Массив с названием фраки*/, pos, size_output);
524 }
525 case QUICK_MESSAGE_TAG_PASSPORT:
526 {
527 format(tmp_string, sizeof tmp_string, "(( /pass %d ))", playerid);
528 strins(string, tmp_string, pos, size_output);
529 }
530 case QUICK_MESSAGE_TAG_LICENSE:
531 {
532 format(tmp_string, sizeof tmp_string, "(( /lic %d ))", playerid);
533 strins(output_string, tmp_string, pos, size_output);
534 }
535 case QUICK_MESSAGE_TAG_ALL_DOC:
536 {
537 format(tmp_string, sizeof tmp_string, "(( /pass %d /lic %d ))", playerid);
538 strins(output_string, tmp_string, pos, size_output);
539 }
540 }
541 }
542 }
543}
544
545/*
546 Функция форматирует команды
547 Возвращает:
548 -1 - если не нашли команды иначе idx-команды
549*/
550stock QM_GetFormatedCommand(string[])
551{
552 for (new i = 0, pos; i < sizeof gQucikMessageCommands)
553 {
554 if ((pos = strfind(string, gQucikMessageCommands[i][QMC_NAME]) != -1))
555 {
556 strdel(string, pos, pos + gQucikMessageCommands[i][QMC_NAME_LENGTH] + 1);
557
558 return i;
559 }
560 }
561
562 return -1;
563}
564
565case DIALOG_QM_MAIN_MENU:
566{
567 if (response)
568 {
569 if (isnull(inputtext))
570 {
571 QM_ShowPlayerMainMenu(playerid);
572 }
573 else if (strfind(inputtext, "Добавить") != -1)
574 {
575 QM_ShowPlayerAddMessage(playerid);
576 }
577 else if (strfind(inputtext, "Отправить все сообщения") != -1)
578 {
579 for (new i = 0; i < MAX_QUICK_MESSAGE_HAVE_PLAYER; ++i)
580 {
581 if (pQuickMessage[playerid][i][QM_TABLE_ID] == 0)
582 {
583 continue;
584 }
585
586 SendPlayerQuickMessage(playerid, pQuickMessage[playerid][i][QM_MESSAGE], MAX_QUICK_MESSAGE_LENGTH);
587 }
588 }
589 else if (strfind(inputtext, "Инструкция") != -1)
590 {
591 QM_ShowPlayerInstruction(playerid);
592 }
593 else
594 {
595 new
596 idx = pListitemValue[playerid][listitem];
597
598 QM_ShowPlayerEditIDX(playerid, idx);
599 }
600 }
601}
602case DIALOG_QM_EDIT_MENU:
603{
604 if (response)
605 {
606 new
607 idx = GetPVarInt(playerid, pVar__QuickMessage_IDX);
608
609 switch (listitem)
610 {
611 case 0: _QM_ShowPlayerEditContents(playerid, idx);
612 case 1:
613 {
614 QM_Delete(playerid, idx);
615
616 SendClientMessage(playerid, -1, "Вы успешно удалили содержимое");
617
618 goto g_escape;
619 }
620 }
621 }
622 else
623 {
624 g_escape:
625
626 DeletePVar(playerid, pVar__QuickMessage_IDX);
627
628 QM_ShowPlayerMainMenu(playerid);
629 }
630}
631case DIALOG_QM_EDIT_CONTENTS:
632{
633 new
634 idx = GetPVarInt(playerid, pVar__QuickMessage_IDX);
635
636 if (response)
637 {
638 new
639 len = strlen(inputtext);
640
641 if (!(MIN_QUICK_MESSAGE_LENGTH <= len <= MAX_QUICK_MESSAGE_LENGTH - 1))
642 {
643 _QM_ShowPlayerEditContents(playerid, idx);
644
645 new
646 string[66 + (-4 + 22) + 1];
647 format(string, sizeof string, "Длина содержимого должна быть не меньше %d и не больше %d символов",
648 MIN_QUICK_MESSAGE_LENGTH, MAX_QUICK_MESSAGE_LENGTH);
649 return SendClientMessage(playerid, -1, string);
650 }
651
652 MQ_Update(playerid, idx, inputtext);
653
654 SendClientMessage(playerid, -1, "Вы успешно изменили бинд на:");
655 SendClientMessage(playerid, -1, inputtext);
656 }
657 else
658 {
659 QM_ShowPlayerEditIDX(playerid, idx);
660 }
661}
662case DIALOG_QM_ADD_MESSAGE:
663{
664 new
665 idx = GetPVarInt(playerid, pVar__QuickMessage_IDX);
666
667 DeletePVar(playerid, pVar__QuickMessage_IDX);
668
669 if (response)
670 {
671 new
672 len = strlen(inputtext);
673 if (!(MIN_QUICK_MESSAGE_LENGTH <= len <= MAX_QUICK_MESSAGE_LENGTH - 1))
674 {
675 return QM_ShowPlayerAddMessage(playerid);
676 }
677
678 QM_Insert(playerid, idx, inputtext);
679 }
680
681 QM_ShowPlayerMainMenu(playerid);
682}
683case DIALOG_QM_INSTRUCTION:
684{
685 QM_ShowPlayerMainMenu(playerid);
686}