Вопросы

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;
}

 

Отредактировано пользователем Cawfee
Причина: заключил код в теги "Код".

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

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

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


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

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

  • 0
Mr.Armstrong
Новичок

@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` в разных частях строки.

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


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

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

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

    • Владислав Малиновский
      От Владислав Малиновский
      SWEEK RUSSIA — онлайн игра на телефон с открытым миром, в котором Вы можете создать персонажей вместе со своими друзьями и начать весело проводить время. Вы можете продвигаться по сюжету квестовых миссий или же начать игру с зарабатывания денег в транспортной компании. Создавать организации, подниматься по карьерной лестнице. Заполучив влияние над другими игроками - попробуй себя в роли Президента.
       
      Нам нужны ответственные люди на должность главного администратора. Если вы считаете себя адекватным и ответственным, отпишите в vk.com/devmaksim или t.me/raphmarci.
       
      Официальный сайт проекта - sweekrussia.ru
      Официальный форум проекта - forum.sweekrussia.ru
      Официальное сообщество VK - vk.com/sweekrussia.game
      Официальный TG канал - t.me/sweek_dev
    • bogdan295@gmai
      От bogdan295@gmai
      Здраствуйте, я создавал новую организации когда дело дашло до пикапов они не создаются 
      new lssd1; new lssd2;  else if(pickupid == lssd2)// Вход     {         SetPlayerInteriorEx(playerid,0);         SetPPos(playerid,1567.5510,-1657.9956,5.3859);         SetPlayerFacingAngle(playerid, 500);         return true;     } else if(pickupid == lssd1)// Вsход     {         SetPlayerInteriorEx(playerid,0);         SetPPos(playerid,630.0542,-572.0032,16.3359);         SetPlayerFacingAngle(playerid, 500);         return true;     }     lssd2 = CreatePickupAC(1318,1,626.9653,-571.8394,17.9207, 147); // вход лссд     lssd1 = CreatePickupAC(1318,1,1567.4720,-1660.6494,5.3859, 147); // выход лссд Что я сделал не так?