1. Опыт удаляем на вкладке Модульные свойства в
панели “Улучшенный”, тут можно задать опыт за уничтожение монстров, и выбрать длительность игрового часа, обычно час равен двум минутам реального времени. Учтите, что чем больше монстр имеет ХР, тем больше получит герой опыта…
2. Нужно повесить на героя локалку о отдыхе. а через определенное время ее снять. Вот для примера простой скриптик отдыха. Отдыхаем 1 час игрового времени и 10 минут реального не сможем воспользоваться отдыхом:
Neverwinter Script
//::///////////////////////////////////////////////
//:: Слот: OnPlayerRest - Модульные свойства
//::///////////////////////////////////////////////
//////// СНЯТЬ ЭФФЕКТЫ И ВЫЛЕЧИТЬ ГЕРОЯ /////////
void FakeRestore(object oTarget)
{
int nHeal = GetMaxHitPoints(oTarget) - GetCurrentHitPoints(oTarget);
effect eHeal = EffectHeal(nHeal);
effect eBad = GetFirstEffect(oTarget);
while(GetIsEffectValid(eBad))
{
RemoveEffect(oTarget, eBad);
eBad = GetNextEffect(oTarget);
}
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
}
/////////////////////////////////////////////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
int iTH = GetTimeHour();
int iRest = GetLocalInt(oPC, "REST");
/////////////////////////// START /////////////////////////////////////
if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED)
{
if(iRest==1) // Блокировка отдыха
{
SendMessageToPC(oPC, "Вы не можете так часто отдыхать!");
AssignCommand(oPC,ClearAllActions(TRUE));
return;
}
SetCommandable(FALSE, oPC); // заблокировать очередь
DelayCommand(4.0, FadeToBlack(oPC, FADE_SPEED_SLOW)); // Занавес из черного экрана
DelayCommand(18.0, FadeFromBlack(oPC, FADE_SPEED_SLOW)); // Уберем занавес
}
////////////////////////////// FINISH ///////////////////////////////////
if (GetLastRestEventType() == REST_EVENTTYPE_REST_FINISHED)
{
iTH = iTH+1;
SetTime(iTH,0,0,0);
SendMessageToPC(oPC, "Вы отдыхали 1 час.");
SetCommandable(TRUE, oPC); // разблокировать очередь
FakeRestore(oPC); // Если нужно удалить вредные эффекты
// ВРЕМЯ БЛОКИРОВКИ
SetLocalInt(GetFirstPC(),"REST",1);
DelayCommand(600.0, SetLocalInt(GetFirstPC(),"REST",0));
}
}