Skip to content

Информация по игре Ace of Spades 0.75 и сервере zhabaserver

Notifications You must be signed in to change notification settings

EvgenZhaba/zhabaserver-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Информация по игре Ace of Spades 0.75 и сервере zhabaserver

v0.4.4
by EvgenZhaba


Список ссылок

Все ссылки встретятся ниже. Страницы с (!) сохранены в 4. help

Клиенты

https://www.buildandshoot.com/download/ - скачать: лаунчер и клиенты
https://nateshoffner.com/projects/spadille/ - spadille, обвязка для оригинального клиента
http://www.spadille.net/aos075install.msi - оригинальный клиент (voxlap)
https://github.com/yvt/openspades/ - openspades
https://github.com/xtreme8000/BetterSpades - betterspades

Инструменты

https://noway.github.io/aos-to-address/ - конвертация ip в адрес сервера и обратно

http://www.advsys.net/ken/download.htm - страница с slab6
http://www.advsys.net/ken/slab6.zip - прямая ссылка на slab6 (также он встроен в spadille)

https://aloha.pk/index.php?topic=8329.0 - pubovl, средство для просмотра от 1 лица в режиме наблюдателя

aos://16777343:32887:0.75 - (!) ссылка на локально созданный сервер с ip 127.0.0.1

Сервера

https://github.com/infogulch/pyspades - pyspades
https://github.com/NateShoffner/PySnip - pysnip
https://github.com/piqueserver/piqueserver - piqueserver

Разработка

https://www.piqueserver.org/aosprotocol/ - (!) страница piqueserver с пояснениями по разным форматам
https://www.piqueserver.org/aosprotocol/protocol075.html - (!) описание структуры пакетов для протокола 0.75
https://www.piqueserver.org/aosprotocol/mapformat.html - (!) резервная копия описания формата vxl

https://github.com/infogulch/pyspades/wiki - вики от infogulch по pyspades (навигация справа)
https://github.com/infogulch/pyspades/wiki/Hooks - (!) примеры переопределений функций для скриптов
https://github.com/infogulch/pyspades/wiki/Map-Scripting - (!) добавление скриптов для конкретных карт

https://docs.piqueserver.org/en/latest/ - документация по piqueserver
https://docs.piqueserver.org/en/latest/architecture.html - (!) как работает расширение функционала сервера через скрипты
https://docs.piqueserver.org/en/latest/startup-and-initialization.html - (!) описание работы сущностей сервера (загрузка сервера, смена карты, жизненный цикл игрока)

Карты

https://drive.google.com/drive/folders/1J1qjFlVanny0ogLsW6AjiRuDx7gh7rUD - гуглдиск Ананаса по созданию карт

https://silverspaceship.com/aosmap/aos_file_format.html - (!) как устроен формат карты
https://www.piqueserver.org/aosprotocol/mapformat.html - (!) резервная копия страницы с форматом карты
https://github.com/infogulch/pyspades/wiki/Map-Txt-Files - (!) добавление атрибутов для карты
https://github.com/infogulch/pyspades/wiki/Map-Scripting - (!) добавление скриптов для карты

https://www.buildandshoot.com/forums/viewtopic.php?t=2457 - (!) просмотрщик карт CubeGL v0.4a
https://www.mediafire.com/file/q21526iwyoo2t72/cubegl_v0.4a_windows.zip/file - прямая ссылка на CubeGL v0.4a

Список устоявшихся выражений

Рифла - винтовка, дальнобойное оружие.
Смг - автомат, оружие средней дальности.
Шотган - дробовик, оружие ближней дальности.

Интел - чемодан, который надо принести себе в палатку.
Тент, база, палатка - палатка, вокруг которой возрождаются игроки. В ней можно пополнить здоровье и патроны, встав в неё.
Башня - сооружение, которым поднимают интел выше над уровнем земли для усложнения его взятия.
Колодец - аналогичное сооружение, только интел опускается как можно ниже, обычно рядом его внизу кто-то охраняет.
Стена - стена высотой 2-3 блока, за которой обычно прячется кемпер.

Клиент

1. Где и что взять

Все дистрибутивы также есть в папке 1. distrib
https://www.buildandshoot.com/download/ - тут можно скачать: лаунчер, OpenSpades (win, mac), оригинальный клиент 0.75, 0.76.

Лаунчер buildandshoot

http://launcher.buildandshoot.com/Build%20and%20Shoot%201.2%20Setup.exe
SHA1: 9F24C2749B7697262284F615D44199F3ECD22831

-- Менеджер версий, графический интерфейс для конфига.

Spadille

https://nateshoffner.com/projects/spadille/
SHA1: 3B3ED500985F0065D52A8636185CAE3DBE5A8B8F

-- Графический интерфейс. Показывает сервера с пингом, есть настройки для оригинального клиента. Можно подключиться напрямую по ip к какому-то серверу. Есть конвертер адреса в айпи и обратно. Встроен slab6 для редактирования файлов игры. Есть скриншотилка.

Voxlap

0.75
http://www.spadille.net/aos075install.msi
SHA1: 46D03AC636CF8BBB49D43133DE791C4AB60059C9

-- ⭐Тот самый тузач⭐ 0.75. оригинальная версия. Используется на большинстве серверов мастер-сервера https://www.buildandshoot.com/servers/

0.76
http://www.spadille.net/aos076install_rc10.msi
SHA1: EB22B5ACDDD0EEE0513376186816515CB7A413D3

-- Ace of Spades 0.76. Редко используется.

OpenSpades

mac: https://github.com/yvt/openspades/releases/download/v0.1.3/OpenSpades-0.1.3-Windows.zip
SHA1: 8B8389F8263AA9ED1AAA3CE437004F2BC7C3C086
windows: https://github.com/yvt/openspades/releases/download/v0.1.3/OpenSpades-0.1.3-Windows.zip
SHA1: 19E127BCCC73715A1CB5974F66929F62E3040100

Основная страница: https://openspades.yvt.jp/
Страница на гитхабе: https://github.com/yvt/openspades/releases

-- Графонистая версия клиента.

Betterspades

https://github.com/xtreme8000/BetterSpades/releases
SHA1: 8CB6DEF77EA675ABCE7E681D23A7EB984F6698F7

-- Ещё одна реализация Ace of Spades 0.75.

2. Как это установить

Используемый порт: обычно 32887. Версия: 0.75. Иногда сервер может использовать другой порт. В некоторых случаях к этому порту нужно дать в доступ в файрволе, если не подключается.
Ссылки в браузере вида: aos://число:порт:версия
Ссылка обрабатывается браузером: открывается соответствующее приложение, указанное в настройках браузера.
Если в клиенте можно видеть список серверов - то всё взаимодействие внутри.

3. Настройка конфигурации клиента

3.1 Voxlap (оригинальный)

Для изменения файлов игры на свои рекомендуется использовать менеджер модификаций modloader, который ещё имеет разные плюшки типа записи логов чата и подсветки фона чата.
Файловая структура

config.ini

name                           = твой ник  
xres                           = разрешение по x  
yres                           = разрешение по y  
vol                            = громкость от 0 до 10  
inverty                        = инвертированность мыши  
windowed                       = в окне или нет (0 - полноэкранный)  
language                       = язык  
mouse_sensitivity              = чувствительность мыши  
show_news                      = открыть новостной сайт после закрытия игры  

Например:  
name                           = Player  
xres                           = 1280  
yres                           = 720  
vol                            = 10  
inverty                        = 0  
windowed                       = 0  
language                       = 0  
mouse_sensitivity              = 3.000000  
show_news                      = 0  

controls.ini
Кнопки. Лучше не менять.

/kv6/
Файлы-ресурсы игры.
Изменение моделек с сильно выходящими за их пределы размерами не приветствуется.
Открываются и редактируются в slab6, он также встроен в spadille. Если на win10 в slab6 мышка ведёт себя неадекватно, то в свойствах файла, во вкладке совместимость выбрать "Изменить параметры высокого DPI" и переопределить режим масштабирование на от приложения.
http://www.advsys.net/ken/download.htm
Прямая ссылка: http://www.advsys.net/ken/slab6.zip
SHA1: 3EA61E3F12634A9AC0B208C99D311A3A39990BCF

/png/
Изображения в игре.
Тут можно отредактировать прицелы и прочие изображения. Лучше использовать графический редактор с поддержкой прозрачности, например Paint.NET.

/vxl/
Сюда сохраняется карта, если нажать f1 в игре.

/wav/
Звуки игры. Тоже можно заменить на свои.

4. Управление

Передвижение:   W,S,A,D  
Прыжок:         Space  
Присесть:       Ctrl  
Шагом:          V  
Бежать:         L. Shift  
Стрелять:       L. Mouse  
Прицелиться     R. Mouse  
Общий чат:      T  
Командный чат:  Y  
Отправить сообщение: Enter  
Выбрать оружие:	1-4, Mouse Wheel  
Изменить цвет блока: Стрелочки  
Взять цвет блока, на который смотришь: E  
Карта:          M  
Таблица очков:	Tab  
Сменить команду: ,  
Сменить оружие:  .  
Сохранить карту: F1  
Сетевой график:  F11  
Громкость звуков: +/- Keypad  
Выход:           Esc  

Показать курсор: F5 (в оконном режиме)
Предыдущее оружие: Q

4.1 Как в это играть

Зашёл, если по умолчанию русская раскладка, то сменил её, выбрал команду, оружие.

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

Строительство. Стрелками можно менять цвет кубиков. Если зажмёшь правую кнопку мыши при строительстве блока, то начнёт прокладываться линия блоков, которая построится тогда, когда отожмёшь мышку.

Лопата. Левой кнопкой мыши лопата копает 1 блок, правой 3, но дольше.

Отряды (Если включен скрипт squads):

/squad — посмотреть информацию по существующим отрядам
/squad название_отряда — создать отряд/вступить в отряд
/squad none — выйти из отряда
/follow имя_игрока — спавниться рядом с определенным игроком

Часто на серверах включён айрстрайк, набрал 8 убийств и не сдох - жми пкм, жми V, делай пару шагов и эта точка, куда смотришь, будет атакована воздушной атакой в виде серий падающих гранат.

Мало здоровья, кончились патроны или блоки - зайди в свою палатку, всё восполнится.

Используй вотекик! Увидел грифера? Запускай вотекик. Согласен, что кто-то читер? Жми /y

Не забывай про голосование за следующую карту.

Полезные команды

/accuracy — твоя точность
/ratio — соотношение убийства/смерти
/ping — твой пинг

Все вышеприведенные команды можно использовать в форме /command имя_игрока для получения информации о нем.

/time — время до конца раунда
/mapname — название текущей карты
/votemap — запустить голосование за карту
/vote имя_карты — проголосовать за карту при запущенном голосовании
/admin сообщение — отправить сообщение администрации
/votekick игрок причина - начать голосование за кик игрока
/y поддержать текущий вотекик PRESS /Y PLS

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

4.2 Особенности zhabaserver

Подробности ниже в разделе "Сервер", пункт 3.3-Прочие
Если напишешь в чат что-то типа deus vult - то взорвёшься. Сила взрыва пропорциональна серии убийств.
Интел выбрасывается по дуге, а не просто спавнится рядом. Можно выкинуть командой.
Тех, кто долго не может выбрать команду - кикает.
При входе на сервер обычно выдаёт длинный список скриптов. Тут это отключено! Вручную список запросить можно.
На сервере zhabaserver можно писать в чат по-русски! Всё автоматом переведётся в транслит.
Если мало игроков, то расстояние между палатками и интелами сокращается. Если становится много - возвращается. Проверка происходит при каждом принесённом интеле.
Ротация карт изменена по сравнению с оригинальной, теперь они перебираются в случайном порядке без пропусков (раньше просто случайная карта выбиралась).

4.3 Команды

У каждого игрока [player] есть свой номер, например, #1. Игрока можно указать по его нику или его номеру. Если в команде, где надо указать игрока, ничего не указать, то по умолчанию команда подействует на вводимого.
Время <duration> вводится в формате вида 1d1h1m1s = 1 день + 1 час + 1 минута + 1 секунда. Для, например, 5 минут 32 секунд будет 5m32s. Более подробно и другие способы ввода: \piqueserver\utils\_timeparse.py

Часто используемые команды: time, streak, ping, intel, kill, pm

исходный файл
Команда <Обязательно> [Необязательно] Краткая команда
Описание

\piqueserver\core_commands\game.py
/time
Вывести оставшееся время до смены карты.

\piqueserver\core_commands\info.py
/streak
Вывести текущую серию убийств (количество убийств с момента прошлой смерти).
/ping [player]
Вывести пинг (задержку) до сервера.
/rules
Вывести правила сервера.
/commands
Вывести все доступные команды.
/help <command_name>
Вывести справку по команде (на англ языке).

\piqueserver\core_commands\map.py
/mapname
Вывести название текущей карты.
/showrotation
Вывести список карт.

\piqueserver\core_commands\player.py
/client [player] cli
Вывести информацию о клиенте этого игрока.
/weapon <player>
Вывести информацию об оружии этого игрока. Аргумент обязателен.
/intel
Вывести того, кто несёт вражеский интел.
/kill
Убить себя.
/deaf
Переключить получение сообщений чата.

\piqueserver\core_commands\server.py
/server
Вывести имя и адрес сервера.
/version
Вывести версию сервера.
/scripts
Вывести список скриптов на сервере.

\piqueserver\core_commands\social.py
/pm <player> <message>
Отправить личное сообщение этому игроку.
/admin <message>
Отправить сообщение всем админам онлайн.

5. Администрирование

5.1 Команды

Авторизация: login. Часто используемые команды: timelimit, map, advancemap, kick, ban, dban, wban, banip, unban, undoban, say, mute, unmute, ip, whowas, god, godsilent, unstick, teleport, tpsilent, fly, login

\piqueserver\core_commands\game.py
/resetgame
Перезапуск карты.
/lock <2ch|0chan|spectator>
Заблокировать эту команду для выбора новыми игроками.
/unlock <2ch|0chan|spectator>
Разблокировать эту команду для выбора новыми игроками.
/switch [player]
Сменить у игрока команду. Не работает для наблюдателей.
/setbalance <on|off>
Включить/выключить автобаланс.
/togglebuild [player] tb
Переключить возможность строить для этого игрока. Без аргумента - для всех игроков.
/togglekill [player] tk
Переключить возможность стрелять для этого игрока. Без аргумента - для всех игроков.
/toggleteamkill ttk
Переключить возможность стрелять по своим.
/globalchat <on|off>
Включить/выключить глобальный чат.
/timelimit <duration>
Установить время до смены карты.
/fog red green blue (all values 0-255)
/fog #aabbcc (hex representation of rgb)
/fog #abc (short hex representation of rgb)
Установить цвет тумана.

\piqueserver\core_commands\map.py
/map <mapname>
Установить эту карту следующей после смены карты.
/rotation <map1> ... <mapN>
Изменить текущий список карт и уведомить об этом всех на сервере.
/rotationadd <map>
Добавить в список карт эту карту.
/revertrotation
Вернуть текущий список карт.
/advancemap
Переход к следующей карте в списке карт.

\piqueserver\core_commands\moderation.py
/kick <player> [reason]
Кикнуть(выгнать) этого игрока.
/ban <player> [duration] [reason]
Забанить этого игрока.
/hban <player> [reason]
Забанить этого игрока на час.
/dban <player> [reason]
Забанить этого игрока на день.
/wban <player> [reason]
Забанить этого игрока на неделю.
/pban <player> [reason]
Забанить этого игрока навсегда.
/banip <ip> [duration] [reason]
Забанить по айпи.
/unban <ip>
Разбанить по айпи.
/undoban
Отменить последний бан.
/say <text>
Сказать что-то в чат от имени сервера.
/mute <player>
Отключить чат этому игроку.
/unmute <player>
Включить чат этому игроку.
/ip [player]
Узнать айпи этого игрока.
/whowas <player>
Узнать айпи вышедшего с сервера игрока по его нику.
/invisible [player] invis inv
Переключить невидимость этого игрока. (вылетает на оригинальном клиенте, если потом зайти в режиме наблюдения и попытаться переключиться на этого игрока)
/godsilent [player]
Без уведомления всем переключить этого игрока в режим бога (никто не может нанести урон, снимается при попытке выстрелить в кого-то).
/god [player]
С уведомлением всем переключить этого игрока в режим бога.
/godbuild [player]
Выдать право этому игроку строить блоки, которые могут разрушить только игроки в режиме бога.

\piqueserver\core_commands\movement.py
/unstick [player]
"Освободить" этого игрока из блоков - переместить на открытое пространство рядом.
/moves [player] <sector>
/moves [player] <x> <y> <z>
Без уведомления всем переместить этого игрока по координатам или в сектор. Если координата z в воздухе, то перемещает на землю.
/move [player] <sector>
/move [player] <x> <y> <z>
С уведомлением всем переместить этого игрока по координатам или в сектор. Если координата z в воздухе, то перемещает на землю.
/where [player]
Вывести координаты этого игрока.
/teleport [player] <target player> tp
С уведомлением всем переместить себя (или заданного игрока) к этому игроку.
/tpsilent [player] <target player> tps
Без уведомления всем переместить себя (или заданного игрока) к этому игроку.
/fly [player]
Переключить возможность полёта для этого игрока - с зажатым ctrl можно бесконечно прыгать в воздухе.

\piqueserver\core_commands\player.py
/kill [target]
Убить этого игрока.
/heal [player]
С уведомлением всем применить эффект палатки на этого игрока.
/deaf [player]
Переключить получение сообщений чата этого игрока.

\piqueserver\core_commands\server.py
/servername <new-name>
Изменить имя сервера. В мастер-сервере тоже обновится.
/togglemaster master
Переключить видимость сервера для мастер-сервера.

\piqueserver\core_commands\social.py
/login <password>
Авторизоваться под паролем для получения доступа к большему списку команд. 3 попытки, затем кикнет.

5.2 Средства

Все инструменты также есть в папке 2. tools

modloader

Для оригинального voxlap клиента есть modloader - патч с разными улучшениями, основные - это менеджер модификаций файлов игры, запись логов чата и возможность задать фон для чата (чтобы было лучше видно буквы).

Скачать: https://www.buildandshoot.com/forums/viewtopic.php?f=13&t=3166
Прямая ссылка: https://www.buildandshoot.com/forums/download/file.php?mode=view&id=5105
SHA1: 70FFE0B1963048EBDF65ABA3164E0577680038FD

Установка: запустить установщик, выбрать папку, установить. При этом изменяется client.exe, если нужно оставить оригинальный, то сделай заранее копию.

При установке создаются:

 \modloader.bin - файл модлоадера, переименуй для выключения
 \modloader.txt - справка.
 \modloader\ - папки с модами, для каждого мода отдельная папка
 \logs\ - логи пишутся сюда (если включены)
 \modloader\skin.png - внешний вид для модлоадера
 \modloader\settings.ini - файл настроек модлоадера

Мод - это те папки с новыми файлами, которые нужно заменить в папке с игрой. В папку мода закидываешь папки типа png, kv6, wav и прочие, внутри папки новые версии файлов. В игре выбираешь нужный мод - и игра начинает использовать его файлы. В итоге в оригинальных папках ничего заменять не надо, и можно переключаться между разными модами, не выходя из игры.
Открыть меню модлоадера в игре - insert
В меню: выбор модов; меню быстрого вызова команд для игроков - нажал на игрока и выбираешь нужную команду вместо ручного ввода; настройки модлоадера; вызов окна консоли с историей чата и прочим.

Удаление - тоже через установщик, но client.exe остаётся патченным.

Есть пример мода "evgenmod": прицелы заменены на красные точки; палатка сделана более реалистичной; интел заменён на флаг; смг заменён на АК-47; мелкие правки рифлы и шотгана; модели игроков - головы чуть сглажены, добавлены пуговицы и закатаны рукава; звуки заменены на выстрелы из l4d.

pubovl

SHA1: 94C7737F8CE4C2600DCE3593754BBEA3D6E470DD
Основное средство наблюдения от первого лица за игроками в режиме зрителя.
Подключается любым dll инжектором. В папке лежит total injector и прочие.
https://aloha.pk/index.php?topic=8329.0 - англоязычный гайд.

X: Переключить подсветку противников сквозь стены.
Z: Показывать имена при включённой подсветке сквозь стены.
Стрелочки влево-вправо: Сменить наблюдаемого игрока, справа сверху номер и ник.

5.3 Советы

Самые используемые команды для поиска и бана хакеров:
Поиск: ip, whowas, accuracy, hackinfo, ratio
Наказание: ban, dban, wban, banip, unban, undoban
Для поиска также используется pubovl. Если увидел, что прицел резко дернулся в голову другого игрока, которого не видно, или дергается туда-сюда по головам, раздавая хедшоты - это хакер. Если вдруг игрок как будто бы увидел того, кого на самом деле не должен видеть - это хакер. Но игрок может услышать по звукам кого-то - наблюдение нужно вести до полной уверенности.

Сервер

1. Общая информация об реализациях

1.1 Pyspades, Pysnip, Piqueserver

Сперва был pyspades. 95% функционала реализовано именно тут.
https://github.com/infogulch/pyspades - спасённая версия (форк)

pysnip - багфиксы, разные доработки https://github.com/NateShoffner/PySnip

piqueserver - переезд на python3, рефакторинг, разные доработки
https://github.com/piqueserver/piqueserver

1.2 Как установить piqueserver.

https://github.com/piqueserver/piqueserver - тут всё доступно описано.
zhabaserver использует piqueserver 1.0.0, его можно поставить через pip3.
piqueserver по умолчанию использует порт 32887 (udp) для сервера, не забывайте сделать этот порт доступным извне - добавить в исключения файрвола, пробросить на роутере (лучше пробросить диапазон 32887-32887, некоторые модели роутеров некорректно обрабатывают одиночный порт для проброса).

После запуска piqueserver пишет в консоль адрес сервера aos://число:порт:версия
Это число по факту представляет собой перевод ip из 256-ричной системы счисления в десятичную.
Если сервер подключён к интернету, то он выдаст адрес для входа извне. Если нужно зайти из локальной сети на этот сервер, то ссылку для входа можно вычислить.
Переводить можно вручную, в spadille, или на сайте https://noway.github.io/aos-to-address/
Например, для 127.0.0.1 и стандартного порта ссылка: aos://16777343

1.3 Как установить zhabaserver

zhabaserver - это файлы для папки /.config/piqueserver/, которые содержат в себе карты, скрипты, багфиксы, конфиги.

Установка.

  1. Установить piqueserver 1.0.0.
  2. Скопировать файлы из папки zhabaserver (когда-нибудь появится в открытом доступе).

Порты zhabaserver: 32887-32897 (udp) - сервер. 33887-33897 (tcp) - инфа о сервере (для сайта).

2. Игровые режимы

ctf

Capture the flag. Первый из двух стандартных режимов. Нужно взять интел врага и принести в свою палатку. За каждый интел - 10 очков. 3 принесённых интела - победа.

tc

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

onectf

Модификация ctf. Интел общий, лежит в центре.

tow

Модификация tc. Захватывать можно только точку на границе "фронта" - точки генерятся между спавнами линией.

nuketown

Модификация ctf для одноимённой карты. Небольшая карта. Бой команд. Малое время респавна. Итог: убийства на спавне гранатами, очереди смг во все стороны, дикий геймплей на выживание с минимальным временем ожидания возрождения.

push

ПУШа - это душа. Взялся за ПУШ, не говори, что не дюж. Модификация ctf. Простреливаемые островки. Интелы лежат у каждой команды вдали на островке. Злая вода. Блоки только своего цвета. Сносить блоки своей команды нельзя. Цель - построить под огнём противника мосты до следующего островка, и так, с острова на остров, дойти до интела и принести его домой.

babel

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

3. Скрипты

Часто используемые команды: rollback, votekick, y, cancel, ratio, squad, follow, airstrike, paint, votemap, vote

3.1 Общеизвестные

Почти всегда включены на серверах. Имеющиеся на zhabaserver (ctf) помечены ⭐

Включены в стандартный конфиг.

\piqueserver\scripts\rollback.py
Откатывает состояние карты к исходному поблочно. Для администраторов.
/rollmap <map name>
Меняет состояние текущей карты на заданную. Может занять много времени!
/rollmap <map name> <sector>
Меняет сектор текущей карты на этот же сектор заданной карты.
/rollback
Откатывает карту.
/rollbackcancel
Отмена отката карты.

\piqueserver\scripts\protect.py
Защищает карту от строительства. Для администраторов.
/protect <sector>
Защитить выбранный сектор.
/protect
Убрать все защиты.

\piqueserver\scripts\map_extensions.py
Позволяет расширить возможности карты в файле mapname.txt
Пример:

extensions = { 'water_damage' : 2,
               'boundary_damage' : {'left' : 64,
                                    'right' : 448,
                                    'top' : 128,
                                    'bottom' : 384,
                                    'damage': 1 } }

water_damage - урон от воды
boundary_damage - за пределами этой области будет наноситься урон damage

\piqueserver\scripts\disco.py
Дискотека! Меняет цвет тумана. Для администраторов.
/disco
Переключить режим дискотеки.

\piqueserver\scripts\votekick.py
Голосование за кик игрока.
/votekick <player> <reason>
Начать голосование за кик этого игрока по заданной причине.
/y
Согласиться с текущим голосованием.
/togglevotekick [player] tvk
Переключить возможность начать голосование для этого игрока. Без аргумента - для всех игроков. Для администраторов.
/cancel
Отменить текущее голосование. Для инициатора или администраторов.

\piqueserver\scripts\trusted.py
Позволяет выдавать доверие игрокам - доверенные игроки не могут быть кикнуты голосованием. Для администраторов.
/trust <player>
Сделать этого игрока доверенным.

\piqueserver\scripts\ratio.py
Выводит соотношение количество убийств/смертей. Должно быть в конфиге после скрипта votekick! /ratio <player>
Вывести соотношение количество убийств/смертей.

\piqueserver\scripts\passreload.py
/reloadconfig
Перезагружает конфиг (без скриптов). Для администраторов.

\piqueserver\scripts\blockinfo.py
Помогает искать гриферов. Для администраторов.
/griefcheck <player> <minutes> gc
Вывести, сколько этот игрок за это время сломал блоков.

\piqueserver\scripts\squad.py
Даёт возможность объединяться в сквады. Игроки в скваде возрождаются не на базе, а рядом с другим живым игроком из сквада.
/squad <key>
Вступить в сквад с заданным именем. Если такого нет, то создаёт сквад.
/follow <player>
Возрождаться всегда с этим игроком.

\piqueserver\scripts\afk.py
Кикает неактивных игроков.
/kickafk <minutes> [amount]
Принудительно кикнуть игроков, неактивных больше указанного времени.

Не включены в стандартный конфиг, но доступны для подключения.

\piqueserver\scripts\airstrike2.py
Позволяет вызвать удар с воздуха - бомбометание гранатами определённого сектора - при наборе серии 8 убийств. Для вызова нужно прицелиться, нажать V и пройти пару шагов.
/airstrike a
Вызвать удар с воздуха.
/givestrike <player>
Выдать этому игроку право вызвать удар с воздуха. Для администраторов.

\piqueserver\scripts\paint.py
Раскраска блоков. Когда выбран блок и нужный цвет, нажатие V окрашивает блок, на который смотришь.
/paint <player>
Выдать этому игроку право красить блоки. Для администраторов.

\piqueserver\scripts\rapid.py
Переключает режим на быструю стрельбу и строительство. Для администраторов.
/rapid <player>
Переключить режим быстрой игры для этого игрока.

\piqueserver\scripts\spadenadefix.py
Исправляет баг(фичу) броска гранаты с уменьшенным временем взрыва.

3.2 Исправления

Некоторые скрипты из piqueserver 1.0.0 содержали ошибки. Исправленные версии подключены как сторонние скрипты.

\zhabaserver\scripts\aimbot2_.py
Заменено parse на timeparse.
Инструменты для обнаружения читеров и повышения ЧСВ. Изначальные детекты изменены в более параноидальную сторону + добавлена эвристика для поиска аима.
/accuracy <player>
Вывести точность этого игрока по каждому виду оружия.
/hackinfo <player>
Вывести точность этого игрока, соотношение убийств/смертей, сколько убийств в голову, сколько раз навёлся на голову противника с поворотом больше определённого угла (90 градусов). Для администраторов.

\zhabaserver\scripts\analyze_.py
https://github.com/piqueserver/piqueserver/commit/133344db6a1146d1e4aadcaf921c4e60c11e677e
35 строка обновлена: "if player.player_id not in protocol.players:"
Показывает детальную аналитику выстрелов игроков. В кого стреляет, расстояние, время с предыдущего выстрела.
/analyze <player> an
Переключить наблюдение за этим игроком.

\zhabaserver\scripts\daycycle_.py
https://github.com/piqueserver/piqueserver/commit/d78b63c72e634fe775eadbda8b6705c57b5d9063
Заменено start_time на daycycle_start_time - такая глобальная переменная уже была.
Меняет цвет тумана, имитируя день и ночь.
/dayspeed <speed>
Установить скорость смены дня и ночи. По умолчанию в 48 раз быстрее, чем в реальности. Без аргумента выведет текущее значение. Для администраторов.
/daytime <time>
Без аргумента - вывести текущее время. С аргументом - для администраторов - установить текущее время (в часах).

\piqueserver\scripts\votemap_.py
Убрана функция lower(), из-за которой имя карты неправильно отображалось и соответственно вводилось - карта, в имени которой буквы разных регистров, не выбиралась. Также тут убран сломанный декоратор @player_only. Добавлена возможность выбора карты по её номеру в выводе votemap.
Голосование за выбор следующей карты.
/votemap
Начать голосование за смену карты.
/vote <map name>
Проголосовать за эту карту. Вместо имени карты можно ввести её номер из votemap.

\zhabaserver\scripts\bansbugfix.py
https://github.com/piqueserver/piqueserver/commit/0b95c7f276d32b843667fd760141964e87d7a427
https://github.com/piqueserver/piqueserver/commit/d0ee645609447b423ead69ca6a62d1d6929c0acc
Исправляет работоспособность банов.

\zhabaserver\scripts\globalchatbugfix.py
Изменено определение функции: "def global_chat(connection, value):"
Исправляет работоспособность команды globalchat.

\zhabaserver\scripts\playeronlybugfix.py
piqueserver/piqueserver#610
Убирает сломанный декоратор @player_only

\zhabaserver\scripts\revertrotation.py
Карты берутся из protocol.config['rotation'].
Исправляет команду revertrotation.

3.3 Прочие скрипты

Сторонние скрипты.

\zhabaserver\scripts\allahuakbar.py
Позволяет взрывом показать силу А%%%%а. Чем больше серия убийств, тем сильнее взрыв.
Для самоподрыва достаточно любой фразы в чат, удовлетворяющей условию:
".*(a(ll|l)ah|a(ll|l)ahu).*((a(k|h)bar)|(a(k|h)ba))"
".*DEUS.*VULT"
Например, "allahu akbar".

\zhabaserver\scripts\box.py
Строит и удаляет параллелепипеды. Для администраторов.
/box
После ввода 2 кубиками отметить точки, построится пустая коробка.
/db
После ввода сломать 2 кубика, между ними всё удалится.

\zhabaserver\scripts\checknick.py
Проверяет ник на уязвимости. Некоторые имена пишут ошибку в логи сервера, некоторые имена нельзя использовать, например, для голосования за кик.
Заменяет:
Пустой ник на "gay empty"
Ник с "#" на "gay sharp"
Ник с "%" на "gay percent"

\zhabaserver\scripts\dropintel.py
Делает красивую анимацию выброса интела.
/drop
Выбросить интел.

\zhabaserver\scripts\kicklimbo.py
Кикает тех, кто слишком долго не может определиться с выбором команды.

\zhabaserver\scripts\limitfog.py
в разработке
Изменяет механику - не отправляет игрокам информацию о местоположении врагов за пределами тумана (по умолчанию всем отправлялась инфа обо всех).

\zhabaserver\scripts\pingstaff.py
Сообщение админам отправляется не только админам, но и модераторам, и гвардам.
/admin <message>
Отправить сообщение всем админам, модераторам и гвардам онлайн.

\zhabaserver\scripts\printshortscripts.py
Выводит список скриптов на сервере, заменяя "piqueserver.scripts" на "ps". На первую команду клиента (автоматически при подключении) отвечает, что работает только ручной ввод команды. Строка первого ответа начинается с "Scripts enabled: " для совместимости с modloader (иначе не работаюет меню команд)
/scripts
Вывести список скриптов на сервере с сокращёнными именами.

\zhabaserver\scripts\rustranslit.py
Транслитерация русских букв в сообщениях чата. Поддерживает: voxlap, openspades.

\zhabaserver\scripts\skynet.py
Разные защиты от плохого поведения игроков или ботов.

\zhabaserver\scripts\smallmap.py
Уменьшает зоны спавна палаток и интелов при малом количестве игроков. Возвращает, если много игроков.

\zhabaserver\scripts\spadearena.py
Короли Ринга! Оставляет только лопатки и переносит всех на арену в воздухе.
/spademode
Переключить режим.

\zhabaserver\scripts\trollscriptplus.py
Издевательства над игроками. В первую очередь над читерами. Для администраторов.
/burn <player>
Поджечь этого игрока. Красный туман и потеря здоровья до смерти.
/flash <player> [time]
Быстрая смена цвета тумана для этого игрока. Можно задать время в секундах, по умолчанию - 10.
/repeldamage <player> rdmg
Весь нанесённый этим игроком урон перенаправляется в его же.
/noammo <player>
Отключить оружие этому игроку.
/namechange <player> <name> nc
Изменить имя этого игрока.
/messagechange <player> [message] msg
Заменяет все сообщения в чат этого игрока.
/showtrollcommands stc
Вывести список команд этого скрипта.

\zhabaserver\scripts\updatemap.py
Изменяет порядок выбора карт в ротации. Теперь выбираются случайно, перебирая все карты из ротации без пропусков. 3 последние карты гарантированно не будут поставлены. При остановке сервера состояние сохраняется: название текущей карты, 3 последних карты; и при запуске вновь состояние загружается, ставится та карта, что была перед остановкой сервера.
/lastmaps
Вывести 3 последние карты, которые не будут поставлены автоматически следующей картой.

3.4 Для определенных карт или режимов

\zhabaserver\scripts\rmatch.py
Проведение матчей. До и после матча нельзя что-то построить, сломать или нанести любой урон. В начале матча всех выкидывает из сквадов.
На основе https://www.buildandshoot.com/forums/viewtopic.php?t=9634
/start
Начать матч.
/stop
Закончить матч.

\zhabaserver\scripts\nothold.py
Запрещает удержание интела: через 45 секунд игрока с интелом убивает. Для матчей.

\zhabaserver\scripts\onectf_update.py
Позволяет сдать интел в чужую палатку, при этом интел не засчитается и появится в центре. Для матчей.

3.5 Самостоятельная разработка

Многие вещи уже реализованы в скриптах, достаточно подсмотреть нужные блоки кода. В самих исходниках тоже есть много полезного. Помни, что большая часть кода была реализована в pyspades, то есть справочные материалы по этому серверу тоже содержит релевантную информацию, но некоторые функции могли быть перемещены или модифицированы в другие места.
Полезные ссылки:
https://www.piqueserver.org/aosprotocol/ - страница piqueserver с пояснениями по разным форматам
https://www.piqueserver.org/aosprotocol/protocol075.html - описание структуры пакетов для протокола 0.75
https://www.piqueserver.org/aosprotocol/mapformat.html - резервная копия описания формата vxl
https://github.com/infogulch/pyspades/wiki - вики от infogulch по pyspades (навигация справа)
https://github.com/infogulch/pyspades/wiki/Hooks - примеры переопределений функций для скриптов
https://github.com/infogulch/pyspades/wiki/Map-Scripting - добавление скриптов для конкретных карт (об этом дальше)
https://docs.piqueserver.org/en/latest/ - документация по piqueserver
https://docs.piqueserver.org/en/latest/architecture.html - как работает расширение функционала сервера через скрипты
https://docs.piqueserver.org/en/latest/startup-and-initialization.html - описание работы сущностей сервера (загрузка сервера, смена карты, жизненный цикл игрока)

Жизненный цикл игрока.
Подключается. Качает карту. Попадает в лимбо - выбор команды. После первого выбора команды сервер узнаёт имя и команду игрока. Затем выбор оружия и спавн. После смерти - респавн.
В процессе игры можно перевыбрать команду или оружие.

Карты

1. Создание карт

Ссылка на гуглдиск - https://drive.google.com/drive/folders/1J1qjFlVanny0ogLsW6AjiRuDx7gh7rUD
-- Разные вариации гайдов по созданию карт от Ананаса.

Файл карты vxl - 512 на 512, высота 63, карта по сути состоит из перечисления столбцов, каждый из которых записан определённым образом. Блоки могут быть: воздух, цветной блок, блок земли (блок, полностью окружённый блоками). То есть, если в игре застроить цветной блок со всех сторон, а потом откопать - то он станет блоком земли с характерным стандартным цветом.
Более подробно по формату: https://silverspaceship.com/aosmap/aos_file_format.html
https://www.piqueserver.org/aosprotocol/mapformat.html - резервная копия
piqueserver расширяет возможности карт, если рядом положить имя_карты.txt с дополнительной информацией, то сервер обработает этот файл и будет его использовать. Например, можно изменить места спавна игроков или интела, можно включить "злую" воду - которая наносит урон, можно обозначить "злые" области на карте.

Примеры можно глянуть тут:
https://github.com/infogulch/pyspades/wiki/Map-Txt-Files - добавление атрибутов (например, величины урона воды)
https://github.com/infogulch/pyspades/wiki/Map-Scripting - изменение поведения некоторых действий сервера (например, изменение областей спавна)

Этот txt-файл карты грузится на сервере здесь: https://github.com/piqueserver/piqueserver/blob/b10c38193d7ed26c20e4af30a14d99cedf899061/piqueserver/map.py#L99
По строкам кода видно, какие атрибуты грузятся и какие функции можно переопределить. То есть для карты можно написать целый отдельный скрипт, меняющий очень многое! (в рамках переопределяемых функций, и если оно заработает)
Так, например, сделан скрипт для карты Trenches, которая стала Artillery - там были пушки, и написанный скрипт позволял СТРЕЛЯТЬ из них, ломая блок запала, который восстанавливался через какое-то время.

В папке 3. maps - ротация zhabaserver, часть карт взята из общего доступа, часть новосозданная актуальным сообществом.

2. Как потестить карту

2.1 Просмотрщик

CubeGL - позволяет "полетать" по карте. Лежит в 2. tools
Источник: https://www.buildandshoot.com/forums/viewtopic.php?t=2457
Прямая ссылка: https://www.mediafire.com/file/q21526iwyoo2t72/cubegl_v0.4a_windows.zip/file
Ассоциируешь расширение vxl-карт (открыть с помощью) с этой прогой и открываешь карту.
WASD - движение, пробел - вверх, shift - вниз.

2.2 Запуск на оригинальном сервере

С оригинальным клиентом идёт server.exe. Рядом с ним server_config.ini, в котором вполне понятные настройки сервера, которые впоследствии можно настроить. При обычном запуске сервер по умолчанию в интерактивном режиме спрашивает параметры:

  1. Карта. Сгенерировать или взять из папки /vxl/ рядом, писать только имя без расширения.
  2. Режим. ctf или tc.
  3. Максимальное количество игроков на сервере.
  4. Имя сервера для мастер-сервера.
  5. Подключиться ли к мастер-серверу.

После этого стартует сервер. К нему можно подключиться в локальной сети, для 127.0.0.1 и стандартного порта ссылка: aos://16777343:32887:0.75
При закрытии консоли сервер останавливается. Так как это оригинальный сервер, то никакие скрипты на нём не проверить, только побегать по карте.

2.3 Запуск на сервере piqueserver или его предыдущих версиях

Кидаешь карту в папку maps, добавляешь её в конфиге, запускаешь сервер, подключаешься аналогично пункту выше.

3. Список карт на сервере zhabaserver

  "2-4-T",
  "4rivers",
  "Artillery",
  "Bocage",
  "burbs",
  "capitol",
  "classicgen",
  "crossfire",
  "deucehills",
  "Domain_of_Khorne",
  "Durka",
  "encampment",
  "forks",
  "globus",
  "Groznii",
  "Hiesville",
  "Imparator",
  "IsleOfWar",
  "LittleAssault",
  "mesa",
  "muhosransk",
  "muhosransk3_1",
  "normandie",
  "OktoberDistrict",
  "peski",
  "pinpoint",
  "random",
  "rocket_launch",
  "STURMBOOHENVALDA",
  "Yoba",

About

Информация по игре Ace of Spades 0.75 и сервере zhabaserver

Topics

Resources

Stars

Watchers

Forks

Languages