![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]() ![]()
Сообщение
#1
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
В данной теме разрешается писать только обучающимся. Если кто-то найдет в моих материалах грубую ошибку, то может сообщить мне или Лексу и мы поправим.
Во первых, забудьте что скрипты это трудно непонятно и сложно. Забудьте все то что бедный ваш мозг пытается обработать безуспешно и вы не можете понять простые вещи. Это нормально. Я буду говорить не по книгам а просто, описывая ситуацию или знания необходимые вам максимально понятно и по возможности проектировать это на бытовом уровне, оперируя образными картинками. Так как именно такие схемы будут работать в вашем случае. Ведь люди с математическим умом все схватывают сами и на лету. Итак начнем. Скрипт сам по себе это маленький файлик. Он работает как любой файл в программе. То что вы пишете в редакторе это NSS просто информация для компилятора, в игре то что написано вами не работает, а работает скомпилированный файл NSC. Поэтому написанное в редакторе и не компельнутое не работает. Как отличить код хорошего кодера от разгильдяя? По аккуратности и описаниям-комментариям. У тех, кто понимает скрипт все правильно, кто не понимает все кидает в кучу. Поэтому сразу учитесь писать красиво и понятно. Сделайте себе шапку для скриптов и пишите в ней, давая описания. В папке скриптов через пол года вы сможете понять кто и что сделал в скрипте и элементарно для чего вам он нужен. Это важно. Аккуратность. Пример шапки скрипта: Neverwinter Script Source //::////////////////////////////////////////////// //:: Name: //:: Copyright © 2006 WRG! Team //::////////////////////////////////////////////// /* Описание */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 06.10.2007 //::////////////////////////////////////////////// void main() { } Дальше. |
![]() |
![]()
Сообщение
#2
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
Что-то написал. Даже компилируется. Работает или нет - сказать не могу - не понятен нужный результат.
Для чего мы ставим и проверяем локалки? Откомментировал вопросами. [ OFFTOP ] Neverwinter Script Source void main( ) { object oTrigger = OBJECT_SELF; // То на чем стоит скрипт object oDoor = GetObjectByTag( "DOOR_AIWAN_01" ); // Наша дверь object oNpc; // Объявим НПС но не укажем, кто он именно object oPC = GetEnteringObject( ); // Тот кто НАСТУПИЛ на триггер string sSpeak = "Кто последний тот тухлый банан!"; if( GetIsPC( oPC ) == TRUE ) // Если это верно ТО выполняется то что между скобок { // ПЕРВАЯ открытая скобка /* ВТОРОЙ ВНУТРЕННИЙ БЛОК */ if ( GetLocalInt( oTrigger, "AIWAN_PC_DO_IT" )== 1 ) // Если локалка РАВНА 2 ТО: //почему "2"? не 1? { // ВТОРАЯ открытая скобка oNpc = GetNearestObjectByTag( "NPC_AIWAN" ); SetLocalInt( oTrigger, "AIWAN_PC_DO_IT", 2 ); SendMessageToPC( oPC, "Сработал второй блок" ); } // ВТОРАЯ закрытая скобка /* ТРЕТИЙ ВНУТРЕННИЙ БЛОК */ if ( GetLocalInt( oTrigger, "AIWAN_PC_DO_IT" ) == 0 ) { // ТРЕТЬЯ открытая oNpc = GetNearestObjectByTag( "NPC_AIWAN" ); SetLocalInt( oTrigger, "AIWAN_PC_DO_IT", 1 ); SendMessageToPC( oPC, "Сработал третий блок" ); } // ТРЕТЬЯ закрытая /* четвертый внутренний блок */ if ( GetLocalInt( oTrigger, "AIWAN_PC_DO_IT" ) == 0 ) //? { // четвертая открытая oNpc = GetNearestObjectByTag( "NPC_AIWAN" ); SetLocalInt( oTrigger, "AIWAN_PC_DO_IT", 3 ); //? SendMessageToPC( oPC, "Сработал четвертый блок" ); } // четвертая закрытая SendMessageToPC( oPC, "Сработал ОСНОВНОЙ блок" ); AssignCommand( oNpc, ClearAllActions( ) ); // Чистим стек команд AssignCommand( oNpc, SpeakString( sSpeak ) ); // Говорит фразу AssignCommand( oNpc, ActionForceMoveToObject( oDoor, TRUE ) ); // Бежит к двери } // ПЕРВАЯ закрытая скобка } |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 15:04 |