Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > 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
Kavin
БЛИН! А самому подумать да в Лексиконе нужные функции поискать?..
Скажу, что знаю: такой анимации (нагибается), как в Принце Персии, в НВН нет.
Можно сделать на полу бассейн, и сложить два эффекта: сначала он типа из лужи воду набирает (копается на земле), потом пьет из бутылки.

Или из фонтанчика для птиц (есть такой плейсебл) набирает (анимация, когда игрок типа ключом дверь открывает...), а потом пьет.
Пить - ANIMATION_FIREFORGET_DRINK.
-fenix-
Dik Morris, только тут не
Neverwinter Script Source
effect eHeal = EffectHeal(100);

А
Neverwinter Script Source
effect eHeal = EffectHeal(GetMaxHitPoints(oPC));

или вообще
Neverwinter Script Source
effect eHeal = EffectHeal(GetMaxHitPoints(oPC) - GetCurrentHitPoints(oPC));

smile.gif
Lex
QUOTE (Dik Morris @ Nov 14 2005, 14:41)
effect eHeal = EffectHeal(100);

QUOTE (Белатрис @ Nov 14 2005, 14:17)
полностью вылечивается

несоответствие.

QUOTE (Dik Morris @ Nov 14 2005, 14:41)
ActionDoCommand(AssignCommand(oPC,  ClearAllActions())); //Почистим акции у игрока

лишнее.
QUOTE (Dik Morris @ Nov 14 2005, 14:41)
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oNPC));//Вылечим НПС

не в тот стек загнал команду. НПС вылечится сразу.


зы: по пункту 1 уже сказал Феникс.
Добавлено в 15:01
ЗЫЫ: непонятна диалоговая привязка скрипта. И зачем так игрок.
Ashram
Lex
Спасибо. Оказывается просто не правильно выбрал писал объект для нападения GetLastUsedBy а не GetLastDamager и GetLastUnlocker biggrin.gif
Kavin
ANIMATION_LOOPING_GET_MID - шевелить руками на уровне пояса.
ANIMATION_LOOPING_GET_LOW - копаться на полу.

Это в дополнение к предыдущему посту.
Добавлено в 20:09
Просили посмотреть скрипт, который заставляет стражу появляться и подбегать к отдыхающему игроку.


Neverwinter Script Source
string MASTER_OBJECT_TAG="guard1";
   string COPY_1_TAG="patrol_guard1";
   string COPY_2_TAG="patrol_guard2";
   string WARNINGS_VARIABLE_NAME="area_warnings_count";
   string REST_TYPE_TRIGGER_TAG="RestTypeTrigger";

   float DISTANCE_TO_RUN=10.0;
   float DISTANCE_TO_SEE=20.0;

   object oPC = GetLastPCRested();
   object patrol_guard1=GetObjectByTag(COPY_1_TAG);
   object patrol_guard2=GetObjectByTag(COPY_2_TAG);


         SetLocalString(GetArea(oPC), "guard1_tag", COPY_1_TAG);
                SetLocalString(GetArea(oPC), "guard2_tag", COPY_2_TAG);

                if ((!(GetIsObjectValid(patrol_guard1))
                                &&
                    !(GetIsObjectValid(patrol_guard2)))
                                ||
                    ((GetDistanceBetween(patrol_guard1, oPC)>DISTANCE_TO_SEE)
                    &&
                    (GetDistanceBetween(patrol_guard2, oPC)>DISTANCE_TO_SEE)))
                    {
                    DestroyObject(patrol_guard1);
                    DestroyObject(patrol_guard2);
                    patrol_guard1=CreateClone(GetObjectByTag(MASTER_OBJECT_TAG), RandomLocation(oPC, DISTANCE_TO_RUN, TRUE), COPY_1_TAG, 0.0);
                    patrol_guard2=CreateClone(GetObjectByTag(MASTER_OBJECT_TAG), RandomLocation(oPC, DISTANCE_TO_RUN, TRUE), COPY_2_TAG, 0.0);
                    }
               AssignCommand(patrol_guard1, ActionMoveToObject(oPC, TRUE, 1.0));
               AssignCommand(patrol_guard2, ActionMoveToObject(oPC, TRUE, 1.0));
               AssignCommand(patrol_guard1, ActionStartConversation(oPC, "patrol"));
               if (GetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME)<4)
                    SetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME, GetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME)+1);
               SetLocalObject(patrol_guard1, "CRIMINAL", oPC);
               if (GetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME)>=4)
                    {
                    //ExecuteScript("action_arrest", OBJECT_SELF);
                    DelayCommand(3.0, AdjustReputation(oPC, patrol_guard1, -100));
                    DelayCommand(3.0, AssignCommand(patrol_guard1, ActionAttack(oPC)));
                    DelayCommand(3.0, AssignCommand(patrol_guard2, ActionAttack(oPC)));
                    }
           

Добавлено в [mergetime]1131988315[/mergetime]
Функция CreateClone была предоставлена мне AliceDiren, поэтому публиковать буду после ее разрешения. blush.gif
Kavin
М-дя. Я опять застрял на мертвой точке.
Подскажите, пожалуйста, что сделать для того, чтобы, если определенное условие выполнилось, отдых прервался сразу же?..
AliceDiren
Kavin, отдых прерывается очисткой стека акций. ClearAllActions
Kavin
О Боги! Такую элементарщину упустить из виду!!! Заработался совсем...
Забаньте меня, тупицу. dntknw.gif

AliceDiren, Спасибо!
Добавлено в [mergetime]1132048002[/mergetime]
Написал функцию, которая определяет наличие необходимых для отдыха предметов (костер и bedroll), и если чего-то не хватает, то выдает FloatingText, чего не хватает.
В случае, если есть все для отдыха - она должна заставлять игрока подбегать к bedrollу, ложиться на него и отдыхать.

Все работает, условия отдыха срабатывают, кроме одного: игрок где сидит - там и брякается на отдых, нифига не ложась на кровать.

Вызов функции стоит на OnPlayerRest модуля, результат, возвращаемый функцией, служит сигналом для стражи.

Что мне сделать для того, чтоб задержать отдых до того времени, когда игрок добежит до кровати, и как вставить анимацию?..
Lex
Это уже разбиралось очень подробно. Феникс, делая свою систему сталкнулся с этой же проблемой.
-fenix-
Kavin, тут есть пара тонкостей.
Например, ты можешь прервать отдых функцией ClearAllActions(), потом сделать анимацию и что-то еще и потом, как думается, нужно сделать ActionRest().
Ан нет, дело в том, что ActionRest() вызывает событие OnPlayerRest, короче это то же, что и иконка века. В результате получается бесконечный цикл и игра виснет.
Если хочешь вставить свою анимацию или чего еще перед отдыхом, то нужно отменять отдых и юзать функцию ForceRest(object oCreature). Но это не очень хорошо, так как убирается полоска отдыха, все хиты вылечиваются и эффекты снимаются мгновенно, не действуют ограничения на отдых: если рядом враг, если ПС в бою...
Вобщем, все что надумал, это писать свою функцию, которая проверяет врагов поблизости и состояние героя, потом оценивает хиты и постипенно их восполняет, а так же удаление эффектов через некоторое время. А вот полоску сделать не получется.
Времени сейчас разбираться со своим отдыхом нет(я тебе уже говорил). Поэтому, если нужно, пиши функцию сам, я не знаю, когда сяду за нее.
Надеюсь помог smile.gif
AliceDiren
-fenix-, а если повесить на игрока локалку? И проверять потом, если FALSE, то отменять отдых, проигрывать анимацию, устанавливать TRUE и снова начинать отдых? А когда отдых действительно начался (локалка == TRUE), снова ставить FALSE. Я бы так и сделала, тогда и ForceRest не нужен.
Я может не совсем нормально сказала, но суть я думаю понятна. smile.gif
-fenix-
Хотя можно и не писать свою функцию, а сделать так.
Neverwinter Script Source
object oPC = GetLastPCRested();

if(GetLocalInt(oPC, "REST") != 1)
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE, 1.0, 1.0));
DelayCommand(0.5, SetLocalInt(GetFirstPC(), "REST", 1));
DelayCommand(2.0, AssignCommand(GetFirstPC(), ActionRest()));
}
else
{
/*
что-то там происходит
.
.
.
*/

SetLocalInt(GetFirstPC(), "REST", 0));// в конце обязательно обнуляем переменную
}

Я хотел писать свою функцию, потому что при заостренном внимании к мелочам мое воображение нарисовало картину не сопоставимую с подобным вариантом.
Тебе может такой сгодится dntknw.gif

Но в обоих есть маленькая ложка дегтя, будет писаться "Отдых отменен" в окне сообщений из-за юзания ClearAllActions(). Но с этим прейдется жить sad.gif
ХМ, а может, кто знает, как это убирается?

AliceDiren, гы, я это дописывал 3 часа - телефон был занят lol.gif
Kavin
Спасибо всем, я нашел в базе скриптов функцию отдыха.
Еще не читал код внимательно, но думаю, что оттудова наковыряю, чего надобно.

С локалкой вариант интересный, сейчас сяду его расписывать.

А вообще мне в голову пришел такой вариант: создать диалог на OnUsed скатки (bedroll-a), в ответы включить два пункта - "Свернуть постель" и "Лечь отдыхать". На диалог прицепить скрипты соответственно сворачивания скатки, или проигрывания анимации, а потом затемнения экрана и отдыха.
Намного проще.
Но не по-программерски как-то.
crazy.gif

Текст функции моей, которая проверяет костер и постель в заданном радиусе:
Neverwinter Script Source
int SearchNecessaryForRest(object oWantToRest, int NeedBed=TRUE, int NeedFlame=TRUE, float fDistToSearch=6.0)
{
    object oBed=GetNearestObjectByTag("pc_bedroll", oWantToRest);
    float fDistToBed=GetDistanceBetween(oWantToRest, oBed);
    int BedFound=FALSE;

    if ((GetIsObjectValid(oBed)&&fDistToBed<fDistToSearch)||(!NeedBed)) BedFound=TRUE;

    object oFlame=GetNearestObjectByTag("pc_flame", oWantToRest);
    float fDistFromBedToFlame=GetDistanceBetween(oFlame, oBed);
    int FlameFound=FALSE;

    if ((GetIsObjectValid(oFlame)&&fDistFromBedToFlame<=2.0)||(!NeedFlame)) FlameFound=TRUE;

    int FunctionResult;

    if (!BedFound&&!FlameFound)
        {
            FloatingTextStringOnCreature("Ни костра, ни подстилки... Замерзну совсем...",
                        oWantToRest);
            FunctionResult= 0;
        }
    else if (BedFound&&!FlameFound)
        {
            FloatingTextStringOnCreature("Костер совсем далеко... Буду мерзнуть...", oWantToRest);
            FunctionResult= 1;
        }
    else if (!BedFound&&FlameFound)
        {
            FloatingTextStringOnCreature("Замерзну на голой земле.. Постель бы надо...", oWantToRest);
            FunctionResult= 2;
        }
    else if (BedFound&&FlameFound)
        {
          /* Здесь действия, которые должны совершаться, в случае если все найдено и можно отдыхать*/
            FunctionResult= 3;
        }
    return FunctionResult;
}
Lex
QUOTE (Kavin @ Nov 15 2005, 20:10)
А вообще мне в голову пришел такой вариант: создать диалог на OnUsed скатки (bedroll-a), в ответы включить два пункта - "Свернуть постель" и "Лечь отдыхать". На диалог прицепить скрипты соответственно сворачивания скатки, или проигрывания анимации, а потом затемнения экрана и отдыха.
Намного проще.
Но не по-программерски как-то.

диалоговый вариант считается для синглов очень удачным. Мы давно им пользуемся.
Чего я и Фениксу советовал в свое время.
Kavin
Lex, А есть возможность запретить кнопку "Отдых" на Player GUI Panel?..
Lex
редактированием гуи может и можно. А просто где-нить в настройках отрубить - нет.
Kavin
Засада... Ладно, выход из положения уже в мозгах крутится.

Можно в диалоге, в варианте ответа "Отдохнуть" - поставить локалку, а на OnPlayerRest поставить проверку этой локалки, и если что - отменить отдых.
Lex
так.. тут тема для вопросов по скриптам, а не технические вопросы реализации твоей системы.

Добавлено в [mergetime]1132080753[/mergetime]
так что завязываем с оффтопом
Daemonix
А есть такая возможность, что члены фракции, враждебной к игроку, не атакуют его, все бегут к нему и пытаются начать с ним разговор?




LEX: Вопрос не совсем по теме. С таким лучше в одиночные.
DAEMONIX: Учту. Спрошу тогда в одиночных.
AliceDiren
Kavin, посмотри систему отдыха в модулях Tortured Hearts. Там это организовано. Именно с отменой в GUI Panel.
Змий
Здравствуйте. В модульстроении я новичок и захотелось мне сразу суммона(чтоб непременно был в моем первом модуле). Почитав доки и прочее, я поставил placeable пьедестал, и примерно такой диалог поставил ему:
-test
-ok [и на этом месте должен был суммон существа с тегом "creaturetosummon" на waypoint с тегом "summonmetastat" произойти ]
Но почему - то этого не происходит! При тестировании диалог проигрывается, но ничего не сумонится. Обьясните пожалуйста ламеру(мне), в чём здесь ошибка?
Вот листинг скрипта суммона:
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();

object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("summonmetastat");

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "creaturetosummon", lTarget);

oTarget = oSpawn;

int nInt;
nInt = GetObjectType(oTarget);

if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_TIME_STOP), oTarget));
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_TIME_STOP), GetLocation(oTarget)));
}


Компилируется, но не работает. Все теги я проверял, у вызываемого существа и у вэйпойнта вроде нормально.
Tiger Greyhawk
QUOTE (Змий @ Nov 24 2005, 00:13)
с тегом "creaturetosummon"
Neverwinter Script Source
CreateObject(OBJECT_TYPE_CREATURE, "creaturetosummon", lTarget);

здесь нужно указывать не тег, а ResRef.
З.Ы. Читай Вопросы и Ответы по тулсету, там это (и не только это) разбиралось. Также качай тутор Aiwan`а. Линк на него есть в тех же ВоИ.
Lex
саммонер делается этим эффектом: (чтобы был в пати, можно было давать команды и прочее)
Neverwinter Script Source
// Create a Summon Creature effect.  The creature is created and placed into the
// caller's party/faction.
// - sCreatureResref: Identifies the creature to be summoned
// - nVisualEffectId: VFX_*
// - fDelaySeconds: There can be delay between the visual effect being played, and the
//  creature being added to the area
// - nUseAppearAnimation: should this creature play it's "appear" animation when it is
//  summoned. If zero, it will just fade in somewhere near the target.  If the value is 1
//  it will use the appear animation, and if it's 2 it will use appear2 (which doesn't exist for most creatures)
effect EffectSummonCreature(string sCreatureResref, int nVisualEffectId=VFX_NONE, float fDelaySeconds=0.0f, int nUseAppearAnimation=0)

Добавлено в [mergetime]1132787960[/mergetime]
весьма похвально, что ты сам попытался написать и в принципе написал... только не то, что надо. У тебя просто создается существо (при верном рез-рефе и тэге поинта конечно), но это ну саммонер.

проверка
QUOTE
if (nInt != OBJECT_TYPE_WAYPOINT)

вызвала непонимание. У тебя вроде только 1 действие на фразу диалога... зачем проверять валидность поинта и накладывать эффект (многие визуальные эффекты на поинт обычно не работают.)?

+ ты не проверил такой момент.. а если я уже вызывал себе саммонера? (это тебе для размышлений)


Добавлено в [mergetime]1132787981[/mergetime]
ну да.. самое главное: Добро Пожаловать.
DEM
Хм... вы бы не могли подсказать, как сделать что бы невидимый персонаж ме-е-едлено становился видимым? Просто делаю кат-сцену... наш персонаж бежит и перед ним должен ме-е-едлено появиться другой персонаж, который не может ни атаковать, ничего (но это я уже как-нить сделаю biggrin.gif )...


ЗЫ. я заметил что у ЛЕКСА подпись только по делу smile.gif
Lex
VFX_DUR_GHOSTLY_PULSE
Суть в том, что медленный переход из видимого состояние в нивидимое.. и обратно... как оно может помочь, я хз smile.gif Но ничего более близкого не встречал
Змий
QUOTE
здесь нужно указывать не тег, а ResRef.

Аа как я об этом забыл!! Спасибо! yahoo.gif
QUOTE
только не то, что надо. У тебя просто создается существо (при верном рез-рефе и тэге поинта конечно), но это ну саммонер.

Ээ ну вообще да smile.gif Я просто не очень хорошо разбираюсь в терминологии, но это не суммон(я ошибся), а призыв существа. Всмысле, что то вроде из офф кампании невервинтера. Но чтобы начинал сам разговор... это пока выше моих возможностей (:
QUOTE
весьма похвально, что ты сам попытался написать и в принципе написал...

Не совсем я. В скриптах нвн я умею пока мало, всё это Лексикон и частично генератор. Эффективно заменяют учебник, именно из генератора я узнал о конструкции скриптов.. очень похожа на си кстати.
Каюсь... лишь язык скриптов морровинда я изучил методом проб и ошибок smile.gif
Нвн посложнее будет...
QUOTE
ну да.. самое главное: Добро Пожаловать.

Спасибо biggrin.gif надеюсь что смогу чем либо помочь smile.gif
Кстати, (извините за оффтоп) для нвн можно свои спецэффекты сделать? Всмысле не плэйсибл а vfx?
QUOTE
(многие визуальные эффекты на поинт обычно не работают.)?

А можно узнать, какие работают? Просто я не знаю весь список эффектов.

PS Кстати, хотел сказать: спасибо вам за "Проклятие Левора", недавно купил и теперь оторваться не могу biggrin.gif
Lex
QUOTE (Змий @ Nov 24 2005, 15:34)
Ээ ну вообще да smile.gif Я просто не очень хорошо разбираюсь в терминологии, но это не суммон(я ошибся), а призыв существа. Всмысле, что то вроде из офф кампании невервинтера. Но чтобы начинал сам разговор... это пока выше моих возможностей (:

я тебе про то и говорю. Твой скрипт просто делает на локации существо. И все. Оно к игроку никаким боком не относится. А той функцией, что я дал ты создаешь существо, которое привязывается к игроку (тут есть еще 1 важный аспект. Скрипты в слотах у существа должны быть не простые, а саммонерские/фамильяровские/хенчевские. Чтобы он за тобой ходил. Привяжешь к нему диалог, еще и разговаривать будет.)

QUOTE (Змий @ Nov 24 2005, 15:34)
очень похожа на си кстати.

угу. Знаешь СИ, проблем не будет вообще. Только основной набор функций изучишь, а дальше просто постепенно будешь расширять этот набор. Никаких особых трудностей не будет, я думаю.
QUOTE (Змий @ Nov 24 2005, 15:34)
надеюсь что смогу чем либо помочь smile.gif

ты пока учись smile.gif Помогать новичкам будешь потом smile.gif)
QUOTE (Змий @ Nov 24 2005, 15:34)
для нвн можно свои спецэффекты сделать? Всмысле не плэйсибл а vfx?

Ох.. можно, но сложно. Тебе в раздел "НВН и 3Д МАКС". Он тут рядом..
QUOTE (Змий @ Nov 24 2005, 15:34)
А можно узнать, какие работают? Просто я не знаю весь список эффектов.

уу..хмы.. а фиг его помнит. Точно не работают все эффекты, которые привязаны к частям тела, все, что изменяют вид (гост визаж, санкта, парализ и прочие).
Змий
QUOTE
я тебе про то и говорю. Твой скрипт просто делает на локации существо. И все. Оно к игроку никаким боком не относится. А той функцией, что я дал ты создаешь существо, которое привязывается к игроку (тут есть еще 1 важный аспект. Скрипты в слотах у существа должны быть не простые, а саммонерские/фамильяровские/хенчевские. Чтобы он за тобой ходил. Привяжешь к нему диалог, еще и разговаривать будет.)

Да нет.. мне фамилиар не нужен а просто чтоб создалось существо и начало разговор smile.gif
QUOTE
Ох.. можно, но сложно. Тебе в раздел "НВН и 3Д МАКС". Он тут рядом..

Это наверное как то связано со скриптами и моделями. unsure.gif Как в которе похоже, всё таки один и тот же разработчик...

А можно ещё вопрос? Можно как либо изменить заклинание "полиморф", чтобы например не в красного дракона превращался, а в зелёного или золотого? и чтобы дали не только хп существа, но и способности его smile.gif
Lex
QUOTE (Змий @ Nov 24 2005, 23:21)
А можно ещё вопрос? Можно как либо изменить заклинание "полиморф", чтобы например не в красного дракона превращался, а в зелёного или золотого? и чтобы дали не только хп существа, но и способности его smile.gif

можно конечно. Чтобы менять существо, в которое превращаешься, редактируй скрипт заклинания. (spells.2da посмотри там, какой скрипт у твоего закла.. можешь сделать свой закл. В теме 2DA Таблицы подробно разобрано создание закла полиморфа в разных дракошек)
Чтобы давали еще и абилки..мм.. тут уже редактировать polimorph.2da надо.. но с этим трудности могут возникнуть.

QUOTE (Змий @ Nov 24 2005, 23:21)
Да нет.. мне фамилиар не нужен а просто чтоб создалось существо и начало разговор smile.gif

аа... тьфу ты... я торможу.
тогда у тя все оки... пара строк тока лишние.
чтобы начало диалог:
AssignCommand(oCreature,ActionStartConversation(oPC));

oCreature - твое существо
oPC - игрок

До этого отчисть стек акций у существа
AssignCommand(oCreature,ClearAllActions());
DEM
QUOTE
просто чтоб создалось существо и начало разговор


Я конечно не уверен... давно не был в редакторе, но кажись так smile.gif

Neverwinter Script Source
void main()
{

object oPC = GetPCSpeaker();

object oTarget;
object oSpawn;
location lTarget;
oTarget = oPC;

lTarget = GetLocation(oTarget);

oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "res-ref", lTarget);

oTarget = oSpawn;

AssignCommand(oTarget, ActionStartConversation(oPC, "тэг разговора"));

AddJournalQuestEntry("тэг журнала", 1, oPC, TRUE, FALSE);

}
Lex
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
object oTarget = GetNearestObjectByTag("WP_TAG");
object oCreature = CreateObject(OBJECT_TYPE_CREATURE, "creature_resref", GetLocation(oTarget));
DelayCommand(1.0,AssignCommand(oCreature, ClearAllActions()));
DelayCommand(1.1,AssignCommand(oCreature, ActionStartConversation(oPC)));
}

создает в точке WP_TAG существо с рез-рефом creature_resref, которое начинает диалог с игроком (тот диалог, что стоит у существа в поле conversation)
Добавлено в 23:41
оптимизируйте коды. Не надо лишних операций и переменных.
Змий
Спасибо! Всё заработало и существо, появившись сразу начинает разговор biggrin.gif
А каким способом сделать так, чтобы, можно было передвигать плэйсиблы? И чтобы между ними создавалось заклинание например "морозный луч" когда они рядом находятся и продолжалось до тех пор, пока их не отодвинуть друг от друга?
Просто идея у меня появилась; что то вроде квеста, при определённом составлении плэйсиблов суммонилось существо smile.gif


LEX: Змий, на будущее: сюда вопросы по скриптам.. те например есть, но не работает.. или оптимизировать надо.. ну в таком духе. А вот в Одиночные Вопросы уже можно кидать "Как Сделать".. ну и если новичок, то лучше в "Вопросы Новичков". Тема "скрипты" уже как бы на ступеньку выше.. хотя тут маленький беспорядок, но не надо его усугублять smile.gif)




по вопросу: двигать нельзя. Можно только Destroy\Create. Описаная тобой идея реальна, но надо прошарить работу с координатами. Задача весьма не тривиальная. smile.gif


Змий: Ясно, извините за офтоп smile.gif
Kavin
Lex, не казни за оффтоп:

Змий, а зачем двигать?.. Поднял в инвентарь, перетащил да выбросил в нужной точке. Вот и все.
Narruin
Здраствуйте!
Есть ли уже написанный скрипт, проверяющий персонажа, только-только созданного игроком на сервере, на предмет чрезмерно увеличенных характеристик; фитов, которые персонаж не может получить на 1 уровне, да и вообще кол-во фитов, если их больше чем можно? Нужен скрипт, который проверяет персонажа. Потому что с помощью 2да и Артмани можно горы своротить.
Вобщем я надеюсь что такой скрипт уже есть, чтобы его не писать.
Помогите пожалуйста!
NedWarN
Narruin Зогляни в Скрипты для Шардов, том должно быть! и Поиск поюзай.
Да и самому написать не долго, коль ненайдёш напиши мне в ПМ, я тебе напишу скрипт.

LEX: Хм.. Напишешь рабочий валидатор чаров, кидай в Базу скриптов. За такой скрипт я + вообще без вопросов дам. Готовых скриптов-валидаторов на форуме я не видел.
yes.gif Ок, только быстро не обещаю, очень много уроков и всякой лабуды...
Ленивый я короче. smile.gif
Narruin
QUOTE (NedWarN @ Dec 5 2005, 02:46)
LEX: Хм.. Напишешь рабочий валидатор чаров, кидай в Базу скриптов. За такой скрипт я + вообще без вопросов дам. Готовых скриптов-валидаторов на форуме я не видел.

Эх, как я понял прийдется писать такой скрипт с чистого листа. Деморализирует только то, что нужно потратить уйму времени на стук по клавишам, так как принцип действия легкий. Текста будет много.
Lex
вроде как валидатор чаров встроен в сервер, его надо только активировать.. или я не прав?
\\ обратись в форум Шарды.
NedWarN
QUOTE
вроде как валидатор чаров встроен в сервер, его надо только активировать.. или я не прав?
\\ обратись в форум Шарды.

Lex
Наврятли, unsure.gif Они в скриптах создали функции, подходящие для этого. Действа. biggrin.gif
Aiwan
Кто знает, как НПС с NW_FLAG_AMBIENT_ANIMATIONS сделать на время управляемым мной, к примеру в катсцене. Я имею ввиду, что бы он не работал как свободно бегающий, а просто статично стоял слушал мои актионы. Если убрать эту локалку он начнет слушаться? smile.gif Может кто занимался pardon.gif Глупости насчет очистки актионов или забивания стека команд предлогать не надо. Все знаю.
dumbo
Aiwan, должно помочь SetAILevel(oNPC, AI_LEVEL_VERY_LOW) - будет слушаться. wink.gif
Lex
QUOTE (NedWarN @ Dec 7 2005, 03:18)
Lex
Наврятли, unsure.gif Они в скриптах создали функции, подходящие для этого. Действа. biggrin.gif

ответ:
QUOTE (RiPPeR @ Dec 7 2005, 14:02)
Тебе хватит в сервере поставить галочку на ELC


я ж говорил, что есть.
Alaron
Дамы и Господа, need help.
Нужно сделать либо навык, либо заклинание - массовое "животное переживание", а то как-то обидно, что приручив, например, одного волка, всю остальную стаю приходится отправлять к Сильванусу (или Миликки). У кого-нибудь есть идеи, потому что я в скриптах не понимаю ровным счетом ничего???!!!
Заранее спасибо...
-fenix-
Alan, чтобы сделать свой навык или заклинание, нужно сначала ковырять 2da, а скрипты потом.
Ну а в скрипте пишешь, что тебе угодно например, применение спела DOMINATE ANIMAL на всех в заданном радиусе или на определенное кол-во существ.
Alaron
-fenix- Скажи, плиз, как в скрипте прописать изменение реакции на глав героя с негатива (атака при контакте) на хотя бы нейтральное отношение???
NedWarN
Alan Этот скриптик, должен поменять реакцыю непися! в зависимости от характера ПК.
Если тебе нужно чтоб атаковали, то добавь функцыю ActionAttack.
Neverwinter Script Source
void main()
{
object oNPC = OBJECT_SELF;
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
if(GetDistanceToObject(oNPC) >= 5.0 && GetDistanceToObject(oPC)<= 10.0)
{
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
{
SpeakString("Вали от сюда");
}
else if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
{
SpeakString("Привет");
}
else if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL)
{
SpeakString("Мммда");
}
}
}
Lex
как часто бывает, ответ не соответствует вопросу.
Имелась ввиду реакия враждебная/нормальная.
Это надо юзать
Neverwinter Script Source
// Make oSource into a temporary enemy of oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the enmity decays over fDurationInSeconds;
//   otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
//   the enmity lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Enmity will only be in effect as long as
// (faction reputation + total personal reputation) <= REPUTATION_TYPE_ENEMY.
void SetIsTemporaryEnemy(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f)

// Make oSource into a temporary friend of oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the friendship decays over fDurationInSeconds;
//   otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
//   the friendship lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Friendship will only be in effect as long as
// (faction reputation + total personal reputation) >= REPUTATION_TYPE_FRIEND.
void SetIsTemporaryFriend(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f)

// Make oSource temporarily neutral to oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the neutrality decays over fDurationInSeconds;
//   otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
//   the neutrality lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Neutrality will only be in effect as long as
// (faction reputation + total personal reputation) > REPUTATION_TYPE_ENEMY and
// (faction reputation + total personal reputation) < REPUTATION_TYPE_FRIEND.
void SetIsTemporaryNeutral(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f)


можно конечно и просто менять отношение фракции НПС.. но это не всегда удобно.

ЗЫ: тэг закрывается / сразу после [, а не перед ]. Больше прощать такое не буду.
Nashman
Привет,

Neverwinter Script Source
void main()
{
  object oChair = GetObjectByTag("Tag_Char1", 0);
  object oNPC = OBJECT_SELF;
  AssignCommand(oNPC, ActionSit(oChair));

}

Вот єто получился прикольный скрипт, кидать его на OnHeartBeat(Непися)... Тоесть получается что когда вы нажимаете мышкой на стуле, то Непись бысто садится smile.gif.

- Мне нужно его переделать, я хотел что бы Непись просто садился, в чем моя ошибка?
SeDAl
Помогите, пожалуйста, нужен скрипт, который будет скрывать плейсейблы днем и показывать ночью... Какой скрипт, куда вставлять...
(Светлячки появляются ночью и прячутся днем)
-fenix-
QUOTE (SeDAl @ Dec 25 2005, 22:36)
Помогите, пожалуйста, нужен скрипт, который будет скрывать плейсейблы днем и показывать ночью... Какой скрипт, куда вставлять... (Светлячки появляются ночью и прячутся днем)

Делаем в области невидимый(а можно и нет) объект и на его OnHeartbeat кидаем скрипт(можно на OnHeartbeat локи), который будет разрушать плейсы днем и криэйтить ночью.
И на хертбит светлячков нужно ставить скрипт, который ночью их будет прогонять в чащу леса, а ночью возвращать обратно или на OnHeartbeat объекта/локи дестроить и криэйтить их.
Делается так:
Neverwinter Script Source
void main()
{
//это наши плейсы
object oObject_1 = GetObjectByTag("ТАГ первого");
object oObject_2 = GetObjectByTag("ТАГ второго");
object oObject_3 = GetObjectByTag("ТАГ третьего");
//это вейпы. они обозначают место, на котором создаются плейсы ночью
object oWP_1 = GetWaypointByTag("ТАГ первого");
object oWP_2 = GetWaypointByTag("ТАГ второго");
object oWP_3 = GetWaypointByTag("ТАГ третьего");

//ночью
if (GetIsNight())//если ночь
    {
    if (GetLocalInt(OBJECT_SELF, "Night") != 1)//если локалка не равняется 1
        {
        //устанавливаем локалки
        SetLocalInt(OBJECT_SELF, "Day", 0);
        SetLocalInt(OBJECT_SELF, "Night", 1);
        //создаем плейсы
        CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса1", GetLocation(oWP_1));
        CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса2", GetLocation(oWP_2));
        CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса3", GetLocation(oWP_3));
        return;
        }
    else return;
    }

//утром
if (GetIsDay())
    {
    if (GetLocalInt(OBJECT_SELF, "Day") != 1)//если локалка не равняется 1
        {
        //устанавливаем локалки
        SetLocalInt(OBJECT_SELF, "Night", 0);
        SetLocalInt(OBJECT_SELF, "Day", 1);
        //уничтожаем объекты
        DestroyObject(oObject_1);
        DestroyObject(oObject_2);
        DestroyObject(oObject_3);
        return;
        }
    else return;
    }
}
SeDAl
Этот скприт подойдет под любой плейсейбл? Это как общий вид? Или нет, можите еще тогда выложить общий скрипт, подходящий для любых плейсейблов. За этот спасибо yes.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.