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

    Статус
    Оффлайн
    Регистрация
    28.11.2020
    Адрес
    Russian
    Сообщений
    4
    Репутация:
    0 ±

    Offensive-Core: мод с нуля


    Offensive-Core - это большой проект сочетающий в себе многофункциональный игровой режим и сопутствующие к нему файлы написанные на языке Pawn для серверов в SA-MP и open.mp.
    На основе реализованных методов можно создавать абсолютно любимые режимы и подрежимы для них.
    Код можно с лёгкостью модернизировать и расширять для своих нужд. В проекте представлены режимы: TDM, DM и Room.

    Проект не является какой-либо модификацией других игровых режимов. Написан и продуман полностью с нуля.

    Основные системы
    • Администрирование
    • Транспорт
    • Инвентарь
    • Торговая площадка
    • Дроп оружия и токенов
    • Квесты
    • Помощник Дина
    • Режимы: TDM, DM, Room

    Логика работы всех режимов
    Для начала нужно знать, что каждый режим находится в своей папке и имеет свои системы в файлах. В корневой папке каждого режима имеется папка "locations",
    в ней находится файл с различными системами для манипуляций с локациями и сами локации находятся в своих папках.

    При запуске сервера происходит инициализация различных систем и создание/загрузка локаций для режимов (TDM, DM), когда происходит смена локации в режиме,
    то все созданнные компоненты (пикапы, объекты и т.д.) на локации удаляются и создаются новые для новой локации.

    Такой метод создания и удаления локаций имеет много плюсов. Режимы можно делить на несколько сессий, поэтому нужно думать про лимиты SA-MP,
    а конкретнее про лимиты на создание Транспорта и GangZone, остальные компоненты по типу пикапов создаются динамическими.

    Если обобщить, то каждый режим имеет свои папки и подпапки, также каждый режим можно делить на сессии, а локации в них создаются и удаляются.

    Все режимы объединяет файл "system.pwn" в папке "game-modes". Это можно увидеть в самом коде.

    Архитектура
    Архитектура проекта была сведена к максимальному упрощению и удобству в использовании.
    Как говорилось выше, каждый режим имеет свою папку, как и остальные системы.
    Самые базовые функции и системы находятся в файле "offensive-core.pwn".
    Остальные системы находятся в папке "sources". Некоторые системы находятся прямо в ней, это "vehicle", "admin" и т.д. Для игрока была отведена отдельная подпапка "player", для режимов "game-modes".

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

    Файлы
    header.inc - хранит информацию, которая в теории или уже на практике может использоваться в других системах (vars, define's, functions).
    system.pwn - это уже сами системы использующиеся в любых целях.

    Примечание
    Изначально весь код был в одном файле и поэтому в коде можно встретить нелогичные моменты, но они ничуть не мешают работать.

    Мощный режим TDM
    Изюминкой всего перечисленного является режим TDM. Для каждой локации в нём можно создавать различные индивидуальные моменты и ситуации, например, на локации "Пустыня" можно сбросить ядерную бомбу на противоположную команду.

    Чтобы это сделать, нужно захватить "Точку связи", дальше взорвать дверь, которая рядом и запустить спутник.
    Далее получить коды доступа командой /accode и попасть на подлодку и там уже запустить ядерную ракету, которая полетит на базу противника.

    При существующих системах конкретно для TDM режима, это уже легко реализуемо прямо в файле для локации "Пустыня".
    При этом всём, легко манипулировать различными компонентами через код, а созданные эти самые компоненты будут автоматически удалены при смене локации и снова возобновлены!
    Это работает в различных сессиях и они не связаны друг с другом.

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

    Две версии работают, но рекомендуется выбрать RU версию, в ней изменена логика создания CreatePlayer3DTextLabel на диманическую CreateDynamic3DTextLabel.

    В RU-EN версии для каждого игрока приходилось отдельно создавать 3DText функцией CreatePlayer3DTextLabel и это оказалось очень проблематично и неудобно.

    Wiki
    Больше информации можно узнать в разделе Wiki

    Зависимости
    Плагины:
    • sscanf v2.13.8
    • streamer v2.9.6
    • mysql vR1-4
    • Pawn.CMD v3.4.0
    • Pawn.RakNet v1.6.0
    • Pawn.Regex v1.2.3
    • rustext v2.0.8
    • FCNPC v2.0.10 (для open.mp не нужен)
    • CrashDetect v4.22

    Файлы:
    • weapon-config
    • nex-ac v1.9.64
    • foreach v2.2.6
    • mdialog v1.4.3
    • cinterface v1.0.0
    • StreamerFunctions
    • progress2


    Скачать
    Github
    Гугл Диск
    Яндекс Диск

    Благодарности

    NexiusTailer - огромная помощь по различным темам
    Neutralneu (Neuty) - реализация системы для ботов
    Roberto_Coluccio, Artem_Gorden, Danil_Marciface, VanilaSW, Dima_Rendi, Fix_Unvardo, Itsuki_Yorimoto,
    Flatt_Delx, Fredorico_Viton, Demetrio_Santini, Maks_Anurov, Kocmoc, Vladislav_Barsov,
    Doni_Visage, DELIVER, Richi_Klay, Sebastian_Undeground
    - помощь в тестировании
    Последний раз редактировалось NikitaFoxze; 08.08.2024 в 20:44.

  2. #2
    Аватар для Web
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2014
    Сообщений
    67
    Репутация:
    8 ±
    Хорошая работа. Однако, моменты которые бросились в глаза:

    1. AntiDeAMX()
    2. {
    3. new a[][] = { "Unarmed (Fist)", "Brass K" };
    4. #pragma unused a
    5. }


    Не нужно на таком объеме кодовой базы. AntiDeAMX и так не возьмет.

    1. #pragma warning disable 239
    2. #pragma warning disable 214


    Не такая уж и проблема добавить константы. Для самповских инклудов которые идут из коробки, есть следующий репозиторий где они уже добавлены:
    https://github.com/pawn-lang/samp-stdlib

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

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    548
    Репутация:
    158 ±
    Цитата Сообщение от Web Посмотреть сообщение
    Не такая уж и проблема добавить константы. Для самповских инклудов которые идут из коробки, есть следующий репозиторий где они уже добавлены:
    https://github.com/pawn-lang/samp-stdlib
    Да, но проблемы начинаются там, где какие-то стандартные функции хукаются (то есть в сторонних библиотеках, написанных под стандартные самп инклуды).
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  4. #4
    Аватар для Web
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2014
    Сообщений
    67
    Репутация:
    8 ±
    PHP код:
    stock GetPlayerFPS(playerid)
    {
        new
            
    drunk2 GetPlayerDrunkLevel(playerid);

        if(
    drunk2 100)
            
    SetPlayerDrunkLevel(playerid2000);
        else {
            if(
    PlayerLastDrunkLevel[playerid] != drunk2) {
                new
                    
    fps PlayerLastDrunkLevel[playerid] - drunk2;

                
    PlayerLastDrunkLevel[playerid] = drunk2;

                if((
    fps 0) && (fps 256))
                    return 
    fps 1;
            }
        }
        return 
    0;



    Не показывает реальный FPS. На основе опьянения нельзя измерить реальный FPS.
    Последний раз редактировалось Web; 22.08.2024 в 23:05.

 

 

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

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

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

Ваши права

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