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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> Обортни и Ко, расширение возможностей игрока, путями от него не зависящими
Ogneslav
сообщение Jul 21 2008, 19:01
Сообщение #1


Level 4
**

Класс: Друид
Характер: True Neutral
Раса: Человек



Здравствуйте уважаемые сограждане!
Я тут думал и пришел к выводу, что игрок слишком жёстко заключён в рамки классов в невервинтере, поэтому у меня появились некоторые идеи как сделать игру интереснее и добавить некоторые фишки, такие как оборотничество(не класс), вампиричество и т. п и др.
Моя проблема в том что я совершенно не разбираюсь в скриптах и поэтому надеюсь что вы поможите воплотить мои идеи.
Если кому эти самы идеи интересны, отпишитесь, я с радостью предьявлю 2 из них в развернутом варианте, а пока подумаю над другими (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Lamonde
сообщение Aug 9 2008, 20:13
Сообщение #2


Level 3
Иконки Групп

Класс: Псионик
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [Sn]



Сделанный демо-модуль: http://www.1-clickshare.com/download.php?f...0b343ed9b3_7482

Если есть баги, недочеты - дай знать, исправлю.

Реализованно:
Заражение
Исцеление

Как сделал?

Прописал спелл "укуса" в 2да.
Создал кастом тлк.
Кинул спел на он_хит укуса волка.
Укус закидывает булыжник в инвент персонажу.
После второго укуса, када до волка доходит, что ты уже заражен - он дает стрикача (в течении 2 сек.).

Теперь, если с 00.00 до 5.00 утра на персонаже не будет амулета, то
Он будет на шаг ближе к излечению, но все еще будет превращаться в вольфа.
Если проносит амулет 7 "превращений" (7 ночей), то болезнь отступает (булыжник удаляется из инвента).

Если в течении 3х ночей, персонаж не носил амулет и не выпил лекарство, то лекарство ему уже не поможет, но (!) амулет по прежнему сможет исцелить после 7 дней его ношения.

=====
Вот 3 важных кода (скрипты таймченджеров не нуждаются в коментах, там все просто)

Neverwinter Script
/*  Автор: Lamonde, aka Veliant (nordock.ru)
                    Дата: 09/08/2008

                Спелл: "Заражение: Ликантропия"   */


void main()
{
    // тут думаю все понятно, обычная распальцовка, что да где
    // объекты:
    object oItem        = GetSpellCastItem();
    object oTarget      = GetSpellTargetObject();
    object oPlayer      = GetAttackTarget(OBJECT_SELF);
    object oMoonStone   = GetItemPossessedBy(oPlayer, "moon_stone000");
    // эфекты:
    effect eVis = EffectVisualEffect(VFX_DUR_GLOW_RED);

    if (GetIsPC(oPlayer)) //Если "жертва" игрок и,
    {//открытие "ифов"
        if (GetIsObjectValid(oMoonStone)) //если он уже заражен, то
        {
            AssignCommand(OBJECT_SELF, ClearAllActions(TRUE)); //просаем все дела и
            AssignCommand(OBJECT_SELF, SpeakString("*Убегает, поджав хвост*")); //поджав хвост
            AssignCommand(OBJECT_SELF, ActionMoveAwayFromObject(oPlayer, TRUE, 50.0f)); //убегаем от него
            DelayCommand(2.0f, DestroyObject(OBJECT_SELF)); //после чего самоуничтожаемся
        }
        else //Ну, а если "жертва" еще не заражена (IMG:style_emoticons/kolobok_light/smile.gif) , то
        {
            if (FortitudeSave(oPlayer, 26)) //если пробили ДС 26, то
            {
                FloatingTextStringOnCreature("Вас попытались заразить ликантропией", oPlayer); //инфа о том, что вас пытались заразить
            }
            else // если не выдержал укуса в ДС 26, то
            {
                FloatingTextStringOnCreature("Вас заразили ликантропией", oPlayer); // инфа о том, что вас таки заразили
                CreateItemOnObject("moon_stone000", oPlayer, 1); //кидаем в сумку мун-стоун
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 10.0f); // не большей визуальный эфект
            }
        }
    }//закрытие "ифов"
}


Neverwinter Script
/*  Автор: Lamonde, aka Veliant (nordock.ru)
                    Дата: 09/08/2008

     Код вешается на on_activate модуля     */


void main()
{
    object oPC = GetItemActivator(); // "кто" активировал
    object oItem = GetItemActivated(); // "что" активировал

    if (GetTag(oItem) == "pot_were_cure000") //если активированный предмет был лекарством, то
    {//начало
        object oMoonStone = GetItemPossessedBy(oPC, "moon_stone000"); //булыжник
        string sTime = "Time"; //время (строчка)
        int nTime = GetLocalInt(oMoonStone, sTime); //значение числовой переменной "Time" на булужнике
        //"Time" отвечает за кол-во прошедших ночей после заражения
        if(nTime >= 3)//если прошло 3 ночи
        {
            AssignCommand(oPC, ActionSpeakString("Это мне уже не поможет..."));//лекарство уже не поможет
        }
        else//если же еще не прошло 3 ночи
        {
            if (GetItemPossessedBy(oPC, "moon_stone000")==OBJECT_INVALID)//если игрок не заражен
            {
                AssignCommand(oPC, ActionSpeakString("Что за гадкий отвар?!..."));//лекарство ему ничего не сделает
            }
            else// но, если все таки заражен, то
            {
                AssignCommand(oPC, ActionSpeakString("Болезнь отступила!...")); //на радостях
                DestroyObject(GetItemPossessedBy(oPC, "moon_stone000"));// выкидывает булыжник из инвента (IMG:style_emoticons/kolobok_light/smile.gif)
            }
        }
    }//конец
}


Neverwinter Script
/*  Автор: Lamonde, aka Veliant (nordock.ru)
                    Дата: 09/08/2008

      Скрипт вешается на on_heart_beat модуля
  Цель скрипта: превращать днем перса обратно в "себя", а ночью в "волка"

  Скрипт большей, но не боимся и читаем коментарии, тут все просто (IMG:style_emoticons/kolobok_light/smile.gif) */


void main()
{
    //Банальная распальцовка, кто где, что и зачем
    object oPC = GetFirstPC(); //первый в списке игрок (в сингле он же и последний (IMG:style_emoticons/kolobok_light/smile.gif) )
    object oMoonStone = GetItemPossessedBy(oPC, "moon_stone000"); //лунный камень

    //Строчки (IMG:style_emoticons/kolobok_light/smile.gif)
    string sStatus = "Status";
    string sTime = "Time";
    string sCure = "Cure";

    //привязываем к инт'ам константы рас, это нам понадобиться, для того
    //чтобы вернуть кадра после "ночной гулянки"
    int nHuman    = IP_CONST_RACIALTYPE_HUMAN;
    int nElf      = IP_CONST_RACIALTYPE_ELF;
    int nDwarf    = IP_CONST_RACIALTYPE_DWARF;
    int nGnome    = IP_CONST_RACIALTYPE_GNOME;
    int nHalfling = IP_CONST_RACIALTYPE_HALFLING;
    int nHalf_Elf = IP_CONST_RACIALTYPE_HALFELF;
    int nHalf_Orc = IP_CONST_RACIALTYPE_HALFORC;

    //переменные на камне
    int nStatus = GetLocalInt(oMoonStone, sStatus);//отвечает за внешний вид, 1=оборотень, 0=человек
    int nTime = GetLocalInt(oMoonStone, sTime);//отвечает за время "отсидки" в образе вольфа (сколько ночей прошло)
    int nCure = GetLocalInt (oMoonStone, sCure);//отвечает за амулет на шее, если nCure=7, то игрок излечиться, но об этом позже

    //тут начинается код, который будет, что то делать днем
    if (GetTimeHour() > 5)// итак начнемс! Если время больше 5.00 утра, то
    {//начало
        if (nStatus == 1)//проверяем, если перед нам вольф или человек. если вольф, то
        {
            //смотрим кем наш товарищ был ранее

            if (GetRacialType(oPC) == nHuman) //если человек, то
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HUMAN); //меняем его апперку на человека
            }

            if (GetRacialType(oPC) == nElf) //если эльф, то
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_ELF); //меняем его апперку на эльфа
            }
                    //ну и т.д. в том же духе
            if (GetRacialType(oPC) == nDwarf)
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_DWARF);
            }

            if (GetRacialType(oPC) == nGnome)
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_GNOME);
            }

            if (GetRacialType(oPC) == nHalfling)
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALFLING);
            }

            if (GetRacialType(oPC) == nHalf_Elf)
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALF_ELF);
            }

            if (GetRacialType(oPC) == nHalf_Orc)
            {
                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_HALF_ORC);
            }
                //када он в себя превратится
                SetLocalInt(oMoonStone, sStatus, 0);//ставим переменную 0, обозначающую, что он не вольф и
                AssignCommand(oPC, ActionSpeakString("Мне снился кошмарный сон..."));//ха! ему снился кошмар? да неужели (IMG:style_emoticons/kolobok_light/smile.gif)
        }

    }//конец дня

    //тут начинается код, который будет, что то делать ночью
    if (GetTimeHour() < 5)//если время между 00.00 и 5.00 утрами
    {//начало
        if (nStatus == 0)//если наш кадр еще невинен, как овца (IMG:style_emoticons/kolobok_light/smile.gif) (не вольф)
        {
            //тут делиться все на две части: а) есть амулет, б) без амулета
            if (GetTag(GetItemInSlot(INVENTORY_SLOT_NECK, oPC)) == "am_were_cure000")//а) если амулет одет
            {
                if (nCure < 7)//смотрим на сколько продвинулось лечение и, если еще не прошло 7 "целительных" ночей, то
                {
                    AssignCommand(oPC, ActionSpeakString("Я не сорву этот амулет со своей шеи!"));//перс заявляет, что не снимет амулет
                    SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_WEREWOLF);//превращается в вольфа
                    SetLocalInt(oMoonStone, sStatus, 1);//включаем переменную вольфа (1=значит волк - помните?)
                    SetLocalInt(oMoonStone, sCure, nCure + 1);//прибавляем к отсчитанным дням еще денек другой, точнее ночку (IMG:style_emoticons/kolobok_light/smile.gif)
                }
                else// если прошло 7 дней (параметр Куре 7), то
                {
                    AssignCommand(oPC, ActionSpeakString("Болезнь отступила!..."));// на радостях
                    DestroyObject(GetItemPossessedBy(oPC, "moon_stone000"));// перс избавляется от булыжника (IMG:style_emoticons/kolobok_light/smile.gif)
                }
            }
            else // б) если амулета нет
            {
                if(nTime < 3)//если прошло меньше трех ночей
                {
                    SetLocalInt(oMoonStone, sTime, nTime + 1);//добавляем к счету еще ночьку другую
                }

                if(nTime == 3)//если прошло ровно 3 дня, то каждую ночь
                {
                    if (WillSave(oPC, 47))//перс будет делать спас брасок против ДС 47 на волю
                    {
                        AssignCommand(oPC, ActionSpeakString("Нет! Я выстою против тебя!..."));//если выстоит, то тоже самое повториться на следущую ночь
                    }
                    else//если нет (не выстоит)
                    {
                        AssignCommand(oPC, ActionSpeakString("Похоже обратной дороги уже нет..."));//перс заявит, что назад уже дороги нет и...
                        SetLocalInt(oMoonStone, sTime, nTime + 1);;//параметр Тайм гордо захлопнит за собой дверь со значением 4, больше к нему обращаться не будут (IMG:style_emoticons/kolobok_light/smile.gif)
                    }
                }

                SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_WEREWOLF);//преврашаемся в вольфа
                SetLocalInt(oMoonStone, sStatus, 1);//включаем переменную вольфа (1=значит волк - помните?)
            }
        }
    }//конец
}


Сообщение отредактировал Lamonde - Aug 9 2008, 20:20
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- Ogneslav   Обортни и Ко   Jul 21 2008, 19:01
- - Aiwan   Добавить свой класс можно но это сложно. Нет, не т...   Jul 22 2008, 09:54
- - Ogneslav   Я не предлагаю добавить свой новый класс. Классов ...   Jul 22 2008, 10:12
- - Aiwan   Излагай подробно что именно ты хочешь.   Jul 22 2008, 22:38
- - Lex   Айв, речь о так называемой системе вампиризма / об...   Jul 22 2008, 23:19
- - Ogneslav   Извиняюсь, что заставил ждать, просто я был на мор...   Aug 1 2008, 10:14
- - Lamonde   Я, конечно не мастер скриптов, но есть кое какие и...   Aug 3 2008, 05:05
- - Ogneslav   Цитата1. Возможно игроку просто менять апперку? Вс...   Aug 3 2008, 08:38
- - Lamonde   ЦитатаПодобное я уже качал с ваулта, поверь мне АБ...   Aug 3 2008, 11:31
- - Ogneslav   ЦитатаТы описал выше, что скачал с ваулта варианты...   Aug 3 2008, 13:10
- - Lamonde   ЦитатаРазница невелика. Я имел ввиду, что самому к...   Aug 3 2008, 14:10
- - Ogneslav   ЦитатаА... теперь понятно. smile.gif Есть идея тад...   Aug 3 2008, 14:45
- - Lamonde   ЦитатаВо первых такое тоже уже было(за исключением...   Aug 3 2008, 15:08
- - Ogneslav   ЦитатаКак он будет играть за родного персонажа, ес...   Aug 3 2008, 16:28
- - Lamonde   Больше 2х часов пытался сделать так, чтобы персона...   Aug 3 2008, 17:05
- - Ogneslav   Прискорбно жаль(( Надюсь у тебя получится или у к...   Aug 3 2008, 17:27
- - Aiwan   PC поменять не получится.   Aug 3 2008, 19:00
- - Ogneslav   Значит буду думать! А вы не знаете как не меня...   Aug 3 2008, 19:51
|- - r1Stranger   Цитата(Ogneslav @ Aug 3 2008, 19:51) Знач...   Aug 4 2008, 17:31
|- - Lamonde   Цитата(r1Stranger @ Aug 4 2008, 18:31) Вс...   Aug 4 2008, 18:04
- - Ogneslav   Вообщем я подумал так: "раз магомет не идет к...   Aug 6 2008, 21:55
- - Ogneslav   ****************************** Кто нибудь узнал? т...   Aug 7 2008, 20:53
- - Lamonde   ЦитатаЗначица так: во первых-внешность сменяется а...   Aug 8 2008, 17:35
- - Ogneslav   ЦитатаЭто реализуемо на все 100%. Безумно рад...   Aug 8 2008, 21:57
- - Lamonde   Завтра попробую сделать набросок в качестве модуля...   Aug 9 2008, 00:09
- - Ogneslav   ЦитатаЗавтра попробую сделать набросок в качестве ...   Aug 9 2008, 09:44
- - Lamonde   Что готово на данный момент: Прописал новый спелл ...   Aug 9 2008, 15:16
- - Ogneslav   Lamonde, ты гений!))))))   Aug 9 2008, 16:09
- - Lamonde   Еще нет. Что готово на данный момент: Если ночь ...   Aug 9 2008, 16:34
- - Ogneslav   Сообщение удалено. Причина: глупое)))   Aug 9 2008, 17:56
- - Lamonde   Сделанный демо-модуль: http://www.1-clickshare.com...   Aug 9 2008, 20:13
- - Ogneslav   Пока-что вроде ошибок нету))) Поздравляю!)))   Aug 9 2008, 21:50
- - Lamonde   Огнеслав, сделай примерный список фитов, перед тем...   Aug 9 2008, 22:03
- - Ogneslav   Так, это надо подумать. Пост будет о...   Aug 10 2008, 10:59
- - Lamonde   ЦитатаНашёл небольшой баг, если выпить лекарство н...   Aug 10 2008, 13:28
- - Ogneslav   ЦитатаТак задумано, что во время лечения, он все е...   Aug 10 2008, 19:19
- - Zirrex   Lamonde, не надо завязывать "Заражение : Лика...   Aug 12 2008, 09:34
- - Hedeen   http://www.city-of-masters.ru/forums/index...mp;#e...   Aug 12 2008, 10:55
- - Lamonde   ЦитатаLamonde, не надо завязывать "Заражение ...   Aug 12 2008, 11:09
- - Ogneslav   14-15 августа выложу полный список фитов для оборо...   Aug 12 2008, 12:32
|- - Lamonde   Цитата(Ogneslav @ Aug 12 2008, 13:32) ***...   Aug 12 2008, 13:24
- - Zirrex   Ogneslav, опять же, нужны проверки. Достаточно одн...   Aug 12 2008, 20:46
- - Ogneslav   Zirex, приведи пример пожалста, а то я только учус...   Aug 13 2008, 07:23
- - Hedeen   Извиняюсь что не в тему.Ктонить выложите ссылку на...   Aug 13 2008, 15:07
- - Ogneslav   В следующий раз пожалуста пишите в соответствующую...   Aug 13 2008, 16:24
- - Ogneslav   Я дико извиняюсь, что так долго не писал список, и...   Oct 2 2008, 18:19
- - Ogneslav   Цитатаопять же, нужны проверки. Достаточно одной п...   Dec 2 2008, 15:13
- - Lamonde   С 21 декабря будет чуть свободней, посмотрю, что с...   Dec 5 2008, 16:59
- - Ogneslav   Думаю к тому времени все баги и ошибки будут найде...   Dec 5 2008, 22:38
- - greye   Собственно, ничего конкретного сам предлагать не б...   Dec 6 2008, 20:00
- - Ogneslav   Английский всётаки напрягает)   Dec 6 2008, 23:30
- - greye   ЦитатаЛикантропы это гуманоиды или гиганты способн...   Dec 7 2008, 22:37
- - Ogneslav   Огромное тебе спасибо!!! А таблицы в п...   Dec 8 2008, 14:27
- - greye   ЦитатаСоздание ликантропов «Ликантроп» это шаблон...   Dec 8 2008, 16:30
- - Lamonde   Грей, где ты был раньше?!   Dec 10 2008, 16:34
- - Ogneslav   Список багов почти готов, осталось проверить еще п...   Dec 11 2008, 18:52
- - Ogneslav   И так список багов таков: Из старых: это если нахо...   Dec 20 2008, 22:01
- - Lamonde   Огнеслав, ты оперался на правила или сфантазировал...   Dec 20 2008, 22:47
- - Ogneslav   ЦитатаПервое впечатление после прочитки: чит-класс...   Dec 20 2008, 23:03
- - greye   ЦитатаЦитатаПервое впечатление после прочитки: чит...   Dec 21 2008, 11:56
2 страниц V   1 2 >


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

 



Текстовая версия Сейчас: 29th April 2025 - 15:25