Перейти к основному содержимому

20.21. Как сделать случайный предмет?

В: Как сделать случайный предмет?

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

В самом простом виде можно сделать так:

local i=rand(1,5)
if i=1:
act "Взять отвёртку":
addobj "Отвёртка"
! другой код
end
elseif i=2:
act "Взять кость":
addobj "Кость"
! другой код
end
elseif i=3:
act "Взять ржавую монету":
addobj "Ржавая монета"
! другой код
end
elseif i=4:
act "Взять шкуру тролля":
addobj "Шкура Тролля"
! другой код
end
elseif i=5:
act "Взять пачку масла":
addobj "Пачка масла"
! другой код
end
end

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

$items[0]='Отвёртка' 
$items[1]='Кость'
$items[2]='Гаечный ключ'
$items[3]='Человеческий череп'
$items[4]='Перфоратор'
$items[5]='Шкура тролля'
$items[6]='Пачка масла'
$items[7]='Яблоко'
$items[8]='Ржавая монета'
$items[9]='Упавшая звезда'
$item_rand = $items[rand(0,9)]
dynamic "
act 'Взять предмет <<$item_rand>>':
addobj '<<$item_rand>>'
! ... другой код ...
end
"

Здесь динамическое создание действия позволяет избежать ситуации, когда переменная $item_rand будет случайно удалена или изменена до выбора действия. Но если вы строго контролируете существование переменных, dynamic можно не использовать:

! ... заполнение массива $items
$item_rand = $items[rand(0,9)]

act 'Взять предмет <<$item_rand>>':
addobj $item_rand
! ... другой код ...
end

Примеры:

Так же см. Перемещение на случайную локацию.