Скриптики на головоломку. Тоесть не совсем головоломку... На закодированную дверь. У вас есть локация в которой есть дверь. Эта дверь изначально закрыта. Еще там есть N-ое количество плиток (Plate) на полу с любыми тегами, но именами букв. Например, плита с именем "р" и тегом..ну допустим "letter_r". И надо столько плит - из скольки букв состоит кодовое слово двери. Или можно больше чтоб запутать игрока. Если у вас на двери не кодовое слово, а целая фраза, тогда чтобы сделать пробел надо содать плиту с именем - "пробел". Все плиты должны быть Юзабельные(Usable). Еще там есть рычаг после дерганья которого проверяется тот код, который вы набрали наступая на плитки. Если он правильный - закодированная дверь открывается, если нет - набранный код сбрасывается и игрока ударяет током.
OnUsed любой плиты с именем-буквой
Neverwinter Script Source | ///////////////////////////////////////// ////// Script for Coded Door //////////// /////// OnUsed any plate //////////////// //////// Date: 10.07.2004 /////////////// ///////// Created by Avaddon //////////// /////////////////////////////////////////
void main() { string sCode = GetLocalString(GetObjectByTag("code_lock"),"code"); //code_lock - тэг рычага. string sName = GetName(OBJECT_SELF); object oCodedDoor = GetObjectByTag("coded_door"); //тэг запертой двери if (GetLocked(oCodedDoor)==TRUE) { if (sName=="пробел") { //прибавлЯет к набраному коду пробел. SetLocalString(GetObjectByTag("code_lock"), "code", sCode+" "); SendMessageToPC(GetLastUsedBy(),"Вы наступили на символ ["+sName+"]"); SendMessageToPC(GetLastUsedBy(),"Набранный код: ["+sCode+" ]"); ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE), GetLocation(OBJECT_SELF)); //создает эффект нажатиЯ плиты. } else { //прибавлЯет к набронному коду ту букву, которой называетсЯ плита. SetLocalString(GetObjectByTag("code_lock"), "code", sCode+sName); SendMessageToPC(GetLastUsedBy(),"Вы наступили на символ ["+sName+"]"); SendMessageToPC(GetLastUsedBy(),"Набранный код: ["+sCode+sName+"]"); ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE), GetLocation(OBJECT_SELF)); //создает эффект нажатиЯ плиты. } } else { SendMessageToPC(GetLastUsedBy(),"Хм..Эта плита запала в пол."); //если дверь уже открыта. } } |
OnUsed рычага с тэгом "code_lock"
Neverwinter Script Source | ///////////////////////////////////////// ////// Script for Coded Door //////////// /////// OnUsed some Lever /////////////// //////// Date: 10.07.2004 /////////////// ///////// Created by Avaddon //////////// /////////////////////////////////////////
void main() { string sNull=""; //пустой стринг на случай сброса кода. string sCode = GetLocalString(OBJECT_SELF,"code"); //стринг набранного кода object oCodedDoor = GetObjectByTag("coded_door"); //тэг запертой двери object oPC = GetLastUsedBy(); effect eOpen = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION); //эффект снЯтиЯ волшебных чар с двери.
if (GetLocked(oCodedDoor)==TRUE) { //кодовое слово-фраза длЯ открытиЯ двери - можете вписывать свое. if (sCode=="правильный код") { PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);//анимациЯ рычага DelayCommand(2.0,PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)); SetLocked(oCodedDoor, FALSE); //открывает дверь. ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eOpen,oCodedDoor,5.0); //эффект снЯтиЯ волшебных чар с двери. SendMessageToPC(GetLastUsedBy(),"Вы набрали правильный код. Волшебные чары пали и дверь открылась"); ActionOpenDoor(oCodedDoor); //анимациЯ открытиЯ двери SetLocalString(OBJECT_SELF,"code",sNull); //сброс кода } else { SendMessageToPC(GetLastUsedBy(),"Вы набрали неверный код."); AssignCommand (OBJECT_SELF, ActionCastSpellAtObject(SPELL_ELECTRIC_JOLT, oPC, PROJECTILE_PATH_TYPE_DEFAULT)); //ударЯет игрока током если код неверный. PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);//анимациЯ рычага DelayCommand(2.0,PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)); SetLocalString(OBJECT_SELF,"code",sNull); //сброс кода } } else { SendMessageToPC(oPC,"Дверь уже открыта."); //без комментариев } } |
Тестовый модуль можете скачать отсюда. Размер файла 9кб.
|