Вопросы

breznov
Новичок

Всем доброго времени суток ! Я пишу мод с нуля, дело дошло до подключения cef интерфейсов, я от слова совсем не понимаю как в моде прописать подключения cef.
Пробовал конечно же подключать, создавал браузер через "cef_create_browser(playerid, 0x12345, "ссылка", false, false);", но ничего не получалось.
Я только начинаю изучать работу данного языка, извиняюсь за то что я тупоголовый. Хочу попросить помощи у специалистов, будьте добры объяснить написание данной системы с отображением cef пожалуйста =(
Если нужен будет мой код, я могу его предоставить. 

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


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

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

  • 1
27 минут назад, gracevandrej5 сказал:

Для подключения CEF (Chromium Embedded Framework) в моде нужно:

  1. Инициализация CEF:
    • Убедись, что плагин CEF (например, samp-cef) установлен на сервере и загружен в server.cfg (строка plugins sampcef).
    • В моде подключи библиотеку: #include <sampcef>.
  2. Создание браузера:
    • Используй cef_create_browser(playerid, browserId, url, hidden, focused) правильно:
    • 
      cef_create_browser(playerid, 0x12345"http://example.com"falsetrue);
      

       

    • playerid: ID игрока.
    • browserId: Уникальный ID браузера (например, 0x12345).
    • url: Ссылка на HTML-страницу (локальная или внешняя, например, "file:///ui/index.html" для локального файла).
    • hidden: false — показывать сразу, true — скрыть.
    • focused: true — фокус на интерфейсе, false — без фокуса.

3. Обработка событий:

Реализуй коллбэки для управления CEF:


public OnCefBrowserCreated(playerid, browserId, status) {
    if(status == 0) {
        printf("Браузер %d успешно создан для игрока %d", browserId, playerid);
    } else {
        printf("Ошибка создания браузера %d для игрока %d", browserId, playerid);
    }
    return 1;
}

Добавь обработку закрытия/взаимодействия:


public OnCefBrowserKey(playerid, browserId, key, status) {
    if(key == 27 && status == 0) { // Esc для закрытия
        cef_destroy_browser(playerid, browserId);
    }
    return 1;
}

4. Локальный HTML-файл:

  • Создай папку cef в корне сервера, помести туда index.html:

<!DOCTYPE html>



<html>
<head>
    <title>test RolePlay UI</title>
    <style>
        body { background: #1A2526color: whitefont-family: Arial; }
        h1 { color: #A100A1; }
    </style>
</head>
<body>
    <h1>test to test RolePlay!</h1>
    <button onclick="cef.emit('button:clicked')">Click Me</button>
</body>
</html>

Подключи его: cef_create_browser(playerid, 0x12345, "file:///cef/index.html", false, true);.

5. Взаимодействие с Pawn:

  •  

Для общения между CEF и Pawn используй события:
public OnCefEvent(playerid, browserId, eventName[], eventArgs[]) {
    if(!strcmp(eventName, "button:clicked")) {
        SendClientMessage(playerid, -1"Кнопка нажата!");
    }
    return 1;
}

6. Тестирование:

  • Запусти сервер с плагином sampcef.
  • Подключи игрока и проверь, отображается ли интерфейс.
  • Если не работает, проверь логи сервера (ошибки плагина) и убедись, что URL корректен.

 

 

 

 

 

 

Молодец, конечно, только chatGPT не во всех случаях выручает. Тут все есть. Включая сам CEF:

https://github.com/Pycckue-Bnepeg/samp-cef

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


Ссылка на сообщение
  • 0
gracevandrej5
Новичок

Для подключения CEF (Chromium Embedded Framework) в моде нужно:

  1. Инициализация CEF:
    • Убедись, что плагин CEF (например, samp-cef) установлен на сервере и загружен в server.cfg (строка plugins sampcef).
    • В моде подключи библиотеку: #include <sampcef>.
  2. Создание браузера:
    • Используй cef_create_browser(playerid, browserId, url, hidden, focused) правильно:
    • cef_create_browser(playerid, 0x12345"http://example.com"falsetrue);
      

       

    • playerid: ID игрока.
    • browserId: Уникальный ID браузера (например, 0x12345).
    • url: Ссылка на HTML-страницу (локальная или внешняя, например, "file:///ui/index.html" для локального файла).
    • hidden: false — показывать сразу, true — скрыть.
    • focused: true — фокус на интерфейсе, false — без фокуса.

3. Обработка событий:

Реализуй коллбэки для управления CEF:

public OnCefBrowserCreated(playerid, browserId, status) {
    if(status == 0) {
        printf("Браузер %d успешно создан для игрока %d", browserId, playerid);
    } else {
        printf("Ошибка создания браузера %d для игрока %d", browserId, playerid);
    }
    return 1;
}

Добавь обработку закрытия/взаимодействия:

public OnCefBrowserKey(playerid, browserId, key, status) {
    if(key == 27 && status == 0) { // Esc для закрытия
        cef_destroy_browser(playerid, browserId);
    }
    return 1;
}

4. Локальный HTML-файл:

  • Создай папку cef в корне сервера, помести туда index.html:
<!DOCTYPE html>



<html>
<head>
    <title>test RolePlay UI</title>
    <style>
        body { background: #1A2526color: whitefont-family: Arial; }
        h1 { color: #A100A1; }
    </style>
</head>
<body>
    <h1>test to test RolePlay!</h1>
    <button onclick="cef.emit('button:clicked')">Click Me</button>
</body>
</html>

Подключи его: cef_create_browser(playerid, 0x12345, "file:///cef/index.html", false, true);.

5. Взаимодействие с Pawn:

  •  
Для общения между CEF и Pawn используй события:
public OnCefEvent(playerid, browserId, eventName[], eventArgs[]) {
    if(!strcmp(eventName, "button:clicked")) {
        SendClientMessage(playerid, -1"Кнопка нажата!");
    }
    return 1;
}

6. Тестирование:

  • Запусти сервер с плагином sampcef.
  • Подключи игрока и проверь, отображается ли интерфейс.
  • Если не работает, проверь логи сервера (ошибки плагина) и убедись, что URL корректен.

 

 

 

 

 

Отредактировано пользователем gracevandrej5

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


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

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

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

    • Дебилойд
      От Дебилойд
      Здравствуйте!
      Мы ищем талантливого 3D-моделлера в команду нашего CRMP-проекта!
      Что нужно будет делать:
      Моделировать и адаптировать автомобили.
      Создавать и настраивать скины (модели персонажей).
      Большим плюсом будет:
      Умение создавать качественные и оптимизированные интерьеры.
      Если вы хотите стать частью нашей команды и развивать проект вместе с нами, пишите в ЛС. Ждем ваши портфолио!
    • LORDIKUS
      От LORDIKUS
      Уважаемые участники форума - всех приветствую, кто перешел в беседу моей темы обсуждения. В настоящее время у меня зарождается огромное желание и мысль создать собственный CR:MP проект, но столкнулся с единственной проблемой - с отсутствием команды людей, у которых будет искреннее желание ежедневно вкладывать свой труд на разработку проекта. Особого опыта в скриптинге, маппинге, дизайне или в моделировании у меня не имеется, поэтому такой критерий как опыт в определенной сфере для желающих вступить в команду я не рассматриваю. Так как проект не открыт и находится на начальной стадии создания, мое сотрудничество выстраивается на некоммерческой основе (без выплаты за проделанную работу и труд), однако я не собираюсь отрицать высокую ценность вложенного командой труд — труд, особенно на первой стадии разработки я рассматриваю превыше всего. После открытия проекта в зависимости от коммерции и чистой прибыли каждый участник будет получать настоящую выплату, однако это также может убить еще значительное время. Мне нужна команда, которая проявит искренний интерес в создании общего между командой CR:MP проекта, пожертвует свое время, а также вложит собственный труд благодаря заработанным навыкам. Если вас заинтересовала данная тема обсуждения, пожалуйста, свяжитесь со мной по любым возможным и удобным для вас контактам связи ниже. Спасибо всем, кто зашел в мою беседу!

      🔗 Спец. Связь:
      — DISCORD: https://discord.com/users/1452715348196589691 (перейти по ссылке и добавить в друзья) ИЛИ _shin833_ (ввести никнейм и отправить запрос дружбы)
      — VK: https://vk.com/shin833
      — TG: https://t.me/s_hin833
    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба