Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74
Sugo77
Привет Всем Снова Я вернулся, а пдскажите плиз, как сделать так что бы игроков Одной команды, фракции скажем Злой, автоматически бросало в Одну Пати к игрокам, а игкроков противоположной команды Гуд, бросало в другую пати?, я знаю что так можно сделать, я играл долго время на Alestorm Lotr Team PvP, у них это сделано, и к тому же даже после перезахода в игру ты всеравно автоматически в пати, в этой же команде.

Примечание в их сервере Alestorm Lotr team PvP, стоит Game Type: Team, PvP Mode: Party , может это как то может помочь, в помощи для меня, подскажите плиз, я знаю что это не просто но возможно.

P.S.: Вот этот скрипт на дислайки работает просто замечательно, НО, он против всех, может его как то надо настроить, чтобы к игрокам своей команды , ты не был враждебен, ну или просто сделать то что я описал, одних игроков в одну команду(Good Team) других(Evil Team) в другу.

Neverwinter Script
// The PC who entered the trigger is set to dislike all the PC's in the module
void main()
{
    // Get entering PC
    object oEnterer = GetEnteringObject();

    // make sure they are not a DM
    if(GetIsPC(oEnterer) && !GetIsDM(oEnterer))
    {
        // Loop all PC's in the module and set this PC to dislike them - uh oh
        object oPC = GetFirstPC();
        while(GetIsObjectValid(oPC))
        {
            // Set to dislike
            SetPCDislike(oEnterer, oPC);

            // Get next PC
            oPC = GetNextPC();
        }
    }
}

greye
Neverwinter Script
void main()
{
    object oPlayer = GetEnteringObject();
    string VarName = "имя переменной на игроке"; //Переменную под этим именем надо проставить на каждого игрока в зависимости от выбранной фракции

    if (GetIsPC(oPlayer) && !GetIsDM(oPlayer))
    {
        object oPC = GetFirstPC();
        int nFaction = GetLocalInt(oPlayer, VarName);

        while (GetIsObjectValid(oPC))
        {
            int nSame = GetLocalInt(oPC, VarName) == nFaction;
            int nDone = 0;

            if (nSame)
            {
                if (!(nDone || oPC == oPlayer))
                {
                    RemoveFromParty(oPlayer);
                    AddToParty(oPlayer, oPC);
                    nDone++;
                }
            }
                else SetPCDislike(oPlayer, oPC);
        }
    }
}
Latiss
Вообщем появилась проблема в одной скриптовой сцене - Точнее, в самой последней строчке. (Диалог не начинается) И в том, что эффект unsummon не проигрывается rolleyes.gif
Neverwinter Script
void main()
{
object oPC = GetPCSpeaker();
object oKiller = GetObjectByTag("assassin");
object oValsh = GetObjectByTag("valsh");
object oKaj = GetObjectByTag("Kaj");
object oMarsia = GetObjectByTag("MarsiaLab");
location lKillEx = GetLocation(GetObjectByTag("AssassinEnter"));
effect E1 = EffectVisualEffect(VFX_IMP_DEATH_L);
effect E2 = EffectDeath();
effect E3 = EffectVisualEffect(VFX_IMP_UNSUMMON);
   SetCutsceneMode(oPC);
   AssignCommand(oKiller, ClearAllActions());
   AssignCommand(oPC, ClearAllActions());
   AssignCommand(oMarsia, ClearAllActions());
   AssignCommand(oValsh, ClearAllActions());
   DelayCommand(0.1, AssignCommand(oPC,SetCameraFacing(120.0,12.0,49.0,CAMERA_TRANSITION_TYPE_FAST)));
   DelayCommand(0.2, AssignCommand(oKiller, SetFacingPoint(GetPosition(oValsh))));
   DelayCommand(0.9, AssignCommand(oKiller, ActionCastFakeSpellAtObject(SPELL_FINGER_OF_DEATH,
oValsh)));
   DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, E1, oValsh));
   DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, E2, oValsh));
   DelayCommand(3.8, AssignCommand(oKiller,DestroyObject(oKiller)));
   DelayCommand(3.8, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, E3, lKillEx));
   DelayCommand(4.0,AssignCommand(oMarsia,ActionStartConversation(oPC
)));
   DelayCommand(4.1,SetCutsceneMode(oPC, FALSE));
}
azathoth
может быть у тебя этот скрипт на объекте "assassin" стоит?, тогда после его удаления удалятся и за-делай-еные действия, правда тогда в этом случае не должно ещё работать выключение катсцены...
Latiss
У меня скрипт стоит на диалоге Вальшерада. После окончания диалога стартует катсцена. Но assassin-то удаляется! А диалог не стартует и эффект не проигрывается

Мистика - Переделал немного диалоги и поставил вместо oMarsia, oKaj, то игрок без труда начинал диалог с Кайусом! Дело улажено. Всем спасибо, все свободны.
Latiss
Вновь требуется помощь: Как создать вэйпоинт на месте смерти одного НПС (На OnDeath должен стоять). И еще - ExecuteScript запускает же какой-то скрипт? И еще - Можно или нельзя запускат таким образом катсцену. То есть на OnDeath этого НПС?
Ilerien
Цитата
Как создать вэйпоинт на месте смерти одного НПС (На OnDeath должен стоять).
В onDeath скрипт добавить строку:
Neverwinter Script
CreateObject(OBJECT_TYPE_WAYPOINT, "<ресреф вейпа>", GetLocation(OBJECT_SELF));
Цитата
ExecuteScript запускает же какой-то скрипт?
Запускает.
Цитата
Можно или нельзя запускат таким образом катсцену. То есть на OnDeath этого НПС?
Не вижу к этому препятствий smile.gif
Talarasha
Neverwinter Script
int StartingConditional()
{
    string sGrave = GetLocalString(OBJECT_SELF,"GRAVE");
    if(sGrave == "NEFZEN")
    {
        return TRUE;
        break;
    }
    if(sGrave == "VESSEL")
    {
        return TRUE;
        break;
    }
    return FALSE;
}


Имеется код примерно такого вида, редактор категорически отказывается его компилировать, ругается на break. Кто виноват и что делать?
По сути кода - обработчик для могил, хочу организовать универсальную систему, чтоб не плодить файлы скриптов/диалогов - один скрипт и один диалог с универсальным скриптом-условием.
Ilerien
Брейки убери совсем, не нужны они тут smile.gif
Talarasha
Убрал, скрипт компилируется, но не пашет. Впрочем, он и не должен. rolleyes.gif
Объясняю.
Есть диалог из, допустим, двух строк:
1.Натали Нефзен, 1351 - 1390, покойся с миром.
2.Курт Вессел, 1351 - 1390, покойся с миром.
На каждой из строк висит скрипт-условие, приведенное мной выше.
На каждой могилке висит переменная со значением похороненного лица.
При щелчке на надгробие срабатывает диалог и запускается проверка скрипта:
1)Проверяем первую строку диалога
2)Если переменная Нефзен, выводим диалог. Бриком выходим из скрипта.
3)Проверяем вторую строку диалога.
4)Если переменная Вессел, то первая проверка не срабатывает и мы переходим ко второй.
Если же не будет брика, то скрипт будет выдавать первую строку диалога в любом случае, а не делать то, что мне надо.
Так что вопрос - почему не компилирует, или можно ли кк-то по-другому решить эту задачу?
В принципе, я понимаю, что брика после возврата значения быть не может... Но как тогда поступить? =)
Latiss
Talarasha, может быть просто привязать к каждой могилей свой "диалог"?
greye
Neverwinter Script
int StartingConditional()
{
    string sGrave = GetLocalString(OBJECT_SELF,"GRAVE");
    int IsFirst = GetLocalInt(OBJECT_SELF, "GRAVE");

    if (sGrave == "NEFZEN" && IsFirst) return TRUE;
    if (sGrave == "VESSEL" && !IsFirst) return TRUE;

    return FALSE;
}

На каждую могилу ставится переменная GRAVE целочисленного типа со значениями TRUE для NEFZEN и FALSE для VESSEL(вообще говоря, можно даже не ставить вторую).
Хотя пара условий может была бы и лучше.
Talarasha
Цитата
На каждую могилу ставится переменная GRAVE целочисленного типа со значениями TRUE для NEFZEN и FALSE для VESSEL.
Хотя пара условий может была бы и лучше.

Не работает, к сожалению scratch_one-s_head.gif Обе могилы выдают первую строку диалога. Ведь если взять вторую могилу (VESSEL) и щелкнуть по ней, первое условие не срабатывает, а второе срабатывает и выводит первую строку диалога.

Цитата
Talarasha, может быть просто привязать к каждой могилей свой "диалог"

Ну да, это проще реализуемо. Но зачем нужны кучи диалоговых файлов, если можно уместить все в один?

Хм... Попробую без диалога вообще сделать, просто вывод строки в зависимости от переменной.
Добавлено:
Заработало =).
Neverwinter Script
void main()
{
     string sGrave = GetLocalString(OBJECT_SELF,"GRAVE");
     if(sGrave == "NEFZEN")
     {
            ActionSpeakString("Натали Нефзен, 1351 - 1390, покойся с миром.");
     }
     if(sGrave == "VESSEL")
     {
            ActionSpeakString("Курт Вессел, 1351 - 1390, покойся с миром.");
     }
}


Хотя если кто-нибудь сможет сделать для диалогового файла, с удовольствием погляжу.
greye
Neverwinter Script
int StartingConditional()
{
     string sName = GetLocalString(OBJECT_SELF, "GRAVE");
     int nCheck = GetLocalInt(OBJECT_SELF, "GRAVE");

     if (!nCheck) if (sName == "NEFZEN") return TRUE;

     SetLocalInt(OBJECT_SELF, "GRAVE", !nCheck);

     return nCheck;
}

Работает только для диалога с 2 строками; ничего, кроме имен в переменных не нужно.

-------------------------------------------------
Для общего случая:
Neverwinter Script
const int nCountMax = 99;
const string sVariableName = "<Variable_Name>";

int StartingConditional()
{
    string sName = GetLocalString(OBJECT_SELF, sVariableName);
    int nPosition = GetLocalInt(OBJECT_SELF, sVariableName);
    int bTRUE = FALSE;

    switch (nPosition)
    {
        case 0: if (sName == "<Name_00>") bTRUE = TRUE; break;
        case 1: if (sName == "<Name_01>") bTRUE = TRUE; break;
        case 2: if (sName == "<Name_02>") bTRUE = TRUE; break;
        //...
        case nCountMax: if (sName == "<Name_nCountMax>") bTRUE = TRUE; break;
    }

    if (bTRUE || nPosition == nCountMax) nPosition = 0;
        else nPosition++;
    SetLocalInt(OBJECT_SELF, sVariableName, nPosition);

    return bTRUE;
}
Latiss
Люди - Как создать некое подобие струи пара (огня?), которая бы через определенный промежуток времени выстреливала из одного вэйпоинта, проносилась бы по прямой до другого вэйпоинта и гасла. А если игрок попал бы в него, то его бы "ошпарило" - нанеслось бы 1d12 огненного урона.
Lestorest
Добрый день скриптеры и семпаи =)
надеюсь поможете мудрыми словами.


Есть модуль (нордок + сер 2.2) так вот нужно создать предмет который бы менял навсегда игроку внешний вид на модель входящую в состав сер'овских паков, видел на форуме скрипты на смену модели (в темах об оборотнях и не только) но скриптер из меня похоже никакой.
может кто поможет разобраться в сути проблемы? unsure.gif

нужно на несколько моделей, но думаю с остальными потом сам разберусь
существо Guardinal: Ayala(в списке числиться так) в скрипте записывал так - GUARDINAL_AYALA правда в оригинале в названиях нету двоеточия...
Lex
Цитата(Latiss @ Mar 7 2009, 11:50) *
Люди - Как создать некое подобие струи пара (огня?), которая бы через определенный промежуток времени выстреливала из одного вэйпоинта, проносилась бы по прямой до другого вэйпоинта и гасла. А если игрок попал бы в него, то его бы "ошпарило" - нанеслось бы 1d12 огненного урона.

не просто. Визуальный эффект где-то в базе скриптов был. См феерверки. А чтобы еще урон был - тут есть несколько вариантов, и все довольно сложные.
Проще создавать с интервалом огненную стену. Эффект примерно такой же, но делать заметно легче.

Цитата(Lestorest @ Mar 9 2009, 19:56) *
Добрый день скриптеры и семпаи =)
надеюсь поможете мудрыми словами.


Есть модуль (нордок + сер 2.2) так вот нужно создать предмет который бы менял навсегда игроку внешний вид на модель входящую в состав сер'овских паков, видел на форуме скрипты на смену модели (в темах об оборотнях и не только) но скриптер из меня похоже никакой.
может кто поможет разобраться в сути проблемы? unsure.gif

нужно на несколько моделей, но думаю с остальными потом сам разберусь
существо Guardinal: Ayala(в списке числиться так) в скрипте записывал так - GUARDINAL_AYALA правда в оригинале в названиях нету двоеточия...

см функцию SetAppearanceType. Собсна кроме нее почти ничего и не нужно.
Но имхо такое изменение внешности будет выходить боком при полиморфе (магия или способность, не суть).
Лучше всего через лето поправить файл персонажа, поменяв ему внешность. Или, тк это шард, делать через NWNX, что еще лучше и эффектнее. Но с этим вопросом надо к шардовикам, к Вирусману например.
Lestorest
Lex, возможно я совсем туповат в плане скриптов, в принцепи весь скрипт по идее состоит из нее одной с прописаной кокраз моделькой и повесит на онклилк\онюсе предмета, но пока что у меня получался нулевой эфект.
Свойственно можно редактировать чаров и отдельно правда лето у меня как-то не работает. попробуем через "NWNX" и покопаюсь еще с скриптом.
Lex
onClick|onUsed.. ты на плейс вешаешь чтоль?
если на юз, то кроме GetLastUsedBy и SetAppearanceType ничего и нет. Да, и учти что вбивать константу GUARDINAL_AYALA в параметры функции бесполезно, если эта константа не прописана или там, где все консты прописаны (script.nss или как-то так) или в той библиотеке, которая будет подключена к скрипту. Если влом прописывать - просто ставь вместо константы номер из табылицы appearance.2da, где у тебя эта внешность/существо описано.
Lestorest
Lex, спасибо, осталось одна мелочь выковырять это все из сер паков =)

вашаю я на предмет урной зовущийся... просто что первое попалось.
Barmaley
Кто нибудь, пожалуйста, подскажите скрипт для шахида, он должен подбегать к NPC и взрываться.
ReyBrujo
Помогите пожалуйста,у меня есть скрипт,и разговор,в котором должен этот скрипт действовать(хенч должен весь мой инвентарь положить себе)
Neverwinter Script
void main()
{
object oMaster = GetPCSpeaker()
object oItem = GetFirstItemInInventory(oMaster)
object oNewMaster=GetNearestObjectByTag("HEN_GRORK",oMaster)

CopyItem(oItem,oNewMaster,FALSE)
{
      while(GetIsObjectValid(oItem))
      {
        if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
        {
          CreateItemOnObject(GetResRef(oItem), oNewMaster, 1);
          if(iDel==TRUE) DestroyObject(oItem, 0.5);
        }
        else
            {
              CopyItem(oItem, oNewMaster, TRUE);
              if(iDel==TRUE) DestroyObject(oItem);
            }
          oItem = GetNextItemInInventory(oMaster);
      }
}
}


Скрипт ругается на четвертую строчку,уже пробовал убирать-добавлять точку с запятой,теги вродь object,int ,сам переписал весь код-все равно ругается.НА вся кслучай сразу говорю-скрипт ставил на совершение действия хенчем в разговоре
Плиз,хелп shout.gif

Помогите пожалуйста,у меня есть скрипт,и разговор,в котором должен этот скрипт действовать(хенч должен весь мой инвентарь положить себе)
Neverwinter Script
void main()
{
object oMaster = GetPCSpeaker()
object oItem = GetFirstItemInInventory(oMaster)
object oNewMaster=GetNearestObjectByTag("HEN_GRORK",oMaster)

CopyItem(oItem,oNewMaster,FALSE)
{
      while(GetIsObjectValid(oItem))
      {
        if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
        {
          CreateItemOnObject(GetResRef(oItem), oNewMaster, 1);
          if(iDel==TRUE) DestroyObject(oItem, 0.5);
        }
        else
            {
              CopyItem(oItem, oNewMaster, TRUE);
              if(iDel==TRUE) DestroyObject(oItem);
            }
          oItem = GetNextItemInInventory(oMaster);
      }
}
}


Скрипт ругается на четвертую строчку(object oItem = GetFirstItemInInventory(oMaster)),уже пробовал убирать-добавлять точку с запятой,теги вродь object,int ,сам переписал весь код-все равно ругается.НА вся кслучай сразу говорю-скрипт ставил на совершение действия хенчем в разговоре
Плиз,хелп shout.gif
greye
Цитата(ReyBrujo @ Mar 15 2009, 16:10) *
Плиз,хелп shout.gif

Не стоят точки с запятой в конце 3-5, 7 строк. Еще лишняя пара фигурных скобок - сразу после CopyItem и закрывающая в конце. К тому же не олределена переменная iDel типа int, насколько видно.
drago
Цитата
Кто нибудь, пожалуйста, подскажите скрипт для шахида, он должен подбегать к NPC и взрываться.


Ну вот например так
Neverwinter Script
float fDelay = GetDistanceToObject(GetNearestObjectByTag("npc_tag"))/15; //точно не помню эту формулу
AssignCommand(OBJECT_SELF, ActionForceMoveToObject(GetObjectByTag("npc_tag"), TRUE));
DelayCommand(fDelay, ExecuteScript("detonate", OBJECT_SELF));
SetLocalInt(OBJECT_SELF,"ACTIVATED_OBJECT",TRUE);


и в OnDamaged такое

Neverwinter Script
if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) > 0 && GetCurrentHitPoints() < 0)
        ExecuteScript("detonate",OBJECT_SELF);


detonate:
Neverwinter Script
void main()
{
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
    while(GetIsObjectValid(oTarget))
        {
            int nDamage = 450+d100();
            nDamage = GetReflexAdjustedDamage(nDamage, oTarget, 45, SAVING_THROW_TYPE_FIRE);
            effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oTarget);
            DestroyObject(OBJECT_SELF);

            oTarget = GetNextObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
        }
int nCount=0;

while(nCount<4)
{
float fRandom = GetRandomDelay(0.3,1.0);
DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_COM_BLOOD_LRG_RED),oPC));
DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_COM_BLOOD_REG_RED),oPC));
DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_COM_CHUNK_RED_LARGE),oPC));
nCount++;
}
   
}

serafim
ребята помогите. Начинаю грызть науку скриптования и главный вопрос по каст сценам. Пропишите ка создать как сцену которая наиналась бы с того что созданый вами персонаж лежал на кровати как бы в забытие и потом сцена переходила бы на воспоминания. похоже как в ПЛ, когда вас оттубасили два урка и вы валяетесь на кровати у Ви. Только наоборот. Сначала на кровати а потом сцена с забытием, которая переходит на новые и новые сценки?
СПС огромное.
Lex
скриптовые сценки - одно из самых трудных. Не потому что там какие-то знания запредельные нужны, наоборот, там просто все. Но требует туеву кучу терпения.
Чтобы лежать на кровати - нужен специальный тайл с другим вокмешем, он у нас в хак-паке. В остальном то, что ты просишь обычно делают самостоятельно. На такой ролик может уйти несколько недель. Можешь для начала в ПЛ глянуть скрипты ролика забытья, чтобы проникнуться. Тут рядом есть темка для новичком по роликам, ознакомься с ней. Там Айв популярно разжевывает куда копать smile.gif
ReyBrujo
Цитата(greye @ Mar 15 2009, 15:40) *
Не стоят точки с запятой в конце 3-5, 7 строк. Еще лишняя пара фигурных скобок - сразу после CopyItem и закрывающая в конце. К тому же не олределена переменная iDel типа int, насколько видно.


Спасибо огромнейшее yahoo.gif все получилось! thank_you.gif
Просто у мя не действует скрипт на копи инвентори =(а у мну как раз на него есть пример.пришлось самому все переделывать...


Так,вот еще один вопросик:как сделать предмет бессмертным?Персонажа я умею таковым делать,а вот предмет не умею.плизз,хелп help.gif
Lex
предмет в смысле placeable? Ящик там или дерево?
флажок plot в свойствах поставить.
Desan
А как реализовать прокачку героя до 60 лвл????
Lex
2da + скрипты. Но толку с этого немного, даже если пропишешь фиты 40-60 уровень.
Если в этой фразе ты ничего не понял - лучше не ломай над этим голову. наверняка есть другие задачи по модулю, более реалистичные и полезные.
Desan
Почему у меня не получается при диалоге с НПС (Продавец конец) немогу создать коня возле себя

пишу в диалоге в Action taken
Neverwinter Script
void main()
{
object oPC = GetPCSpeaker();
CreateObject(OBJECT_TYPE_CREATURE,"horse_ad1",GetLocation(oPC));
TakeGoldFromCreature(1000, oPC);

НПС тока деньги забирает а коня нету.
Lex
проверь res-ref лошади, который в скрипте "horse_ad1". У тебя в палитре должен быть такой объект с именно таким резрефом (не тэгом, а резрефом).
Desan
хм....а я tag туда писал в место ResRef... его вроде уже нельзя изменить нада при создании менять
странно я думал tag уникальный индификатор я по нему переходы из локу в локу делал порталы. т.д. думал с обьектами также...Мда
Lex
ты просто недопонимаешь смысл тэга и резрефа.
Если по простому:
тэг - неуникальный идентификатор размещенного в модуле объекта. Неуникальный, значит что ты можешь задать нескольким объектам одинаковый тэг.. а можешь и не задавать. Уникальность тэга для каждого объекта зависит от тебя.
резреф - уникальный идентификатор объекта в палитре. Те в палитре может быть только 1 объект с таким резрефом. При этом в модуле все эти размещенные объекты будут иметь одинаковый резреф.

при работе с объектами уже размещенными на локациях - используется тэг. Можно в принципе использовать и резреф, но функционал крайне ограничен, тэг удобнее и покрывает весь спектр возможных задач. При скриптовом создании новых объектов из палитры, используется только резреф.

понятнее стало?

зы: да, реф задается при создании. Но если объект уже есть в палитре, настроенный и все такое и влом создавать новый с правильным рез-рефом, делай копию. У копии поле рез-реф будет доступно для редактирования.
Desan
Да спасиба очень помогло
ReyBrujo
Можно как-нибудь сделать вокруг врага ауру,которая отбивает стрелы/уменьшает силу ударов/ускоряет врага?и чтоб сама аура показывалась до того времени,пока у врага не останется половины жизней?
Lex
Можно. Только отбивать стрелы не получится (но можно повысить АС против стрелкового). Все остальное можно.
serafim
вот нашел скрипт на нарубку железного деррева.
http://www.city-of-masters.ru/forums/index...amp;#entry94460

Я когда-то задавал вопрос, по поводу, можно ли создать оружие кторое будет дамажить только одних НПС (рассу-монстров), а других нет?! Так вот, можно ли этот скрипт переделать, и ставить на НПС, что бы только одно оружие их било, а другое ломалось? еще видел скрипт из одного модуля(не помнб какого), там монстры обладали свойством разьедать оржие, но повреждение оно им наносилось. Думаю обьеденить эти два скрипта. только как правильно прописать, что бы имея одно оржужие повреждения наносились, а другим (любым)--нет. а то что это "любое" оружие будет разьедаться --это уже найду в скриптах. СПС
Lex
во-первых реально там ничего не ломается, а лишь выводится сообщение. Можно и ломку отскриптовать если шибко хочется.
во-вторых да, можно перенести на монстров. Надо ли доскриптовывать будет, или нет - хз. Зависит от условий у тебя. У меня спец. оружие было только двуручным, что избавляло меня от проблемы 2х оружий у игрока. Так же у меня не было напарника, поэтому атака дерева партией мною тоже не проверялась. Так же не учтена магия - мне было не актуально. (скрипт из недоделанного Пути Ниндзя, отсюда растут все мои допуски).

разъедать оружие? Можно понижать характеристики у оружия, можно накапливать переменную на нем, по достижении критической величины "ломать" оружие. Ломка зависит от твоей системы ломки/починки.
serafim
там понижаються характеристики и при понижение например до -3 бонус атаки--оружие дестроится.
Lex
понятно. В целом - ничего особенно сложного.
serafim
а какой скрипт вы ставили на деревья в ПЛ--там где дровосеки (по дороге на Верхний Хаспур) рубят деревья? после дестроя они(деревья) превращаются в поленья, которые потом можно было бы поднять.?
Я шарился по этим деревьям и в письменах ничего не нашел. можете ывложить такой скрипт?
Lex
странно, вроде как там должны быть все скрипты. Посмотри на всякий случай скрипты дровосеков самих, возможно работу с деревьями я зашил в них.
serafim
ок, спс вечером посмотрю. Если не найду, можешь выложить такой скрипт, Лекс? А то я пока не могу такое написать--знаний не хватает sad.gif
ПС: еще такой вопросик не по теме. почему нельзя открыть сходу два тулсета, например версии 1.32 и 1.68 или 1.66--не важно. у меня не открывается sad.gif сори за "невтемный" вопрос.
virusman
Есть патч, который позволяет это сделать, но при этом надо запускать тулсеты из разных инсталляций НВН (т.е. из разных папок).
serafim
нашел эти скрипты. сенкс.
но появилась проблемка. Я хотел сделать так: рубаешь дерево--повляеться срубаное дерево (это получилось); потом рубаешь срубаное дерево и появляються поленья (это тоже получилось). Но беда вот в чем--скрипты я пока недопонимаю, поэтому делаю методом компилирования и "тыка" smile.gif
Когда ты рубаешь дерево--только после его разрушения появляеться срубленое дерево, а когда ты рубаешь струбленое дерево--только после его дестроя должны появится поленья. А у меня при каджом ударе по срубленому дереву появляются поленья. Че за фиговина? скрипт я вставлял в срубленое дерево тотже, что стоит на деревьях в ПЛ (дорога на вехний Хаспур), только поменял названия "ресрефа" поленьи. А получаеться такая ерунда. что делать?
Lex
Цитата(serafim @ Apr 23 2009, 10:49) *
А у меня при каджом ударе по срубленому дереву появляются поленья. Че за фиговина?

скрипт скорее всего стоит на onDamage. А описанное тобой - "на уничтожение". Те надо ставить на onDeath. Только там нюансов много.
Вообще удаленно, не видя скриптов, помочь сложно. Я про это тебе уже говорил.
serafim
точно! промограл ! СПс Лекс! так хрен знает когда бы заметил smile.gif
serafim
ребята, хелп smile.gif (в который разsmile.gif
Короче, писать скрипты пока еще не умею, делаю все методом тыка и компилирования. мне нужен был скрипт такого рода:

Игрок наступает на тригер--запускаеться кастсцена, такого рода:

Игрок подходет к месту №1--на ходу произносит фразу;
Дальше, подходит к месту №2--на ходу произносит фразу;
Дальше, подходит к месту №3-- садится на стул и произносит фразу после паузы;

После чего режим каст сцены исчезает.

Вот такое у меня детище получилось. Сразу гворю--- НЕ РЖАТЬ smile.gif я обьясняю, что ПОКА, мастерством написания скриптов не владею. НЕдавно 2 дня изучал 2да файлы, что бы подобавлять свои текстуры, фото и тому подобное. теперь пришла пора непосредственно более сеьезно изучать Тулсет и скрипты... А, еще мне бы хотелось что бы в скрипте игрок не бежал как лошадь а нормально ходил. Какая это функция я не вьехал. понял что-то типа ка инвиз, который накладывается на игрока в каст сцене, а потом снимается. Так вот посмотрите что есть что, исправте пожалуйста и допишите, пожалуйста. СПС. ВОТ:

Neverwinter Script
void main()
{
object oPC = GetEnteringObject();  // Берем того, кто наступил на триггер
object oChair = GetObjectByTag("Chair_cast_01");
object oWP_1 = GetWaypointByTag("WP_cast_01");
object oWP_2 = GetWaypointByTag("WP_cast_02");
object oWP_3 = GetWaypointByTag("WP_cast_03");

if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1)
    return;
   {
   SetLocalInt(OBJECT_SELF, "TRIGGER", 1);
   SetCutsceneMode(oPC);
   AssignCommand(oPC, ClearAllActions());

ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP_1)));
ActionDoCommand(AssignCommand(oPC, SpeakString("Бла-бла-бла...")));
ActionWait(3.5);
ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP_2)));
ActionDoCommand(AssignCommand(oPC, SpeakString("Тра-ля-ля...")));
ActionWait(2.5);
ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP_3)));
AssignCommand(oPC, ActionSit(oChair));
ActionWait(1.5);
ActionDoCommand(AssignCommand(oPC, SpeakString("Трам-тара-рам")));
ActionDoCommand(AssignCommand(oPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));
    }
}
gennady
Все действия записаны на триггер... А нужно на героя. С игроком что-то сделать посредством скриптов у тебя явно не получится! biggrin.gif
Тебе нужно создать команды для героя, т.с. последовательный стой акций.
Вообще оператор ActionDoCommand нужен для создания акции из нужной функции, а вот просто с акцией не стоит его использовать...
Чтобы герой не застрял на точках, тут нужна другая функция ActionForceMoveToObjec значение (FALSE –идти TRUE – бежать) дальше расстояние fRange подхода до точки, дальше время fTimeout, после чего НПС прыгнет на нужную точку…
// Force the action subject to move to oMoveTo.
void ActionForceMoveToObject(object oMoveTo, int bRun=FALSE, float
fRange=1.0f, float fTimeout=30.0f)

Функция SpeakString есть и как акция - ActionSpeakString. Логичней использовать её...
Чтобы герой остановился при входе на триггер нужно прописать так:
AssignCommand(oPC, ClearAllActions(TRUE));
Иначе он будет бежать по инерции до точки клика...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.