Skip to content
This repository has been archived by the owner on Nov 13, 2023. It is now read-only.
/ WCSSkills Public archive

Warcraft CS:GO server based on combinations of skills

Notifications You must be signed in to change notification settings

ArtichaTM/WCSSkills

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

Вступление

Мод Warcraft для CS:GO, который даёт возможность игрокам самим выбирать свои способности

Структура папок

  • WCSSkills - Главная папка
    • ../admin/ - Админ
    • ../commands/ - функции команд в чате/консоли
    • ../db/ - Базы данных / JSON
    • ../events/ - Папка, содержащий код для системы событий
    • ../JSONs/ - Здесь лежат статичные JSON
    • ../menus/ - Ради меню
    • ../other_functions/ - Разные важные функции / файлы
    • ../python/ - Чистый код на python, не связанный с Source.Python
    • ../skills/ - Здесь лежат классы всех способностей
    • ../wcs/ - Папка с главным кодом

В папках (где нужно) добавлены файлы functions, которые содержать важные функции для той или иной отрасли мода

Помощь

Здесь описаны способы помочь мне писать WCS

Добавление новых способностей

Есть несколько способов предложить новую способность

  • Forking - Написать код самому. Гайд ниже
    1. Создать ответвление
    2. Написать новую способность в WCSSkills/skills/skills.py
    3. Запросить объединение
  • Текстовый - Просто написать словами, как способность работает
    1. Создать новую проблему
    2. Написать название, описание, описание в игре
    3. Примерно описать, как должен работать
  • Со ссылками на литературу - текстовый вариант + сторонняя литература
    • Ссылка на игру, в которой используется способность + название способности
    • Видео с использованием способности
    • Текстовый вариант с приложением модельки, спрайта, другого

Как писать код способностей

База способности. skills/skills.py:

class skill_unique(BaseSkill):
    __slots__ = (...,)
  
    def __init__(self, userid: int, lvl: int, settings: dict, ) -> None:
        super().__init__(userid, lvl, settings)
    
    @BaseSkill.efficiency.setter
    def efficiency(self, value: float) -> None:
        ...

    def close(self) -> None:
        super().close()

JSONs/skills_info.json:

"skill_unique": {
        "name": "Скилл",
        "description": [
            "Я описание. Чтобы перенести текст на другую",
            "строку используйте следующий string в списке"
        ],
        "max_lvl": 1,
        "min_player_lvl": 0,
        "settings_type": {
            "setting": "bool"
        },
        "settings_name": {
            "setting": "Описание"
        },
        "settings_cost": {
            "setting": 20
        }
    }

Название способности произвольное, но оно должно соответствовать названию в skills_json. Наследование от BaseSkill обязательное. Можно заменить наследованием от ActiveSkill или PeriodicSkill. В случае добавления новых переменных, создавайте __slots__ и заносите их туда. Константы owner / lvl / settings уже созданы, и писать их заново не нужно.

После строки super().__init__(lvl, userid, settings) следует ваш код. Также, после строки инициализации экземпляр имеет в своём пространстве следующие константы:

  • self.owner — WCS_Player обладателя способности. WCS_Player наследуется от Player
  • self.lvl — Уровень игрока владением способности. Обратите внимание, что при выборе способности первым уровнем является 0, а не 1. И не может быть отрицательным
  • self.settings — настройки, которые можно настроить в Мои навыки -> {название навыка} -> параметры. В коде они принимают форму словаря в виде {"Название": "значение (может быть не string)"}

Описание классов, от которых следует наследовать:

  • BaseSkill — Добавляет owner/lvl/settings
  • ActiveSkill — Добавляет bind_pressed/bind_released, а также добавляет навык в owner.Buttons.
  • PeriodicSkill — Добавляет /infect_dict/repeat_delay/token/cd_passed. Поражённые противники получают token, система снимает их каждую repeat_delay и запускает функцию infect_activate.
    • infect_dict — Содержит записи о поражённых противниках в виде {"ИД игрока": "количество токенов"}
  • repeat_delay — "тик" урона в секундах (через какой промежуток срабатывает тик)
  • token — количество токенов, (сколько раз сработает тик), выдаваемые

В планах добавить

  • Общее
    • Категории способностей
    • Усиления, которые располагаются в случайных частях карты
    • Секреты на картах, которые дают доступ к уникальным способностям
    • [Admin] Возможность посмотреть предыдущие наказания, снять их
    • Возможность менять эффективность навыков. Property, при изменении которой способность усиливается/ослабляется
    • Отображение статусных эффектов (яд, усиление) в виде маленьких иконок в HUD
  • Способности
    • Поджёг
    • Заморозка
    • Массовый телепорт
    • Смена местами
    • Ауры
    • Строительство
    • Выдача оружия
    • Молния с небес
    • Тотемы (пока просто нет модельки)
    • Разворот
    • Обратный паралич
    • Зеркальный урон
    • Светящиеся гранаты
    • Уникальная техника установка предмета (сначала выбирается радиус, а потом место блока)
    • Висячие в воздухе мины (основано на технике выше)
    • Смена режима (вкл. режим призрака) при взятии ножа
    • Мини радар на земле, отображающий противников и союзников
    • Блок какой-то моделькой при наведении на пользователя
    • Сохранение полученного урона, и при нанесении урона по противнику перевод сохранённой энергии в дополнительный урон
    • Чёрная кровь: вражеские навыки вампирства наносят урон сами себе

About

Warcraft CS:GO server based on combinations of skills

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages