Вопросы

Новичок

Доброго времени суток, нуждаюсь в помощи. Если есть люди, которые шарят в pawno, нужна помощь. Короче, мод ART RP, там в донате есть строка "Уникальные аксессуары", когда на него нажмешь, открывается TextDraw менью, нужно переделать это на обычную менью (/mm например, там обычная менью), буду рад, если поможете, за ранее спасибо.

Если не ошибаюсь, строка текстдрав аксессуаров начинается с 1416 до 1443.

art4.pwn

Поделиться сообщением


Ссылка на сообщение

15 ответов на этот вопрос

  • 1
Cawfee
Великий Гуру

@Wiggins, ну, давайте попробуем.

1. Находим фрагмент кода, где отображается диалоговое окно. Поиск осуществляем по ключевым словам, которые можно увидеть в диалоге. Могу предположить, что вас интересует следующий фрагмент (см. спойлер).

Спойлер

format(string,sizeof(string),"\
            {ffffff}Конвертировать рублей в вирты \t{"#cBLUES"}1 рублей = %d $\n\
            {ffffff}Снять бан чата \t{"#cBLUES"}60 рублей\n\
            {ffffff}Снять предупреждение (варн) \t{"#cBLUES"}150 рублей\n\
            {ffffff}+25 к законопослушности \t{"#cBLUES"}10 рублей\n\
            {ffffff}Убрать наркозависимость \t{"#cBLUES"}60 рублей\n\
            {ffffff}Прибавить 1000 к наркозависимости \t{"#cBLUES"}20 рублей\n\
            {ffffff}Покупка VIP \n\
            {ffffff}Смена ника \t{"#cBLUES"}45 рублей\n\
            {ffffff}Смена телефонного номера \t{"#cBLUES"}50 рублей\n\
            {ffffff}Любой уникальный транспорт \t{"#cBLUES"}1200 рублей\n\
            {ffffff}Прокачать все стили боя \t{"#cBLUES"}25 рублей\n\
            {ffffff}Уникальные аксессуары (рандом) \t{"#cBLUES"}10 рублей\n\
            {FFFF00}[NEW] +1 игровая рулетка (/roulette) \t{"#cBLUES"}100 рублей\n\
            {ffffff}Уникальные аксессуары на выбор \n\
            {ffffff}Любой уникальный скин \t{"#cBLUES"}70 рублей\n\
            {ffffff}Создать свою семью \t{"#cBLUES"}150 рублей\n\
            {ffffff}Выйти из деморгана \t{"#cBLUES"}150 рублей\n\
            {ffffff}Антиголод \t{"#cBLUES"}150 рублей\n\
            {ffffff}Бесконечные маты и нарко \t{"#cBLUES"}от 250 рублей\n\
            {ffffff}Игровые пакеты {FFFF00}[NEW]\n\
            {FFFF00}История покупок\n\
            {FFFF00}VIP статус \t{FFFF00}навсегда!",
            (!Conf[1]) ? (DonatM) : (DonatM*2));

        return ShowPlayerDialogEx(playerid, 9777, DIALOG_STYLE_TABLIST, schet,
        string, // и т.д.
        "Выбрать""Отмена");

 

 

2. В функции отображения диалогового окна ShowPlayerDialogEx в качестве второго параметра передается номер отображаемого диалога. Это необходимо для того, чтобы потом при обработке выбранной игроком кнопки в диалоговом окне однозначно определить, к какому диалогу относится выполненное действие. Запоминаем номер диалогового окна – 9777.

3. Находим обработчик событий, произошедших в этом диалоговом окне. При нажатии на кнопки в диалоговом окне (кнопки "Выбрать" и "Отмена" в данном случае) вызывается функция OnDialogResponse, второй параметр которой есть номер диалога, от которого пришло событие, в параметре response - номер нажатой кнопки (1 - левая кнопка, то есть "Выбрать" и 0 - правая кнопка, то есть "Отмена"), а в параметре listitem - выбранный пункт меню.

4. В коде отображения существующего меню обнаруживаем (на основе символов переносов строки \n), что пункт меню "Уникальные аксессуары на выбор" находится под номером 13 (считая с нуля).

5. Возвращаемся к пункту 3 и находим обработку диалога 9777 с нажатой клавишей response = 1 ("Выбор") и выбранным пунктом listitem – 13 (см. спойлер ниже).

Спойлер

case 13:
{
    SendClientMessage(playerid,0x00FF00FF,"[Подсказка] "W"Для закрытия меню нажмите "P"ESC");
    LastClickObj[playerid] = 0;
    PlayerTextDrawSetString(playerid,artrp_PTD[playerid][3],ExObjs[0][oName]);
    PlayerTextDrawSetPreviewModel(playerid, artrp_PTD[playerid][0], ExObjs[0][oID]); // ГЛАВНЫЙ
    PlayerTextDrawSetPreviewModel(playerid, artrp_PTD[playerid][2], ExObjs[1][oID]);
    PlayerTextDrawSetPreviewRot(playerid, artrp_PTD[playerid][0], ExObjs[0][oRot][0],ExObjs[0][oRot][1],ExObjs[0][oRot][2],ExObjs[0][oRot][3]);
    PlayerTextDrawSetPreviewRot(playerid, artrp_PTD[playerid][2], ExObjs[1][oRot][0],ExObjs[1][oRot][1],ExObjs[1][oRot][2],ExObjs[1][oRot][3]);
    for(new i; i < sizeof(artrp_TD); i++) TextDrawShowForPlayer(playerid,artrp_TD[i]);
    PlayerTextDrawShow(playerid,artrp_PTD[playerid][0]);
    PlayerTextDrawShow(playerid,artrp_PTD[playerid][2]);
    PlayerTextDrawShow(playerid,artrp_PTD[playerid][3]);
    SelectTextDraw(playerid, 0x0091FFFF);
    SetPVarInt(playerid,"ObTD"1);
}

 

 

6. Таким образом мы нашли обработчик события нажатия на пункт меню "Уникальные аксессуары на выбор" левой кнопкой. Остается в теле обработчика снести все, связанное с TextDraw (PlayerTextDrawSetString, PlayerTextDrawSetPreviewModel, PlayerTextDrawSetPreviewRot, PlayerTextDrawShow, SelectTextDraw). Здесь по аналогии с диалогом 9777 создать новое диалоговое окно, используя функцию ShowPlayerDialogEx. Как назвать его (title), каке пункты меню в нем будут и какие кнопки внизу – выбор за вами. Не забывайте, что диалоговому окну следует присвоить новый номер, незанятый в вашем игровом моде.

7. Создаем обработчик события нажатия на пункт меню в созданном вами диалоговом окне из пункта 6 (также по аналогии с диалогом 9777). Для каждого из возможных вариантов реализуем свою логику.

Поделиться сообщением


Ссылка на сообщение
  • 0
Завсегдатый

Так, к сожалению, никто делать не будет. То, что ты просишь — это уже конкретная доработка мода и на это нужно тратить время, разбираться в коде и переделывать механику.

 

Если ты хочешь, чтобы тебе действительно помогли с этим, советую обратиться в стол заказов — там такие вещи рассматриваются как платные услуги.

 

Просто учти, что переделать TextDraw-меню на обычное диалоговое меню — это не “пара строк”, особенно если всё завязано на старые обработчики.

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок

@angel_sinvays Полностью переделывать меню TextDraw в обычное диалоговое меню не нужно, в донате есть система покупки аксессуаров, при покупке аксессуаров вылезает меню TextDraw, но я хочу чтобы вылезло обычное диалоговое меню, само меню доната обычное, а в системе покупки аксессуаров всего 8-9 аксессуаров, не думаю, что это займет 1 час.

Поделиться сообщением


Ссылка на сообщение
  • 0
Завсегдатый

@Wiggins Ну раз вы так складно и уверенно говорите, что "это не займет и часа", так сделайте сами, а не просите всё сделать за вас. Тут как бы не обсуждают, сколько времени займёт — тут либо делают за оплату, либо помогают по мелочи.

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок

@angel_sinvays Я не уверен, но думаю, это не займёт и часа. Если бы я мог сделать это сам, я бы не создавал эту тему... Раз уж если не вы, пусть кто-то другой поможет, на теме не отмечено, что все должны помогать, пусть помогают по своему желанию, даже по мелочам.

Поделиться сообщением


Ссылка на сообщение
  • 0
Освоившийся
6 часов назад, Wiggins сказал:

@angel_sinvays Я не уверен, но думаю, это не займёт и часа. Если бы я мог сделать это сам, я бы не создавал эту тему... Раз уж если не вы, пусть кто-то другой поможет, на теме не отмечено, что все должны помогать, пусть помогают по своему желанию, даже по мелочам.

Вам здесь никто и ничем не обязан. Не думаю, что найдётся такой человек, которому не дорого личное время. Вам удобно говорить, что "займёт не более часа", вы ж не искали по интернету информацию как и что переводить из текстдрава  в диалог. Советую покопаться и понять в чём сложности. Да и вообще советую самому код писать и/или исправлять. Можете сами попробовать переписать систему покупки аксессуаров и, если будут варнинги или ошибки, то смело обращайтесь в "Вопросы / проблемы, связанные со скриптингом"

Поделиться сообщением


Ссылка на сообщение
  • 0
Освоившийся

@Wiggins вы сами себе противоречите. Изначально вы нуждались в помощи, затем в следующем предложении вы принуждаете к переделке. Сейчас пишете, что обращаетесь...Поймите, вам проще всего будет самому изучить все подводные камни, связанные с текстдравом. Уж лучше вы потратите время с пользой и для себя что-то новое откроете, чем будете томить себя пустым ожиданием.

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Wiggins, принято все же сначала разрешать полностью свой вопрос, а потом выбирать ответ как решение. Это ведь только начало пути...

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок

@Cawfee Я не смог это реализовать, это оказалось сложно, я ошибся в начале, что это не займёт и часа, в gamemodes/modules также есть файлы, которые относятся к TextDraw, там почти все файлы выдают ошибку, я в итоге отказался от этой идеи, а вам отдельно спасибо за подробное объяснение.

Отредактировано пользователем Wiggins

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@Wiggins, что это за TextDraw, как он выглядит и что возможно сделать посредством него?

Поделиться сообщением


Ссылка на сообщение
  • 0
Новичок

@Cawfee К сожалению, после попытки модификации этого мода, у меня произошла ошибка. Мод запускается, ошибок нет, когда заходишь в игру и пишешь что-то в чат, ничего не пишется, но в консоли сервера видно, что ты написал в чате, но в игре ничего не происходит, и никакие команды не работают... Это произошло после того, как я попытался изменить этот TextDraw на обычное диалоговое меню, на сервере нету ошибок, и все сервера такие, которые запускается в моем пк.

Если вам не лень конечно, ссылка на мод оставлю снизу, можете сами скачать и проверять. "/donate > Уникальные аксессуары на выбор" когда на него нажмете, вылезает TextDraw меню, я попытался его изменить на обычное диалоговое меню.
Ссылка на мод - https://disk.yandex.ru/d/nB7ReikaFgERuA

Поделиться сообщением


Ссылка на сообщение
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • От DonK/Key
      Всем привет, помогите кто разбирается, так как я можно сказать начинающий сделать свой КРМП, буду благодарен. Напишите либо тут либо @evreI_sigma (Мой Telegram)