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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 22 23 24 25 26 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
MasterMage
сообщение Jan 22 2005, 13:26
Сообщение #576


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Aiwan подкинь ссылку на функции Base & While, просто нужно заполнить кое-какие пробелы :oops:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
MasterMage
сообщение Jan 22 2005, 14:41
Сообщение #577


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On: 22.01.05
//::///////////////////////////////////////////////
void main()
{
    //-----------------objects------------------------------------------------
    object oPC=GetEnteringObject();
    object oKalax=GetObjectByTag("Kalaxana");
    object oWp1=GetWaypointByTag("selo_kalaxana");
    object oWp2=GetWaypointByTag("selo_point_1");
    object oWp3=GetWaypointByTag("selo_point_2");
    object oWp4=GetWaypointByTag("selo_point_3");
    object oWp5=GetWaypointByTag("selo_point_4");
    object oWpNazad=GetWaypointByTag("kalaxana_point");
    //-----------------effects------------------------------------------------
    effect eEf1=EffectVisualEffect(VFX_IMP_TORNADO);
    effect eEf2=EffectVisualEffect(VFX_IMP_UNSUMMON);
    //-----------------locations----------------------------------------------
    location lLoc1=GetLocation(oWp1);
    location lLoc2=GetLocation(oWp2);
    location lLoc3=GetLocation(oWp3);
    location lLoc4=GetLocation(oWp4);
    location lLoc5=GetLocation(oWp5);
    location lLocNazad=GetLocation(oWpNazad);
    //-----------------script-------------------------------------------------
    if (!GetIsPC(oPC)||GetLocalInt(oPC,"selo_appear_kalax")==TRUE)
    return;
    {
    SetLocalInt(oPC,"selo_appear_kalax",TRUE);
    AssignCommand(oPC,ClearAllActions());
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectParalyze(),oPC,20.0);
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc1,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf2,lLoc1,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc2,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc3,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc4,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc5,3.0));
    DelayCommand(2.0,AssignCommand(oKalax,JumpToLocation(lLoc1)));
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc2,FALSE,"DarkSister1");
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc3,FALSE,"DarkSister2");
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc4,FALSE,"DarkSister3");
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc5,FALSE,"DarkSister4");
    object oNPC1=GetObjectByTag("DarkSister1");
    object oNPC2=GetObjectByTag("DarkSister2");
    object oNPC3=GetObjectByTag("DarkSister3");
    object oNPC4=GetObjectByTag("DarkSister4");
    DelayCommand(4.0,AssignCommand(oKalax,ActionSpeakString("Так, так, так... Кто это у нас?")));
    DelayCommand(6.0,AssignCommand(oKalax,ActionMoveToObject(oPC,FALSE,0.5)));
    DelayCommand(8.5,AssignCommand(oKalax,ActionSpeakString("Так вот какой ты... Впечатлйает...Что? Не можешь двигатьсйа? Ничего, пройдет...")));
    DelayCommand(10.5,AssignCommand(oKalax,ActionSpeakString("Уверена, ты уже прикончил того недотепу... Поэтому сама решила с тобой увидитьсйа!")));
    DelayCommand(12.5,AssignCommand(oKalax,ActionSpeakString("У менйа много дел, поэтому скажу сразу: УЙДИ С ДОРОГИ...")));
    DelayCommand(14.5,AssignCommand(oKalax,ActionSpeakString("Надеюсь, ты понйал, что йа сказала....Теперь мне пора.")));
    DelayCommand(16.5,AssignCommand(oKalax,ActionMoveToObject(oWp1,FALSE)));
    DelayCommand(17.0,AssignCommand(oKalax,JumpToLocation(lLocNazad)));
    DelayCommand(18.0,DestroyObject(oNPC1,0.5));
    DelayCommand(18.0,DestroyObject(oNPC2,0.5));
    DelayCommand(18.0,DestroyObject(oNPC3,0.5));
    DelayCommand(18.0,DestroyObject(oNPC4,0.5));
    }
}
скрипт парализует перса, затем появляется особа и ее приспешники....Потом особа тебе внушает, то что ты естесственно не выполнишь....(:)) и исчезает....Исчезют приспешники, паралич проходит......
;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Csardas
сообщение Jan 22 2005, 15:19
Сообщение #578


Level 1


Класс: Некромант
Характер: Neutral Evil
Раса: Человек



Aiwan А куда вставлять тег разгавора если он нуажен конечно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jan 22 2005, 17:43
Сообщение #579


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

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



QUOTE (Csardas @ Jan 22 2005, 18:19)
Aiwan А куда вставлять тег разгавора если он нуажен конечно.

Neverwinter Script Source
AssignCommand(oWord, ActionStartConversation(oPC, "диалог"));

QUOTE (MasterMage @ Jan 22 2005, 16:26)
Aiwan подкинь ссылку на функции Base & While, просто нужно заполнить кое-какие пробелы

Почитай Валео перевод. Есть ссылка?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
MasterMage
сообщение Jan 22 2005, 17:51
Сообщение #580


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Aiwan нету....иначе бы не просил :D
И вот вопрос...Мну попросил Csardas написсать скрипт, чтобы если у НПС не осталось HP он падает и просит пощады...
Neverwinter Script Source
void main()
{
//поставь на НПС бессмертие.........
    object oPC=GetLastAttacker();
    object oNPC=GetObjectByTag("Vunak");//запиши тег НПСа в ковычки;)

    if (GetCurrentHitPoints(oNPC)<5)
    {
    SurrenderToEnemies();
    AssignCommand(oPC,ClearAllActions());
    AssignCommand(oNPC,ClearAllActions());
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectKnockdown(),oNPC);
    ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER);
    AssignCommand(oNPC,ActionSpeakString("Пощади...."));

    }
}
, но фракция не хочет меняться и фраза не произносится....пытался через делай команд, но нарушается...
Добавлено в [mergetime]1106406115[/mergetime]
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On:
//::///////////////////////////////////////////////
void main()
{
//поставь на НПС бессмертие.........
    object oPC=GetLastAttacker();
    object oNPC=GetObjectByTag("Vunak");//запиши тег НПСа в ковычки;)

    if (GetCurrentHitPoints(oNPC)<5 &&GetLocalInt(oPC,"bitva")==0)
    {
    SetLocalInt(oPC,"bitva",1);
    SurrenderToEnemies();
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectKnockdown(),oNPC,2.5);
    DelayCommand(3.0,AssignCommand(oNPC,ActionSpeakString("Пощади....")));

    }
}

ВОТ СКРИПТCsardas
Добавлено в [mergetime]1106406300[/mergetime]
Neverwinter Script Source
DelayCommand(3.0,AssignCommand(oNPC,ActionSpeakString("Пощади....")));
вместо этой строчки можешь поставить дилог
Neverwinter Script Source
ActionStartConversation(oPC)
? но дело в том, что PC после битвы будет не в состоянии поговорить какое-то время...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение Jan 22 2005, 18:06
Сообщение #581


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



Не юзай в этом случае ActionSpeakString. Здесь надо юзать SpeakString. Дело в том, что во время эффекта нокдауна акции "замораживаются", пока чувак не очухается.

И на какой слот ты планируешь ставить этот скрипт?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Jan 22 2005, 18:58
Сообщение #582


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

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



MasterMage За скрипт Большое спасибо, но у меня вопросик на какой слот ставить эти 2 скрипта в СвойПерсонаж? :this:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jan 22 2005, 20:35
Сообщение #583


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

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



QUOTE (MasterMage @ Jan 22 2005, 20:51)
Aiwan нету....иначе бы не просил

Кликай старый город мастеров. Там увидишь тему описане скриптов от Валео. Уже этот вопрос поднимали. ;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 22 2005, 20:57
Сообщение #584


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



ОПИСАНИЕ ФУНКЦИЙ СКРИПТОВ НА РУССКОМ
QUOTE
Ты про кокой скрипт говориш все скрипты что сдесь я писал сам!

и как ты в одном скрипте совместил правильно5е и совершенно неправильное наложение эффектов??


На своего перса (те PC) нельзя повесить скрипты в слоты. Их просто нет. Есть только ХБ.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jan 22 2005, 21:31
Сообщение #585


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



ХБ чего? Модуля? Или у перса есть какой-то свой хб?

Добавлено:
Лекс, спасибо. :D


Сообщение отредактировал Friedrich - Jan 22 2005, 22:41
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 22 2005, 21:36
Сообщение #586


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE

Интересная фишка тут мне вечерком подвернулась, хотя может и старо, но пока нигде не видел.
Сначала маялся чтобы на "OnHeartbeat" в модуле на игрока выполнялся определенный скрипт. Можно конечно замутить GetFirstPC и GetNextPC, в таком случае сервер будет перебирать всех игроков.
Почитал Lексикон и вот что нашел в заметках:

...the PC doesn't have an OnHeartbeat event, if you create a script called "default", it will automatically trigger every PC heartbeat...

Первожу на русский. Дело в том, что у игрока нет эвента OnHearbeat, НО(!) если вы создадите скрипт и назовете его "default" он будет автоматически вписан в OnHeartBeat игрока.
Проверил - работает...
Чудеса да и только, товарищи... :this:


АВАДОН
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
MasterMage
сообщение Jan 23 2005, 11:56
Сообщение #587


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Lexссылка мне???? :this:
Aiwan :good: ШПАШИБО
Добавлено в [mergetime]1106470730[/mergetime]
Lex у меня две такие статьи...но там нет Base, только While, его-то я понял...Правда, пока не пригодилось..;)
ЗЫ...так лень семь метров лексикона качать...Просто вы все по лексикон говорите, а у мну его нет :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
MasterMage
сообщение Jan 23 2005, 13:28
Сообщение #588


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Neverwinter Script Source
void main()
{

    object oPC=GetEnteringObject();
    object oNPC=OBJECT_SELF;
    object oItem=GetFirstItemInInventory(oNPC);
    if (GetHitDice(oNPC)<5)
    {
        while(GetTag(oItem)=="ss")
            {
            SurrenderToEnemies();
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC);
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDeath(),oNPC);
            oItem=GetNextItemInInventory(oNPC);
            }


        if(GetTag(oItem)!="ss")
        {
        SetImmortal(oNPC,FALSE);
        }

    }
    return;
}

вот
CODE
1) при убийстве игрока или нпс у них проверяется в инве наличие нужной шмотки
2) если шмотка есть - они не умирают, а парализуются, ложаться на землю и остаются с одним хп
3) их нельзя убить иначе чем командой дма Килл или юзанием игроком виджета на этот полутруп.

это надо сделать...вот мои попытки....Дело в том, что я не понимаю, как добиться от while, чтобы если не найдет итема выполняла действие ниже... :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Oksivarus
сообщение Jan 23 2005, 15:32
Сообщение #589


Level 4
**

Класс: Волшебник
Характер: True Neutral
Раса: Полуэльф



Подскажите как правильно сделать чтоб игрок после смерти !!!(не реса) выкидывал шмотки там где помер. Я сделал вот так (изменил вроде бы рабочий скрипт с раелмса) но ожидаемого не произошло. И еще к этому ж вопросу исправленный данный скрипт будет действовать например на друида когда тот формоизменился ??? Заранее благодарен

void main()
{
object oPlayer = GetLastPlayerDied();
int i=0;
while(i<14)
{
ActionPutDownItem(GetItemInSlot(i,oPlayer));
i++;
}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
MasterMage
сообщение Jan 23 2005, 16:26
Сообщение #590


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Oksivarus
а зачем...просто помечай выкидываемые предметы в инвентаре НПСа...и все...или ты для ДМ, чтобы ПС выкидывал лут?
Добавлено в [mergetime]1106487042[/mergetime]
QUOTE
i++;

а почему не i+1?? Просто по смыслу так...
и пиши
Neverwinter Script Source
ActionPutDownItem(GetItemInSlot(i,oPlayer));
не так
а так
Neverwinter Script Source
AssignCommand(oPlayer,ActionPutDownItem(GetItemInSlot(i,oPlayer)));
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Jan 23 2005, 17:42
Сообщение #591


Level 10
***

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек
NWN: Контент



Тут у меня появилась пара вопросов.
1) Есть oNPC и несколько Вэйпоинтов. Нужно чтобы он пробежал по ним выполняя возле каждого действие и ожидая пока oPC подойдет. Реализовал, разместив под каждый Вэйпоинт триггеры - oPC подходит, наступает, oNPC бежит дальше, дело делать. В общем, сколько вэйпоинтов -> столько триггеров -> столько скриптов, а можно ли как-то это ожидание в одном скрипте забить? И убрать лишние триггеры?
2) Как повернуть oNPC лицом к объекту, SetFacing() - требует угол, который так просто не узнать, SetFacingPoint() - требует вектор, а как его получить я не понимаю, как координаты объекта получить?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jan 23 2005, 17:52
Сообщение #592


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

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



1. Пошли оРС за НПС и что бы он был с забитым стеком команд. SetCommandable FALSE, как все выполнит НПС TRUE.
Neverwinter Script Source
AssignCommand(oPC, ActionForceFollowObject(object oNPC, 5.0f)); // Идти за НПС не дальше 5 метров


2.
Neverwinter Script Source
AssignCommand(oPC, SetFacingPoint(GetPosition(oDoor))); // Повернем лицом к двери

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Jan 23 2005, 18:07
Сообщение #593


Level 10
***

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек
NWN: Контент



2) Про GetPosition() то я и забыл. :vava: Спасибо.
1) Не, не так. Мне oPC нужен как раз Commandable, просто NPC ждет пока расстояние между ними не станет <= fVarName. Я сперва думал Delay поставить, но тогда есть шанс, что oPC, о чем-то задумавшись, его из виду потеряет (хотя так даже интереснее). Просто, если я буду дистанцию loop'ом проверять, то загружу все что можно. Или нет?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение Jan 23 2005, 18:45
Сообщение #594


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



QUOTE (K.SpecTr @ Jan 23 2005, 16:42)
1) Есть oNPC и несколько Вэйпоинтов. Нужно чтобы он пробежал по ним выполняя возле каждого действие и ожидая пока oPC подойдет. Реализовал, разместив под каждый Вэйпоинт триггеры - oPC подходит, наступает, oNPC бежит дальше, дело делать. В общем, сколько вэйпоинтов -> столько триггеров -> столько скриптов, а можно ли как-то это ожидание в одном скрипте забить? И убрать лишние триггеры?

Лучше все-таки делать этот прикол с триггерами. Да, триггеров останется такое же количество, но избежать "пложения" скриптов можно, если дать триггерам разные тэги и в скрипте в зависимости от тэга OBJECT_SELF-объекта делать то или другое.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
K.SpecTr
сообщение Jan 23 2005, 18:51
Сообщение #595


Level 10
***

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек
NWN: Контент



Пока повесил на oNPC локалку и сделал switch, но с тэгами тоже попробую поиграться.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Jan 23 2005, 19:39
Сообщение #596


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

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



Срочно нужна помощь я написал скрипт где много наворотов всяких но скрипт не доделан до конца потому что я не знаю что делать с этой проблемой
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur)

; здесь не нужно, но почему эта проблема всегда вылезает?
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);

Поставлено.
Помогите коль кто может.
Маленькая просьба можно по подробнее.
ЗАРАНЕЕ СПАСИБО ВСЕМ!!!!!!!!!!!!

Neverwinter Script Source
#include "x2_inc_cutscene"
void CutSound(int nCutscene, object oSound);
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);
void MultiJump(object oPC, string sWay);
void PlayMusic(int nCutscene, object oPC);
void SetShift(int nCutscene, object oPC, float fShift);

int nCutsceneNumber = 20;

void main()

{
    object oPC = GetEnteringObject();
    object oGlav = GetObjectByTag("PIVIGA");
    object oWP1 = GetObjectByTag("WP_1");
    object oWP3 = GetObjectByTag("WP_3");
    object oWP4 = GetObjectByTag("WP_4");
    object oWP5 = GetObjectByTag("WP_5");
    object oWP6 = GetObjectByTag("WP_6");
    object oWP7 = GetObjectByTag("WP_7");
    object oSound = GetObjectByTag("cut20_summ_sfx");
//Effect Vizual Effect==========================================================
    effect eZa1 = EffectVisualEffect(VFX_BEAM_BLACK);
    effect eZa2 = EffectVisualEffect(VFX_BEAM_EVIL);
    effect eZa3 = EffectVisualEffect(VFX_IMP_DEATH_WARD);
    effect eZa4 = EffectVisualEffect(VFX_IMP_FEAR_S);
//Localnoe======================================================================
    location lMes1=GetLocation(oWP1);
    location lLoc2=GetLocation(oWP7);
    location lMes3=GetLocation(oWP3);
    location lMes4=GetLocation(oWP4);
    location lMes5=GetLocation(oWP5);
//==============================================================================
    if (!GetIsPC(oPC)||GetLocalInt(oPC,"Proverochoi tur!")==TRUE)
    return;
    {
    SetLocalInt(oPC,"Proverochoi tur",TRUE);
    AssignCommand(oPC,ClearAllActions());
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectDarkness(),oPC,20.0);
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa1,lMes1,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa2,lLoc2,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa3,lMes3,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa4,lMes4,3.0));
    DelayCommand(2.0,AssignCommand(oGlav,JumpToLocation(lMes1)));
    DelayCommand(2.0,AssignCommand(oGlav,ActionSpeakString("KO MHE MOI SLUGI")));
    DelayCommand(1.0,AssignCommand(oGlav,ActionMoveToObject(oPC,FALSE,0.5)));
//Camera mode===================================================================
    DelayCommand(1.5, DelayCommand(GetShift(oPC, TRUE), MyPentogramma(nCutsceneNumber, oPC, 482, 3.0)));
    DelayCommand(1.5, FadeFromBlack(oPC));
    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 10.0, 50.0, CAMERA_TRANSITION_TYPE_SNAP);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 9.0, 40.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE);
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 12.0, 60.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Vso dla camera
    object oCam1 = GetWaypointByTag("Camera1");
    object oCam2 = GetWaypointByTag("Camera2");
    object oCam3 = GetWaypointByTag("Camera3");
    object oCam4 = GetWaypointByTag("Camera4");
    object oCam5 = GetWaypointByTag("Camera5");
    object oCam6 = GetWaypointByTag("Camera6");
//+++++++++++++++++++++++++++++CAMERA+++++++++++++++++++++++++++++++++++++++++++
    CutPlayAnimation(1.5, oCam1, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(1.5, oCam2, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(0.5, oCam3, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(1.5, oCam4, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(0.5, oCam5, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(18.0, oCam6, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
//Camera stroenie===============================================================
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 182.0, 111.0, 56.0,
                CAMERA_TRANSITION_TYPE_SLOW);
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 5.0, 65.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_VERY_FAST);

    CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 155.0, 45.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(15.6, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 10.0, 4.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 90.0, 40.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 105.0, 4.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);
}
//PENTAGRAMMA VOCRUG++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur)
{
  if(CutGetActiveCutsceneForObject(oPC) == nCutscene)
  {
    object oPen1 = GetObjectByTag("Pen1");
    object oPen2 = GetObjectByTag("Pen2");
    object oPen3 = GetObjectByTag("Pen3");
    object oPen4 = GetObjectByTag("Pen4");
    object oPen5 = GetObjectByTag("Pen5");

    int iBeam2 = 483;

//Rasstavlaem+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam, oPen1, BODY_NODE_CHEST, FALSE), oPen2, fDur);

    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen2, BODY_NODE_CHEST, FALSE), oPen3, fDur);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen3, BODY_NODE_CHEST, FALSE), oPen4, fDur);

    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen4, BODY_NODE_CHEST, FALSE), oPen5, fDur);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen5, BODY_NODE_CHEST, FALSE), oPen1, fDur);
    }
}

// Taime =======================================================================
void SetShift(int nCutscene, object oPC, float fShift) {
    if(CutGetActiveCutsceneForObject(oPC) == nCutscene)
      SetLocalFloat(GetArea(oPC), ".."fShift);
}

void CutSound(int nCutscene, object oSound)
{
    if(CutGetActiveCutsceneForObject(oSound) == nCutscene)
    {
        SoundObjectPlay(oSound);
    }
//===============================================================================

}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Oksivarus
сообщение Jan 23 2005, 23:27
Сообщение #597


Level 4
**

Класс: Волшебник
Характер: True Neutral
Раса: Полуэльф



Поправил скрипт с выпадением луте заменив соответствующюю сточку на
то что предложил MasterMage

AssignCommand(oPlayer,ActionPutDownItem(GetItemInSlot(i,oPlayer)));

после чего в самом шарде после смерит выдает ошибку, toolset же ошибок при компилировании не находит
ошибка -

скрипт _ondeath; OID; 80000000; TAG;
ошибка слишком много инструкций;

возможно есть други ворианты как быросить на землю из слотов 1-14 игрока присмерти предметы (применяется на шарде)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Oksivarus
сообщение Jan 24 2005, 00:48
Сообщение #598


Level 4
**

Класс: Волшебник
Характер: True Neutral
Раса: Полуэльф



убрал все свои действия и условия для проверки работоспособности самой строки, оказалось что работает но возникла 2 проблема - выдает сообщение что героя нельзя разоружать во время боя.
подскажите как это реализовать то, на многих шардах такое видел значить както всетаки можно выбросить предметы игрока.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tiger Greyhawk
сообщение Jan 24 2005, 04:02
Сообщение #599



Иконки Групп

Класс: Обыватель
Характер: Chaotic Good
Раса: Человек
NWN: Скриптинг [Sn]



To Oksivarus.
QUOTE (Oksivarus @ Jan 24 2005, 00:48)
выдает сообщение что героя нельзя разоружать во время боя.

Попробуй ClearAllAction (TRUE). Значение TRUE очищает боевые команды. Хотя, не уверен, что в данном случае поможет.
То что тебе предложил MasterMage, ИМХО, очень даже правильно в том случае, если у тебя скрипт вызывается не с игрока. А, я думаю, у тебя так и есть. Ошибка не в AssignCommand. Здесь другая проблема. Команда ActionPutDownItem заставляет выполняющего положить шмотки. В твоем же случае он этого не может сделать, поскольку мертв. Нужна другая команда. Есть очень геморный и не презентабельный вариант через копирование шмоток в новосозданный (после смерти героя) лут, но я думаю, все проще. Попробуй спросить в разделе шардов.


To MasterMage.
QUOTE (MasterMage @ Jan 23 2005, 13:28)
Дело в том, что я не понимаю, как добиться от while, чтобы если не найдет итема выполняла действие ниже...

попробуй с помощью функции проверки наличия предмета, а не перебора всех предметов в инвентори: if (HasItem(oPc, "IMMORTAL_RING")). Необходимо подключить библиотеку "nw_i0_plot" (#include "nw_i0_plot"). Или посмотри как это сделано в самой библ.
А по-поводу while: Куда ты вешаешь скрипт? По идее должна спотыкаться на первом же предмете, у которого таг не "ss".
И вот еще: ссылка. Может с этим трабла.

Neverwinter Script Source
void main()
{

    object oPC=GetEnteringObject(); //Куда он входит? В непися. Ладно, опустим, все равно нигде не используется.
    object oNPC=OBJECT_SELF; //На чем/ком висит скрипт. Если Heartbeat, то не забывай, что каждые 6 сек берется опять первый предмет в инвентори.
    object oItem=GetFirstItemInInventory(oNPC); //первый предмет в инвентори
    if (GetHitDice(oNPC)<5) //если мы при смерти
    {
        while(GetTag(oItem)=="ss") // и, пока N-ый (конкретный, первый попавшийся, а не какой-нить) предмет в инвентори имеет таг "ss", что, согласись, маловероятно будет продолжаться долго.
            {
            SurrenderToEnemies(); // даем команду рядом стоящим быть нейтральными.
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC); // накладываем эфф
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDeath(),oNPC); // накладываем эфф
            oItem=GetNextItemInInventory(oNPC); // Берем следующий предмет
            }
// скорее всего первый же предмет не будет иметь таг "ss" и выполниться след строчка

        if(GetTag(oItem)!="ss") // если таг объекта не равен "ss"
        {
        SetImmortal(oNPC,FALSE); // поставить убиваемым (по идее вот это и будет всегда выполняться. Т.к. в противном случае игра выдаст тебе ош.: слишк. много инстр.)
        }

    }
    return;
}


Может я совсем и не прав, но меня поправят.

Сообщение отредактировал Tiger Greyhawk - Jan 24 2005, 04:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jan 24 2005, 14:19
Сообщение #600


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



:D примечание :
QUOTE
if (HasItem(oPc, "IMMORTAL_RING")). Необходимо подключить библиотеку "nw_i0_plot" (#include "nw_i0_plot"). Или посмотри как это сделано в самой библ.

:D функция HasItem состоит всего из одной строчки :D ( нужность создания сией функции вообще не очень понятна :yes: )
так что лучше изза этой функции не подключать инклюд, а сразу писать то самое что есть в HasItem :
GetItemPossessedBy(oPC,"<тэг твоего итема>");
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 22 23 24 25 26 > » 
Ответить в эту темуОткрыть новую тему
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 08:46