СЕРИЯ "СКРИПТЫ СТАРОЙ БАЗЫ" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ DBCOLL'A"
автор::::::::::::DBColl:::::::::::::::::::: May 7 2003 скрипт на первое использование рычага отпирает и открывает дверь, на второе закрывает и захлопывает ее и тд. На "OnUsed" рычага
Neverwinter Script Source | void main() { object oDoor=GetNearestObjectByTag("ТЭГ_ДВЕРИ"); if(GetIsOpen(oDoor)) // если она открыта { AssignCommand(OBJECT_SELF,ActionCloseDoor(oDoor)); // захлопнуть дверь. действие привязанно к рычагу. SetLocked(oDoor,TRUE); // запереть дверь ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE); // рычаг переходит в другое положение } else if(!GetIsOpen(oDoor)) //иначе, если дверь не открыта { SetLocked(oDoor,FALSE);// отпереть дверь AssignCommand(OBJECT_SELF,ActionOpenDoor(oDoor)); // открыть дверь. ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE); // перевод рычага в другое положение } } |
************************************************************************************
Автор:::::::::::::::::DBColl:::::::::::::::::::::::::::::: May 8 2003 данный скрипт каждые 18 секунд убавляет хиты, если игрок более, чем на 15 футов от костра. (эмуляция действия холода)
Neverwinter Script Source | void main() { object oPC = GetFirstPC(); object oFlame = GetObjectByTag("тэг пламени"); int nSpeedOfDec = 3; // 3 раунда (за 18 секунд здоровье уменьшиться на 1 единицу) int nSpeed = GetLocalInt(oPC, "DecHealthSpeed"); // первый раз даже если такая переменная не заведена, значение будет == 0 if (nSpeed == nSpeedOfDec && GetDistanceBetween(oPC, oFlame) > 15.0) // проверяем сколько раундов прошло с последнего уменьшения Health // и расстояние до костра (15 метров) { effect eDamage = EffectDamage( 1, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); /// определяется кол-во повреждений и тип ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC); /// нанесение урона AssignCommand(oPC, ActionSpeakString("Блин, холодно однако...")); SetLocalInt(oPC, "DecHealthSpeed", 0); return; } else if (GetDistanceBetween(oPC, oFlame) < 15.0 && GetCurrentHitPoints(oPC) <= GetMaxHitPoints(oPC)) /// если дистанция 15 метров или меньше, то лечить 2 хитпоинта за раунд { effect eHeal = EffectHeal(2); ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oPC); return; } SetLocalInt(oPC, "DecHealthSpeed", nSpeed+1); } |
************************************************************************************
Автор:::::::::::::::::DBColl:::::::::::::::::::::::::::::: May 28 2003 Это скрипт командира охраны. Ему все солдаты (его фракции) отдают честь. ставится в UserDefined
Neverwinter Script Source | #include nw_i0_generic void main() { int nEvent = GetUserDefinedEventNumber(); if (nEvent == 1002) { object oNPC = GetLastPerceived(); if (GetFactionEqual(oNPC, OBJECT_SELF)) { if (GetLastPerceptionSeen() && GetDistanceToObject(oNPC) < 6.0f && GetLocalInt(oNPC, "GREATED") != 1) { SetLocalInt(oNPC, "GREATED", 1); AssignCommand(oNPC, ClearAllActions()); AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(OBJECT_SELF)))); AssignCommand(oNPC, ActionSpeakString("ЗдравиЯ желаю!")); AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE, 0.5f, 1.0f)); AssignCommand(oNPC, ActionDoCommand(WalkWayPoints())); DelayCommand(15.0f, SetLocalInt(oNPC, "GREATED", 0)); } } return; } } |
************************************************************************************
Автор:::::::::::::::::DBColl:::::::::::::::::::::::::::::: Feb 20 2004 Я вот смотрю-смотрю, жду, но что-то так никто и не догадался, как просто можно сделать всплывающую строку на триггере... Вот мой вариант: 1. Создать триггер в палитре. В ОнЭнтер нужен всего один универсальный скрипт! Этот юзаем мы в Проклятии.
Neverwinter Script Source | //:://///////////////////////////////////////////// //:: Name //:: Copyright © 2003 WRG! //::////////////////////////////////////////////// //:: Created By: DBColl //:: Created On: 7.09.2003 //::////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "triggered") > 0) return; string sStr = GetName(OBJECT_SELF); AssignCommand(oPC, SpeakString(sStr)); if (GetLockKeyTag(OBJECT_SELF) == "") SetLocalInt(OBJECT_SELF, "triggered", 1); } |
2. Создаем этот триггер в модуле, заходим в его свойства и в поле Name пишем текст, который должен всплыть над игроком при наступании на него!!! 3. В KeyTag вносим что-то (любое число!) и получаем постоянно всплывающий текст над всеми PC, кто войдет на него.
************************************************************************************
КОНЕЦ ЦИКЛА "СКРИПТЫ ДЯДЮШКИ DBCOLL'A" СЕРИИ "СКРИПТЫ СТАРОЙ БАЗЫ"
|