-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я думаю, что нам нужны светлые места на карте, чтобы было легче с нашим ночным режимом, поэтому я решил сделать такую шнягу. Этот код добавляет ярлыки в места, где находятся оригинальные огни на карте, Вам просто нужно получить host_state, это не должно быть сложно.
Также возможно сделать свет того же цвета, что и на карте, но я не стал с этим беспокоиться. Также я уже добавил небольшую оптимизацию, чтобы огни угасали,если они далеко.
Сам код:
Скриншоты:
Также возможно сделать свет того же цвета, что и на карте, но я не стал с этим беспокоиться. Также я уже добавил небольшую оптимизацию, чтобы огни угасали,если они далеко.
Сам код:
Код:
if (g_Options.world_lights)
{
int lightCount = *(int*)(*host_state + 168);
for (int i = 0; i < lightCount; ++i)
{
Vector pos = *(Vector*)((i * 100) + *(int*)(*host_state + 172));
Color color = Color(255, 0, 0, 255);
if (g_LocalPlayer->IsAlive())
{
Vector lPos = g_LocalPlayer->GetEyePos();
float dist = pos.DistTo(lPos);
if (dist > 1000)
continue;
color[0] *= 1 - fminf(1, fmaxf(0, dist - 700) / 300);
color[1] *= 1 - fminf(1, fmaxf(0, dist - 700) / 300);
color[2] *= 1 - fminf(1, fmaxf(0, dist - 700) / 300);
}
dlight_t* dLight = g_Effects->CL_AllocDlight(i);
dLight->key = i;
dLight->color.r = (unsigned char)color.r();
dLight->color.g = (unsigned char)color.g();
dLight->color.b = (unsigned char)color.b();
dLight->color.exponent = true;
dLight->flags = 0;
dLight->m_Direction = pos;
dLight->origin = pos;
dLight->radius = 500;
dLight->die = g_GlobalVars->curtime + 0.1f;
dLight->decay = 20.0f;
}
}