Иконка ресурса

Ядро плагина Ice RPG: Рассвет нового мира / Rise of a new world (CORE) NW Pre-Alpha 0.0.1

Поддерживаемые игры
  1. CS: Source (OrangeBox)
  2. CS: Source (v34)
  3. CS: GO
Предупреждение! Плагин писался мной около года, могут быть недоработки, о которых я со временем забыл. Плагин не тестировался с реальными игроками и находится на стадии пре-релизной альфы. Писал его для себя, делал фичи тоже для себя, но от идеи открытия проекта постепенно отказался, а труды остались.

Перед установкой плагина рекомендую ознакомиться с [SourceMod] Установка и настройка Ice RPG
Предзаполненные файлы перевода и конфиги берите оттуда же.


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

Ice RPG - глобальный мод, добавляющий на сервер множество систем:
Гибко настраиваемая система экипировки: создавайте свои наборы брони, делите их на различные группы, добавляйте редкость, шансы дропа, характеристики!
Экипировка может иметь несколько видов характеристик:
1.
Врожденные (стандартные для предмета)
2. Дополнительные (рандомно (в зависимости от настроек) появившиеся при первом получении предмета)
3. Улучшения (игроки могут улучшать экипировку различными предметами улучшений)
Выдача экипировки ядром происходит при убийстве игроков, однако апи предоставляет возможность выдавать экипировку при абсолютно любых условиях, как , например, в модуле кейсов.

Существуют две системы улучшения экипировки:
1.
Со 100%-м шансом успеха
2. С шансами неудачи, причем эти шансы зависят не только от редкости предмета, но и от расходников, используемых игроком
Не рекомендуется устанавливать экипировке более 10 врожденных + дополнительных характеристик и более 10 доступных для улучшения игроком в одну вещь, поскольку лимит строки с улучшением - 128 символов!

Пример создания предмета экипировки в конфиге:
"91"            //ид предмета
{
    "category"                    "1"                        //категория (тип)
     
    "level"                        "1"                    //требуемый уровень
     
    "item_name"                    "lite_newbie_head"    //название предмета (фраза в файле перевода)
    "rarity_class"                "basic"                //класс редкости предмета
     
    "description"                "91_descr"    //краткое описание (фраза в файле перевода)
    "detal_description"            ""    //В настоящее время не рекомендуется использовать
     
    "avaliable_upgrades"        "dmg,def,hp,agi"    //улучшения, совместимые с данным предметом
     
    "stats"                //основные свойства предмета
    {
        "dmg"        "1.5"    // +1.5% урона
        "def"        "0.7"    // +0.7% зашиты
    }
     
    "drop"
    {
        "drop_chance"                "5"                        //шанс дропа при убийстве противника
        "max_lvl_attacker"            "5"                        //уровень, до которого игроку может выпасть предмет при убийстве
        "min_lvl_target"            "1"                        //мин. уровень жертвы, за убийство которой может выпасть предмет
        //в данном примере шанс дропа предмета со свойствами при убийстве не 10%, а 10% от 5%, то есть 10% из общего числа выпавших предметов данного вида
        "ability_chance"            "10"                    //шанс того, что дропнувшийся предмет будет с доп. св-вами
        //работает по схеме: прокает шанс, получается одно св-во, для второго свойства должен по новой прокнуть этот шанс
        "max_abilities"                "2"                        //максимум возможных доп. свойств
         
        //дополнительное свойство предмета (пример записи: vamp:1-5,crdmg:2-4 - вампиризм от 1 до 5, крит урон от 2 до 4)
        "abilities"                    "vamp:1-2,crdmg:1-2"    //рандом из доступных в данной строке вариантов (можно float, 1 цифра после запятой)
        "min_upgrades"                "0"                        //минимальное кол-во слотов для улучшений
        "max_upgrades"                "4"                        //максимальное кол-во слотов для улучшений
        "time"                        "0"                        //на какое время предмет (0 - навсегда)
    }
     
}
Расходные предметы (далее - ресурсы) могут быть разделены Вами по группам.
Основное предназначение ресурсов:
1.
Улучшения для экипировки (при улучшение этим предметом добавляет в экипировку определенную характеристику)
2. Вспомогательные предметы при улучшении - увеличивают шансы на успех
3. Ресурсы, которые можно использовать с целью чего угодно - ограничивается только фантазией, под всё можно сделать модуль. Самый явный пример используемого ресурса - модуль кейсов.

Ресурсы могут иметь кулдаун (задержку повторного использования), который сохраняется при выходе игрока с сервера. Абузить не получится!
В дальнейшем появятся модули, полноценно раскрывающую данную фишку, такие, как зелья и лечилки.
Кроме того, система кулдаунов позволяет объединять предметы в группы! Например, используя "малое зелье лечения" по Вашему желанию в кулдаун игрока уйдут все остальные предметы, добавленные в нашу условную группу "лечилки".

Количество ресурсов при использовании игроком может уменьшаться, а может и нет - как захотите!

Как и экипировка, ресурсы могут быть получены абсолютно разными способами, но ядро выдает их только за убийства.
Плагин имеет всё необходимое АПИ для легкой и эффективной разработки модулей характеристик.
Система характеристик поддерживает максимальные лимиты по характеристикам, а также баффы (увеличение определенной характеристики игрока на определенное время при определенных условиях). Баффы реализованы в ядре, но активировать можно только при помощи модулей.

Баффы могут работать двумя способами:
1. Сложение
(Пример: у игрока 30 защиты, при сложении он получит 3 фиксированных единицы прибавки)
2. Умножение (Игрок из примера выше может получить +20% к защите)

Система уровней также может работать в двух режимах:
1. Режим сложения (требуемое количество опыта для повышения каждого последующего уровня увеличивается на определенное число)
Такой режим используется во всех известных мне плагинах, от thc rpg до sm:rpg.
2. Режим умножения (требуемое количество опыта для следующего уровня умножается на количество опыта, требуемого для предыдущего)
Такой режим, как по мне, наиболее сбалансирован и интересен, как администратору, так и игроку. Но решать, опять же, только Вам.

Выдача опыта на момент публикации ресурса выглядит не столь адаптивно, поскольку писалась на коленке перед самой публикацией.
Опыт может выдаваться:
1.
За убийства (может учитываться уровень жертвы)
2. За победы в раунде
3. За конец раунда
Можно добавить выдачу опыта за любые события модулями - в АПИ всё для этого предусмотрено.

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

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

C-подобный:
"settings"
{
    "server_id"        "test"        //ИД сервера (допустимо какое-либо слово на латинице)
    "max_lvl"        "35"    //максимальный уровень игрока
    "default_lvl"    "1"        //стартовый уровень
    "default_money"    "0"        //стартовое кол-во рпг валюты
    "equip_limit"    "50"    //сколько предметов экипировки может носить в инвентаре игрок
    "default_class"    "0"        //класс по умолчанию
    "autosave_time"    "600"    //интервал автосохранения
    "menu_commands"    "rpg,icerpg,ice,wcs,rp"        //команды открытия меню
    "float_abilities"    "1"        //дополнительные свойства предметов могут иметь дробные значения
 
    "allow_disable_stats"    "1"        //разрешить игрокам отключать характеристики
 
    "connect_cooldown"        "120"    //на сколько секунд при входе игрока запретить ему использовать ресурсы (-1 - запретить)
 
    "drop_equip_count"        "2"        //сколько может упасть предметов экипировки при максимальном везении
    "drop_equip_chance"    "20"    //базовые шансы выпадения предметов экипировки при убийстве
    //(далее пойдут условия по уровням, шансам предметов по отдельности и тд, так что реальный шанс будет ниже)
 
    "drop_resources_count"        "5"        //сколько может упасть ресурсов при максимальном везении
    "drop_resources_chance"    "40"    //базовые шансы выпадения ресурсов (улучшения, для крафта и тд) при убийстве
    "levels_drop_mode"            "0"        //1 - учитывать уровни при выпадении экипировки, 0 - нет
    "fake_client_drop"            "1"        //выпадает ли дроп при убийстве бота
 
    //*****Experience, levelling*******
    "exp_multiple_mode"            "1"        //1 - опыт для последующего уровня умножается на опыт для предыдущего, 0 - прибавляется к опыту для предыдущего
    "exp_start_count"            "1000"    //стартовое необходимое кол-во опыта (lv 1 -> 2)
    "exp_multiplier"            "1.18"    //множитель требуемого уровня за каждый уровень    ("exp_multiple_mode" "1")
    "exp_addendum"                "1000"    //на какое кол-во требуемый опыт увеличивается с каждым уровнем ("exp_multiple_mode" "0")
 
    "exp_kill_count"            "20"    //Количество получаемого опыта за убийство
    "exp_level_multiplier"        "1"        //Только целые числа. Сколько опыта давать убийце за каждый уровень убитого (при убийстве 25 уровня игрок получит 20 + 1*25 опыта)
    "exp_end_round"                "10"    //Сколько опыта давать всем в конце раунда
    "exp_win_round"                "25"    //Сколько опыта давать дополнительно за победу в раунде
    "fake_clients_exp"            "1"        //Давать ли опыт за убийство бота
    "clear_exp_kill"            "1"        //Если опыт игрока сильно выше требуемого для уровня, при получении уровня установить опыт на 0 (рекомендуется)? При значении 0 игрок может поднимать по несколько уровней сразу
 
    //*********************************
 
    "upgrades_category"            "upgrades"    //название категории, в которой содержатся ресурсы улучшения экипировки (должно совпадать с ice_rpg_resources.ini)
    "jewels_category"            "jewels"    //название категории, в которой содержатся драгоценные камни. Если отсутствует строка или значение, режим шансов и драгоценностей при улучшении будет отключен.
 
    "item_categories"        //можно менять местами, добавлять, удалять, не забывая про файл перевода
    {
        //ид категории            название категории
        "1"        "head"
        "2"        "upper"
        "3"        "lower"
        "4"        "hands"
        "5"        "boots"
        "6"        "amulet"
        "7"        "ring"
        "8"        "sword"
        "9"        "wings"
    }
 
    "stats_use_descriptions"        //имеет ли стат описание? (если 1, необходимо добавить его в stats_descriptions.phrases)
    {
        "def"        "1"
        "dmg"        "1"
        "hp"        "1"
        "vamp"        "1"
        "crdmg"        "1"
    }
 
    "stats_translate_mode"        //отображается ли значение, например "защита 2.5" (указать 1), или будет просто "защита" (указать 0)? (необходимо корректно настроить stats.phrases)
    {
        "def"        "1"
        "dmg"        "1"
        "hp"        "1"
        "vamp"        "1"
        "crdmg"        "1"
    }
 
    "classes"
    {
        "0" "range"
        "1"    "meelee"
    }
 
    "stats_limit"    //макс. значения статов
    {
        "0"        //для класса 0
        {
            "def"    "70"
            "hp"    "45"
        }
        "1"
        {
            "def"    "120"
            "hp"    "70"
        }
    }
 
    //сразу добавить скилл, повышающий шансы на заточку на уровне ядра
    "upgrade_chances"        //шансы на улучшение экипировки (если нет подходящего класса редкости или уровня улучшения, будет 100%)
    {
        "basic"            //класс
        {
            "1"        "100"        //шанс вставки 1-го улучшения 100%
            "2"        "90"
            "3"        "70"
            "4"        "50"
            "5"        "30"
            "6"        "15"
            "7"        "5"
        }
        "strong"
        {
            "1"        "80"
            "2"        "60"
            "3"        "40"
            "4"        "20"
            "5"        "10"
            "6"        "-10"
            "7"        "-25"
        }
        "powerful"
        {
            "1"        "70"
            "2"        "40"
            "3"        "15"
            "4"        "-10"
            "5"        "-20"
            "6"        "-30"
            "7"        "-40"
        }
        "relict"
        {
            "1"        "25"
            "2"        "10"
            "3"        "-10"
            "4"        "-20"
            "5"        "-40"
            "6"        "-60"
            "7"        "-70"
        }
    }
}

Видео с одного из этапов разработки, рекомендую ознакомиться, поскольку я что-то мог забыть:

- Некорректно отображается время истечения предмета в меню, если предмет временный

Внимание! При настройке характеристик, экипировки, ресурсов и всего прочего добавляйте всё в файлы перевода, как в конфигах - примерах!
Плагин очень плотно работает с мультиязычностью, каждый расходник, каждый стат имеют свои фразы!
Требования
Sourcemod 1.10 (теоретически)
Sourcemod 1.11 (рекомендуется)
Установка
Добавить в databases секцию ice_rpg.
MySQL теоретически поддерживается, но не тестировался, совсем не тестировался.
В случае проблем с запросами поможет установка sqlite
Автор
Ice_Sochi
Скачивания
72
Просмотры
1,094
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя Ice_Sochi

Сверху Снизу