Разработчик
Скриптер
Пользователь
- Сообщения
- 258
- Реакции
- 262
- Помог
- 5 раз(а)
Код для плавного затемнения экрана игроку и такого же плавного возвращения яркости спустя определённое время. Автор кода - PRoSToTeM@
Код:
// Пример использования
MessageScreenFade(pTarget, FADE_IN_TIME, FADE_HOLD_TIME, FADE_OUT_TIME, FADE_COLOR, FADE_ALPHA);
Код:
// Сам код:
#define FADE_IN_TIME 2.0
#define FADE_HOLD_TIME 6.0
#define FADE_OUT_TIME 4.0
#define FADE_TIME (FADE_IN_TIME + FADE_HOLD_TIME + FADE_OUT_TIME)
#define FADE_COLOR 0, 0, 0 // цвет экрана игрока в RGB формате (по умолчанию 0, 0, 0)
#define FADE_ALPHA 255 // уровень непрозрачности экрана игрока (по умолчанию 255)
#define MESSAGE_SCREEN_FADE 98
#define FFADE_OUT 0x0001
#define FFADE_IN 0x0000
enum _:DATA_SCREENFADE_SIZE
{
Float:DSS_OutTime,
DSS_Red,
DSS_Green,
DSS_Blue,
DSS_Alpha
}
MessageScreenFade(const id, const Float:fInTime, const Float:fHoldTime, const Float:fOutTime, const iRed, const iGreen, const iBlue, const iAlpha)
{
message_begin(MSG_ONE, MESSAGE_SCREEN_FADE, _, id);
write_short(min(floatround(fInTime * 4096), 65535)); // в данном случае, short - это word, максимум ~16 секунд (без 1/4096)
write_short(65535);
write_short(FFADE_OUT);
write_byte(iRed);
write_byte(iGreen);
write_byte(iBlue);
write_byte(iAlpha);
message_end();
new aData[DATA_SCREENFADE_SIZE];
aData[DSS_OutTime] = _:fOutTime;
aData[DSS_Red] = iRed;
aData[DSS_Green] = iGreen;
aData[DSS_Blue] = iBlue;
aData[DSS_Alpha] = iAlpha;
set_task(fInTime + fHoldTime, "MessageScreenFadeOut", id, aData, sizeof aData);
}
public MessageScreenFadeOut(const aData[DATA_SCREENFADE_SIZE], const id)
{
message_begin(MSG_ONE, MESSAGE_SCREEN_FADE, _, id);
write_short(min(floatround(aData[DSS_OutTime] * 4096), 65535)); // в данном случае, short - это word, максимум ~16 секунд (без 1/4096)
write_short(0);
write_short(FFADE_IN);
write_byte(aData[DSS_Red]);
write_byte(aData[DSS_Green]);
write_byte(aData[DSS_Blue]);
write_byte(aData[DSS_Alpha]);
message_end();
}