Миловидный Бегрюссунг

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени

|
СЕРИЯ "СКРИПТЫ ПРОКЛЯТИЯ ЛЕВОРА" ЦИКЛ "СКРИПТЫ ДЯДЮШКИ AIWAN'А"
Скрипт который позволяет при наличии надетой брони с определенным ТЕГом ходить во вражественном лагере :) Ну или где там вам надо...
Neverwinter Script Source | //::////////////////////////////////////////////// //:: Created By: WRG! Aiwan aiwan@e-mail.ru //:: Created On: 14.01.2004 //::////////////////////////////////////////////// //:: Скрипт проверки брони "Железного Трона" //:: у РС на фрегате "Отшельник" //::////////////////////////////////////////////// #include "NW_I0_GENERIC"
void main() { if (GetArea(OBJECT_SELF) != GetArea(GetFirstPC())) return; // Если РС нет в локации то возврат int nEvent = GetUserDefinedEventNumber(); if (nEvent == 1002) // Стандартный эвент на юзердеф { object oPC = GetLastPerceived(); object oNPC = OBJECT_SELF; object oArm = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC); // Предмет в слоте РС "броня" if (GetLastPerceptionSeen() && GetIsPC(oPC)) { if (GetTag(oArm) != "AM_ITM_IRONTRON" && GetLocalInt(oPC,"TRONE_ALARM") != 1) // Если Таг надетой брони не равен AM_ITM_IRONTRON и нет локалки тревоги { SetLocalInt(oPC, "TRONE_ALARM", 1); // Вы обнаружены и поднята тревога SetFacingPoint(GetPosition(oPC)); SpeakString("А ну стой, ты что тут вынюхиваешь?!"); AdjustReputation(oPC, oNPC, -100); DetermineCombatRound(oPC); } if (GetLocalInt(oNPC, "LOOK") != 1 && GetTag(oArm) == "AM_ITM_IRONTRON" && GetLocalInt(oPC,"TRONE_ALARM") != 1) { SetLocalInt(oNPC, "LOOK", 1); // Ставим локалку что бы часто не болтали AssignCommand(oNPC, ClearAllActions()); AssignCommand(oNPC, ActionDoCommand(SetFacingPoint(GetPosition(oPC)))); DelayCommand(16.0f, SetLocalInt(oNPC, "LOOK", 0)); int iRand = Random(10); switch (iRand) { case 0: { SpeakString("Займись делом, солдат!"); break; } case 1: { SpeakString("Привет, ты новенький?"); break; } case 2: { SpeakString("Смотри, скоро прибудут боссы..."); break; } case 3: { SpeakString("Ты откуда выполз?"); break; } case 4: { SpeakString("Ты чего тут делаешь?"); break; case 5: { SpeakString("Слушай, твои доспехи тебе не жмут?"); break; case 6: { SpeakString("Иди на пост!"); break; } case 7: { SpeakString("Я твою рожу не помню что-то..."); break; } case 8: { SpeakString("Эй, ты свой ведь? Да?"); break; } AssignCommand(oNPC, ActionDoCommand(WalkWayPoints())); } } } } } } return; } |
Дальше, два скрипта для запуска диалога в котором участвует НПС которого вы атакуете и диалог начинается с определенного нр у НПС. Скрипты финального боя с воином в модуле 3.
Neverwinter Script Source | //::////////////////////////////////////////////// //:: Copyright © 2004 WRG! www.wrg.ru //:: Name: oud_am_warrord //::////////////////////////////////////////////// /* UserDefined - СКРИПТ ЗАПУСКА СЦЕНЫ С ДАЛЛИКОМ */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 26.02.2004 //::////////////////////////////////////////////// void main() { int nEvent = GetUserDefinedEventNumber(); //======================= DAMAGED EVENT 1006 =================================== if (nEvent == 1006) { object oPC = GetFirstPC(); // Опишите своего РС как вам надо. object oCat = GetHenchman(oPC); object oWord = OBJECT_SELF; object oSlave1 = GetObjectByTag("AM_SKELLETON_SLAVE_01"); // Скелет - Раб 1 object oSlave2 = GetObjectByTag("AM_SKELLETON_SLAVE_02"); // Скелет - Раб 2 object oWPTrone = GetObjectByTag("WP_TRONE_WARRIOR"); int iCurHP = GetCurrentHitPoints(OBJECT_SELF); int iMaxHP = GetMaxHitPoints(OBJECT_SELF); int iD; //============================================================================== if (!GetIsPC(oPC) || !GetLocalInt(oPC, "DALLIK_HELP")) {return;} int Class = GetClassByPosition(1, oPC); // При разных классах надо нанести разное повреждение switch (Class) { case CLASS_TYPE_BARBARIAN:{iD = 200; break;} case CLASS_TYPE_BARD:{iD = 300; break;} case CLASS_TYPE_CLERIC:{iD = 250; break;} case CLASS_TYPE_DRUID:{iD = 300; break;} case CLASS_TYPE_FIGHTER:{iD = 200; break;} case CLASS_TYPE_MONK:{iD = 150; break;} case CLASS_TYPE_PALADIN:{iD = 200; break;} case CLASS_TYPE_RANGER:{iD = 250; break;} case CLASS_TYPE_ROGUE:{iD = 300; break;} case CLASS_TYPE_SORCERER:{iD = 300; break;} case CLASS_TYPE_WIZARD:{iD = 300; break;} }
if (GetIsPC(oPC) && ((iMaxHP - iD) >= iCurHP) && !GetLocalInt(oWord, "DALLIK_JAMP")) { SetLocalInt(oWord, "DALLIK_JAMP", TRUE); AssignCommand(oPC, ClearAllActions()); AssignCommand(oCat, ClearAllActions()); AssignCommand(OBJECT_SELF, ClearAllActions()); AssignCommand(oSlave1, ClearAllActions()); AssignCommand(oSlave2, ClearAllActions()); ExecuteScript("am_chang_fr_warr", OBJECT_SELF); // Скрипт меняет репутацию у участников боя // DelayCommand(0.5, ExecuteScript("am_scen_warr_03", oPC)); } } } |
Вот сам скрипт смены репутации:
Neverwinter Script Source | //::////////////////////////////////////////////// //:: Copyright © 2004 WRG! www.wrg.ru //:: name: am_chang_fr_warr //::////////////////////////////////////////////// /* ИЗМЕНЕНИЕ ФРАКЦИИ И ПЕРСОНАЛНЫХ ОТНОШЕНИЙ */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 23.03.2004 //::////////////////////////////////////////////// void main() { object oPC = GetFirstPC(); object oHen = GetHenchman(oPC); object oWord = GetObjectByTag("AM_WARRIOR_HORDE"); // Воин Орды object oSlave1 = GetObjectByTag("AM_SKELLETON_SLAVE_01"); // Скелет - Раб 1 object oSlave2 = GetObjectByTag("AM_SKELLETON_SLAVE_02"); // Скелет - Раб 2 location lClose = GetLocation(GetObjectByTag("AIWAN_CLOSE_ARENA")); //Скрыт.арена Aiwan'a object oNeutral = GetObjectByTag("AM_TRUE_NEUTRAL"); // Нейтральный НПС с фракцией ПОФИГИСТОВ ChangeFaction(oWord, oNeutral); ChangeFaction(oSlave1, oNeutral); ChangeFaction(oSlave2, oNeutral); //-------------------------------------- ClearPersonalReputation(oSlave1, oPC); ClearPersonalReputation(oPC, oSlave1); ClearPersonalReputation(oSlave1, oHen); ClearPersonalReputation(oHen, oSlave1); //-------------------------------------- ClearPersonalReputation(oSlave2, oPC); ClearPersonalReputation(oPC, oSlave2); ClearPersonalReputation(oSlave2, oHen); ClearPersonalReputation(oHen, oSlave2); //-------------------------------------- ClearPersonalReputation(oWord, oPC); ClearPersonalReputation(oPC, oWord); ClearPersonalReputation(oWord, oHen); ClearPersonalReputation(oHen, oWord); } |
СКРИПТ ЗАПРЕЩАЮЩИЙ МОНСТРАМ ВЫХОДИТЬ ИЗ ЛОКАЦИИ ВСЛЕД ЗА ИГРОКОМ
Neverwinter Script Source | //::////////////////////////////////////////////// //:: Copyright © 2004 WRG //:: a0_onareaexit //::////////////////////////////////////////////// /* СКРИПТ ЗАПРЕЩАЮЩИЙ МОНСТРАМ ВЫХОДИТЬ ИЗ ЛОКАЦИИ ВСЛЕД ЗА ИГРОКОМ */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 21.04.2004 //::////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC); object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC); object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC); object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC); object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC); object oJamp = GetTransitionTarget(OBJECT_SELF); //Чисто для моих земель, чтобы фамилиары не разгуливали где попало, пока их владельцы задумчиво стоят в области if (GetIsPC(oPC) && !GetIsPosessedFamiliar(oPC)) { AssignCommand(oPC, JumpToObject(oJamp)); AssignCommand(oAnimal, JumpToObject(oJamp)); AssignCommand(oDominated, JumpToObject(oJamp)); AssignCommand(oFamiliar, JumpToObject(oJamp)); AssignCommand(oHenchman, JumpToObject(oJamp)); AssignCommand(oSummoned, JumpToObject(oJamp)); } else { //Иначе наши монстрyaшки будут задумчиво покачиваться у двери, совершенно беззащитные AssignCommand(oPC, ClearAllActions()); } } |
|