Question

приветствую всех.

 

Задался таким вопросом при добавлении одной системы на 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;
}

 

Edited by Cawfee
Причина: заключил код в теги "Код".

Заметка от Cawfee , создано

Как пользоваться тегом "Код"?

Share this post


Link to post

2 answers to this question

  • 0

@djxxx, возможно, здесь то, что вам нужно.

Share this post


Link to post
  • 0

@djxxx Попробуйте этот код

 

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}Купить",
    "Выбрать", "Закрыть"
);

 

Проблема с выравниванием текста в диалоге `DIALOG_STYLE_TABLIST_HEADERS` связана с тем, что SA-MP использует моноширинный шрифт для отображения диалогов, но табуляция (`\t`) работает не всегда предсказуемо.

 

 Решения для правильного выравнивания:

1. Используйте фиксированную ширину колонок. Вместо надежды на `\t`, задавайте фиксированное количество пробелов или выравнивайте текст вручную:

   
   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}Нажмите";
   

2. Используйте `strpad` или `format` для выравнивания. Можно заранее форматировать строки, чтобы они имели одинаковую длину:

   
   new item1[128], item2[128], item3[128];
   format(item1, sizeof(item1), "{EB4C42}#1\t{FFFFFF}%-25s\t{888888}%s", "Виртуальная валюта", "Нажмите");
   format(item2, sizeof(item2), "{EB4C42}#2\t{FFFFFF}%-25s\t{888888}%s", "Донат валюта", "Нажмите");

 

3. **Попробуйте `DIALOG_STYLE_TABLE` (если используется мод с расширенными диалогами). Некоторые моды (например, OpenMP) поддерживают более гибкие варианты таблиц.

4. Избегайте слишком длинных строк. Если текст не вмещается, диалог может "ломаться". Попробуйте сократить названия.


- SA-MP не поддерживает полноценное табличное форматирование, как HTML/CSS.
- Если выравнивание критично, можно использовать `DIALOG_STYLE_LIST` с заранее отформатированными строками.

Если проблема сохраняется, попробуйте поэкспериментировать с количеством пробелов и `\t` в разных частях строки.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • whccompany
      By whccompany
      Rostov Role Play | Rostov RP | CRMP Mobile Project объявляет набор людей в свою команду: Нам требуются:
       
      1. Маппера:
      Сдельная оплата труда от 250 до 3000 рублей/ за 1 работу
       
      2. Специалист по Text Draw:
      Сдельная оплата труда от 400 до 3500 рублей/ за одну работу
       
      3. Pawn разработчик:
      Заработная плата от 10 000 рублей/месяц
       
      4. Программист для создания лаунчера и сайта UCP с автодонатом:
      Заработная плата от 10 000 рублей/месяц
       
      Контакты для связи:
       
      ВКонтакте
       
      Telegram
       
    • Talex
      By Talex
      Игровой сервер Life Game RolePlay
      Скачать файл Игровой сервер Life Game RolePlay
      Добавил Talex Добавлено 28.01.2024 Категория Моды Автор Неизвестно  
    • Talex
      By Talex
      Игровой сервер Life Game RolePlay
    • Владислав2
      By Владислав2
      Здравствуйте, при компиляции появляется ошибка,

      Ошибка:
      error 017: undefined symbol "REP_KUZIA_TD"

      Строки:
       
          REP_KUZIA_TD[0] = TextDrawCreate(7.499990, 314.444396, "REP: 1");
          TextDrawLetterSize(REP_KUZIA_TD[0], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[0], 1);
          TextDrawColor(REP_KUZIA_TD[0], -1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          TextDrawSetOutline(REP_KUZIA_TD[0], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[0], 255);
          TextDrawFont(REP_KUZIA_TD[0], 1);
          TextDrawSetProportional(REP_KUZIA_TD[0], 1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          REP_KUZIA_TD[1] = TextDrawCreate(6.249957, 330.518493, "ASK: 0");
          TextDrawLetterSize(REP_KUZIA_TD[1], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[1], 1);
          TextDrawColor(REP_KUZIA_TD[1], -1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          TextDrawSetOutline(REP_KUZIA_TD[1], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[1], 255);
          TextDrawFont(REP_KUZIA_TD[1], 1);
          TextDrawSetProportional(REP_KUZIA_TD[1], 1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          return 1;
      }

      Буду рад если кто-то поможет