Мод Warcraft для CS:GO, который даёт возможность игрокам самим выбирать свои способности
- WCSSkills - Главная папка
- ../admin/ - Админ
- ../commands/ - функции команд в чате/консоли
- ../db/ - Базы данных / JSON
- ../events/ - Папка, содержащий код для системы событий
- ../JSONs/ - Здесь лежат статичные JSON
- ../menus/ - Ради меню
- ../other_functions/ - Разные важные функции / файлы
- ../python/ - Чистый код на python, не связанный с Source.Python
- ../skills/ - Здесь лежат классы всех способностей
- ../wcs/ - Папка с главным кодом
В папках (где нужно) добавлены файлы functions, которые содержать важные функции для той или иной отрасли мода
Здесь описаны способы помочь мне писать WCS
Есть несколько способов предложить новую способность
- Forking - Написать код самому. Гайд ниже
- Создать ответвление
- Написать новую способность в WCSSkills/skills/skills.py
- Запросить объединение
- Текстовый - Просто написать словами, как способность работает
- Создать новую проблему
- Написать название, описание, описание в игре
- Примерно описать, как должен работать
- Со ссылками на литературу - текстовый вариант + сторонняя литература
- Ссылка на игру, в которой используется способность + название способности
- Видео с использованием способности
- Текстовый вариант с приложением модельки, спрайта, другого
База способности. 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 — Содержит записи о поражённых противниках в виде
{"ИД игрока": "количество токенов"}
- infect_dict — Содержит записи о поражённых противниках в виде
- repeat_delay — "тик" урона в секундах (через какой промежуток срабатывает тик)
- token — количество токенов, (сколько раз сработает тик), выдаваемые
- Общее
- Категории способностей
- Усиления, которые располагаются в случайных частях карты
- Секреты на картах, которые дают доступ к уникальным способностям
- [Admin] Возможность посмотреть предыдущие наказания, снять их
- Возможность менять эффективность навыков. Property, при изменении которой способность усиливается/ослабляется
- Отображение статусных эффектов (яд, усиление) в виде маленьких иконок в HUD
- Способности
- Поджёг
- Заморозка
- Массовый телепорт
- Смена местами
- Ауры
- Строительство
- Выдача оружия
- Молния с небес
- Тотемы (пока просто нет модельки)
- Разворот
- Обратный паралич
- Зеркальный урон
- Светящиеся гранаты
- Уникальная техника установка предмета (сначала выбирается радиус, а потом место блока)
- Висячие в воздухе мины
(основано на технике выше) - Смена режима (вкл. режим призрака) при взятии ножа
- Мини радар на земле, отображающий противников и союзников
- Блок какой-то моделькой при наведении на пользователя
- Сохранение полученного урона, и при нанесении урона по противнику перевод сохранённой энергии в дополнительный урон
- Чёрная кровь: вражеские навыки вампирства наносят урон сами себе