Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

10.10. Как сделать плавное появление текста?

В: Как сделать плавное появление текста?

Как сделать плавное изменение цвета фона?

Как сделать плавное изменение цвета текста?

О:

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

Ниже, в качестве примера, приведён код проявления чёрного текста на белом фоне для локации-счётчика:

! заданные изначально (например при переходе на локацию) составляющие
! font['red']=255 & font['green']=255 & font['blue']=255 & ! составляющие цвета шрифта
! bg['red']=255 & bg['green']=255 & bg['blue']=255 & ! составляющие цвета фона
! fcolor=rgb(font['red'],font['green'],font['blue'])
! bcolor=rgb(bg['red'],bg['green'],bg['blue'])
! Текст будет проявляться примерно за 600 мс, нужно выставить settimer
! settimer 20
! чтобы код не выполнялся даже когда текст полностью проявится, переменной count['font']
! будет присвоена единица. Чтобы запустить выполнение кода, нужно присвоить этой переменной ноль
! count['font']=0

! непосредственно код

if count['font']=0:
! если коду разрешено выполняться
    
! при каждом обращении к локации-счётчику вычитаем из значения составляющих цвета шрифта по 8
    font['red']-=8
    font['green']-=8
    font['blue']-=8
    
! если значения достигли нуля, то они не могут опуститься ниже
    if font['red']<1: font['red']=0
    if font['green']<1: font['green']=0
    if font['blue']<1: font['blue']=0
    
! так же если значения достигли нуля, значит больше коду незачем выполняться
    if font['red']<1 and font['green']<1 and font['blue']<1: count['font']=1
    
! каждое обращение к локации-счётчику необходимо менять цвет шрифта
    fcolor=rgb(font['red'],font['green'],font['blue'])
    
! обновляем настройки интерфейса
    refint
! не забываем закрывать многострочные условия
end

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

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

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