Как сделать плагин для самп

Обновлено: 05.07.2024

Напишу все с 0 может новичкам помогу подробнее рассказав.

Когда может быть ошибка мода "Unknown"?
- Не указанные плагины, не вписанные на хостинге, в Server.CFG.
- Не прописанные данные в моде.
- Не загружена база данных сервера.
- Отсутствие плагинов в папке "Plugins"

Как прописать и указать плагины?
Существуют разные хостинги, в некоторых хостингах нужно указывать плагины в самом хостинге, а в некоторых в папке cfg, конечно когда нужно указывать плагины на хостинге это удобнее и лучше я так думаю. Прописывать плагины нужно повторно в строчку "Plugins".
Например:

Плагины все вписываются без запятых либо они не будут действовать и читаться модом.
Так же "streamer.so" является основным плагином без него мод не будет функционировать, его вписывать нужно всегда без исключения.
Ошибка unknown выдается в основном когда не указали плагины в кфг/хостинге.

Где найти строчку куда вписывать плагины?
На хостингах иногда не бывают строчки с плагинами, и их нужно указывать в кфг документе.
В некоторых хостингах часто бывают в панеле управление строчка "Plugins" и туда можно вписывать плагины. Где и как находиться управление хостингом вы узнаете уже на выбранном вами хостинге там все будет описано где что находиться.
Думаю я помог и объяснил новичкам.
Всем спасибо.

Laine_prikol

Итак, сегодня я буду рассказывать как я пишу мод на SAMP. Для начала разберёмся на каком языке пишут скрипты и моды для SAMP. Моды и скрипты в SAMP пишутся на языке PAWN. Pawn - это С-подобный скриптовый язык (как и lua) но, в отличии от lua, в Pawn скрипты именно компилируются,в байт код для запуска на абстрактной машине, а не интерпретируются как в Lua. Скажите - ну и что это даёт? А даёт это многое, например: компилятор pawn ещё до выполнение скрипта проверяет на наличие ошибок, и поэтому у вас никогда не будет внезапных ошибок в программе, также ещё скорость работы скрипта больше чем в том-же Lua, потому-что код скомпилирован в сразу понятный для машины код. Что такое pawn мы разобрались.

blogentry-0-0-77889400-1489396166_thumb.jpg

Давайте разберёмся с средой разработки, если в lua мы могли писать скрипты хоть в блокноте, то теперь нам нужна полноценная среда разработки.
1. Pawno - Очень простой редактор, в есть необходимый минимум чтобы писать скрипты на pawn.


Плюсы:
+ Малый размер (768 кб)
+ Идёт сразу с Samp server
+ Встроенный список функций из всех инклудов
+ Сразу есть все паблики и функции samp
Минусы:
- Подсветка синтаксиса сделана чисто для галочки (всего два цвета подсветки синий и чёрный )
- На windows начиная с vista надо запускать от имени админа
- На больших скриптах может вылетать

blogentry-0-0-87342400-1489396159_thumb.jpg

2. Notepad++ (с плагином nppexec) - Самый популярный редактор скриптов. Поддерживает плагины, и также множество языков программирования


Плюсы:
+ Расширяемость
+ Нормальная подсветка синтаксиса
+ Авто-табуляция кода
+ Удобная навигация по коду (можно сразу перейти к другой строке, и есть карта документа)
Минусы:
- Для поддержки pawn надо много чего настраивать.
- Нету Встроенного списока функций
Настройка плагина NppExec:
1. Выберите plugin manager

2. Откроется окно, ищём Nppexec, выбираем галочкой, жмём install, перезапускаем.

3. Должно появится в меню пункт, жмём

4. Откроется окно

вписываем туда код:

5. Нажимаем ok и компиляция начнётся

Но давайте перейдём к написанию программы "hello world!" Как я и сказал у меня samp вариант Pawn. Вот как выглядит hello world в pawn:

blogentry-18530-0-49339800-1489396885_thumb.jpg

Компилируем:

Как видим, всё прошло успешно и компиляция завершена.

11 комментариев

Рекомендуемые комментарии

Полезные ресурсы

Голосование

Информация

О нас

У нас играют и пишут программы как новички так и опытные программисты. А самые продвинутые участники нашего коллектива даже разрабатывают собственные авторские моды и аддоны, ресурспаки, репозитории, мощнейшие библиотеки и операционные системы.

Здравствуйте все,я понимаю что этот форум не пор SA-MP но тут многие разбираются в программировании и умеют работать с памятью приложений,вот с памятью приложений и связаны мои вопросы.

Я пытаюсь написать плагин для сервера который создавал бы ботов.
Идея в том что обратившись из плагина(это просто dll которую подключает сервер при включении) к адресу памяти который отвечает за коннект игрока к серверу создать иммитацию захода игрока на сервер(это реально уже делали. ),после чего заспавнить бота(с этим уже проблемы. ) а дальше уже можно будет полностью управлять ботом с помощью скриптовых функций. теперь мои вопросы:

1.Как узнать адрес памяти отвечающий за определённую функцию?(сервер просто ехе файл samp-server.exe)попрошу получше обьяснить какой программой и где её взять,я с памятью приложений не работал вообще и вот сижу долбаюсь

2.Узнав адрес памяти как его использовать из dll?(с примером пожалуйста,иначе не разберусь наверняка)

Пожалуйста помогите. Так же прицеплю подобный плагин ботов который написан для 0.2.2 версии самп(я пишу для версии 0.2Х,в ней кажется сменили адреса памяти т.к. этот плагин с новой версией не работает)
этот плагин имеет закрытый исходный код,а возможности узнать что либо о внутренностях этого плагина без исходного кода я не вижу. вроде dll не декомпилируется никак. Надеюсь получу помощь

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

  • Файл cef.asi должен находится в корневой папке с игрой (собирается как loader.dll ).
  • Папка cef со всем содержимым так же там же.
  • Так же создается папка CEF по пути Мои документы/GTA San Andreas User Files/CEF/ , где хранится кэш, куки файлы и прочие вещи, необходимые для корректной работы Chromium.
  • gta_sa.exe
  • cef.asi
  • cef/
    • client.dll
    • libcef.dll
    • renderer.exe
    • etc …

    Советы по использованию и некоторые ограничения

    • В идеале иметь один браузер со всеми интерфейсами. Не создавать новые для разных действий, а использовать встроенную систему событий.
    • Если имеются клиентские плагины, которые используют относительные пути, то, скорее всего, они поломаются и будут неверно работать. К сожалению, на данный момент во время инициализации меняется текущая директория в другом потоке. Как пример: CLEO библиотека может создать свой лог cleo.log , а так же папки cleo_text и cleo_saves в папке cef . Для корректной работы следует лучше узнавать путь до текущего исполняемого файла ( gta_sa.exe ).

    cef_create_browser(player_id, browser_id, const url[], hidden, focused)

    Создает браузер для указанного игрока.

    cef_hide_browser(player_id, browser_id, hide)

    cef_emit_event(player_id, const event_name[], args…)

    Вызвать событие у клиента. Поддерживаемые типы аргументов: string , integer , float .

    cef_subscribe(const event_name[], const callback[])

    Подписаться на событие от клиента. Сигнатура функции колбека: Callback(player_id, const arguments[])

    Проверка на наличие плагина у клиента.

    cef_create_ext_browser(player_id, browser_id, const texture[], const url[], scale)

    Создает браузер как и в первом случае, но с пометкой, что он будет отображаться на объектах на определенной текстуре. Параметр scale указывает во сколько раз нужно увеличить стандартную текстуру. Например, если стандартная текстура имеет размер 250x30 будет иметь размер 1250x150 при переданном параметре в 5 единиц.

    cef_append_to_object(player_id, browser_id, object_id)

    Заменяет текстуру переданного объекта на изображение браузера у клиента. Браузер должен быть создан с помощью cef_create_ext_browser , а так же должна присутствовать текстура, указанная при создании, для корректного отображения.

    cef_remove_from_object(player_id, browser_id, object_id)

    Возвращает оригинальную текстуру объекта.

    cef_toggle_dev_tools(player_id, browser_id, enabled)

    Включает / выключает инструменты разработчика.

    native cef_set_audio_settings(player_id, browser_id, Float:max_distance, Float:reference_distance)

    Выставляет максимальную слышемую дистанцию для браузера на объекте. reference_distance - расстояние, до которого будет максимальная громкость, а после пойдет на понижение от max_distance до 0.

    cef_focus_browser(player_id, browser_id, focused)

    Функция делает браузер сфокусированным. Выводится на первый план, получает все события с клавиатуры и мыши. То же самое, что и передача аргумента focused = true при создании браузера.

    cef_always_listen_keys(player_id, browser_id, listen)

    Позволяет браузеру получать ввод с клавиатуры в фоне, даже если браузер не имеет фокуса или скрыт. Это позволяет использовать в JS коде функции для подписки на события от клавиатуры все время. Например, можно сделать открытие / закрытие интерфейса по нажатию клавиши ( window.addEventListener("keyup") ).

    cef_load_url(player_id, browser_id, const url[])

    Загружает указанный URL у заданного браузера. Быстрее, чем пересоздание браузера.

    Так же есть два события встроенных в плагин:

    forward OnCefInitialize(player_id, success) Вызывается после подключения клиента к CEF серверу, либо по истечению тайм-аута. Грубо говоря, замена ручной проверки cef_player_has_plugin .

    Так же у браузеров есть свое API для управления ими. cef.set_focus(focused)

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

    cef.on(event_name, callback) Подписывается на событие от браузера / других плагинов.

    cef.off(event_name, callback) СЛОМАНА НА ДАННЫЙ МОМЕНТ Отписывается от события. Чтобы использовать данную функцию, необходимо передавать переменную, которая содержит функцию на колбек события, указанный при подписке на событие.

    cef.hide(hide) Скрывает браузер и отключает звук от него.

    cef.emit(event_name, args…) Вызвать событие на сервере / в сторонних плагинах с указанными аргументами. Поддерживает все типы, кроме объектов с полями и функций. Замечание: в плагинах возможно использовать все типы по человечески, но на сервере все аргументы преобразуются в единую строку, разделенную пробелами.

    не работает, сорри

    рабочий пример в cef-interface , а так же API в cef-api и client/external.rs

    Инструкция к применению

    Браузер можно создать из двух мест: из игрового мода и плагинов.

    Браузер имеет два дополнительных состояния: hidden и focused . Первое состояние отвечает за отображение браузера на экране игрока. Второе состояние сложнее: если браузер сфокусирован ( focused = true ), то у игрока замораживается камера, появляется курсор и весь его ввод (от клавиатуры и мыши) идет прямиком в браузер, минуя GTA и SA:MP (за исключением некоторых функций по типу скриншота на F8). Игрок самостоятельно никогда не сможет выйти из этого состояния, вы должны поспособствовать этому в коде интерфейса браузера. Например, можно слушать нажатие клавиши ESC и при ее нажатии вызывать cef.set_focus(false) .

    Эти два состояния полностью независимы друг от друга, то есть браузер может быть hidden = false , но в тот же момент focused = false , в таком случае браузер будет показан, но доступа к вводу у него не будет, а игрок может спокойно совершать действия в игре.

    Приветствую! В этой статье Вы узнаете как устанавливать скрипты вида CLEO, ASI и LUA в GTA San Andreas ( SAMP ).


    Для начала разберёмся, что представляет из себя CLEO-скрипт. Как правило - это .cs файл, который что-то добавляет в игру и работает с помощью CLEO-библиотеки. Иногда к CLEO-скриптам добавляют модели .txd и .dff, иногда вспомогательные .ASI плагины, иногда всё вместе.

    Чтобы установить CLEO-скрипт, нам нужно скачать библиотеку CLEO. После скачивания установите библиотеку CLEO ( как обычную программу ).


    Далее скачайте любой CLEO-скрипт из специального раздела на нашем, или любых других сайтах. К примеру, я нашёл на нашем сайте Fast Map, его и скачаем.




    Для установки ASI-плагинов необходимо иметь CLEO-библиотеку и желательно иметь AsiLoader ( иногда тоже необходимо ).


    ASI-плагин устанавливается путём перемещения .asi-файла из архива в корневую папку игры, либо ( если есть ASI Loader ) в папку "scripts" - разницы нет.


    Скрипт установлен, и я только что это проверил. Бег действительно становится очень быстрым, даже не тыкая постоянно на спринт.


    Начнём с установки SAMPFUNCS и Moonloader, скачиваем оба этих модуля и устанавливаем их, путём перемещения соответствующих .ASI файлов в корень игры.


    Всё. Теперь мы можем устанавливать LUA скрипты. Как обычно найдём какой-нибудь скрипт в разделе модов Samp-Stock.


    Вот например скрипт для очистки чата, думаю будет очень удобно наглядно продемонстрировать его работу.

    Перемещаем файл(ы) формата ".lua" или ".luac" в папку Moonloader, которая появилась после его установки и запускаем игру.

    Читайте также: