Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> Азы скриптинга NWN/NWN2, Итак, начинаем с самого начала...
Aiwan
сообщение 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()
{ }


Дальше.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Aiwan
сообщение Oct 9 2007, 12:48
Сообщение #2


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

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



Вы все поняли, что объект можно представить в любом обозначении. Вы верно проследили, что надо во всем скрипте изменить порядок. Что бы лучше понять что происходит, я вам опишу словами. Мы попросту скрипту представляем, что у нас есть объект и мы будем с ним работать дальше. Что бы каждый раз не икать его мы сразу, четко его определяем.

Neverwinter Script Source
object oSelf = OBJECT_SELF;


Дананя строка сосотит из двух важных частей они заключены между знаком равно. В этой строке ДВА ДЕЙСТВИЯ. Первым, мы объявили скрипту, что у нас есть объект object oSelf. Второым мы ПРИРОВНЯЛИ этот наш объявлленный объект к OBJECT_SELF. Тем самый четко дали понять скрипту кто есть ХУ. Верхний код можно написать и таким образом:

Neverwinter Script Source
void main()
{
   object oSelf; // Объявляем скрипту, что у нас используется ОБЪЕКТ oSelf
   oSelf = OBJECT_SELF; // Определяем его прировняв к OBJECT_SELF
}


То же самое мы делаем и с двумя цифровыми данными в скрипте:

Neverwinter Script Source
int iMax = GetMaxHitPoints(oSelf);
    int iD = iMax-5;


Мы их представляем скрипту и что сократить написание сразу же определяем с помощью каких либо функций. В данном случае это понимается так:

Neverwinter Script Source
void main()
{
    object oSelf; // Объявляем скрипту, что у нас используется ОБЪЕКТ
    oSelf = OBJECT_SELF; // Определяем его прировняв

    int iMax; // Объявляем, что у нас будет использоваться интеджер с именем iMax
    iMax  = GetMaxHitPoints(oSelf); // Он будет равен >>
    // Get Max Hit Points ВЗЯТЬ МАКСИМАЛЬНЫЕ ХИТ ПОИНТЫ объекта oSelf

    int iD;  // объявляем, что у нас будет еще оно число
    iD = iMax-5; // Оно будет равно от максимального числа хитпоинов отнять 5
}


В общем суть на пальцах такая. Мы говорим: "В нашей команде есть ИГРОКИ (object, int, float). У них есть своя специализация и ФАМИЛИЯ." Когда мы объявляем ИГРОК то это представление объекта. Когда говорим ИГРОК ПЕТРОВ, ВРАТАРЬ СИДОРОВ, ЗАЩИТНИК ИВАНОВ, то это представление и определение кто именно. Игроки могут меняться и наше определение объекта может меняться в скриптах тоже. ЗАЩИТНИКИ, НАПАДАЮЩИЕ могут смениться. Не важно кто защищает ворота и кто в нападении. Мы можем их сменить. Но прежде чем ввести их в игру судья объявляет что игроки поменялись! Так же можно менять в скрипте.

Neverwinter Script Source
void main()
{
    object oSelf; // Объявляем скрипту, что у нас используется ОБЪЕКТ
    oSelf = OBJECT_SELF; // Определяем его прировняв

    int iMax; // Объявляем, что у нас будет использоваться интеджер с именем iMax
    iMax  = GetMaxHitPoints(oSelf); // Он будет равен >>
    // Get Max Hit Points ВЗЯТЬ МАКСИМАЛЬНЫЕ ХИТ ПОИНТЫ объекта oSelf

    int iD;  // объявляем, что у нас будет еще оно число
    iD = iMax-5; // Оно будет равно от максимального числа хитпоинов отнять 5

    effect eDamage; // объявляем, что у нас используется эффект
    eDamage = EffectDamage(iD); // Эффект Effect Damage поврежедения равен числу iD

    if(GetIsPC(oSelf)==TRUE) // Если oSelf это РС
    {
      // Если это игрок то мы сменим определение еффекта и вылечим РС
      eDamage = EffectHeal(iMax); // на число iMax его максимальные хитпоинты
    }
    AssignCommand(oSelf, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,
Self));
}


Если есть вопросы спрашивайте.

Добавлено через 106 секунд

Мне важно, что бы вы поняли описание объектов и их определение можно менять в скрипте.

Добавлено через 54 секунды

Скажите что изменилось в скрипте?
Neverwinter Script Source
void main()
{
  object oSelf = OBJECT_SELF;
  int iMax = GetMaxHitPoints(oSelf);
  int iD = iMax-5;
  effect eDamage = EffectDamage(iD);

  if(GetIsPC(oSelf)==TRUE)
  {
      eDamage = EffectHeal(iMax);
  }
  AssignCommand(oSelf, ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,
Self));
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- Aiwan   Азы скриптинга NWN/NWN2   Oct 6 2007, 19:38
- - Aiwan   Все функции в движке, это какие-то действия и прим...   Oct 6 2007, 20:37
- - Ёжик   Кто такие Интеджер и Флоат? Почему oNeo, oLex, oAi...   Oct 7 2007, 13:03
- - Aiwan   Ёжик, я могу дать все эти понятия, но то что ты по...   Oct 7 2007, 19:44
- - Ёжик   Цитата(Aiwan @ Oct 7 2007, 19:44) я могу ...   Oct 8 2007, 05:31
- - Aiwan   Цитата(Ёжик @ Oct 8 2007, 08:31) ну тогда...   Oct 8 2007, 10:21
- - Griffon   Цитата(Aiwan @ Oct 7 2007, 20:44) Между ...   Oct 8 2007, 11:11
- - Aiwan   Griffon, Я ПРОСТО ПОКАЗАЛ ЧТО ПОЛУЧИТСЯ если не оп...   Oct 8 2007, 12:33
- - Neo   Цитата(Griffon @ Oct 8 2007, 12:11) DURAT...   Oct 8 2007, 12:52
- - Aiwan   Не надо сложных понятий. Не надо пытаться понять ч...   Oct 8 2007, 16:13
- - Solo   ну если я правильно понял задание, то справился с ...   Oct 8 2007, 19:49
- - Aiwan   Да ,все правильно. Но в следующий раз юзай тег NSS...   Oct 8 2007, 21:28
- - Vhall   Neverwinter Script Sourcevoid main() {   obje...   Oct 8 2007, 22:47
- - Artlira   Neverwinter Script Sourcevoid main() {   obje...   Oct 9 2007, 02:22
- - Aiwan   Цитата(Artlira @ Oct 9 2007, 05:22) Мне к...   Oct 9 2007, 09:08
- - Griffon   Neverwinter Script Sourcevoid main() {   ob...   Oct 9 2007, 11:24
- - Aiwan   Вы все поняли, что объект можно представить в любо...   Oct 9 2007, 12:48
- - Artlira   Изменилась сама программа скрипта. Теперь он работ...   Oct 9 2007, 13:18
- - Aiwan   Самое главное что мы сделали? Мы ПОМЕНЯЛИ ефекты.   Oct 9 2007, 13:19
- - Griffon   Цитата(Artlira @ Oct 9 2007, 14:18) а у в...   Oct 9 2007, 13:32
- - Artlira   Если я правильно понимаю, то смысл в том, что скри...   Oct 9 2007, 14:38
- - Griffon   Все верно, основной смысл кода в том - кто и что б...   Oct 9 2007, 14:53
- - Aiwan   Griffon, не гони лошадей многим это будет не понят...   Oct 9 2007, 14:54
- - Griffon   Все, передаю слово учителю. Хотя учащимся стоит по...   Oct 9 2007, 15:01
- - Vhall   QUOTE(Aiwan @ Oct 9 2007, 13:48) Скажите ...   Oct 9 2007, 18:48
- - Griffon   Цитата(Griffon @ Oct 9 2007, 12:24) Never...   Oct 10 2007, 15:35
- - Aiwan   Цитата(Griffon @ Oct 10 2007, 18:35) Поче...   Oct 10 2007, 16:05
- - mamuc   ЦитатаРезультат - 0.85.nss(1): ERROR: ELLIPSIS IN ...   Oct 11 2007, 10:43
- - Griffon   Цитата(mamuc @ Oct 11 2007, 11:43) Griffo...   Oct 11 2007, 11:56
- - mamuc   в тулсете при компиляции обязательно создаеться ф...   Oct 11 2007, 12:12
- - Griffon   Уфффф..... Пока разобрался 2mamuc, спасибо за ...   Oct 11 2007, 13:26
- - Lex   Цитата(Griffon @ Oct 11 2007, 14:26) Скри...   Oct 11 2007, 13:46
- - mamuc   to Griffon только добавь в тобой приведенном приме...   Oct 12 2007, 08:58
- - Aiwan   Такс... Продолжаем разговор (с) Карлсон который жи...   Oct 12 2007, 10:14
- - Artlira   [ OFFTOP ]В первом варианте к определение объекта ...   Oct 13 2007, 02:58
- - Lex   советую так же, как и на внеклассных занятиях, пря...   Oct 13 2007, 09:58
- - Vhall   О! Побежал. -_- [ OFFTOP ]Neverwinter Script S...   Oct 13 2007, 17:45
- - shadowdweller   Бежит! [ OFFTOP ]Neverwinter Script Source// ...   Oct 16 2007, 23:01
- - Aiwan   Продолжаем. Итак, мы уже говорили о том, что объек...   Oct 17 2007, 10:12
- - Artlira   Вот что получилось: [ OFFTOP ]В первом варианте ск...   Oct 19 2007, 11:35
- - Aiwan   Господа и дамы. Так мы все позабываем...Давайте хо...   Oct 20 2007, 12:02
- - Vhall   [ OFFTOP ]Neverwinter Script Source// Поиск чемпио...   Oct 22 2007, 08:51
- - Aiwan   Vhall, ты ошибся. В какой слот ты ставил скрипт? А...   Oct 22 2007, 10:02
- - Vhall   Ну как тебе сказать... -_- Вроде бы.   Oct 22 2007, 10:13
- - Aiwan   Так. Продолжаем. Я уже разбирал в начале, что та...   Oct 26 2007, 12:12
- - Artlira   Что-то у меня не все получается… Сделать та...   Oct 27 2007, 08:50
- - Aiwan   Ты написала все верно, молодец. Я не просил, что б...   Oct 27 2007, 09:21
- - Artlira   ЦитатаЧто бы все блоки работали как ты говоришь, н...   Oct 29 2007, 04:38
- - Aiwan   Neverwinter Script Source void main( ) {   o...   Oct 29 2007, 06:56
- - Artlira   ЦитатаПонятно? К тому же, я специально написал теб...   Oct 31 2007, 09:27
- - Aiwan   Да, все верно. Мы еще один вариант блоков рассмотр...   Oct 31 2007, 10:27
- - Vhall   Что-то написал. Даже компилируется. Работает или н...   Nov 2 2007, 00:22
- - Aiwan   Vhall, мы присваиваем локалки что бы блоки сработа...   Nov 6 2007, 09:27
- - Vhall   Вот так? [ OFFTOP ]Neverwinter Script Sourcevoid m...   Nov 6 2007, 22:51
- - Aiwan   Нет не верно. Если ты хочешь сделать так, то тебе ...   Nov 7 2007, 16:03
- - Vhall   Да, может давай это... дальше?   Nov 7 2007, 20:02
- - Artlira   У меня вопрос. А занятия дальше будут? Очень хочет...   Nov 13 2007, 01:36
- - Aiwan   Будут!   Nov 13 2007, 09:45
- - Aiwan   Продолжаем. Создайте диалог в редакторе с четырмя...   Dec 7 2007, 12:15
- - Artlira   Все получилось. Каждый из заданных неписей произно...   Dec 9 2007, 03:32
2 страниц V   1 2 >


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20th April 2024 - 03:24