Перейти к содержанию
Admin

ЦНС сервера или кодим сервер командными блоками

Рекомендуемые сообщения

YVoWfZql.png

 

Центральная Нервная Система сервера

Большой Брат следит за вами :)

 

41 5 138

 

Представляю вашему вниманию уникальную разработку!

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

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

 

Данная система была придуманна для того, чтобы реализовать некоторые функции, которых не хватало в игре, но из-за того, что я не очень хорошо разбираюсь в программировании и не собирался тратить время на изучение всего и вся, что связано с модингом и кодингом игры...

Со временем, система сильно преобразилась, выросла и заметно обросла функционалом - а, ведь, внешне это выглядит не так очевидно, согласитесь?

Но, обо всём по порядку ))

 

Эта система имеет свои недостатки (ограниченность, вероятная просадка TPS и др.), но меня она полностью устраивает и воодушевляет вот уже почти 3 года безвайповой игры на одной и той же карте.

Система полностью построена на основе встроенных возможностей игры - на командных блоках и переменных.

 

Вот функции, которые она выполняет:

и, соответственно, таким образом заменяет некоторые плагины

 

 - ограничение прав новичков и разных типов игроков, а также запрет на использование некоторых предметов;

 - обработка смены ника;

 - защита/приват территорий игроков (частные охранные системы на основе стандартных ловушек игры - "сигнализации");

 - охрана важных общественных объектов;

 - система гильдий и навыков;

 - краткое пошаговое обучение новичков (эдакий "onboard");

 - контроль заключённых и автовыход из тюрьмы;

 - раздача покупных индивидуальных эффектов (за пожретвования/донат/бонусы);

 - выборочно исключает воздействие любых команд на администраторов;

 - контроль искусственных и естественных деревенских жителей;

 - увеличение силы мобов по ночам;

 - контроль перемещения игроков в режиме "наблюдение";

 - обеспечение равных условий для всех участников во время проведения ивентов;

 

 

Итак, перейдём к описанию каждого конкретного элемента.

Спойлер

 

Принцип действия:

Спойлер

 

Система состоит из:

 

 - генератор коротких импульсов/сигналов;

 - командные блоки;

 - проводка;

 - разъясняющие таблички;

 - дополнительные помещения в других частях карты;

 

Генератор представляет из себя стандартное устройство на воронках.

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

 

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

Конкретные примеры будут расписаны в других частях этой статьи далее по тексту.

 

Сама система должна находиться в максимально безопасном месте, чтобы избежать несанкционированного проникновения других игроков, а также должна охранять саму себя :)

 

Некоторые элементы системы находятся в других частях карты и находятся под охраной основной системы.

Такими отдельными элементами системы являются: автопрокачка в гильдии и выдача отдельных эффектов по утрам.

 

Также необходимо подписывать все элементы поясняющими табличками, во-первых, чтобы самому не запутаться, во-вторых, чтобы вашим помощникам было проще разобраться.

 

 

Основными недостатками системы являются:

 

 - ограниченность действия только миром, где она находится;

 - необходимость наличия игроков в районе нахождения системы;

 - ограниченный функционал из-за особенностей игры;

 - вероятная просадка как TPS всего сервера, так и отдельных чанков в районе расположения системы, особенно у игроков со слабым "железом";

 - относительная незащищённость системы от несанкционированного проникновения;

 - необходимость кодить всё ручками в игре и разбираться во всём досканально;

 - большая вероятность случайно что-нибудь уничтожить или совершить необратимую и неконтролируемую ошибку при внесении изменений;
 - сложность понимания принципов действия;

 - затролленная консоль сервера сообщениями командных блоков, а также гигантский лог сервера, если он не чистится автоматически;

 

 + иногда во время внесения/изменения команды в командный блок, туда "просачивается" непонятным образом какой-то невидимый символ, который можно заметить только при проверке текста команды вне игры и только после сохранения её в командном блоке и последующем копировании оттуда (так, однажды такой невидимый символ закрался во время копирования команды из одного командного блока в другой без изменений - прямо между цифрами длительности эффекта); однако с версии 1.8 данный символ стал виден в игре и его сложно не заметить.

 

Пример вредоносного символа, который не виден в игре:

JH76834.png

 

 

Основные достоинства системы:

 

 - позволяет реализовать уникальные идеи;

 - относительная простота реализации, отладки и внесения изменений;

 - нет привязки к сторонним разработчикам плагинов и ядер;

 - нет необходимости изучать досканально систему модинга игры и написание плагинов;

 - нет необходимости переделывать систему при переходе на более новую версию игры (исключения - изменение баланса и правил работы с командными блоками);

 - нет необходимости проведения сложных тестов на выявление и предупреждения багов, т.к. всё просчитывается в уме или на бумажке по заранее спланированному алгоритму или тестируется в полевых условиях;

 

 

 

Работа с новичками и сменой ника:

Спойлер

 

После перехода на 1.8 возникла проблема с новыми игроками: т.к. в ССИС ещё нет никакой информации о них.

Вся работа данной "ЦНС сервера" построена на переменных.

До версии 1.8 считалось, что если в ССИС нет никакой информации о новом игроке, то значения всех запрашиваемых переменных = 0, а с версии 1.8 в таком случае игрок просто не обрабатывается.

Из-за этого перестала работать вся система безопасности, основанная на данной "ЦНС сервера", т.к. проверки просто не срабатывали и нарушители не улетали в тюрьму. Пришлось её переделать.

 

Итак, ниже представлено описание всех аспектов работы с новыми игроками.

 

 

Защита от атак грифферов и просто нарушителей.

 

Наш сервер специально настроен на режим "Приключение" для новых игроков (на самом деле мы играем в режиме "Выживание"), чтобы мы могли отличать новичков.

При первом входе в игру теперь каждому игроку сначала явно задаются значения всех важных переменных = 0.

А получается у нас это благодаря тому, что ССИС позволяет проверять новых игроков на соответствие указанному режиму игры и нахождению в определённой команде - таким образом мы берём только новичков и только тех из них, кто только-только зашёл, т.к. через мгновение мы запихнём их в команду "Newbie".



/scoreboard players set @a[m=2,team=!Newbie] Admins 0
/scoreboard players set @a[m=2,team=!Newbie] PlayerID 0
/scoreboard players set @a[m=2,team=!Newbie] alarmCode 0
/scoreboard players set @a[m=2,team=!Newbie] ClanID 0
/scoreboard players set @a[m=2,team=!Newbie] i_newbie 0
/scoreboard players set @a[m=2,team=!Newbie] SmertiEffectov 0

Собственно, новички подготовлены для дальнейшей игры на нашем севрере и нормальной обработкой их с помощью "ЦНС сервера".

Теперь мы можем смело добавлять их в команду "Newbie" для дальнейшей работы с ними в плане автоматизированного информирования и обучения, а также визуального отличия для других игроков (у всех новичков ники зачёркнуты).

 

Делаем мы это с помощью такой команды, которая выполняется с некоторой задержкой после предыдущих команд, действует только на тех новичков, кто ещё не в этой команде и заодно проверяет выполнение предыдущих команд, сверяясь со всеми переменными:



/scoreboard teams join Newbie @a[m=2,team=!Newbie,score_Admins=0,score_PlayerID=0,score_alarmCode=0,score_ClanID=0,score_i_newbie=0,score_SmertiEffectov=0]

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



/spawnpoint @a[167,65,-134,rm=10,m=2] -5 65 -31

/effect @a[167,65,-134,rm=10,m=2] minecraft:weakness 999999 2
/effect @a[167,65,-134,rm=10,m=2] minecraft:mining_fatigue 999999 50
/effect @a[167,65,-134,rm=10,m=2] minecraft:slowness 999999 0

/clear @a[m=2] minecraft:tnt
/clear @a[m=2] minecraft:lava_bucket
/clear @a[m=2] minecraft:water_bucket
/clear @a[m=2] minecraft:flint_and_steel

Также выдаётся эффект "Поглощение" (один раз до след. смерти):
/effect @a[167,65,-134,rm=10,team=Newbie,score_SmertiEffectov_min=1] minecraft:absorption 9999 19

После чего, переменная, отслеживающая смерти, обнуляется:
/scoreboard players set @p[team=Newbie,score_SmertiEffectov_min=1] SmertiEffectov 0

Обработка смены ника игроками:

 

Из-за тех же изменений в версии 1.8 при смене ника игрок с новым ником никак не числится в ССИС, но сохраняет инфу о своём режиме игры и все проверки по UUID.

Однако, для нормальной обработки таких игроков с помощью ЦНС им надо заново перезадать все переменные.

 

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

Мы принудительно обнуляем её всем допущенным игрокам.

Затем увеличиваем её значение всем допущенным игрокам на 1, проверяя другую стандартную для всех обычных игроков переменную "Admins", которой "не существует" у игроков, сменивших ник, и они не проходят проверку, и остаются с нулём.

 

Затем, всем игрокам, не прошедшим проверку, меняется игровой режим и они становятся полноценными новичками, которым приходится подавать заявку на смену ника для продолжения нормальной игры.



/scoreboard players set @a[m=0] i_newbie 0
/scoreboard players add @a[m=0,score_Admins=1] i_newbie 1
/gamemode 2 @a[m=0,score_i_newbie=0]

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

 

Автоматическая обработка ника затрагивает только: админство, гильдии, кланы, личные id, отображение ника, режим игры, отрицательные эффекты.

 

Спойлер

Отключенно, т.к. это сильно выносит мозг при входе на сервер...

 

Обучение и информирование новичков.

 

Данная система была запланирована интерактивной, но на данный момент реализована по упрощённой схеме в связи с ошибками при работе с командами...

Интерактивность системы подразумевает, что новичку будет выдаваться некая информация с помощью команды /tellraw, которая в зависимости от выбора игрока будет изменять значения переменной "i_newbie" самостоятельно - и, как следствие, будут выполняться нужные другие команды, погружающие новичка в игровой процесс всё глубже и глубже.

 

Планировалось, что с версии 1.8 мы сможем взаимодействовать с игроком любыми способами с помощью команды /execute и /trigger, встроенных в команду /tellraw, и выполнять любые команды от имени нужного нам новичка, что позволит создавать интерактивные системы взаимодействия любой сложности!! :)

 

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

Вот примерно такими командами это делается:




/scoreboard players add @a[m=2,team=Newbie] i_newbie 1


/tellraw @a[m=2,team=Newbie,score_i_newbie_min=25,score_i_newbie=25] {"text":"","extra":[{"text":"Дружище, ","color":"gold"},{"text":"познакомься с великим миром BBya!! :)","color":"green"}]}

/tellraw @a[m=2,team=Newbie,score_i_newbie_min=30,score_i_newbie=30] {"text":"","extra":[{"text":"Сейчас ты находишься в демо-режиме: ","color":"green"},{"text":"зачёркнутый ник, отрицательные эффекты и некоторые другие ограничения.","color":"gold"}]}

/tellraw @a[m=2,team=Newbie,score_i_newbie_min=40,score_i_newbie=40] {"text":"Хочешь ли ты присоединиться к нашему сообществу? Нравится ли тебе у нас? Готов ли ты стать частью этого невероятного мира??","color":"green"}

/tellraw @a[m=2,team=Newbie,score_i_newbie_min=45,score_i_newbie=45] {"text":"","extra":[{"text":"Для полноценной игры на нашем сервере необходимо - ","color":"green"},{"text":"ознакомиться с правилами и подать заявку на форуме, в той же теме (активная ссылка).","color":"gold","clickEvent":{"action":"open_url","value":"http://forum.bbyaworld.com/index.php?/topic/2-bbya-world-informatciia-o-servere-i-pravila-igry/"},"hoverEvent":{"action":"show_text","value":"кликни на оранжевый текст - это ссылка на форум"}}]}

/title @a[m=2,team=Newbie,score_i_newbie_min=50,score_i_newbie=50] subtitle {text:"skype: bbyaworld", color:aqua, italic:true}

/title @a[m=2,team=Newbie,score_i_newbie_min=50,score_i_newbie=50] title {text:"Поговори с админом", bold:true, color:gold}

/tellraw @a[m=2,team=Newbie,score_i_newbie_min=55,score_i_newbie=55] {"text":"","extra":[{"text":"Задай вопрос админу по скайпу: ", "bold":"true", "color":"green"},{"text":"bbyaworld", "bold":"true" ,"color":"gold"}]}

/tellraw @a[m=2,team=Newbie,score_i_newbie_min=65,score_i_newbie=65] {"text":"","extra":[{"text":"Скорее подавай заявку на добавление к игровому процессу! ", "color":"green"}]}

/tellraw @a[m=2,team=Newbie,score_i_newbie_min=70,score_i_newbie=70] {"text":"","extra":[{"text":"Тебя ждут - невероятный мир и новые друзья!!", "color":"gold"}]}

/title @a[m=2,team=Newbie,score_i_newbie_min=80,score_i_newbie=80] title {text:"BBya World", bold:true, color:gold}

/title @a[m=2,team=Newbie,score_i_newbie_min=80,score_i_newbie=80] subtitle {text:"ТВОЙ НОВЫЙ ДОМ!!", color:aqua, italic:true}


/scoreboard players set @a[m=2,team=Newbie,score_i_newbie_min=150,score_i_newbie=150] i_newbie 0

Видео можно посмотреть тут:

https://youtu.be/3VDJOC1NHgY

 

 

 

 

 

Работа с нарушителями и заключёнными.

Спойлер

 

"ЦНС сервера" охраняет саму себя, все важные общественные техинческие помещения и частные охранные системы игроков на основе командных блоков и переменных.

Принцип работы охранных систем на нашем сервере основывается на том, что нарушителю присваивается определённый код переменной alarmCode, который уникален для каждого помещения и частной территории.

Во всех командах исключаются админы с помощью добавления условия "score_Admins=0".

Например, если проникнуть в "ЦНС сервера", то сработает командный блок, охраняющий помещение, в котором находится сама охранная система, охраняющая саму себя:



/scoreboard players set @a[-31,1,-27,dx=45,dy=7,dz=17,score_Admins=0] alarmCode 1

Важно отметить, что прямоугольные параллепипеды "-31,1,-27,dx=45,dy=7,dz=17" (вместо обычного сферического радиуса или при использовании одновременно с ним) указываются в строго определённом направлении, зависящем от знака перед конкретным значением дистанции! 

 

 

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

 

Для начала все новички-нарушители переводятся в режим "Выживание":



/gamemode 0 @a[m=2,score_alarmCode_min=1]

Затем все игроки-нарушители вне команды "prisoners" и не админы перемещаются в команду зеков (возможно, нужно перемещать только игроков в режиме "Выживание", но пока так):



/scoreboard teams join prisoners @a[team=!prisoners,score_alarmCode_min=1,score_Admins=0]

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



/clear @a[team=prisoners]
/gamemode 0 @a[team=prisoners]
/spawnpoint @a[team=prisoners] 0 3 0
/effect @a[team=prisoners] minecraft:slowness 999999 4

/tp @a[0,3,0,rm=10,team=prisoners] 0 3 0

/tellraw @a[0,3,0,10] {"text":"","extra":[{"text":"Внимание!! Вы стали жертвой нарушения правил сервера! Чтобы выйти из тюрьмы, отпишитесь в теме ","color":"green"},{"text":"по этой ссылке!","color":"gold","hoverEvent":{"action":"show_text","value":"Кликни на оранжевый текст"},"clickEvent":{"action":"open_url","value":"http://forum.bbyaworld.com/index.php?/topic/8-tiurma-№3/"}}]}

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

Всё это обсуждается в специальной теме, там же описаны дополнительные функции - такие, как модуль "Анти-бунт".

 

 

Процесс выхода игрока на свободу автоматизирован.

Для того, чтобы выпустить игрока из тюрьмы, оператор должен любым способ задать значение перменной "alarmCode = -1" - далее автоматика всё сделает сама (сменит команду, изменит точку спауна, снимет эффекты, телепортнёт и сбросит код охранной системы):



/scoreboard teams leave @a[0,3,0,10,score_alarmCode=-1]
/spawnpoint @a[0,3,0,10,team=!prisoners] -5 66 -31
/effect @a[0,3,0,10,team=!prisoners] clear
/tp @a[0,3,0,10,team=!prisoners] -5 66 -31
/scoreboard players set @a[-5,66,-31,20,score_alarmCode=-1] alarmCode 0

С этого момента игрок полностью свободен, находится на спауне, к нему нет никаких претензий и уже невозможно будет узнать код нарушения, которое он совершил.

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

 

P.S.: чтобы посадить нарушителя в тюрьму ручками или выпустить его с помощью автоматизированной системы, нарушителю не обязательно находиться в игре, т.к. ССИС позволяет задавать значения переменных и менять команды для игроков в оффлайне...

 

 

Запрещённые предметы и дополнительные ограничения.

 

На нашем сервере запрещено носить некоторые предметы (читай - запрещено использование).

 

Для обеспечения дополнительной безопасности стратегических объектов всем игрокам запрещено переносить Жемчуг Края в зоне спауна:



/clear @a[x=140,y=10,z=-200,r=300,score_Admins=0] minecraft:ender_pearl

Кроме того, используется эдакая заглушка, которая позволяет запретить всеми игрокам, кроме админов, скрывать свой ник на Dynmap:



/dynmap show @a[score_Admins=0]

 

 

Беспроигрышная лотерея:

Спойлер

 

Из-за недостатка времени у представителей администрации на сервере почти не проводятся ивенты в их обычном понимании (ни что не вечно).

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

Админы (Admins=1) и новички (m=2) не участвуют в розыгрыше.



/give @r[m=0,score_Admins=0] minecraft:iron_ingot

 

 

Контроль за стандартными и искусственными деревенскими жителями:

Спойлер

 

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

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



/effect @e[type=Villager] minecraft:instant_damage 2 5

Убийство происходит эффектом "Мгновенный урон", т.к. нам необходимо сохранить спец.жителей, которые обслуживают нужды игроков при торговле с сервером, но по установленным администрацией ценам, а команда /kill убивала бы всех без разбора.

Спец.жители создаются с помощью командных блоков и настроенной команды /summon с параметром бессмертия ("Invulnerable:1").



/summon Villager ~ ~ ~ {Invulnerable:1,CustomName:Глиномес,CustomNameVisible:1,Profession:3,Offers:{Recipes:[{maxUses:999999,buy:{id:3,Count:1},buyB:{id:388,Count:1},sell:{id:82,Count:1}},{maxUses:0,buy:{id:51,Count:1},sell:{id:51,Count:1}},]},}

Поэтому, в теории всё должно было быть хорошо...

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

 

Однако, почему-то умирают и "бессмертные" жители, что навело нас на несколько колхозных мыслей: попробовать задрать параметр количества жизней спец.жителям до небес, чтобы они только через год умирали, или подкладывать под них командные блоки с нажимными плитами, чтобы они ходили по ним и сами себя лечили.

 

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

 

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

Поэтому мы хотим раздавать игрокам спец.жителей с особыми настройками сделок, однако для этого нам нужна возможность обновления "устаревших" спец.жителей хотя бы по заявкам от владельцев.

 

Для этого нам нужны параметры, по которым можно было бы исключать выборочно любых спец.жителей, не меняя их отображаемых имён, и так, чтобы обычные игроки не могли вносить изменения.

 

На данный момент мы можем только задавать нестандартные параметры, но проверять в командных блоках можем только параметр "name".

Но этот параметр может изменить любой игрок.

И на данный момент единственная возможность избежать этого - это задать параметр "name" сразу в команде при создании искусственного жителя: тогда - как бы не меняли имя жителю игроки, командным блоком всегда можно проверить исходное имя и убить всех неверных.

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

 

В общем, над этим пока ещё работаем :)

 

 

 

Изменение свойств мобов:

Спойлер

 

С 27 августа 2015 года в тестовом режиме запущена система, автоматически увеличивающая силу мобов в ночное время.

Сделано это в рамках общего усложнения игрового процесса на сервере (см. п.п. 6.1).

 

Реализация очень простая: с помощью датчика света поздно вечером подаётся сигнал на командные блоки, которые раздают всем мобам в обычном мире эффекты ограниченной длительности (7 минут = длительность ночи).



/effect @e[type=!Player] minecraft:strength 420 0
/effect @e[type=!Player] minecraft:speed 420 0
/effect @e[type=!Player] minecraft:resistance 420 1

 

 

Контроль перемещения игроков в режиме "наблюдение":

Спойлер

 

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

Я не смог сделать это прямым путём, по типу как в креативе (хотя, вроде бы, есть какие-то параметры полёта в игре).

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

 

Добавил обработку спектаторов: обычные игроки в режиме спектатора не смогут опуститься ниже высоты Y=65, а админы могут.

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

Кроме того, на спектаторов действуют стандартные частные охранные системы: поэтому спектаторам также необходимо следить за маршрутами своих полётов и не пролетать над частными территориями без явного и неопровержимого согласия владельца  :)

/tp @a[-3000,65,-3000,dx=6000,dy=-65,dz=6000,m=3,score_Admins=0] ~ ~50 ~

Как работает эта команда?

 

Размер карты - 6000х6000. Командный блок проверят пространство от точки с координатами x=-3000 y=65 z=-3000 до точки с координатами x=3000 y=0 z=3000. Командный блок воздействует только на игроков в режиме "Спектатор" (m=3), но исключает админов (score_Admins=1). Спектаторы просто телепортятся на 50 клеток вверх.

 

 

 

Обеспечение равных условий для всех участников во время проведения ивентов:

Спойлер

 

С 10 января 2015 года в систему интегрировано условие недействительности всех эффектов для любых игроков в зоне арены для ивентов.

Таким образом реализовано равноправие всех участников состязаний в зоне арены: при входе на ринг у всех бойцов снимаются все эффекты и игроки становятся в равные условия, играя по оговоренным между собой правилам. Новые эффекты не накладываются, т.к. это прописано в командных блоках.

По сути, зона арены стала зоной свободного пвп, где игроки вынуждены договариваться между собой без привлечения и без предъявления претензий и жалоб администрации.

 

Данное условие реализовано с помощью ограничения минимального радиуса действия с началом координат в центре арены.

* примерно с августа 2015 года изменилась система автоматического отключения эффектов в зонах проведения ивентов - надо немного переписать этот фрагмент описания...
 

Изначально одна из команд выглядела достаточно просто:

/effect @a[m=2] 18 999999 2

С этим дополнением она усложняется указанием центра координат и минимальным радиусом действия конкретного командного блока:

/effect @a[167,65,-134,rm=10,m=2] 18 999999 2

где:

 

 - @a: указатель цели на всех игроков;

 - 167,65,-134: координаты центра зоны действия конкретного командного блока (отсутствие явно заданных координат = координаты расположения блока, в который вписана эта команда; координаты можно указывать в упрощённом виде, как в примере или для удобства - явно: "x=167,y=65,z=-134");

 - rm=10: минимальный радиус действия;

 - m=2: условие действия только на игроков в режиме приключение;

 - 18эффект слабости;

 - 99999: длительность действия;

 - 2: уровень эффекта.

 

 

 

Гильдии и навыки:

Спойлер

 

Пока ещё не описал...

 

 

 

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Завидую Оцелоту)

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

Короче это проще и стабильнее.

И красивенько  :D

А говорил "нет", ага ага  :D

Изменено пользователем Rock_tea
  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, Оцелот, помнишь идею с пометкой игроков из кланов соответствующим цветом эффекта glow?

Может, попробуем реализовать?

Можешь попробовать подключить в ЦНС блоки с покраской игроков из соответствующих кланов?

 

И ещё: если теперь не нужен ред, и, если игра это позволяет, можно кб ставить друг на друга - стеной и подписывать табличками :)

Можно группировать столбиками по смыслу, можно рядами, можно в кучу )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, Оцелот, помнишь идею с пометкой игроков из кланов соответствующим цветом эффекта glow?

Может, попробуем реализовать?

Можешь попробовать подключить в ЦНС блоки с покраской игроков из соответствующих кланов?

Не помню. Да и нереализуемо это. Эффект свечения (и как эффект, и как тег) выдаёт цвет ника, который зависит от цвета команды. А ещё это свечение просвечивает через все блоки даже при невидимости = сведение любой маскировки на нет.

 

Свинья с тегом 'Glowing:1' (то же самое, что соответствующий эффект, но неограниченный по времени) в команде Trader_I:

3vofD8F.png

Изменено пользователем OcelotJungle

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Ну, ладно - жаль, что эта херня выдаёт маскировку )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю, куда лучше написать. Напишу здесь.

Ответственно заявляю, что теперь никто кроме Оцелота не знает, как функционирует этот сервер :D

  • Плюс 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Если интересует, то прошу описать, что происходит при добавлении через замену профиля. Изменение содержимого сундука края, игрового режима, сброс команд и всё прочее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Ну, наверное, это будет удобнее, чем заставлять игроков выходить из игры + в случае, если админ, например, в отпуске.

На всякий случай уточню, что всё равно будет очень не желательно добавлять игроков по своему усмотрению, а лучше оставить эту ответственность на мне.

 

Вот, что меняется при добавлении игрока:

  • режим игры
  • убираются отрицательные эффекты
  • отчёркивается ник (это ты сам сделал)
  • в сундук Края кладётся "старт-ап"

 

Вроде бы, всё остальное не актуально, т.к. является побочным действием добавления игрока.

Кроме того, все необходимые обработки новичков происходят автоматически - ещё до добавления к игровому процессу и также не влияют на процесс добавления игрока.

 

P.S.: написав это, я и сам вижу, что всё это можно сделать тупо проверкой переменной )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расширили помещение ЦНС для установки схемы метро.
Охранную систему переделал, изменив только одну координату Z.

 

Оцелот, постарайся не захламлять появившееся пространство - итак ад из табличек и нагромождений кб :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал автоудаление вагонеток из 5 Кб (4 удаляют и 1 ведёт статистику)

1. /execute @e[type=MinecartRideable,name=Metro] ~ ~ ~ /execute @p[r=3] ~ ~ ~ /scoreboard players tag @e[type=MinecartRideable,name=Metro,r=3,c=1] add MetroMCwp
2. /scoreboard players add @e[type=MinecartRideable,name=Metro,tag=!MetroMCwp] LifeTime 1
3. /kill @e[type=MinecartRideable,name=Metro,tag=!MetroMCwp,score_LifeTime_min=10]
4 (условный). /scoreboard players add #StatsMetroKill CustomID 1
5. /scoreboard players reset @e[type=MinecartRideable,name=Metro,score_LifeTime_min=1,tag=MetroMCwp] LifeTime
6. /scoreboard players tag @e[type=MinecartRideable,name=Metro,tag=MetroMCwp] remove MetroMCwp

Теперь, если в пределах нескольких блоков от вагонетки с именем "Metro" нет игрока 10 циклов ЦНС (1 цикл длиной в 3,2 секунды => 10 циклов = 32 секундам), то она удаляется.

Изменено пользователем OcelotJungle
  • Плюс 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

@OcelotJungle, если не сложно, добавь плиз новичкам и мультам, добавленным к игровому процессу -  разовое насыщение на 5-10 часов, т.к. ввели новую систему голода после консультаций и тестов с игроками в игре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.09.2016 в 17:32, Admin сказал:

@OcelotJungle, если не сложно, добавь плиз новичкам и мультам, добавленным к игровому процессу -  разовое насыщение на 5-10 часов, т.к. ввели новую систему голода после консультаций и тестов с игроками в игре.

Сделал.

  • Плюс 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

@OcelotJungle, если не сложно, можно попросить тебя убрать из стартапа хлеб и заменить его какой-нибудь жаренной говядиной? Стека 4 хотя бы положить. А то новички жалуются, что слишком часто мрут и насыщение пропадает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 23.09.2016 в 00:51, Admin сказал:

@OcelotJungle, если не сложно, можно попросить тебя убрать из стартапа хлеб и заменить его какой-нибудь жаренной говядиной? Стека 4 хотя бы положить. А то новички жалуются, что слишком часто мрут и насыщение пропадает.

Заменил 16 хлеба стаком стейков. Имхо, более чем достаточно. По сути, аналог двум стакам хлеба.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

28 минут назад, OcelotJungle сказал:

Заменил 16 хлеба стаком стейков. Имхо, более чем достаточно. По сути, аналог двум стакам хлеба.

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

Спасибо )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цитата

Использование всяких set block = отстою типа GO TO

вот, в идеале сделать рефакторинг и избавиться от такого беспорядка ))))

Надо будет навести порядок во всей автоматике в 2017 году ))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 минуты назад, Admin сказал:

Использование всяких set block = отстою типа GOTO

Не спорю, но иногда без этого не обойтись. Например, когда логика сильно ветвится, а места нет.

 

45 минут назад, Admin сказал:

Надо будет навести порядок во всей автоматике в 2017 году ))))

"В понедельник бегать начну".

 

А откуда вообще эта цитата?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Рок задавал вопросы.

И да, setblock незаменим, но порядок надо навести )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал выдачу всем видам лошадей тега isHorse для работы лифта лошадей в ЖК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

7 часов назад, OcelotJungle сказал:

Сделал выдачу всем видам лошадей тега isHorse для работы лифта лошадей в ЖК.

Тупой вопрос: то есть в ЖК можно поднять только лошадей? А лам или мулов? Пёсиков, котов?

 

Что-нибудь из этого нужно или забьём?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

45 минут назад, Admin сказал:

Тупой вопрос: то есть в ЖК можно поднять только лошадей? А лам или мулов? Пёсиков, котов?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

29 минут назад, Admin сказал:

Ок )
А когда будем прощаться с кб по гильдиям? Или уже? :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Достижения

Пофиксили команду выдачи кровяки :)

Теперь она выдаётся только на ближайшего противника + на игроков при ПвП тоже )))
/execute @a[score_DamageDealt_min=1] ~ ~ ~ /execute @e[r=5,rm=1,c=1,type=!Item] ~ ~ ~ /particle reddust ~ ~1 ~ 0.15 0.15 0.15 0 80

 

Нюанс только один: если вы атакуете кого-то, но между вами есть ещё кто-то, то кровяка нарисуется на том, кто ближе к вам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×