Перейти к содержанию
Авторизация  
Admin

Глобальные переменные и фейковые игроки в майнкрафт

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

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

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

 

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

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

 


 

Некоторое время назад мы увидели упоминание о глобальных переменных (14w07a):

/scoreboard test используется для проверки находится ли показатель счёта между заданными значениями: например, /scoreboard players test #global anObjective 12 19

Я так и не понял, что такое "#global"??

Это же подставлено вместо ника игрока?

 

Я где-то читал (англ.), что символ "#" каким-то образом оперирует с фейковыми игроками...

In addition, fake players with names starting with a # will not show up in the sidebar under any circumstances.

Значения ненастоящих игроков, чьи имена начинаются на # из ССИС никогда не появятся на экране.

Типа, в данном случае, это какой-то фейковый игрок - как раз для использования в описанных ниже вариантах??

 

 

 

Вариант №1

Однако, если мы можем задать игроку в оффлайн значение переменной, то почему бы не сделать это сразу всем??  :)

scoreboard players set <player> <objective> <score> [dataTag]

Sets the player's score in objective to score, overwriting the previous score if it exists. "*" may be used in place of player to represent every player tracked by the scoreboard.

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

 

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

Что-то вроде фейковых игроков для хранения фейковых значений переменных?

Сейчас я использую для хранения важной статистики игрока BByaAdmin - и вешаю на него всю статистику...

Note that player does not need to be online or even exist.

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

 

P.S.: подразумевается, что на более ранних версиях нельзя было использовать способ из варианта ниже...

 

 

Вариант №2

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

Теперь можно проверять значение переменной любого игрока - хоть в оффлайне, хоть вообще не существующего!!  :)

Видимо, это и есть та самая система глобальных переменных ))

scoreboard players test <player> <objective> <min> [max]

Outputs whether or not player's score in objective is within the range min to max (inclusive).
If not specified or if "*" is used, max defaults to 2,147,483,647.
Using a "*" for min means -2,147,483,648. "*" may be used to represent all players tracked by the scoreboard.
Objective must exist, and player's score in it must exist and be at least min and no greater than max.

Note that player does not need to be online or even exist.

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


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

Гость Angelarab

В проекте есть около 30 глобальных переменных. Можно ли к ним обращаться чтение/запись из разных задач?

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


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

В проекте есть около 30 глобальных переменных. Можно ли к ним обращаться чтение/запись из разных задач?

К сожалению, не знаю.

Но думаю, что в майне можно всё :)

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


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

Как создать и использовать глобальную переменную в майнкрафт?
Как создать фейкового игрока в майнкрафт?

Так создаются фейковые игроки:
Scores for fake players that have a name beginning with "#" won't appear in the sidebar
 
Для работы команд ССИС игрок не должен находиться в онлайне и вообще его может не существовать (фейковый игрок):
Note that player does not need to be online or even exist.
 

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

Для этого просто задайте значение придуманной вами переменной (SpecialVariable) - придуманному вами фейковому игроку (TestFakePlayer):
 

/scoreboard players set #TestFakePlayer SpecialVariable 0

После выполнения такой команды в ССИС будет создан несуществующий игрок с ником "#TestFakePlayer" и ему будет присвоено значение переменной SpecialVariable=0.

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

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

/scoreboard players test <player> <objective> <min> [max]

objective must exist, and player's score in it must exist and be at least min and no greater thanmax. Note that player does not need to be online or even exist.

P.S.: надеюсь, что всё именно так и работает ))))

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


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

Блин, я уже писал про глобальные переменные, но вчера что-то не смог найти )))

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


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

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

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

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

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

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

Войти

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

Войти
Авторизация  

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

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

×