Азы скриптинга NWN/NWN2, Итак, начинаем с самого начала... |
Здравствуйте, гость ( Вход | Регистрация )
Азы скриптинга NWN/NWN2, Итак, начинаем с самого начала... |
Oct 6 2007, 19:38
Сообщение
#1
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
В данной теме разрешается писать только обучающимся. Если кто-то найдет в моих материалах грубую ошибку, то может сообщить мне или Лексу и мы поправим.
Во первых, забудьте что скрипты это трудно непонятно и сложно. Забудьте все то что бедный ваш мозг пытается обработать безуспешно и вы не можете понять простые вещи. Это нормально. Я буду говорить не по книгам а просто, описывая ситуацию или знания необходимые вам максимально понятно и по возможности проектировать это на бытовом уровне, оперируя образными картинками. Так как именно такие схемы будут работать в вашем случае. Ведь люди с математическим умом все схватывают сами и на лету. Итак начнем. Скрипт сам по себе это маленький файлик. Он работает как любой файл в программе. То что вы пишете в редакторе это NSS просто информация для компилятора, в игре то что написано вами не работает, а работает скомпилированный файл NSC. Поэтому написанное в редакторе и не компельнутое не работает. Как отличить код хорошего кодера от разгильдяя? По аккуратности и описаниям-комментариям. У тех, кто понимает скрипт все правильно, кто не понимает все кидает в кучу. Поэтому сразу учитесь писать красиво и понятно. Сделайте себе шапку для скриптов и пишите в ней, давая описания. В папке скриптов через пол года вы сможете понять кто и что сделал в скрипте и элементарно для чего вам он нужен. Это важно. Аккуратность. Пример шапки скрипта: Neverwinter Script Source //::////////////////////////////////////////////// //:: Name: //:: Copyright © 2006 WRG! Team //::////////////////////////////////////////////// /* Описание */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 06.10.2007 //::////////////////////////////////////////////// void main() { } Дальше. |
Oct 13 2007, 02:58
Сообщение
#2
|
|
Level 4 Класс: Маг Характер: Chaotic Neutral Раса: Танар'ри |
[ OFFTOP ] В первом варианте к определение объекта (oNpc) было указано, как объект с заданным тагом, ближайший к двери (oDoor). Тот из трех неписей, который был ближе всех к двери к ней и побежал и произнес фразу. Neverwinter Script Source void main( ) { object oTrigger = OBJECT_SELF; // То на чем стоит скрипт object oDoor = GetObjectByTag( "DOOR_LIRA_01" ); // Наша дверь object oNpc = GetNearestObjectByTag( "NPC_LIRA", oDoor ); //Ближайший к двери объект object oPC = GetEnteringObject( ); // Тот кто НАСТУПИЛ на триггер string sSpeak = "Кто последний тот тухлый банан!"; // Фраза if( GetIsPC( oPC )) // ЕСЛИ тот кто наступил ИГРОК ТО ВЫПОЛНЯЕМ { AssignCommand( oNpc, ClearAllActions( ) ); // Чистим стек команд AssignCommand( oNpc, SpeakString( sSpeak )); // Говорит фразу AssignCommand( oNpc, ActionForceMoveToObject( oDoor, TRUE )); // Бежит к двери // Если убрать TRUE то НПС просто пойдет пешком... } } Во втором варианте изменилось определение объекта, то есть не было указано, ближайший к чему. Наверно, поэтому, к двери побежал тот непись, который был ближе к триггеру. Сменился приоритет объекта – по отношению к которому выбирался ближайший. Еще я убрала TRUE – непись действительно не побежал, а пошел! Neverwinter Script Source void main( ) { object oTrigger = OBJECT_SELF; // То на чем стоит скрипт object oDoor = GetObjectByTag( "DOOR_LIRA_01" ); // Наша дверь object oNpc = GetNearestObjectByTag( "NPC_LIRA" ); //Ближайший к триггеру объект object oPC = GetEnteringObject( ); // Тот кто НАСТУПИЛ на триггер string sSpeak = "Кто последний тот тухлый банан!"; // Фраза if( GetIsPC( oPC )) // ЕСЛИ тот кто наступил ИГРОК ТО ВЫПОЛНЯЕМ { AssignCommand( oNpc, ClearAllActions( ) ); // Чистим стек команд AssignCommand( oNpc, SpeakString( sSpeak )); // Говорит фразу AssignCommand( oNpc, ActionForceMoveToObject( oDoor )); // Идет к двери } } Вроде все получилось. Сообщение отредактировал Aiwan - Oct 13 2007, 20:12
Причины изменения: ОТЛИЧНО.
|
Текстовая версия | Сейчас: 28th April 2024 - 23:57 |