Level 2
Класс: Клерик
Характер: Neutral Evil
Раса: Эльф
|
Спаунер/анспаунер для гвардов (Утром открывается дверь и появляется гвард идет на свой пост или свои вэйпы, несет службу весь день или ночь, когда приходит время идет обратно к двери если у него есть ключ то открывает ее, если нет то стучит и ему открывают, можно использовать и для спауна и обычных нпсов, если не много изменить :D ). В вараблах двери создаем переменные DAYTIMEGUARD string “resref npc”, если гвард не нужен то "" NIGHTTIMEGUARD string “resref npc”, если гвард не нужен то "" GATESGUARD string “resref npc”, если гвард не нужен то "" На onhb двери вешаем :
Neverwinter Script Source | /* door_guardspaw_5 Spawner for guards. */ //#include "kv_tools" void main() { //-- string sDaytimeGuard = "MOB_DAYTIMEGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); object oDaytimeGuard = GetObjectByTag(sDaytimeGuard); //-- string sNighttimeGuard = "MOB_NIGHTTIME" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); object oNighttimeGuard = GetObjectByTag(sNighttimeGuard); //-- string sGatesGuard = "MOB_GATESGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); object oGatesGuard = GetObjectByTag(sGatesGuard); //--Spawn day guard--// if ( GetIsDay() && !GetIsObjectValid(oDaytimeGuard) && GetLocalString(OBJECT_SELF, "DAYTIMEGUARD") != "")
{ ActionOpenDoor(OBJECT_SELF); object oNewGuard = CreateObject(OBJECT_TYPE_CREATURE, GetLocalString(OBJECT_SELF, "DAYTIMEGUARD"), GetLocation(OBJECT_SELF), 0, sDaytimeGuard);
/* if (GetIsObjectValid(oNewGuard)) { DebugMessage(GetTag(OBJECT_SELF) + ": Guard " + sDaytimeGuard + " spawned sucsesfull"); }*/ //--Spawn Night Guard--// } else if ( GetIsNight() && !GetIsObjectValid(oNighttimeGuard) && GetLocalString(OBJECT_SELF, "NIGHTTIMEGUARD") != "") { ActionOpenDoor(OBJECT_SELF); object oNewGuard = CreateObject(OBJECT_TYPE_CREATURE, GetLocalString(OBJECT_SELF, "NIGHTTIMEGUARD"), GetLocation(OBJECT_SELF), 0, sNighttimeGuard);
/* if (GetIsObjectValid(oNewGuard)) { DebugMessage(GetTag(OBJECT_SELF) + ": Guard " + sNighttimeGuard + " spawned sucsesfull"); }*/ //--Spawn Gate Guard--// } else if ( GetIsDusk() && !GetIsObjectValid(oGatesGuard) && GetLocalString(OBJECT_SELF, "GATESGUARD") != "") { ActionOpenDoor(OBJECT_SELF); object oNewGuard = CreateObject(OBJECT_TYPE_CREATURE, GetLocalString(OBJECT_SELF, "GATESGUARD"), GetLocation(OBJECT_SELF), 0, sGatesGuard); /*if (GetIsObjectValid(oNewGuard)) { DebugMessage(GetTag(OBJECT_SELF) + ": Guard " + sGatesGuard + " spawned sucsesfull"); }*/ } //-- if (GetIsNight() && GetIsObjectValid(oDaytimeGuard)) { SignalEvent(oDaytimeGuard, EventUserDefined(111));//TIME TO GO HOME:) SetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR", OBJECT_SELF); } else if (GetIsDay() && GetIsObjectValid(oNighttimeGuard)) { SignalEvent(oNighttimeGuard, EventUserDefined(111));//TIME TO GO HOME:) SetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR", OBJECT_SELF); } else if (GetIsDawn() && GetIsObjectValid(oGatesGuard)) { SignalEvent(oGatesGuard, EventUserDefined(111));//TIME TO GO HOME:) SetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR", OBJECT_SELF); } } |
На onopen
Neverwinter Script Source | /* door_guardspaw_8 Spawner for guards. */
void main() {
DelayCommand(5.0, ActionCloseDoor(OBJECT_SELF)); SetLocked(OBJECT_SELF, TRUE); //-- object oClicker = GetLastOpenedBy(); if ( GetIsPC(oClicker)) return; //-- string sDaytimeGuard = "MOB_DAYTIMEGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); //-- string sNighttimeGuard = "MOB_NIGHTTIME" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); //-- string sGatesGuard = "MOB_GATESGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); //-- if (GetTag(oClicker) == sDaytimeGuard || GetTag(oClicker) == sNighttimeGuard || GetTag(oClicker) == sGatesGuard) { DelayCommand(1.0, DestroyObject(oClicker)); }
} |
На onfailtoopen
Neverwinter Script Source | /* door_guardspaw_4 Spawner for guards. */
void main() { //-- object oClicker = GetClickingObject(); if (GetIsPC(oClicker)) return; //-- string sDaytimeGuard = "MOB_DAYTIMEGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); //-- string sNighttimeGuard = "MOB_NIGHTTIME" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); //-- string sGatesGuard = "MOB_GATESGUARD" + GetSubString(GetTag(OBJECT_SELF), 4, GetStringLength(GetTag(OBJECT_SELF))); //-- if (GetTag(oClicker) == sDaytimeGuard || GetTag(oClicker) == sNighttimeGuard || GetTag(oClicker) == sGatesGuard) {
AssignCommand(oClicker, SpeakString("*Ñòó÷èò â äâåðü*")); DelayCommand(1.0, ActionOpenDoor(OBJECT_SELF)); DelayCommand(1.5, DestroyObject(oClicker));
}
} |
В userdef нпса добавлете:
Neverwinter Script Source | //--стандартный ondef код--// ............................................ else if (nUser == 111) //TIME TO GO HOME:) {
if ( !GetIsInCombat() || GetCurrentAction() != ACTION_DIALOGOBJECT) { ClearAllActions(); ActionMoveToObject(GetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR")); ActionOpenDoor(GetLocalObject(GetArea(OBJECT_SELF), "THE_DOOR")); } } |
ЗЫ мой первый нвн скрипт так что если это тупо не смейтесь:) Чуть не забыл:) Дверь должна иметь тэг DOOR_7 символов (индификатор спаунера)
Сообщение отредактировал Ilharess - Nov 24 2004, 12:56
|