Вопросы

Подскажите, пожалуйста, как в Pawn/SAMP реализовать возможность вводить текст в TextDraw при нажатии на него?

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


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

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

  • 0

@tivan666ban , а разве для этих целей не кастомизированные диалоговые окна использовали?

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


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

@tivan666ban playertextdrawsetstring + showplayerdialog

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


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

@Cawfee Я хотел бы систему, которая используется на успешных проектах, таких как Radmir RP CRMP

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


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

Можете для этого использовать TextDrawSetString и настроить его так чтобы при нажатии на него можно менять текст. Используй диалоговое окно для обработки текста, можешь использовать пример ниже:

 

Создаёте new:

 

new Text:MyTextDraw;

 

Создаёте Текстдрав и вставляете в любое удобное место


 

    MyTextDraw = TextDrawCreate(320.0240.0"Click me to enter text");
    TextDrawBackgroundColor(MyTextDraw, 0x000000FF);
    TextDrawFont(MyTextDraw, 3);
    TextDrawLetterSize(MyTextDraw, 0.51.0);
    TextDrawColor(MyTextDraw, 0xFFFFFFFF);
    TextDrawSetProportional(MyTextDraw, 1);
    TextDrawSetSelectable(MyTextDraw, 1);
    TextDrawShowForAll(MyTextDraw);

 

Ну и делаете например если он нажмёт по текстдраву, он будет открывать диалог.

 

#define DIALOG_INPUT 1

public OnPlayerClickTextDraw(playerid, clickedid)
{
    if(clickedid == MyTextDraw)
    {
        ShowPlayerDialog(playerid, DIALOG_INPUT, DIALOG_STYLE_INPUT, "TextDraw""Введите ваш текст:""""Submit""Cancel");
    }
    return 1;
}

 

И обрабатываете текст:

 

#define DIALOG_INPUT 1

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_INPUT)
    {
        if(response)
        {
            TextDrawSetString(MyTextDraw, inputtext);
            TextDrawShowForAll(MyTextDraw);
        }
    }
    return 1;
}

 

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


 

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

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


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

@angel_sinvays  ошибка 

  открыть спойлер
  открыть спойлер

 

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


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

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

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

    • deniisunreosoad
      От deniisunreosoad
      Скрин: https://yapx.ru/album/YuQJX
      ferma3.txt
    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }