

Neverwinter Script Source |
void DestroyFirecamp(object oCampFire=OBJECT_SELF) { // Создаем обгорелое пятно на месте костра и гасим костер object oLandMark=CreateObject(OBJECT_TYPE_PLACEABLE,"plc_weathmark",GetLocation(oCampFire)); // Пятно исчезает через 120 секунд (2 реальных минуты, 1 игровой час). Менять по вкусу AssignCommand(oLandMark,DelayCommand(120.0,DestroyObject(oLandMark))); DestroyObject(oCampFire); } void ApplyRestEffect(object oTarget=OBJECT_SELF) { // Создаем эффекты сна. Функцию править по вкусу. effect eSleep=EffectBlindness(); if (GetRacialType(oTarget)==RACIAL_TYPE_ELF) { // Эльфы не спят, а впадают в транс (см. описание эльфов в D&D 3ed) if (GetGender(oTarget)==GENDER_FEMALE) FloatingTextStringOnCreature("Я вошла в транс",oTarget,FALSE); else FloatingTextStringOnCreature("Я вошел в транс",oTarget,FALSE); } else eSleep=EffectLinkEffects(eSleep,EffectVisualEffect(VFX_IMP_SLEEP)); // Эффект сна на 30 секунд. Менять по желанию. ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eSleep,oTarget,30.0); } object FindFood(object oTarget=OBJECT_SELF) { object oEnum=GetFirstItemInInventory(oTarget); while (GetIsObjectValid(oEnum) && (GetTag(oEnum)!="KEL_FOOD")) oEnum=GetNextItemInInventory(oTarget); return oEnum; } |
Neverwinter Script Source |
#include "kel_rest" void main() { object oPC=GetLastUsedBy(); if (!GetIsPC(oPC)) return; object oTorch=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC); if (GetIsObjectValid(oTorch) && (GetTag(oTorch) == "NW_IT_TORCH001") && // Флаг, висящий на области (например в таверне) и позволяющий отдыхать бесплатно (GetLocalInt(GetArea(oPC),"NoCampArea") != TRUE)) { object oFire=CreateObject(OBJECT_TYPE_PLACEABLE,"ku_campfire",GetLocation(OBJECT_SELF)); DestroyObject(OBJECT_SELF); // Огонь гаснет через 900 секунд (15 реальных минут или 7,5 игровых часов) // Менять по желаю AssignCommand(oFire,DelayCommand(900.0,DestroyFirecamp(oFire))); } else { CreateItemOnObject("kel_wood",oPC); DestroyObject(OBJECT_SELF); } } |
Neverwinter Script Source |
void main() { object oPC=GetModuleItemLostBy(); if (!GetIsPC(oPC)) return; object oItem=GetModuleItemLost(); if (!GetIsObjectValid(oItem)) return; string sResRef=GetTag(oItem); if (sResRef=="KEL_WOOD") { // Пропатчено by Milez on 14/05/2003, по намекам некоего Guest if (GetIsObjectValid(GetAreaFromLocation(GetLocation(oItem)))) { CreateObject(OBJECT_TYPE_PLACEABLE,"ku_woodpile",GetLocation(oItem)); DestroyObject(oItem); } } } |
Neverwinter Script Source |
#include "kel_rest" void main() { object oPC=GetLastPCRested(); if (GetCurrentAction(oPC)!=ACTION_REST) return; int iFreeRest=GetLocalInt(GetArea(oPC),"FreeRestArea"); if (iFreeRest) ApplyRestEffect(oPC); else { object oCampFire=GetNearestObjectByTag("ku_campfire",oPC); // нельзя отдыхать дальше 3 метров от костра (расстояние менять по вкусу) if (GetIsObjectValid(oCampFire) && (GetDistanceBetween(oPC,oCampFire)<=3.0)) { object oFood=FindFood(oPC); if (GetIsObjectValid(oFood)) { DestroyObject(oFood); ApplyRestEffect(oPC); } else { FloatingTextStringOnCreature("Мне надо перекусить",oPC,FALSE); AssignCommand(oPC,ClearAllActions()); } } else { FloatingTextStringOnCreature("Я не могу отдыхать далеко от костра",oPC,FALSE); AssignCommand(oPC,ClearAllActions()); } } } |
Neverwinter Script Source |
void main() { PlaySound("al_cv_firecamp1"); } |