Скриптер
Участник
Пользователь
- Сообщения
- 77
- Реакции
- 66
- Помог
- 1 раз(а)
Сток выполняет плавный блик света. Например, если день - он выполнит плавный переход в темноту и назад. Выполняется до тех пор, пока не вернётся в изначальный заданный свет (true). Например, был день, он будет понижать свет до ночи и назад до дня, или наоборот. Как-то так. Не знаю где может еще пригодиться, кроме как для погоды (удар грома)
C++:
#define DARKNESS_LIGHT_CHAR 'a' // Кромейшая тьма
#define NIGHT_LIGHT_CHAR 'd' // Ночь
#define DAY_LIGHT_CHAR 'f' // День
//ent think 0.1
Controller_Thunder(bool:bReset = false) {
static bool:bThunder = false, Float:fUpdateThunder, Float:fUpdateThunderLight, Float:fGameTime;
if(bReset) { fUpdateThunder = 0.0; }
fGameTime = get_gametime();
if(bThunder) {
if(fUpdateThunderLight > fGameTime) { return; }
fUpdateThunderLight = fGameTime + 0.2;
if(UTIL_SmootheDaylight(NIGHT_LIGHT_CHAR)) {
bThunder = false;
}
return;
} else {
if(fUpdateThunder > fGameTime) {
return;
}
bThunder = true;
fUpdateThunder = fGameTime + random_float(160.0, 200.0);
}
}
stock bool:UTIL_SmootheDaylight(iCharStart = NIGHT_LIGHT_CHAR, iCharEnd = DARKNESS_LIGHT_CHAR, bool:bReset = false) {
static bool:bInverse, szCurrentChar[2], bool:bUp;
if(szCurrentChar[0] == 0 || bReset) {
szCurrentChar[0] = iCharStart;
if(iCharStart > iCharEnd) { bInverse = true; bUp = true; }
else { bInverse = false; bUp = false; }
}
if(!bInverse) {
if(bUp) {
if(++szCurrentChar[0] >= iCharStart) {
UTIL_SetLight(szCurrentChar);
bInverse = true;
return true;
}
} else {
if(++szCurrentChar[0] >= iCharEnd) {
UTIL_SetLight(szCurrentChar);
bInverse = true;
return false;
}
}
} else {
if(bUp) {
if(--szCurrentChar[0] <= iCharEnd) {
UTIL_SetLight(szCurrentChar);
bInverse = false;
return false;
}
} else {
if(--szCurrentChar[0] <= iCharStart) {
UTIL_SetLight(szCurrentChar);
bInverse = false;
return true;
}
}
}
UTIL_SetLight(szCurrentChar);
return false;
}
stock UTIL_SetLight(szLight[2] = "", bitFlagsEF = 0) {
engfunc(EngFunc_LightStyle, bitFlagsEF, szLight);
}
C++