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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> Скрипты для новичков, Самые простые скрипты с описанием
Aiwan
сообщение Aug 23 2005, 17:53
Сообщение #1


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

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



Здесь будут вывешаны самые простые скрипты на которых можно построить новичку свой модуль. Любой пост кроме скрипта с описанием будет считаться спамом и автор получит предупреждение. Всем Мастерам скриптов советую максимально разжевывать куда, как и зачем вставлять код. При этом максимально просто писать код. Этим мы поможем новичкам не только справиться с проблемой, но и понемногу научим понимать код. Сложные скрипты писать в другую тему.


============================
LEX: Беру тему под контроль. Если тут в скриптах или комментариях ошибки, пишу в то же посте, где допущена неточность. Авторам постов обратить внимание на эти ремарки и вносить коррективы по необходимости.
============================


Начем. Самое главное, это начало модуля. Тут все написано, как раздеть игрока, одеть, дать ему денег и отправить дальше. Ставится он на слот модуля OnClientEnter.

NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_mod_enter
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
      Скрипт на вход в модуль при старте.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 22.08.2005
//:://///////////////////////////////////////////
void main()
{
    object oMod = GetModule(); // Наш модуль
    object oPC = GetEnteringObject(); // Того кто вошел

    // Если это не игрок (а ДМ к примеру) или уже было раз, то сделаем возврат
    // скрипта, т.е. дальше он не пойдет.
    if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME"))
      {return;}
      {
      SetLocalInt(oMod, "START_GAME", TRUE); // Что бы сработал только один раз

//--------- Откроем туман над локацией если вам надо. К примеру в городе -------
      ExploreAreaForPlayer(GetObjectByTag("ТАГ_НУЖНОЙ_ЛОКАЦИИ"), oPC);

//--------------- Проводим деноминацию денежных накоплений ---------------------
      AssignCommand(oPC, TakeGoldFromCreature(GetGold(oPC),oPC,TRUE)); // Заберем все денежки

//------------------ Убиваем весь инвентарь ------------------------------------
        object oItem = GetFirstItemInInventory(oPC); // Первый итем в инвентаре
        while(GetIsObjectValid(oItem)) // Пока такой объект существует
        {
            DestroyObject(oItem); // Удаляем его
            oItem = GetNextItemInInventory(oPC); // Берем другой объект...
        }

//------------------ Убиваем всю амуницию -------------------------------------
        int i=0;
        while(i<14) // ПОКА i меньше 14. 14 - это количество всех слот у объекта
        {
        DestroyObject(GetItemInSlot(i, oPC)); //
        i++; // Это значит i увеличится на еденичку от своего значения
            // Было ноль к примеру, станет 1 и т.д.
        }
//------------------------ Создаем предметы ------------------------------------
        // Если вам нужны отдельно каждому классу по несколько предметов, то
        // скопируйте кусок кода еще и измените CLASS_TYPE_ Наведите курсор,
        // нажми F2 и выберите нужное значение константы

//      int Class = GetClassByPosition(1, oPC);
//      switch (Class) // В зависимости от класса
//        {
//          case CLASS_TYPE_BARBARIAN:
//          {
//            CreateItemOnObject("ResRef_Объекта", oPC,1);
//          }
//          case CLASS_TYPE_FIGHTER:
//          {
//            CreateItemOnObject("ResRef_Объекта", oPC,1);
//          }
//        }
        GiveGoldToCreature(oPC, 5000); // Даем золотишко
        CreateItemOnObject("ResRef_Объекта1", oPC, 1);
        CreateItemOnObject("ResRef_Объекта2", oPC, 1);
        CreateItemOnObject("ResRef_Объекта3", oPC, 30);
        // 1 - это количество в стеке, если вам надо 30 стрел, то ставьте там 30

//----------------------  Опознаем предметы  -----------------------------------
        object oItemCr = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItemCr))
            {
            SetIdentified(oItemCr,TRUE);
            oItemCr = GetNextItemInInventory(oPC);
            }

//-------------------- Уровень игрока для игры в модуле ------------------------
      // К примеру нам нужен игрок 5 уровня. Смотрим таблицу уровней и видим,
      // что Level 5 = 10000 xp.
        {
          SetXP(oPC, 10000);
        }

//----------------------  Оденем нашего игрока ---------------------------------
        AssignCommand(oPC, ActionEquipMostEffectiveArmor());

//---------------------------------- END ---------------------------------------
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Chiffa
сообщение Nov 15 2008, 02:49
Сообщение #2


Level 6
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Человек



Цитата
Не понял, зачем в последнем скрипте тебе DeleteLocalString(), имя прекрасно поменяется и так

Ilerien ты не поверишь - не меняется! И вообще творятся "чудеса" всяческие! У меня три "Невера" - "Шадоу", (собственно, ради ПЛ), мой старый "Хордес" и версия 1.69, свежепропатченная. Так вот, одни и те же скрипты то работают, то нет!. И ладно бы еще в разных версиях. Бывает, что не срабатывают в одной и той же версии, но в разных модах! (К примеру, на "Полигоне" все прекрасно, а копирую в "Сказку" и получаю большую фигу!) И ладно бы еще какие навороты с фильмами или вроде того... Нет, "глючат" детские скрипты проверки ветки диалога и тому подобное. Только один пример, для наглядности. В "совершены действия" диалога ставлю
Neverwinter Script
void main()
{
    object oPC = GetFirstPC();
    object oNpc = GetObjectByTag("NPC_TAG");
SetLocalInt(oNpc, "talked", 1);
}

Или еще проще:
Neverwinter Script
void main()
{
SetLocalInt(OBJECT_SELF, "talked", 1);
}

А потом проверяю, что этот самый "talked" действительно 1, не больше и не меньше:
Neverwinter Script
int StartingConditional()
{
    int iResult;

    iResult = GetLocalInt(GetObjectByTag("NPC_TAG"), "talked") == 1;
    return iResult;
}

Так вот, на "Полигоне" ветка диалога открывается прекрасно, проверял на нескольких неписях неоднократно. А в "Сказке" то же самое, один в один - не работает. И подобных примеров у меня - множество, каждый описывать - никаких форумов не хватит... Может, наши гуру расскажут что-то полезное об этих, так сказать "универсальных" скриптовых глюках? Ну, которые встречаются наиболее часто. Если не совсем по теме просьба, прошу прощения. Но, думаю, такой "ликбез" для новичков будет полезен.
Спасибо
P.S. Дабы не отнимать зря время мастеров, объясню сразу: ошибки с настроиками пользователя, свойствами модуля, подключением хаков - исключены. В "Сказке" и "Полигоне" они абсюлютно идентичны. Причины в чем-то другом...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- Aiwan   Скрипты для новичков   Aug 23 2005, 17:53
- - DraX   Долго думал, какой скрипт написать и решил, что но...   Aug 24 2005, 15:12
- - -fenix-   Решил расписать такой скрипт. Многие наверное хот...   Aug 24 2005, 15:50
- - DraX   Неожиданно пришла здравая идея! Многим может б...   Aug 24 2005, 16:32
- - Aiwan   Скрипт закрывает дверь на ночь и открывает ее днем...   Aug 25 2005, 08:42
- - Dik Morris   ЗЫ: Небольшое уточнение, в посте DraX’ са. QUOTE 4...   Aug 25 2005, 10:02
- - -fenix-   Вот скиптик для сидения на стуле, кушетке, диване,...   Aug 25 2005, 19:12
- - Aiwan   Скрипт закрывает дверь автоматически через заданно...   Aug 26 2005, 08:14
- - -fenix-   Если хотите, чтобы НПС, как только увидеk игрока п...   Aug 26 2005, 15:10
- - Aiwan   СКРИПТЫ БОЛЬШЕ НЕ ПОСТИТЬ. ТОЛЬКО МАСТЕРАМ РАЗРЕША...   Aug 26 2005, 16:37
- - Aiwan   Скрипт вешается на OnEnter триггера. Переходим в с...   Sep 7 2005, 22:29
- - Aiwan   Neverwinter Script Source//:://///////////////////...   Sep 18 2005, 21:18
- - _kaa_   QUOTE (Aiwan @ Sep 18 2005, 21:18) Neverwinte...   Sep 19 2005, 09:06
- - Aiwan   _kaa_ , согласен. Может кому нужны несколько то...   Sep 19 2005, 11:54
- - Lex   QUOTE (Lex @ Sep 22 2005, 15:44)описание - л...   Sep 22 2005, 14:44
- - Aiwan   Стандартный скрипт на слот OnSpawn НПС. Данный скр...   Oct 2 2005, 14:43
- - Aiwan   Проверка Харизмы у игрока. Если она 16 или больше,...   Oct 8 2005, 11:07
- - Aiwan   Универсальный скрипт, который ставится на люк (Дер...   Oct 9 2005, 19:26
- - Aiwan   Ставим скрипт на OnEnter енкаучера. Делаем его не ...   Jan 18 2006, 02:00
- - Aiwan   НПС после нападения становится нейтральным и начин...   Mar 31 2006, 07:09
- - Sugo77   А этот скрипт на проверку игрока в другой локации,...   May 14 2008, 21:59
- - Aiwan   Цитата(Sugo77 @ May 14 2008, 23:59) А это...   May 15 2008, 18:20
- - Ogneslav   Товарищи, я бы хотел сделать заклинание glyph of w...   Jul 2 2008, 19:09
- - Aiwan   Вопрос не по этой теме. Задай в теме вопросов по с...   Jul 2 2008, 19:24
- - Chiffa   Да, хороший скрипт, который отправляет непися в то...   Nov 14 2008, 02:09
- - Ilerien   Стремление к универсальности в порядке вещей, если...   Nov 14 2008, 22:26
- - Chiffa   ЦитатаНе понял, зачем в последнем скрипте тебе Del...   Nov 15 2008, 02:49
- - Nao   Хмм. я тоже придложу два простеньких скрипта для н...   May 19 2009, 18:20
- - Lex   первый скрипт убрал, тк в НВН2 есть стандартный бо...   May 20 2009, 08:41
- - Nao   можно заменить альтернативно: ставим урон на 10000...   May 21 2009, 18:43
- - Lex   в первом посте темы указано, для чего она создана ...   Aug 18 2010, 11:31
- - tyrrael   можно ли зделать так, чтобы войдя в установленую т...   Oct 4 2010, 19:20
- - Deirel   tyrrael, можно просто сделать так: Neverwinter S...   Oct 4 2010, 21:21
- - tyrrael   а можете по подробней сказать как зделать чтобы np...   Oct 6 2010, 22:29
- - Aiwan   Цитата(tyrrael @ Oct 7 2010, 01:29) а мож...   Oct 7 2010, 12:03
|- - virus_found   Цитата(Aiwan @ Oct 7 2010, 12:03) а еще к...   Oct 8 2010, 10:39
- - Talarasha   Наверное, многим известно, что к 1.69 галочка ...   Jul 30 2011, 18:53
- - ReZkiy   Послушайте,пожалуйста. Мой случай происходит дома ...   Aug 28 2011, 14:31
- - wirTUS   1) Извиняюсь за оффтоп 2) Эта тема не для задавани...   Aug 28 2011, 18:06
|- - ReZkiy   Цитата(wirTUS @ Aug 28 2011, 21:06) 1) Из...   Aug 28 2011, 18:48
- - ReZkiy   Мастера!Подскажите пожалуйста,что нужно в этой...   Aug 30 2011, 10:42
- - ReZkiy   Если кому нужно: Мой личный скрипт мертвого. Neve...   Aug 31 2011, 15:37
- - Talarasha   ЦитатаЕсли кому нужно: Мой личный скрипт мертвого....   Sep 3 2011, 09:25
|- - ReZkiy   Цитата(Talarasha @ Sep 3 2011, 12:25) Тво...   Sep 3 2011, 14:05
- - Talarasha   ЦитатаЗАБЫЛ!Слот OnSpawn - вот куда подходит м...   Sep 3 2011, 15:08
|- - ReZkiy   Цитата(Talarasha @ Sep 3 2011, 18:08) Воз...   Sep 4 2011, 12:50
- - greye   Цитата(ReZkiy @ Sep 3 2011, 14:05) ЗАБЫЛ...   Sep 4 2011, 13:36
|- - ReZkiy   Цитата(greye @ Sep 4 2011, 16:36) А по ка...   Sep 6 2011, 13:09
- - denis0k   ЦитатаА можно сделать так,что бы в трактире НПС си...   Sep 6 2011, 16:35
- - ReZkiy   Цитата(denis0k @ Sep 6 2011, 19:35) В мес...   Sep 6 2011, 20:04


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

 



Текстовая версия Сейчас: 29th April 2024 - 11:30