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

Операторы и выражения (statements)

Объявление локала и присваивание

let total = 0
total = total + loop-index
total += 5
list[0] = "first"
victim.health = 20
  • let name = <выражение> — явное объявление локала (= обязателен).
  • Обычное и составное присваивание: = += -= *= /= %=.
  • Цели: локал, $глобал, #player-переменная, list[i] / map[key] и свойства игрока (victim.health = 20 пишется через PlayerAccess.set).
  • Постфикс-инкремент: i++, i-- (и префиксные ++x, --x).

Ветвления

if victim is null:
    message "Nobody here."
    stop

else / else if поддерживаются, пустая строка между ветками разрешена:

if n < 2:
    return n
else if n < 10:
    return n * 2
else:
    return -1

Циклы

while i > 0:
    result = result + i + ","
    i = i - 1

loop n times:
    total = total + loop-index

for friend in online-players():
    message "Online: " + friend
  • while <условие>: — классический цикл.
  • loop <N> times: — ровно N итераций (times можно опустить); loop-index — номер итерации с нуля. Лимит и индекс хранятся в разных JVM-слотах (старый баг «цикл выполняется один раз» был именно здесь).
  • for <var> in <список>: — источник обязан быть списком (Values.toList).
  • break / continue — только внутри цикла, иначе ошибка компиляции.

Управление выполнением

Стейтмент Действие
stop Остановить обработчик (в функции — тоже выход)
return [expr] Вернуть значение из функции
cancel-event Эффект: отменить Bukkit-событие (если отменяемое)

Эффекты: вызовы без скобок

Эффекты можно писать в «голой» форме — имя + аргументы через пробел/запятую:

message "Healing " + target
give "DIAMOND" 3
log "FastScript routines are ready."

Эквивалент со скобками (message("hi")) тоже работает. Правило разбора: имя + начало нового выражения на той же строке (текст, число, переменная, true/false/null/not) = эффект; имя + ... с оператором = выражение. Отрицательные bare-аргументы пишите в скобках: damage(-5).

Тернарник

message "You are " + (victim is null ? "nobody" : victim)

Приоритет: ?: ниже всего, ветви — полные выражения.