Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 3 1 2 3 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: mdialog

  1. #1
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±

    mdialog

    mdialog
    GitHub

    Описание
    Библиотека, которая даёт возможность организовать код диалогов в стиле zcmd.

    Функции
    Открыть диалог
    1. Dialog_Open(playerid, function[], style, caption[], info[], button1[], button2[]);


    Закрыть диалог
    1. Dialog_Close(playerid);


    Статус открытости диалога
    1. Dialog_IsOpen(playerid);


    Открыть специально подготовленный диалог
    1. Dialog_Show(playerid, function[]);


    Открыть диалог сообщения
    1. Dialog_Message(playerid, caption[], info[], button1[]);


    Открыть диалог сообщения с собственным обработчиком нажатия
    1. Dialog_MessageEx(playerid, response[], caption[], info[], button1[], button2[]);


    Поддержка zlang
    Если перед подключением mdialog задефайнить MDIALOG_ZLANG_MODE то некоторые функции приобретут новый вид.

    Открыть диалог
    1. Dialog_Open(playerid, function[], style, caption[], info[], button1[], button2[], {Float, _}:...);


    Открыть диалог сообщения
    1. Dialog_Message(playerid, caption[], info[], button1[], {Float, _}:...);


    Открыть диалог сообщения с собственным обработчиком нажатия
    1. Dialog_MessageEx(playerid, response[], caption[], info[], button1[], button2[], {Float, _}:...);


    Поддержка тэгов
    Вы можете использовать теги для стилизации вашего текста:

    Тег
    Описание
    \\c Центрирует текст
    \\r Выравнивает текст по правому краю



    Использование
    Вы можете использовать DialogCreate: и DialogResponse: префиксы:
    1. DialogCreate:test(playerid)
    2. {
    3. Dialog_Open(playerid, Dialog:test, DIALOG_STYLE_MSGBOX,
    4. "Hello",
    5. "Are you ok?",
    6. "Yes", "No");
    7. }
    8.  
    9. DialogResponse:test(playerid, response, listitem, inputtext[])
    10. {
    11. if (!response) {
    12. SendClientMessage(playerid, -1, "This club only for OK guys!");
    13. Dialog_Show(playerid, Dialog:test);
    14. return 1;
    15. }
    16.  
    17. SendClientMessage(playerid, -1, "Welcome to the club");
    18. return 1;
    19. }


    Использовать DialogCreate: не обязательно, можно напрямую вызывать диалог с помощью Dialog_Open. Использование DialogCreate полностью себя оправдывает при создании вложенных диалогов, где один и тот же диалог приходится вызывать более, чем один раз. Да и в целом код читать удобнее, когда функция создания и функция обработки располагаются рядом.

    Использование в режиме zlang
    Использование библиотеки в режиме zlang немного отличается:
    1. #define MDIALOG_ZLANG_MODE
    2. #include "mdialog"
    3.  
    4. DialogCreate:test(playerid)
    5. {
    6. Dialog_Open(playerid, Dialog:test, DIALOG_STYLE_MSGBOX,
    7. "Hello",
    8. "LANG_ARE_YOU_OK",
    9. "Yes", "BUTTON_NO",
    10. playerid);
    11. }
    12.  
    13. DialogResponse:test(playerid, response, listitem, inputtext[])
    14. {
    15. if (!response) {
    16. SendClientMessage(playerid, -1, "This club only for OK guys!");
    17. Dialog_Show(playerid, Dialog:test);
    18. return 1;
    19. }
    20.  
    21. SendClientMessage(playerid, -1, "Welcome to the club");
    22. return 1;
    23. }


    Содержимое языкового файла:
    1. LANG_ARE_YOU_OK = Hey id %d, are you ok?
    2. BUTTON_NO = No


    Скачать
    Последний раз редактировалось ziggi; 11.12.2019 в 00:51.

  2. 10 пользователя(ей) сказали cпасибо:
    $continue$ (20.09.2016) 1lyad (21.09.2016) DeimoS (26.09.2016) Geebrox (08.12.2016) iWors (09.10.2016) MassonNN (24.04.2020) oukibt (12.02.2021) punkochel (08.06.2020) Sp1ke (25.09.2016) StevenH (20.09.2016)
  3. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    mdialog v1.2.0

    Теперь вы можете использовать теги для стилизации вашего текста:

    Тег
    Описание
    \\c Центрирует текст
    \\r Выравнивает текст по правому краю


  4. 5 пользователя(ей) сказали cпасибо:
    $continue$ (17.09.2017) DeimoS (17.09.2017) Mr_LemoneZ (17.09.2017) Osetin (17.09.2017) Sp1ke (17.09.2017)
  5. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Забыл написать об отличиях последнего обновления от всем известной Dialog Center Text:
    - Намного более оптимальный алгоритм и чистый код (в 2 раза меньше строк, меньше циклов, вызовов функций, нет goto).
    - Более точные размеры символов (используются Float значения).
    - Поддержка всех символов Windows-1251.
    - Возможность выровнять текст по правой границе.
    - Нет поддержки управления заголовками (может быть потом реализую).

  6. Пользователь сказал cпасибо:
    vasyok28 (18.09.2017)
  7. #4
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Как будет себя вести на разных расширениях мониторов ?

  8. #5
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Как будет себя вести на разных расширениях мониторов ?
    Должно быть одинаково. Проблемы могут возникнуть при изменении шрифта.

  9. #6
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    106
    Репутация:
    8 ±
    Еще такой вопрос табуляцию пофиксили ?

  10. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Еще такой вопрос табуляцию пофиксили ?
    Ширина табов меняется в зависимости от длины строки, это очень сильно усложняет процесс расчёта длины строки. И я не уверен, возможно ли это реализовать. Если научусь высчитывать длину табов, то реализую.

  11. #8
    Аватар для Mr_LemoneZ
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.12.2016
    Адрес
    Беларусь
    Сообщений
    41
    Репутация:
    1 ±
    При использовании в Linux на чистом сервере возникает ошибка в функции _MDialog_ProcessTags:
      Открыть/закрыть
    PHP код:
    [19:50:01] [debugServer crashed while executing test.amx
    [19:50:01] [debugAMX backtrace:
    [
    19:50:01] [debug#0 native strfind () from samp03svr
    [19:50:01] [debug#1 00000a40 in _MDialog_ProcessTags (info[]=@0000dedc "Test", result_info[]=@000094b8 "Test", size_info=4096) at ../include/mdialog.inc:671
    [19:50:01] [debug#2 00000338 in _Dialog_Open (playerid=0, function[]=@0000d4b8 "Message", style=0, caption[]=@0000dec8 "Test", info[]=@0000dedc "Test", button1[]=@0000def0 "OK", button2[]=@0000d4d8 "") at ../include/mdialog.inc:382
    [19:50:01] [debug#3 000004a4 in Dialog_Message (playerid=0, caption[]=@0000dec8 "Test", info[]=@0000dedc "Test", button1[]=@0000def0 "OK") at ../include/mdialog.inc:517
    [19:50:01] [debug#4 0000158c in public OnPlayerRequestClass (playerid=0, classid=1) at /home/lemonez/Pawn/samp03/gamemodes/test.pwn:9
    [19:50:01] [debugNative backtrace:
    [
    19:50:01] [debug#0 b72da180 in _Z13GetStackTraceRSt6vectorI10StackFrameSaIS0_EEPv () from plugins/crashdetect.so
    [19:50:01] [debug#1 b72d2064 in _ZN11CrashDetect20PrintNativeBacktraceERSoRKN2os7ContextE () from plugins/crashdetect.so
    [19:50:01] [debug#2 b72d2d64 in _ZN11CrashDetect20PrintNativeBacktraceERKN2os7ContextE () from plugins/crashdetect.so
    [19:50:01] [debug#3 b72d4cdb in _ZN11CrashDetect7OnCrashERKN2os7ContextE () from plugins/crashdetect.so
    [19:50:01] [debug#4 b72d94d5 in ?? () from plugins/crashdetect.so
    [19:50:01] [debug#5 b76dfc20 in ?? ()
    [19:50:01] [debug#6 b76dfc31 in ?? ()
    [19:50:01] [debug#7 b732eea9 in gsignal () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#8 b7330407 in abort () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#9 b7327d07 in ?? () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#10 b7327d8b in ?? () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#11 0809d27f in ?? () from ./samp03svr
    [19:50:01] [debug#12 0809d432 in ?? () from ./samp03svr
    [19:50:01] [debug#13 080950e4 in ?? () from ./samp03svr
    [19:50:01] [debug#14 b72d3ad3 in _ZN11CrashDetect17HandleAMXCallbackEiPiS0_ () from plugins/crashdetect.so
    [19:50:01] [debug#15 00000002 in ?? () from H·i·|µi·ґES    ґES    µGS    ґES    sIS    ґIS    T
    [19:50:01] [debug
    [19:50:01] [debugRegisters:
    [
    19:50:01] [debugEAX00000000 EBX00003261 ECX00003261 EDX00000006
    [19:50:01] [debugESIb76da000 EDIbf9b1ed4 EBPbf9b1fe8 ESPbf9b1e18
    [19:50:01] [debugEIPb76dfc31 EFLAGS00000202
    [19:50:01] [debugStack:
    [
    19:50:01] [debugESP+00000000bf9b1fe8 00000006 00003261 b732eea9
    [19:50:01] [debugESP+0000002000000000 b74b5000 0000004c 0000004d
    [19:50:01] [debugESP+0000004000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+0000006000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+0000008000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000000a000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000000c0bf9b1ef0 08049bfb 00000000 00000004
    [19:50:01] [debugESP+000000e0b7373f00 b7374470 bf9b1e90 b746228c
    [19:50:01] [debugESP+0000010000000010 00000000 b736b1d7 b74b5000
    [19:50:01] [debugESP+00000120b73e5c84 b74b5000 b74b5cc0 b74b5cc0
    [19:50:01] [debugESP+00000140bf9b1fe8 b7327cff b73302b7 b74b5000
    [19:50:01] [debugESP+0000016009393a70 00001000 b74b5000 00000000
    [19:50:01] [debugESP+0000018008158eb9 00000128 08158feb b7462224
    [19:50:01] [debugESP+000001a000000000 0809d27f 08158ef4 08158eb9
    [19:50:01] [debugESP+000001c00952bb5c ffffffff 00000000 09522aac
    [19:50:01] [debugESP+000001e0ffffffff 09520f50 00000004 00000002
    [19:50:01] [debugESP+000002000952bb5c 09520f50 00000050 0951fd70
    [19:50:01] [debugESP+0000022000000000 b72cb14a bf9b2150 00000000
    [19:50:01] [debugESP+00000240bf9b23a8 b72d3ad3 0951fd70 00000007
    [19:50:01] [debugESP+0000026000000000 00000000 2e332e30 00000037
    [19:50:01] [debugESP+0000028000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000002a000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000002c000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000002e000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+0000030000000000 00000000 00000000 00000010
    [19:50:01] [debugESP+0000032000000000 00000004 00000000 00000000
    [19:50:01] [debugESP+0000034000011e88 00000a40 00000007 0951fd70
    [19:50:01] [debugESP+00000360b7372079 b74b5780 b74b5000 00000004
    [19:50:01] [debugESP+0000038000000000 b72feff4 0951fd70 0945aa90
    [19:50:01] [debugESP+000003a0bf9b224c 09534518 00000004 00000000
    [19:50:01] [debugESP+000003c0bf9b2208 0951fd70 0951fd70 09521b50
    [19:50:01] [debugESP+000003e0bf9b224c 09534518 09389bbc 00000008
    [19:50:01] [debugLoaded modules:
    [
    19:50:01] [debug00000000 00187f43 samp03svr
    [19:50:01] [debugb76df000 b76dfd72 
    [19:50:01] [debugb76bf000 b76c1a04 /lib/i386-linux-gnu/libdl.so.2
    [19:50:01] [debugb76a2000 b76bd6ef /lib/i386-linux-gnu/libpthread.so.0
    [19:50:01] [debugb752b000 b76abb4b /usr/lib/i386-linux-gnu/libstdc++.so.6
    [19:50:01] [debugb74d6000 b752a010 /lib/i386-linux-gnu/libm.so.6
    [19:50:01] [debugb74b9000 b74d51e4 /lib/i386-linux-gnu/libgcc_s.so.1
    [19:50:01] [debugb7303000 b74bfb07 /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debugb76e0000 b7703784 /lib/ld-linux.so.2
    [19:50:01] [debugb72bc000 b72feac4 plugins/crashdetect.so
    [19:50:01] [debugb7282000 b72932ec /lib/i386-linux-gnu/libnss_files.so.2 

  12. #9
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Mr_LemoneZ Посмотреть сообщение
    При использовании в Linux на чистом сервере возникает ошибка в функции _MDialog_ProcessTags:
      Открыть/закрыть
    PHP код:
    [19:50:01] [debugServer crashed while executing test.amx
    [19:50:01] [debugAMX backtrace:
    [
    19:50:01] [debug#0 native strfind () from samp03svr
    [19:50:01] [debug#1 00000a40 in _MDialog_ProcessTags (info[]=@0000dedc "Test", result_info[]=@000094b8 "Test", size_info=4096) at ../include/mdialog.inc:671
    [19:50:01] [debug#2 00000338 in _Dialog_Open (playerid=0, function[]=@0000d4b8 "Message", style=0, caption[]=@0000dec8 "Test", info[]=@0000dedc "Test", button1[]=@0000def0 "OK", button2[]=@0000d4d8 "") at ../include/mdialog.inc:382
    [19:50:01] [debug#3 000004a4 in Dialog_Message (playerid=0, caption[]=@0000dec8 "Test", info[]=@0000dedc "Test", button1[]=@0000def0 "OK") at ../include/mdialog.inc:517
    [19:50:01] [debug#4 0000158c in public OnPlayerRequestClass (playerid=0, classid=1) at /home/lemonez/Pawn/samp03/gamemodes/test.pwn:9
    [19:50:01] [debugNative backtrace:
    [
    19:50:01] [debug#0 b72da180 in _Z13GetStackTraceRSt6vectorI10StackFrameSaIS0_EEPv () from plugins/crashdetect.so
    [19:50:01] [debug#1 b72d2064 in _ZN11CrashDetect20PrintNativeBacktraceERSoRKN2os7ContextE () from plugins/crashdetect.so
    [19:50:01] [debug#2 b72d2d64 in _ZN11CrashDetect20PrintNativeBacktraceERKN2os7ContextE () from plugins/crashdetect.so
    [19:50:01] [debug#3 b72d4cdb in _ZN11CrashDetect7OnCrashERKN2os7ContextE () from plugins/crashdetect.so
    [19:50:01] [debug#4 b72d94d5 in ?? () from plugins/crashdetect.so
    [19:50:01] [debug#5 b76dfc20 in ?? ()
    [19:50:01] [debug#6 b76dfc31 in ?? ()
    [19:50:01] [debug#7 b732eea9 in gsignal () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#8 b7330407 in abort () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#9 b7327d07 in ?? () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#10 b7327d8b in ?? () from /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debug#11 0809d27f in ?? () from ./samp03svr
    [19:50:01] [debug#12 0809d432 in ?? () from ./samp03svr
    [19:50:01] [debug#13 080950e4 in ?? () from ./samp03svr
    [19:50:01] [debug#14 b72d3ad3 in _ZN11CrashDetect17HandleAMXCallbackEiPiS0_ () from plugins/crashdetect.so
    [19:50:01] [debug#15 00000002 in ?? () from H·i·|µi·ґES    ґES    µGS    ґES    sIS    ґIS    T
    [19:50:01] [debug
    [19:50:01] [debugRegisters:
    [
    19:50:01] [debugEAX00000000 EBX00003261 ECX00003261 EDX00000006
    [19:50:01] [debugESIb76da000 EDIbf9b1ed4 EBPbf9b1fe8 ESPbf9b1e18
    [19:50:01] [debugEIPb76dfc31 EFLAGS00000202
    [19:50:01] [debugStack:
    [
    19:50:01] [debugESP+00000000bf9b1fe8 00000006 00003261 b732eea9
    [19:50:01] [debugESP+0000002000000000 b74b5000 0000004c 0000004d
    [19:50:01] [debugESP+0000004000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+0000006000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+0000008000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000000a000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000000c0bf9b1ef0 08049bfb 00000000 00000004
    [19:50:01] [debugESP+000000e0b7373f00 b7374470 bf9b1e90 b746228c
    [19:50:01] [debugESP+0000010000000010 00000000 b736b1d7 b74b5000
    [19:50:01] [debugESP+00000120b73e5c84 b74b5000 b74b5cc0 b74b5cc0
    [19:50:01] [debugESP+00000140bf9b1fe8 b7327cff b73302b7 b74b5000
    [19:50:01] [debugESP+0000016009393a70 00001000 b74b5000 00000000
    [19:50:01] [debugESP+0000018008158eb9 00000128 08158feb b7462224
    [19:50:01] [debugESP+000001a000000000 0809d27f 08158ef4 08158eb9
    [19:50:01] [debugESP+000001c00952bb5c ffffffff 00000000 09522aac
    [19:50:01] [debugESP+000001e0ffffffff 09520f50 00000004 00000002
    [19:50:01] [debugESP+000002000952bb5c 09520f50 00000050 0951fd70
    [19:50:01] [debugESP+0000022000000000 b72cb14a bf9b2150 00000000
    [19:50:01] [debugESP+00000240bf9b23a8 b72d3ad3 0951fd70 00000007
    [19:50:01] [debugESP+0000026000000000 00000000 2e332e30 00000037
    [19:50:01] [debugESP+0000028000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000002a000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000002c000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+000002e000000000 00000000 00000000 00000000
    [19:50:01] [debugESP+0000030000000000 00000000 00000000 00000010
    [19:50:01] [debugESP+0000032000000000 00000004 00000000 00000000
    [19:50:01] [debugESP+0000034000011e88 00000a40 00000007 0951fd70
    [19:50:01] [debugESP+00000360b7372079 b74b5780 b74b5000 00000004
    [19:50:01] [debugESP+0000038000000000 b72feff4 0951fd70 0945aa90
    [19:50:01] [debugESP+000003a0bf9b224c 09534518 00000004 00000000
    [19:50:01] [debugESP+000003c0bf9b2208 0951fd70 0951fd70 09521b50
    [19:50:01] [debugESP+000003e0bf9b224c 09534518 09389bbc 00000008
    [19:50:01] [debugLoaded modules:
    [
    19:50:01] [debug00000000 00187f43 samp03svr
    [19:50:01] [debugb76df000 b76dfd72 
    [19:50:01] [debugb76bf000 b76c1a04 /lib/i386-linux-gnu/libdl.so.2
    [19:50:01] [debugb76a2000 b76bd6ef /lib/i386-linux-gnu/libpthread.so.0
    [19:50:01] [debugb752b000 b76abb4b /usr/lib/i386-linux-gnu/libstdc++.so.6
    [19:50:01] [debugb74d6000 b752a010 /lib/i386-linux-gnu/libm.so.6
    [19:50:01] [debugb74b9000 b74d51e4 /lib/i386-linux-gnu/libgcc_s.so.1
    [19:50:01] [debugb7303000 b74bfb07 /lib/i386-linux-gnu/libc.so.6
    [19:50:01] [debugb76e0000 b7703784 /lib/ld-linux.so.2
    [19:50:01] [debugb72bc000 b72feac4 plugins/crashdetect.so
    [19:50:01] [debugb7282000 b72932ec /lib/i386-linux-gnu/libnss_files.so.2 
    Пример передаваемой строки можно?

  13. #10
    Аватар для Mr_LemoneZ
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.12.2016
    Адрес
    Беларусь
    Сообщений
    41
    Репутация:
    1 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Пример передаваемой строки можно?
    Да тот же «Test».

    Если убрать атрибут static у функции _MDialog_ProcessTags и вызвать её напрямую, то проблем не возникает.
    Хотя нет, если массив, в который будет передаваться обработанный текст объявить не как new, а как static, сервер падает. Соответственно после того, как в функции _Dialog_Open массив info_result я объявил как new, то всё стало ОК. (Правда это ооочень затратно...)

    P. S. В терминале при падении сервера получаю вот это:
    samp03svr: amx/amxstring.c:296: compare: Assertion `c1!=0 && c2!=0' failed.

 

 
Страница 1 из 3 1 2 3 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •