MSFD Присваивание случайных значений переменным
[no fix] Random, value_enum
Set my_variable to Random, 50
Введение в скрипт некоторой неопределенности — отличная возможность, и она может быть реализована функцией Random.
Random возвращает значения между 0 и установленным значением–1.
Так, в примере выше, my_variable примет значение между 0 и 49.
Заметьте, что глобальная переменная типа short Random100 принимает новые случайные значения между 0 и 100 в каждом кадре в игровом скрипте, так что вы можете использовать и ее.
Примечание: Для любого вызова Random с верхней границей больше 100, вариабельность возвращаемой величины становится все меньшей, вплоть до Random, 255, при котором получаются только 0 или 1, а любые попытки вызвать функцию при 256 приводят к вылету. (Морровинд и Трибунал).
Это исправлено в Bloodmoon, так что там получается более ровное распределение вероятности и в интервалах, превышающих 100.
Но вылет при 256 и 512, и т.д., все еще происходит (Информация от Neko).
Также было обнаружено, что иногда верхняя граница функции Random устанавливается гораздо выше, чем заданное число.
Установка верхней границы в одно из следующих чисел приводит к странному результату – возвращаемое число находится около 1100: 65, 66, 68, 70, 71, 76, 77, 79, 82, 83, 84.
begin AAA0000_animItem
;рандомная анимация
;*****************************************************************
short RandomPF ; т.е. Random можно дополнять уникальными "значениями" Random50, Random100, RandomMy1, RandomPoRovNu и пр.
short Doonce
;**************************************
DontSaveObject
;**************************************
if ( menumode == 1 )
return
endif
;**************************************
If ( doonce == 1 ) ;блокировка повтора просчета рандома. Т.е. состояние объекта сохранится и не будет пересчитано заново.
return
endif
;**************************************
if ( RandomPF == 1 )
PlayGroup IDLE, 1
set Doonce to 1
elseif ( RandomPF == 2 )
PlayGroup IDLE2, 1
set Doonce to 1
elseif ( RandomPF == 3 )
PlayGroup IDLE3, 1
set Doonce to 1
elseif ( RandomPF == 4 )
PlayGroup IDLE4, 1
set Doonce to 1
elseif ( RandomPF == 5 )
PlayGroup IDLE5, 1
set Doonce to 1
elseif ( RandomPF == 6 )
PlayGroup IDLE6, 1
set Doonce to 1
elseif ( RandomPF == 7 )
PlayGroup IDLE7, 1
set Doonce to 1
elseif ( RandomPF >= 8 )
PlayGroup IDLE8, 1
set Doonce to 1
return
endif
if ( GetDistance Player <= 3072 )
set RandomPF to Random 10
return
endif
;*****************************************************************
end