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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 53 54 55 56 57 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Aiwan
сообщение Jun 27 2005, 15:48
Сообщение #1341


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

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



-fenix- ты немного не понял. Ты подумай ВНИМАТЕЛЬНО. Я немного добавлю, Леш.
Смотри ты раздал по очереди которая выстроилась на триггере. Все верно. Ты задал оРС ОДИН Актион:
Neverwinter Script Source
ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP)));
  ---------------
  ActionWait(2.0);
  ---------------
  ActionDoCommand(AssignCommand(oPC, SetCutsceneMode(oPC, FALSE)));

Он выполнит первый, и триггер выполнит сразу же второй через 2 секунды. Я же, поставил функцию снятия катсцены в очередь к НПС, ведь наша задача такая: НПС, подошел, Начал разговор. Следовательно если воткнуть на его Актионы и завершение сценки это будет логично. Верно?
Neverwinter Script Source
ActionDoCommand(AssignCommand(oNPC1, ActionStartConversation(oPC)));
ActionDoCommand(AssignCommand(oNPC1, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));

Расшифровываю: Актон для триггера, Дать удаленную команду оNPC1, поставить в очередь актион НАЧАЛО ДИАЛОГА С оРС.
Расшифровываю: Актон для триггера, Дать удаленную команду оNPC1, поставить в очередь не актион СНЯТЬ КАТСЦЕНУ С оРС.
Ясно?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 27 2005, 19:31
Сообщение #1342


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

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



QUOTE
Ясно?


Да, Айвен спасибо тебе огромное, перемолол в пудру! :D Я этот момент упускал все время.

Сообщение отредактировал -fenix- - Jun 27 2005, 19:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Malos
сообщение Jun 28 2005, 03:56
Сообщение #1343


Level 1


Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить



Народ все кто в состоянии мне помочь помогите. У меня вот тут такая проблемка.:DB: Я хочу создать магическую лабораторию, в которой при смешении определенных ингредиентов можно получать определенные предметы. К примеру, магический котел. Если в него положить два ингредиента и направить на котел нужное заклинание, то можно получить зелье. Подобная лаборатория есть в главной компании Neverwinterа у Эльтуры в гильдии магов. Пробовал вытаскивать скрипты оттуда и составлять свои собственные, но ничего хорошего из этого не вышло.:unsure:

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Jun 28 2005, 09:05
Сообщение #1344


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



Где то тут это уже обсуждалось, поищи по форуму. Кажись, во II томе Скриптов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
minion
сообщение Jun 29 2005, 12:42
Сообщение #1345


Level 4
**

Класс: Волшебник
Характер: Chaotic Good
Раса: Эльф



Malos вот тебе ссылка: тут
У меня тоже была такая идея и я переписал скрипт. Будут вопросы спрашивай через приват.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jun 30 2005, 10:36
Сообщение #1346


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Извините, закинул не туда вопросы, размещаю тут.

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

1. Все наверняка знают, что вышедший Хоту привнес массу недоразумений и ошибок. Одна из таких ошибок, не затирающиеся иммунитеты от полиморфов, когда им перезаходишь на сервер.

Снять сам полиморф не составляет труда, но эффекты остаются все равно. В каком видел они хранятся на персонаже, не понятно. В момент полиморфа на персонаже создается невидимый объект, в котором хранятся все установки полиморфа. Пробовал проверить, так ли это, нет его, но если посмотреть 2da, то там четко видно, что подобный объект создается. Что происходит с эффектами в момент снятия полиморфа, я так и не понял, но они становятся постоянными и снимаются лишь через сон или смерть. Лечу подобное недоразумение пока что снятием полиморфа и затиранием всех заклинаний, иначе их становится по 255. Старый баг колдуна.

Скрипт, который на данный момент служит мне лечением:

Neverwinter Script Source
void RemovePolymorth(object oPC)
{
    // Посмотреть первый эффект
    effect eEffect = GetFirstEffect(oPC);

    while (GetIsEffectValid(eEffect))
    {
        // Если есть эффект полиморфа на игроке, то продолжить
        if (GetEffectType(eEffect) == EFFECT_TYPE_POLYMORPH)
        {
            // Удалить эффект полиморфа с игрока
            RemoveEffect(oPC, eEffect);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oPC);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPC)), oPC);
            break;
        }
        // Посмотреть следующий эффект
        eEffect = GetNextEffect(oPC);
    }

    object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC);

    // Если есть объект невидимой брони, удалить
    if (GetIsObjectValid(oSkin))
    {
        DestroyObject(oSkin);
    }
}


2. Биоваре оставили баг со сменой оружия. Почему его до сих пор не исправили, мне не ясно, ибо он на корню нарушает раундовую боевую систему, позволяя атаковать за 1 раунд несколько раз, без учета, что этих атак может быть гораздо меньше. Применил пока что такое решение проблемы. Подскажите, в чем я не прав, или как это можно сделать проще. Скрипт находится на эвенте "On Attacked" скрипта "nw_c2_default5":

Neverwinter Script Source
if (GetIsDM(oPC) || GetIsDMPossessed(oPC) || !GetIsPC(oPC)) return;

// Start script - Выпадение из рук оружия, если его решили сменить в бою
    object oWeaponR = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
    object oWeaponL = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
    effect eAttack = EffectAttackDecrease(15);

    int nUsedOther;
    string sMessage = "Вы пытаетесь быстро выхватить новое оружие в бою, но все равно мешкаете немного!";

    if (GetIsObjectValid(oWeaponR) && GetIsObjectValid(oWeaponL))
    {
        if ((GetLocalInt(oWeaponR,"WeaponR") != 1) || (GetLocalInt(oWeaponL,"WeaponL") != 1))
        {
            object oItem = GetFirstItemInInventory(oPC);

            while (GetIsObjectValid(oItem))
            {
                if (GetLocalInt(oItem,"WeaponR") == 1) ||
                  (GetLocalInt(oItem,"WeaponL") == 1))
                {
                    nUsedOther = 1;
                    DeleteLocalInt(oItem, "WeaponR");
                    DeleteLocalInt(oItem, "WeaponL");
                    break;
                }
                oItem = GetNextItemInInventory(oPC);
            }

            if (nUsedOther == 1)
            {
                nUsedOther = 0;
                SendMessageToPC(oPC, sMessage);
                AssignCommand(oPC, ClearAllActions(TRUE));
                AssignCommand(oPC, ActionUnequipItem(oWeaponR));
                AssignCommand(oPC, ActionUnequipItem(oWeaponL));
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttack, oPC, 60.0f);
            }
            else
            {
                SetLocalInt(oWeaponR, "WeaponR", 1);
                SetLocalInt(oWeaponL, "WeaponL", 1);
                DelayCommand(7.0, DeleteLocalInt(oWeaponR, "WeaponR"));
                DelayCommand(7.0, DeleteLocalInt(oWeaponL, "WeaponL"));
            }
        }
    }
    else if (GetIsObjectValid(oWeaponR))
    {
        if (GetLocalInt(oWeaponR,"WeaponR") != 1)
        {
            object oItem = GetFirstItemInInventory(oPC);

            while (GetIsObjectValid(oItem))
            {
                if (GetLocalInt(oItem,"WeaponR") == 1)
                {
                    nUsedOther = 1;
                    DeleteLocalInt(oItem, "WeaponR");
                    break;
                }
                oItem = GetNextItemInInventory(oPC);
            }

            if (nUsedOther == 1)
            {
                nUsedOther = 0;
                SendMessageToPC(oPC, sMessage);
                AssignCommand(oPC, ClearAllActions(TRUE));
                AssignCommand(oPC, ActionUnequipItem(oWeaponR));
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttack, oPC, 60.0f);
            }
            else
            {
                SetLocalInt(oWeaponR, "WeaponR", 1);
                DelayCommand(7.0, DeleteLocalInt(oWeaponR, "WeaponR"));
            }
        }
    }
    else if (GetIsObjectValid(oWeaponL))
    {
        if (GetLocalInt(oWeaponL,"WeaponL") != 1)
        {
            object oItem = GetFirstItemInInventory(oPC);

            while (GetIsObjectValid(oItem))
            {
                if (GetLocalInt(oItem,"WeaponL") == 1)
                {
                    nUsedOther = 1;
                    DeleteLocalInt(oItem, "WeaponL");
                    break;
                }
                oItem = GetNextItemInInventory(oPC);
            }

            if (nUsedOther == 1)
            {
                nUsedOther = 0;
                SendMessageToPC(oPC, sMessage);
                AssignCommand(oPC, ClearAllActions(TRUE));
                AssignCommand(oPC, ActionUnequipItem(oWeaponL));
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAttack, oPC, 60.0f);
            }
            else
            {
                SetLocalInt(oWeaponL, "WeaponL", 1);
                DelayCommand(7.0, DeleteLocalInt(oWeaponL, "WeaponL"));
            }
        }
    }
// End script - Выпадение из рук оружия, если его решили сменить в бою


Сообщение отредактировал Zirrex - Jun 30 2005, 10:37
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 30 2005, 14:03
Сообщение #1347


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Zirrex
QUOTE (Zirrex @ Jun 30 2005, 11:36)
Извините, закинул не туда вопросы, размещаю тут.

а в чем, собственно, вопросы то? :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jun 30 2005, 21:07
Сообщение #1348


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



dumbo, я довольно четко изложил свои вопросы.

1. Не удается затереть эффекты от полиморфа при входе игрока на сервер. Снимается лишь эффект полиморфа, остальные же эффекты, иммунитеты, абсорбы и т.п. остаются на персонаже игрока до смерти или сна.

2. Насколько представленное мной решение по смене оружия верно, и есть ли более легкий способ?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 5 2005, 12:27
Сообщение #1349


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

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



У меня такие вопросы

Что делают эти функции
Neverwinter Script Source
TouchAttackMelee

Neverwinter Script Source
TouchAttackRanged

у меня в переводе это как, Вызывающий оператор выполнит Сенсорную Атаку(Нападение) Melee на oTarget и как Вызывающий оператор выполнит Поколебленную Сенсорную Атаку на oTarget. В игре это выглядит как "Кто-то применяет Рукопашная атака Alies Signe" и как "кто-то применяет Атаку из далека на Alies signe".А что это значит?

И
Neverwinter Script Source
GetAttemptedAttackTarget()

Это получить цель, каторую пытается атаковать кто-то?

И как делать стычки в катсценах, обычные скрипты на атаку не пашут или там какая-нить хитрая функция для их юзания?


Кажись понял!

TouchAttackMelee - это просто "устная" атака указаной цели, с целью узнать как оно будет атаковано (промах, удар, критический удар), это можно отразить в окне, а можно нет. Это наверно используется в АИ, ну и в других целях.

TouchAttackRanged - а это кажись то же самое, только с закленаниями.

GetAttemptedAttackTarget() - а это при каждом действии атаки (в бою) получать цель атаки ?



А вот как потычки в сценках делать, ActionAttack и др Attack чета не пашут :xz:

Сообщение отредактировал -fenix- - Jul 5 2005, 18:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 5 2005, 22:50
Сообщение #1350


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



-fenix-, должна работать команда "ActionAttack". Главное при ее использовании верно указывать цели, но самое лучшее решение, это поссорить фракции двух целей, которые должны сразиться между собой.

У меня в модуле есть скрипт, который устраивает петушиные бои. Изначально у петухов фракции были одинаковые, и они стравливались с помощью этой команды, но потом я им сделал разную фракцию, и они стали кидаться гораздо яростнее.

з.ы. эх, мне бы кто подсказал по выше описанным скриптам иное решение проблемы.

Сообщение отредактировал Zirrex - Jul 5 2005, 22:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 6 2005, 07:54
Сообщение #1351


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

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



QUOTE (Zirrex @ Jul 6 2005, 01:50)
з.ы. эх, мне бы кто подсказал по выше описанным скриптам иное решение проблемы.

Насколько я понял, ты знаешь ВСЕ плохие твои эффекты? Если да, то потри их так и добавь те что тебя напрягают еще:
Neverwinter Script Source
void Debug(string message)
{
    object oPC = GetFirstPC();
    if (!GetLocalInt(GetModule(), "DEBAG_PC"))
    {
      SendMessageToPC(oPC, "Debag message: "+message);
    }
    if (!GetLocalInt(GetModule(), "DEBAG_DM"))
          {
            SendMessageToAllDMs("Debag message to DMs: "+message);
          }
}
void RemoveingBadEffect(object oPlayer)
{
        effect eBad = GetFirstEffect(oPlayer);
        while(GetIsEffectValid(eBad))
        {
            if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
                GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
                GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
                GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
                GetEffectType(eBad) == EFFECT_TYPE_POISON ||
                GetEffectType(eBad) == EFFECT_TYPE_SLOW ||
                GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
                GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
                {
                    Debug("RemoveEffect");
                    RemoveEffect(oPlayer, eBad);
                }
            eBad = GetNextEffect(oPlayer);
        }
        //Fire cast spell at event for the specified target
        SignalEvent(oPlayer, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
}


Либо проверь таг и ресреф невидимиго объекта в инвентаре:

Neverwinter Script Source
void DebugObject(object oObject)
{
    string sTag = GetTag(oObject);
    string sResRef = GetResRef(oObject);
    string sName = GetName(oObject);
    Debug ("TAG = "+sTag+", ResRef = "+sResRef+",  Name = "+sName+".");
}

void main()
{
        object oItemCr = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItemCr))
            {
            DebugObject(oPC);
            oItemCr = GetNextItemInInventory(oPC);
            }
}

Не притендую на работостпособность кода. Пишгу на форуме. Потести сам ;)
Потом попросту, сделай его не плотовым. Удали и все дела.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 6 2005, 08:08
Сообщение #1352


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Zirrex
в случае с полиморфом ты перемудрил, чем спровоцировал так называемое "непредсказуемое поведение". кстати, очень интересный глюк - уничтожение "недоубитой"(в данном случае хайд уничтожается при снимании полиморфа) вещи оставляет ее эффекты болтаться на PC. либо просто убери уничтожение хайда(кстати, эффекты могут висеть не только на ней), либо до снимания полиморфа сделай цикл по кричным слотам:
Neverwinter Script Source
for (i = 14; i < 18; i++) {
    oItem = GetItemInSlot(i, oPC);
    if (GetIsObjectValid(oItem))
      DestroyObject(oItem);
  }

насчет противодействия смене оружия ничего не слышал, хотя сам в свое время заметил, что не только количество атак за раунд повышается, но и, похоже, пересчитываются шансы попадания. понимаю, что по идее там обычный рандом должен быть, но вот мне показалось, что попадает чаще, если "передергивать" оружие... :xz:
если твой скрипт пашет, то и хорошо ;) если только подоптимизировать его может быть немного стоит - сложилось впечатление, что это можно сделать, хотя и не всматривался... :crazy:
Добавлено в [mergetime]1120627258[/mergetime]
да, стоит добавить, что сказанное о полиморфе действительно для версии 1.65, потому как в предыдущих версиях он сильно баговал, и как там работает этот скрипт одному биовару известно...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 6 2005, 09:58
Сообщение #1353


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

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



Вот кутсценка
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
object oBarmen = GetObjectByTag("OBJECT_SELF");
object oVor = GetObjectByTag("VOR");
object oSunduk = GetObjectByTag("sunduk");
//==============================================================================
object oWP = GetWaypointByTag("WP_VOR_01");
object oWP_PC_1 = GetWaypointByTag("WP_PC_1");
//==============================================================================
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPC);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPC);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPC);
object oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPC);
//==============================================================================
effect eCutInv = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);
effect eCutPar = EffectParalyze();
//==============================================================================
SetLocalInt(oPC, "CUT_SCEN_03", TRUE);
SetLocalLocation(oPC, "START_POINT", GetLocation(oPC));
AssignCommand(oBarmen, ActionPauseConversation());
AssignCommand(oVor, ClearAllActions());
AssignCommand(oVor, ActionJumpToObject(oWP));
FadeToBlack(oPC, FADE_SPEED_FASTEST);
AssignCommand(oPC, ClearAllActions());
SetCutsceneMode(oPC);
SetAILevel(oVor, AI_LEVEL_HIGH);
//==============================================================================
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oAnimal, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oAnimal, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oDominated, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oDominated, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oFamiliar, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oFamiliar, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oHenchman, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oHenchman, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oSummoned, 13.5);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutPar, oSummoned, 13.5);
//==============================================================================

DelayCommand(1.0, AssignCommand(oPC, SetCameraFacing(100.0, 20.0, 30.0,
CAMERA_TRANSITION_TYPE_SNAP)));
DelayCommand(1.5, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
DelayCommand(2.0, AssignCommand(oPC, ClearAllActions()));
DelayCommand(2.5, AssignCommand(oVor, ClearAllActions()));
DelayCommand(3.0, AssignCommand(oVor, SpeakString("Åùå îäèí ñóíäó÷îê")));
DelayCommand(4.0, AssignCommand(oVor, ActionMoveToObject(oSunduk)));
DelayCommand(7.0, AssignCommand(oVor, ActionDoCommand(SetFacingPoint(GetPosition
(oSunduk)))));
DelayCommand(8.0, AssignCommand(oVor, ActionPlayAnimation(
ANIMATION_LOOPING_GET_MID,9.0, 1.0)));
DelayCommand(9.0, AssignCommand(oSunduk,ActionPlayAnimation(
ANIMATION_PLACEABLE_OPEN,1.0)));
DelayCommand(10.0, AssignCommand(oVor, SpeakString("Âîò ýòî êóø, óñå, ïîðà ñâàëèâàòü")));
DelayCommand(12.0, AssignCommand(oVor,ActionPlayAnimation
(ANIMATION_LOOPING_GET_MID,9.0, 1.0)));
DelayCommand(12.5, AssignCommand(oSunduk, ActionPlayAnimation(
ANIMATION_PLACEABLE_CLOSE,1.0)));
DelayCommand(14.0, AssignCommand(oVor, ActionMoveToObject(oBarmen, TRUE)));
DelayCommand(15.0, AssignCommand(oVor, ActionAttack(oBarmen, FALSE)));
DelayCommand(20.0, AssignCommand(oPC, ClearAllActions()));
DelayCommand(24.5, AssignCommand(oBarmen, ActionResumeConversation()));
DelayCommand(25.0, AssignCommand(oPC, SetCutsceneMode(oPC, FALSE)));
}



1)Вор не хочет идти к бармену, но если поставить вейп рядом с барменом то к нему идет.
2)Если поссорить до сценки, то во время сценки они друг на друго бросаются (близко стоят). А во время сценки не получается я делал так
Neverwinter Script Source
DelayCommand(14.5, AssignCommand(oVor, AdjustReputation(OBarmen, oVor, -90)));
DelayCommand(14.5, AssignCommand(oBarmen, AdjustReputation(OVor, oBarmen, -90)));

3)выполнять ActionAtatck не хочет ни как.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 6 2005, 18:55
Сообщение #1354


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



QUOTE (-fenix- @ Jul 6 2005, 10:58)
Neverwinter Script Source
object oBarmen = GetObjectByTag("OBJECT_SELF");

это что за...?! :this:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 6 2005, 20:31
Сообщение #1355


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

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



QUOTE (dumbo @ Jul 6 2005, 18:55)
это что за...?!

Не знаю! Кот на клаве полежал :oops: :)

Отлично, машутся, только каряво - это выглядет, как тырканье, дерганье, но уж точно не как драка. Так это и должно выглядеть?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 6 2005, 20:46
Сообщение #1356


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



dumbo, спасибо конечно, но как мне поможет этот цикл? Я же не хочу, чтобы каждый входящий персонаж в полиморфе лишался вещей. Ты не забывай, что не все полиморфы "закрывают" надетые вещи на персонаже. Тому пример, Друиды. И может так случиться, что удалятся вещи, которые и трогать то не нужно. Может все-таки стоит проверять только невидимые?

Aiwan, не совсем понял, причем тут плохие эффекты?! Полиморфы разве создают их? Возьмем за пример полиморф Голема. Заклинание "Shapechange". При полиморфе создается невидимый объект, если посмотреть 2da, то можно увидеть его тэг "NW_IT_CREITEMCO3". Ищем его у стандартного Голема. Что видим:

CODE

Damage Reduction: +3 Soak 30 Damage
Damage Vulnerability: Electrical 50% Damage Vulnerability
Immunity: Miscellaneous: Critical Hits
Immunity: Miscellaneous: Death Magic
Immunity: Miscellaneous: Disease
Immunity: Miscellaneous: Level/Ability Drain
Immunity: Miscellaneous: Mind-Affecting Spells
Immunity: Miscellaneous: Paralysis
Immunity: Miscellaneous: Poison
Immunity: Miscellaneous: Sneak Attack

Множество иммунитетов, далее снижение урона на 30 единиц от оружия +3, и ослабление защиты от электричества на 50%.

Да и потом, мне нужно удалять эффект полиморфа при входе игрока на шард, а не в игре. В игре его снять легко, и проблем нету. Все проблемы возникают именно при входе. Самое интересное, что если даже и не снимать эффект полиморфа, то иммунитеты и остальные эффекты останутся постоянными даже после снятия полиморфа. Что происходит с эффектами в момент перехода, я не знаю, но факт на лицо.

Пробовал ставить простой скрипт, который снимает абсолютно все эффекты с персонажа игрока, не проходит. Эти эффекты не отображаются в виде иконок, они висят как невидимые, но при этом работают, что очень плохо.

-fenix-, забавный у тебя Бармен :) Не стоит вешать такие тэги на Барменов, во-первых, это некрасиво, во-вторых, нету шаблона названий. У меня например есть разделение по названиям. Скрипты начинаются: ahs_имя; тэги НПС: npc_имя; монстры: am_bst_имя и т.д.

Если уж ты ставишь скрипт прямо на НПС, то надо так:

Neverwinter Script Source
object oBarmen = OBJECT_SELF;

Да, если честно, не знаю, после какого-то патча при сражении с монстрами стала происходить какая-то каша. Все лезут к цели, друг другу мешают, и получается очень некрасиво. Попробуй сделать так, чтобы над полем битвы летала камера. Вообще, если ты обратишь внимание на сценки из одиночной игры, то там бои происходят быстро, а не как в игре, снял немного здоровья, продолжили плясать. Ведь в жизни часто достаточно одного удара :)

Сообщение отредактировал Zirrex - Jul 6 2005, 20:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jul 6 2005, 20:49
Сообщение #1357


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Скажите пожалуйста, мне нужно организовать большую бойню, но напихать кучу НПК враждебных и Дружественных, Имхо глупо, движок не позволит,
дак вот мне хотелось бы чтобы было две стороны ну тоесть хорошая и плохая, и они дрались, ну война короче, дык вот. как сделать скрипт чтобы например злобные появлялись, примерно по 5-10 человек с разных точек карты и бежали уничтожать базу хороших.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 6 2005, 20:58
Сообщение #1358


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



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

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

Да, чтобы они не сразу кидались друг на друга, перед тем, как они пойдут, сделать небольшую паузу:

Neverwinter Script Source
DelayCommand(6.0, WalkWayPoints());
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 6 2005, 23:03
Сообщение #1359


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

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



Zirrex, с разделениями все ясно, это у меня левый скрипт - мой 2 мультик, на катором я решил испытать битву.

у меня версия SoU 1.30 - это та версия ?

При чем тут летающая камера, они от этого дергаться не перестанут ?! И я не видел мультика в официалке с битвами (может я слепой, тагда раскройте мне глаза :xz:). Знаю, что точно есть в ПЛ (в ней много чего интересного есть), но ее у меня нет:(.

Они полюбому кревляются, хоть интелект обоим повышай, хоть что делай (остальные способы тупые и делались мной от безисходности). Значит, чтоб они не дергались мне нужно на другую версию перейти?
Ты делал кутсцены с потычками, мож простенькую кинешь мне в ПМ. :)

Сообщение отредактировал -fenix- - Jul 7 2005, 00:19
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 6 2005, 23:24
Сообщение #1360


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



QUOTE (Zirrex @ Jul 6 2005, 21:46)
Я же не хочу, чтобы каждый входящий персонаж в полиморфе лишался вещей.
Neverwinter Script Source
int    INVENTORY_SLOT_CWEAPON_L = 14;
int    INVENTORY_SLOT_CWEAPON_R = 15;
int    INVENTORY_SLOT_CWEAPON_B = 16;
int    INVENTORY_SLOT_CARMOUR  = 17;
QUOTE (Zirrex @ Jul 6 2005, 21:46)
Может все-таки стоит проверять только невидимые?
:good:
я не просто так упомянул версию - какая версия у тебя?
перечитай еще раз мой пост.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 6 2005, 23:43
Сообщение #1361


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



dumbo, так как работаю с шардом, то 1.65. Иначе быть просто и не может. В скором времени перейдем на 1.66, но подобный баг там все равно не исправлен. Ладно, все отговорки. Основную идею я понял, тем более этим скриптом пользовался уже.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 7 2005, 00:22
Сообщение #1362


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

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



Zirrex не работал с полимерфами, к тому же ты ж просил найи способы снять эффекты... =) звиняй!
Если ты говоришь что все нормально становится после сна или отдыха, то воткни на перезаход проверку, если в инвентаре контейнер полимерфа с тонной иммунов, раскорячь игрока на небольшой перекур. Вообще спроси лучше шардовиков. Им наверное тоже приходилось сталкиваться.

Мефистофель 5-10 это уже много. Вернее 5 еще ничего, но 10 нападающих... :crazy:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jul 7 2005, 00:29
Сообщение #1363


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



"Спрошу" А скрипт должен вроде так делатся. Создать персов с Рест Рефом, Добрых и плохих, далее приказать им джампится на точки! а как сделать чтоб они моявлялись каждые 5 минут например?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 7 2005, 00:58
Сообщение #1364


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Zirrex
если уж совсем ничего не поможет(что странно - у меня все пашет как часы), то убивай полиморфера на входе! :DB: запомни его состояние, убивай, оживляй... ;)
Добавлено в [mergetime]1120687397[/mergetime]
Мефистофель
твои словесные выкладки сюжета настолько неконкретны, что смысла не имеют - их можно рассматривать только как "стон", провоцирующий на написание вместо тебя этого скрипта. ты сначала напиши что-то, а потом уже вопросы задавай. "каждые 5 минут" - либо декрементный счетчик хертбитов (5*60 / 6 = 50), либо DelayCommand(300.0, ...);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 7 2005, 09:03
Сообщение #1365


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



-fenix-, у тебя чистый Соу, даже нету Хоту, причем сам Соу можно было бы обновить и до более высшей версии, например 1.65. Вообще, я тебе советую установить Хоту и посмотреть его одиночное прохождение. Почти в самом начале есть стычка между Дроу и остальными. Они не дерутся до потери пульса, обмениваются парой ударов, заклинаний, и умирают те, в кого это попадает. Ролики должны показывать завязку, а не целую битву, длинною в бесконечные раунды.

Я только не совсем понимаю, что значит они у тебя дергаются, плохо дерутся? Или перемещаются между точками до начала боя дерганно?

dumbo, попробую, правда если его убить, то запустится скрипт смерти, который создает тело и переносит персонажа в фугу. Хотя там можно сделать мелкое условие, если входящий имеет полиморф, то его не проверять, а просто оживлять.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 53 54 55 56 57 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 8th May 2025 - 06:47