NSS
void RemoveEffectType(object oTarger, int nEffect)
{
effect eEffect = GetFirstEffect(oTarger);
while (GetIsEffectValid(eEffect))
{
if (GetEffectType(eEffect) == nEffect)
{
RemoveEffect(oTarger, eEffect);
}
eEffect = GetNextEffect(oTarger);
}}
void main()
{
if (GetArea(GetFirstPC()) != GetArea(OBJECT_SELF))
return;
if (GetTimeHour() == 8 && GetLocalInt(OBJECT_SELF, "Day") == FALSE)
{
SetLocalInt(OBJECT_SELF, "Day", TRUE);
SetLocalInt(OBJECT_SELF, "Night", FALSE);
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
RemoveEffectType(OBJECT_SELF, EFFECT_TYPE_VISUALEFFECT);
return;
}
if (GetTimeHour() == 20 && GetLocalInt(OBJECT_SELF, "Night") == FALSE)
{
SetLocalInt(OBJECT_SELF, "Night", TRUE);
SetLocalInt(OBJECT_SELF, "Day", FALSE);
effect eLight = EffectVisualEffect(170);
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, OBJECT_SELF);
return;
}
// Вообще, проще использовать: GetDay, GetNight.
}
{
effect eEffect = GetFirstEffect(oTarger);
while (GetIsEffectValid(eEffect))
{
if (GetEffectType(eEffect) == nEffect)
{
RemoveEffect(oTarger, eEffect);
}
eEffect = GetNextEffect(oTarger);
}}
void main()
{
if (GetArea(GetFirstPC()) != GetArea(OBJECT_SELF))
return;
if (GetTimeHour() == 8 && GetLocalInt(OBJECT_SELF, "Day") == FALSE)
{
SetLocalInt(OBJECT_SELF, "Day", TRUE);
SetLocalInt(OBJECT_SELF, "Night", FALSE);
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
RemoveEffectType(OBJECT_SELF, EFFECT_TYPE_VISUALEFFECT);
return;
}
if (GetTimeHour() == 20 && GetLocalInt(OBJECT_SELF, "Night") == FALSE)
{
SetLocalInt(OBJECT_SELF, "Night", TRUE);
SetLocalInt(OBJECT_SELF, "Day", FALSE);
effect eLight = EffectVisualEffect(170);
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, OBJECT_SELF);
return;
}
// Вообще, проще использовать: GetDay, GetNight.
}
По поводу второго вопроса, посмотри в ПЛ там это было реализовано.
