Чтобы заменить TextDraw-меню "Уникальные аксессуары" на обычное диалоговое меню (ShowPlayerDialog), нужно:
- Найти код TextDraw-меню в ART RP (между строками 1416 и 1443, если ты не ошибаешься).
- Отключить или удалить TextDraw при открытии "Уникальных аксессуаров".
- Добавить диалоговое меню (ShowPlayerDialog) в нужное место.
Как это сделать?
1. Найди код TextDraw'ов аксессуаров
Они создаются примерно так:
pawn
КопироватьРедактировать
TD_AccessoryMenu = TextDrawCreate(320.000000, 240.000000, "Уникальные аксессуары");
TextDrawBackgroundColor(TD_AccessoryMenu, 255);
TextDrawFont(TD_AccessoryMenu, 1);
TextDrawShowForPlayer(playerid, TD_AccessoryMenu);
Или через массивы:
pawn
КопироватьРедактировать
for(new i = 0; i < MAX_ACCESSORIES; i++)
{
TD_Accessory
= TextDrawCreate(...);
TextDrawShowForPlayer(playerid, TD_Accessory);
}
Этот код нужно закомментировать или удалить.
2. Отключить старый вызов TextDraw-меню
В файле, где находится система доната, найди место, где вызывается TextDraw-меню:
pawn
КопироватьРедактировать
case 5: // "Уникальные аксессуары"
{
ShowAccessoryMenu(playerid);
}
Здесь, скорее всего, вызывается ShowAccessoryMenu(playerid).
Эту строку нужно заменить на код обычного меню.
3. Добавить обычное диалоговое меню (ShowPlayerDialog)
Вместо ShowAccessoryMenu(playerid); добавь такой код:
pawn
КопироватьРедактировать
ShowPlayerDialog(playerid, DIALOG_ACCESSORIES, DIALOG_STYLE_LIST, "Уникальные аксессуары",
"Шляпа\nОчки\nМаска\nЧасы\nПерчатки\nРюкзак",
"Выбрать", "Отмена");
Важно! Убедись, что DIALOG_ACCESSORIES не совпадает с другими ID диалогов в коде.
4. Обработать выбор игрока
В OnDialogResponse добавь обработку:
pawn
КопироватьРедактировать
case DIALOG_ACCESSORIES:
{
if(!response) return 1; // Если нажал "Отмена"
switch(listitem)
{
case 0: SendClientMessage(playerid, -1, "Вы выбрали: Шляпа");
case 1: SendClientMessage(playerid, -1, "Вы выбрали: Очки");
case 2: SendClientMessage(playerid, -1, "Вы выбрали: Маска");
case 3: SendClientMessage(playerid, -1, "Вы выбрали: Часы");
case 4: SendClientMessage(playerid, -1, "Вы выбрали: Перчатки");
case 5: SendClientMessage(playerid, -1, "Вы выбрали: Рюкзак");
}
}
Что получилось?
Вместо TextDraw теперь открывается обычное меню /mm.
Игрок может выбрать аксессуар в удобном интерфейсе.
Ошибки, связанные с TextDraw, устранены.