Question

trevison
Активный

Квесты на телефоне отображаются так:

Спойлер


W3WDB.png

 

сверху лишняя строка ( с пк такой проблемы нет ) и чтобы взаимодействовать с квестом - нужно выбирать пустую строку ( то есть каждый раз предыдущую от самого текста квеста )

код:

cc:quest;
{
    new string[1024],num;
    for(new i;i<MAX_QUESTS;i++)
    {
        if(AcceptQuest[playerid][i]!=0 && QuestProgress[playerid][i]!=100)
        {
            if(QuestProgress[playerid][i]<QI[i][LastProgress]) format(string,sizeof(string),"%s\n{FFFFFF}%s | {f4a92c}Прогресс: %d/%d",string,QI[i][QuestName],QuestProgress[playerid][i],QI[i][LastProgress]);
            else if(QuestProgress[playerid][i]==100) format(string,sizeof(string),"%s\n{FFFFFF}%s | {aeafaf}[Выполнен]",string,QI[i][QuestName]);
            else format(string,sizeof(string),"%s\n{FFFFFF}%s | {f4a92c}Прогресс: {dbea0e}[Можно завершить]",string,QI[i][QuestName]);

            QuestShow[playerid][num]=i;
            num++;
        }
    }
    if(strlen(string)>0) ShowPlayerDialog(playerid,7650,2,"{e5b029}Сюжетная линия",string,"Инфо","Отмена");
    else ShowPlayerDialog(playerid,0,0,"{e5b029}Квесты","{FFFFFF}У вас нет принятых квестов!","Принять","");
    return 1;
}

 

Share this post


Link to post

5 answers to this question

  • 0
Sleash
Завсегдатый

@trevison 

format(string,sizeof(string),"%s%s %s\n",string,QI[mas[i]][QuestName],skr);

Из-за того, что у Вас сначала появляется информация о квесте, а потом вставляется оставшаяся строка - каждый квест "съезжает" на строку, то есть вы как бы "вставляете" квест на первое место, а надо его добавлять в конце, как это сделано выше

Share this post


Link to post
  • 0
Cawfee
Великий Гуру

@trevison, так а зачем вы делаете перенос строки ('\n') в начале форматируемой строки? Делайте его в конце. 

Share this post


Link to post
  • 0
trevison
Активный

@Cawfee проблема ушла, но теперь квесты идут не в том порядке который должен быть

вот код:

if (AcceptQuest[playerid][14]!=0return SendBotMessage(playerid,"Извини, но ты у меня взял, уже все задания!");
new mas[10] = {5,6,7,8,9,10,11,12,13,14},num=0;
new skr[256], string[1024];
for(new i;i<10;i++)
{
    if(AcceptQuest[playerid][mas[i]]==0) skr = "{64e55e}[Доступен]{FFFFFF}";
    else if(QuestProgress[playerid][mas[i]]==100) skr = "{aeafaf}[Выполнен]{FFFFFF}";
    else if(QuestProgress[playerid][mas[i]]==QI[mas[i]][LastProgress] && AcceptQuest[playerid][mas[i]]!=0) skr = "{dbea0e}[Завершить]{FFFFFF}";
    else if(QuestProgress[playerid][mas[i]]>=0 && AcceptQuest[playerid][mas[i]]!=0) skr = "{f4a92c}[В процессе]{FFFFFF}";

    format(string,sizeof(string),"%s %s\n%s",QI[mas[i]][QuestName],skr,string);
    QuestShow[playerid][num]=mas[i];
    num++;
}
ShowPlayerDialog(playerid,7971,2,"{e5b029}Сюжетная линия",string,"Принять","Отмена");
}

скриншот:

657964047acc4__2023-12-13_145755313.png.fc76b3ede7fe8881e4d4b297aab139a2.png

должно быть наоборот: первым сделать паспорт, начинающий работник и т.д.

Share this post


Link to post
  • 0
Sleash
Завсегдатый

И ещё совет, вы можете использовать strcat:

    strcat(string, QI[mas[i]][QuestName]);
    if(AcceptQuest[playerid][mas[i]]==0) strcat(string, " {64e55e}[Доступен]{FFFFFF}");
    else if(QuestProgress[playerid][mas[i]]==100) strcat(string, " {aeafaf}[Выполнен]{FFFFFF}");
    else if(QuestProgress[playerid][mas[i]]==QI[mas[i]][LastProgress] && AcceptQuest[playerid][mas[i]]!=0)strcat(string, " {dbea0e}[Завершить]{FFFFFF}");
    else if(QuestProgress[playerid][mas[i]]>=0 && AcceptQuest[playerid][mas[i]]!=0) strcat(string, " {f4a92c}[В процессе]{FFFFFF}";
    strcat(string, "\n");

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • ВасилийСталин
      By ВасилийСталин
      VERDICT PROJECT - V:ACE
       
      Соревновательный проект на платформе SA-MP, вдохновлённый духом Counter-Strike: тактические перестрелки, честный рейтинг и ванильное PVP.
      В разработке, не используются ресурсы, из открытых источников. Всё строится с нуля, собственный игровой мод, полностью кастомный интерфейс и игровой лаунчер.
      Что мы разрабатываем:
       
      - Рейтинговый режим с подбором по ELO. Равные соперники, честные матчи, путь от новичка до вершины таблицы.
      - Полностью кастомный интерфейс (CEF): меню, лобби, магазин и статистика такого уровня, какого на SA-MP почти не встретишь.
      - Легионеры - уникальные оперативники с индивидуальным дизайном и редкостью, открываются через боевой пропуск или чёрные ячейки (кейсы).
      - Скины на оружие и кейсы - коллекционная система в духе CS. -> В активной разработке
      - Киберспортивные команды: теги, ростеры, матчи команда против команды.
      - Тренировка аима, система рангов, ежедневные награды и не только.
       
      Продуманный баланс и внимание к деталям ванильного сражения - то, ради чего мы за это взялись.
      Проект уже на серьёзной стадии разработки. Мы открываем сообщество раньше официального анонса, чтобы первые скриншоты, новости и дата старта достались тем, кто был с нами с самого начала. Мы всегда рады открытой критике, или советам - сделаем игру лучше для всех!
      Подписывайтесь, чтобы не пропустить официальное заявление о запуске и первые материалы проекта.
       
      Группа VK: https://vk.ru/verdictcs
      Официальная почта: verdictproject@mail.ru
    • Kevin_McCarthy
      By Kevin_McCarthy
      🔒 ОТКРЫТИЕ НАБОРА НА ЗАКРЫТОЕ БЕТА-ТЕСТИРОВАНИЕ (ЗБТ)!
      Друзья! Мы выходим на самый ответственный этап разработки Brilliant RP. Проект уже практически готов к полноценному запуску, но перед тем как открыть двери для всех игроков, нам нужно тщательно проверить каждую систему, каждую работу и каждую строчку кода.
      Именно поэтому мы объявляем о старте Закрытого Бета-Тестирования!
      🏆 ТОП-3 ТЕСТЕРА ПОЛУЧАТ КРУТЫЕ ПРИЗЫ!
      Мы высоко ценим время и вклад каждого участника. Тестеры, которые проявят наибольшую активность, найдут больше всего уникальных багов и подробно опишут их в нашей Google-форме, получат ценные награды:
      🥇 1 МЕСТО: 3000 рублей на кошелек, 100.000$ игровой валюты, и Diamond VIP на 30 дней
      🥈 2 МЕСТО: 2000 рублей на кошелек, 75.000$ игровой валюты, и Diamond VIP на 30 дней
      🥉 3 МЕСТО: 1000 рублей на кошелек, 50.000$ игровой валюты, и Diamond VIP на 30 дней
      📝 Как стать участником ЗБТ?
      Заполни заявку на участие: 👉 https://vk.ru/gtasamp_brilliantrp
      Дождись одобрения.
    • OOLOAIS
      By OOLOAIS
      Ищу скрипт для самп/crmp который может скопировать акссесуары с аризоны/родины пж помогите