Моделлер
Участник
Пользователь
- Сообщения
- 1,560
- Реакции
- 1,573
- Помог
- 2 раз(а)
Для начала смотрим видео спрайта совместного с солнцем и луной
И вот что мне нужно
Я сейчас выдаю отдельные спрайты на солнце и луну
А хочу поставить один спрайт и что-бы отдельные фреймы выставлялись на определённые события
Вот все открывки из кода
Здесь,если у меня грузится день - то выставляется солнце SUN
А если ноч - то луна MOON
И вот нужно прям у этой функции выставить,если день - то фрейм 0 солнца из спрайта и цвет его жёлтый
А если ноч - то выставить фреймы из 1го к 12 фрейму из спрайта ,но что-бы он был оригинального уже цвета ,как мы видели на видео без покраски,но и что-бы уже анимировал по кругу эти же фреймы
Вот и всё
Сделали такой код
И 2 проблемы
1.Цепляет на режим луны 0 фрейм солнца совместно
2.Анимирует спрайт с задержкой ( на видео видно )
И вот что мне нужно
Я сейчас выдаю отдельные спрайты на солнце и луну
Код:
#define SUN "sprites/weather_system/sun.spr"
#define MOON "sprites/weather_system/moon.spr"
Код:
#define SUN_MOON "sprites/weather_system/sun_moon.spr"
Здесь,если у меня грузится день - то выставляется солнце SUN
А если ноч - то луна MOON
Код:
Create_Sun_Moon(spawn_position_index)
{
new iEntity = create_entity("env_sprite");
if(!pev_valid(iEntity))
return;
static Float:vecOrigin[3];
pev(iEntity, pev_origin, vecOrigin);
Set_Spawn_Position(spawn_position_index, vecOrigin);
set_pev(iEntity, pev_classname, CLASSNAME_SUN_MOON);
set_pev(iEntity, pev_solid, SOLID_NOT);
set_pev(iEntity, pev_scale, SIZE_SUN_MOON);
engfunc(EngFunc_SetOrigin, iEntity, vecOrigin);
engfunc(EngFunc_SetModel, iEntity, (g_iWeather_Sun_Moon == Weather_Moon) ? MOON : SUN);
set_kvd(0, KV_KeyName, "framerate");
set_kvd(0, KV_Value, "11.0");
dllfunc(DLLFunc_KeyValue, iEntity, 0);
dllfunc(DLLFunc_Spawn, iEntity);
engfunc(EngFunc_SetSize, iEntity, Float:{-50000.0, -50000.0, -50000.0}, Float:{50000.0, 50000.0, 50000.0});
}
А если ноч - то выставить фреймы из 1го к 12 фрейму из спрайта ,но что-бы он был оригинального уже цвета ,как мы видели на видео без покраски,но и что-бы уже анимировал по кругу эти же фреймы
Вот и всё
Сделали такой код
И 2 проблемы
1.Цепляет на режим луны 0 фрейм солнца совместно
2.Анимирует спрайт с задержкой ( на видео видно )
Код:
#define SUN_MOON "sprites/weather_system/sun_moon.spr"
new g_iTaskFrame = 1 // для счетчика индексов луны
new Float:g_fSpeedFrame = 0.1 // скорость смены кадров
new szFrameText[8]
public plugin_init()
{
register_think(CLASSNAME_SUN_MOON, "sun_moon_think")
}
Create_Sun_Moon(spawn_position_index)
{
new iEntity = create_entity("env_sprite");
if(!pev_valid(iEntity))
return;
static Float:vecOrigin[3];
pev(iEntity, pev_origin, vecOrigin);
Set_Spawn_Position(spawn_position_index, vecOrigin);
set_pev(iEntity, pev_classname, CLASSNAME_SUN_MOON);
set_pev(iEntity, pev_solid, SOLID_NOT);
set_pev(iEntity, pev_scale, SIZE_SUN_MOON);
set_pev(iEntity, pev_rendermode, kRenderTransAlpha)
set_pev(iEntity, pev_renderamt, 255.0)
engfunc(EngFunc_SetOrigin, iEntity, vecOrigin);
engfunc(EngFunc_SetModel, iEntity, SUN_MOON);
set_kvd(0, KV_KeyName, "framerate");
set_kvd(0, KV_Value, "11.0");
dllfunc(DLLFunc_KeyValue, iEntity, 0);
dllfunc(DLLFunc_Spawn, iEntity);
engfunc(EngFunc_SetSize, iEntity, Float:{-50000.0, -50000.0, -50000.0}, Float:{50000.0, 50000.0, 50000.0});
set_pev(iEntity, pev_nextthink, get_gametime() + g_fSpeedFrame)
}
public sun_moon_think(iEntity)
{
if(!pev_valid(iEntity))
return;
if(g_iWeather_Sun_Moon == Weather_Moon)
{
formatex(szFrameText, 8, "%d.0", g_iTaskFrame++)
set_kvd(0, KV_KeyName, "framerate");
set_kvd(0, KV_Value, szFrameText);
dllfunc(DLLFunc_KeyValue, iEntity, 0);
g_iTaskFrame++
if(g_iTaskFrame == 13)
{
g_iTaskFrame = 1
}
}
else
{
set_kvd(0, KV_KeyName, "framerate");
set_kvd(0, KV_Value, "0.0");
dllfunc(DLLFunc_KeyValue, iEntity, 0);
set_pev(iEntity, pev_rendercolor, {250.0, 250.0, 0.0})
}
set_pev(iEntity, pev_nextthink, get_gametime() + g_fSpeedFrame)
}