Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 4 из 4
  1. #1
    Аватар для Bib
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2017
    Адрес
    Челябинск
    Сообщений
    56
    Репутация:
    6 ±

    Про filterscripts

    Создание

    Написание фильтрскриптов практически ничем не отличается от написания модов. Стоит лишь заменить паблики OnGameModeInit, OnGameModeExit на OnFilterScriptInit и OnFilterScriptExit соответственно.


    Скомпилированные фильтрскрипты должны находится в папке filterscripts. А чтобы они выполнялись, в параметре filterscripts конфига сервера нужно указать их. Выполняться может не более 16 фильтрскриптов.

    Применение

    Фильтрскрипты используются для создания отдельных от мода систем. Они могут быть полностью независимыми от него(напр. маппинг) или частично зависимы(напр. работа).
    Если первый случай, думаю, понятен. То второй лучше разобрать, на примере работы. Если игрок завершает работу, то он получает свою зарплату. А так как информация об игроке находится в моде, придётся обращаться к нему. Делается это при помощи нативной функции CallRemoteFunction, которая вызывает паблик в любом загруженном скрипте:
    PHP код:
    // фильтрскрипт
    new pickup_zp;
    new 
    money_zp 10_000;
    public 
    OnFilterScriptInit()
    {
        
    pickup_zp CreatePickup(127420.00.09.0);
        return 
    1;
    }
    public 
    OnPlayerPickUpPickup(playeridpickupid)
    {
        if(
    pickupid == pickup_zp)
        {
            
    CallRemoteFunction("AddPlayerMoney""ii"playeridmoney_zp);
        }
        return 
    1;
    }

    // мод
    new player_money[MAX_PLAYERS];

    forward AddPlayerMoney(playeridmoney);
    public 
    AddPlayerMoney(playeridmoney)
    {
        
    playey_money[playerid]+=money;
        
    SetPlayerMoney(playeridplayer_money[playerid]);

    Порядок вызова
    • Фильтрскрипты вызываются в том порядке, который вы указывали в конфиге.
    • *Изначально колбеки могут вызываться из мода или фильтрскриптов.
    • *Можно прервать дальнейший вызов колбека в следующих фильтрскриптах возвратив 0 или 1.
      *(см. samp-wiki, т.к. у каждого колбека это будет по разному)


    Критика

    Не рекомендуется использовать фильтрскрипты, поскольку велика вероятность того, что колбек не сработает должным образом из-за неверного возвращаемого значения.
    Вместо них лучше писать инклуды и в них перехватывать вызов функций.

  2. #2
    Аватар для Alexey Melnik
    Новичок

    Статус
    Оффлайн
    Регистрация
    11.11.2017
    Сообщений
    9
    Репутация:
    0 ±
    Не упомянута одна их важная особенность — они, в отличие от инклюдов, могут подгружаться и выгружаться прямо во время работы сервера

  3. #3
    Аватар для Bib
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2017
    Адрес
    Челябинск
    Сообщений
    56
    Репутация:
    6 ±
    Да, я много чего не написал здесь. Мануал изначально должен был называться: "Все про filterscripts". Но когда я узнал о фреймворке SampSharp, то тут же забил на Pawn.
    Фильтрскрипты так-то очень нужны. Даже сейчас, когда пишу на C#, всё равно использую их для того чтобы пользоваться готовыми решениями написанными на Pawn
    Последний раз редактировалось Bib; 10.12.2017 в 11:08.

  4. #4
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    На порядке вызова и конкретно возвраты следовало сделать больший упор. И не в плане "критики", а объяснив какой логики нужно придерживаться при написании FS
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

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

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

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

Ваши права

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