Форум Pawn.Wiki - Воплоти мечту в реальность!: spdt - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

spdt Оценка: -----

#1
Пользователь офлайн   Den1444 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
ShowPlayerDialogTime

Что представляет из себя этот инклуд:
Диалог с таймером который игрок не сможет закрыть пока не истечет время
Так же вы можете выбрать какую кнопку желаете заблокировать с помощью type
1 - кнопка response
2 - кнопка !response
По умолчанию заблокированы обе кнопки

Использование:
ShowPlayerDialogTime(playerid, dialogid, style, caption[], info[], button1[], button2[], time, type); // time - время сколько игрок не сможет закрыть диалог(в миллисекундах)


Демонстрация:
ZyE2srWS_9do-I4OX5mEmk1axg-UjhFglnSWyDCpboJeXAQwutsMDyGXgvGLUO1fZ7SAIerRTGMYEHMQJNZd80ss.png [43,4К]

Скачать:
Яндекс Диск
Google Диск

Сообщение отредактировал Den1444: 13 мая 2026 - 18:25

2

#2
Пользователь офлайн   Romzes 

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию
Странно выкладывать плагин на github без исходного кода. Не известно что там внутри. Также нет линукс версии
0

#3
Пользователь офлайн   Den1444 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRomzes (12 мая 2026 - 22:17) писал:

Странно выкладывать плагин на github без исходного кода. Не известно что там внутри. Также нет линукс версии

Говорил так как еще на доработал как только все сделаю выложу исходники и линукс версию
0

#4
Пользователь офлайн   Romzes 

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию
Могу ещё предложить улучшение. Нужно добавить возможность выбирать какую из кнопок заблокировать. Левую, правую или обе
0

#5
Пользователь офлайн   RaffCor 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
А зачем делать это в плагине, если можно реализовать стандартными методами Pawn?
1

#6
Пользователь офлайн   Den1444 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRomzes (12 мая 2026 - 23:15) писал:

Могу ещё предложить улучшение. Нужно добавить возможность выбирать какую из кнопок заблокировать. Левую, правую или обе

Спасибо. Отличное улучшения добавлю в плагин
0

#7
Пользователь офлайн   Den1444 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияRaffCor (13 мая 2026 - 07:31) писал:

А зачем делать это в плагине, если можно реализовать стандартными методами Pawn?

Чтобы упростить код и не делать лишние таймеры и тд.
0

#8
Пользователь офлайн   Saibot 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDen1444 (13 мая 2026 - 10:47) писал:

Чтобы упростить код и не делать лишние таймеры и тд.

Тут и не нужно создавать таймеры.

Сообщение отредактировал Saibot: 13 мая 2026 - 11:04

1

#9
Пользователь офлайн   Den1444 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSaibot (13 мая 2026 - 11:04) писал:

Тут и не нужно создавать таймеры.

А как же обновление кнопок которые отображают сколько времени осталось до того чтобы можно было закрыть диалог?
0

#10
Пользователь офлайн   Saibot 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDen1444 (13 мая 2026 - 11:07) писал:

А как же обновление кнопок которые отображают сколько времени осталось до того чтобы можно было закрыть диалог?

Ты не "кнопки обновляешь", а заново показываешь диалог игроку, причем каждый тик сервера, судя по твоему коду.

static void TickDialogs(AMX* amx, int playerid_arg, void* amx2)
{
    auto it = g_dialogs.find(playerid_arg);
    if (it == g_dialogs.end())
        return;

    DialogEntry& entry = it->second;
    entry.timer_ms -= TICK_STEP_MS;  // -= 100мс

    if (entry.timer_ms <= 0)
    {
        g_dialogs.erase(it);
    }
    else
    {
        int total_sec = entry.timer_ms / 1000;
        int minutes   = total_sec / 60;
        int seconds   = total_sec % 60;

        char timer_str[32];
        snprintf(timer_str, sizeof(timer_str), "%d.%d", minutes, seconds);

        char timed_title[512];
        snprintf(timed_title, sizeof(timed_title), "%s %s", entry.title.c_str(), timer_str);

        //ShowPlayerDialog(playerid, INTERNAL_DIALOG_ID, entry.style, timed_title, entry.button1, entry.button2, entry.info)
    }
}

Ну и сама реализация конечно странная, если это правильно де компилировалось.

PS. Кнопки можно обновить(показать заново диалог ибо по другому никак), когда он попытается закрыть, ну и диалог игрок сам должен закрыть, ибо там может быть много информации и он не успеет её прочитать.
Но это лично я бы так сделал.

Сообщение отредактировал Saibot: 13 мая 2026 - 13:13

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика