Помощь - Поиск - Пользователи - Календарь
Полная версия: ОДИНОЧНЫЙ ВОПРОС
Город Мастеров > РЕДАКТОРЫ > 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
Dik Morris
Vitalist!
Вот скорее всего то что ты хотел: игрок наступает на триггер и говорит фразу.
Рисуешь триггер
На onEnter ставишь этот скриптик:
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();

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

AssignCommand(oPC, ActionSpeakString("Фраза Игрока"));
}
-fenix-
QUOTE (DEM @ Jul 26 2005, 09:03)
Помогите, если это возможно!! shout.gif Можно ли свернуть окно скрипта... Я понимаю это глупый вопрос, но просто так мешает когда не можешь свернуть окно скрипта и разместить что нить в локе, посмотреть тег и т.д. swoon.gif

Сделать такое с окнами можно будет во втором Тулсете!

QUOTE (Vitalist @ Jul 27 2005, 09:16)
Zirrex, как я понял, эту фразу скажет NPC, да? А мне хотелось бы что бы это вякнул игрок, типа мысли вслух...

Тут и говорит игрок.
Aiwan
Vitalist вот простой скрипт не в ХоТУ скриптинге. Типа работает со старыми аддонами. Начерти на земле и имя триггера - фраза.
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnEnter  am_ten_speak_pc
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  Текст над РС  KeyTag - Количество раз
            Если 0, то бесконечно
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Original idea By: DBColl
//:: Created On: 21.04.2005
//:://////////////////////////////////////////////
void main()
{
object oPC = GetEnteringObject();
object oTrig = OBJECT_SELF;
string sSpeak = GetName(OBJECT_SELF);
int i = StringToInt(GetLockKeyTag(oTrig));
int iSp = GetLocalInt(oTrig, "SPEAK");
  if (!GetIsPC(oPC) || iSp >= i && i!=0)
    {
    return;
      }
      AssignCommand(oPC, SpeakString(sSpeak));
      if (i!=0)
      {
      SetLocalInt(oTrig, "SPEAK", (iSp+1));
      }
}
Vitalist
Спасибо всем! А скажите пожалуйста, у меня у одного тулсет в пиратке глючит: скрипты на русском идут (например, вместо Give the speaker some gold - дать говорящему денег)?
Dik Morris
Ты хотел сказать что скрипты НЕ идут, сделанные в визарде? Если да тогда удали русские комментарии все заработает biggrin.gif
Vitalist
А как это сделать?
Dik Morris
Блин ты, что совсем нечего не понял, или шутишь?! crazy.gif
Ну а если серьезно то комментариями в скрипте считаются, вот такой знак // и все что стоит за ним ( Это выделяется зеленым цветом) Удали и все должно заработать...
З.Ы: ОБЯЗАТЕЛЬНО качай мануал Айвана, для новичков КЛАД!
Batkom
или поставь патч dumbo, замечательная вещь, и как я без нее работал rolleyes.gif
Zirrex
Ребят, вы издеваетесь над ним что ли? Вообще-то все комментарии в скриптах исходят прямиком из файла dialog.tlk. Как я понял, он переведенный полностью, поэтому редактор и все комментарии, а также все остальное на русском языке. Даю совет, не используйте русскую версию игры.
Batkom
я использую и никаких проблем, все замечательно работает, только вот версия перевода старая и для кнопочки RunTest(помоему эта фича в 1.66 добавилась) ничего не написано)
Добавлено в [mergetime]1122505794[/mergetime]
Вопрс, можно ли открыть диалог от одного игрока другому?, допустим игрок на игрока-цель итем юзает, а зетм цели открывается диалог как бы от имени активатора, и как это примерно будет выглядеть? Если убого, придется от этого отказаться и открывать для таргета как всегда диалог сам с собой
Мефистофель
Люди помогите, скачал с ваулта хак с эффектами.
заменил visualeffect 2da мой старый на ихний.
попробовал проверить 0 ничего не добавилось хотя всё сделал. у меня более 50 хаков стоит и нормально, а этот ну никак.
кстати там в комплекте шлемы и их тоже нет что делать.
вот хак кому надо.
Хак
Добавлено в [mergetime]1122507408[/mergetime]
Neverwinter Script Source
void main()
{
    object oPC = GetLastUsedBy();
    ActionStartConversation(oPC);
}

Batkom
Ставь на онЮзед любого предмета, незабудь написать диалог для этого предмета.
Zirrex
Batkom, тебе надо при активации диалога указывать, чтобы он открылся у цели, а не у тебя.

Neverwinter Script Source
void main()
{
    object oItem = GetItemActivated();
    object oTarget = GetItemActivatedTarget();

    if (sItemTag == "item")
    {
        AssignCommand(oTarget, ActionStartConversation(oTarget, "dialog", TRUE, FALSE));
        return;
    }
}

Мефистофель, а версия игры у тебя какая?

По поводу скрипта, и что это будет? Потом, куда именно ты собрался ставить сей скрипт, у обычных предметов нету раздела скриптов, все, что должно происходить в момент использования предмета, описывается только в эвенте "OnActivateItem". И опять-таки, если следовать скрипту, то диалог откроется тому, кто использует вещь smile.gif
zmey
QUOTE
zmey краткие ответы:

1. Самое простое, запретить все. С крафтом просто, удаляется диалог "x0_skill_ctrap" или дописывается еще одна ветка диалога, где пишется, что "крафт выключен", чтобы избежать вопросов. Не создавать материалы при убийстве монстров, убрав строчку " craft_drop_items(oKiller);". Посмотреть файл "nw_o2_coninclude" и убрать из генерации вещей пустые листки для заклинаний.


Кхм... Насчет крафта.. мне надь, чтобы у PC не было таких навыков. Диалог - то я переделал, а при повышении уровня предлагается там всякое: "Создать броню" "написать свиток" вот эту хрень мне и надо убрать.

и ишо одна тупой вопроса, однако! мне надо, чтобы непись подошел к PC, начал с ним диалог, а после окончания - помер. Как заставить непися подойти и заговорить я знаю, но как сделать, чтобы он потом подох??? crazy.gif crazy.gif crazy.gif crazy.gif crazy.gif crazy.gif
Добавлено в [mergetime]1122545347[/mergetime]
QUOTE
Спасибо всем! А скажите пожалуйста, у меня у одного тулсет в пиратке глючит: скрипты на русском идут (например, вместо Give the speaker some gold - дать говорящему денег)?

Виталист, не (ВЫРЕЗАНО ЦЕНЗУРОЙ), не у тебя одного такая хрень. Ты их постирай, а ежели не компилит - замени английскими. crazy.gif
Добавлено в [mergetime]1122545563[/mergetime]
crazy.gif Кстати, скоро доделую хак с иконками из Dungeon Lords... good.gif
Dik Morris
Дык вот есть анимация смерти, на последнюю ветку в диалоге вешай:
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("ТАГ НПС");
effect oEf = EffectDeath(TRUE);
ActionWait(1.0)//Это время, можно самому регулировать, а можно и убрать
ApplyEffectToObject(DURATION_TYPE_INSTANT, oEf,oNPC);
}
zmey
QUOTE
Дык вот есть анимация смерти, на последнюю ветку в диалоге вешай:


Спа-си-ба!!! crazy.gif
Vitalist
Dik Morris, спасибо - помогло. А то я раньше инглишом заменял.
А на счёт ":crazy:", то я подумал, что надо с помощью спец проги вскрыть спец файл и удалить спец строчку, ответственную за сий беспредел. Но оказалось, что всё намного проще biggrin.gif
PS Давно уже скачал
zmey
[SIZE=7]ГЛУПОСТИ СЮДА? Мне бы ник изменить... я его по дури не совсем верно написал (Zмей надо) как сие можно? shout.gif
Archangel
QUOTE
ГЛУПОСТИ СЮДА? Мне бы ник изменить... я его по дури не совсем верно написал (Zмей надо) как сие можно?

Поговори с Айвом. Он может изменить.
Zirrex
zmey, зачем убирать умения, если проку от них нет? Чтобы их убрать раз и навсегда, можно с помощью скриптов присваивать умением значение 0, либо поправить 2da, и убрать их оттуда, но я не уверен, что такое легко сделать, не правя остального, что взаимодействует с этими умениями. Т.е., когда они просматриваются при повышении уровня.
Aiwan
[QUOTE=zmey, Jul 28 2005, 16:56]я его по дури не совсем верно написал (Zмей надо) как сие можно? [/QUOT] Такое сочетание знаков у нас нельзя. Либо русскими, либо английскими.
Добавлено в [mergetime]1122573678[/mergetime]
Видишь, даже сочетание таких букв не парьсится...
QUOTE (zmey @ Jul 28 2005, 16:56)
ГЛУПОСТИ СЮДА? Мне бы ник изменить... я его по дури не совсем верно написал Стер как сие можно?

Batkom
у меня напрочь виснет сервер если в локации находятся более 3 слушающих существ, как только игрок что нибудь скажет, они несутся к нему и далее сервер падает crazy.gif
Zirrex
Batkom а трое то зачем? Достаточно и одного слушающего существа. Также желательно сделать, чтобы они были невидимы. Именно так сделано на посохе DMFI.
Vitalist
У меня есть вспышка света и я хочу, чтоб после разговора с одним NPC она погасла. Это реально сделать?
Dik Morris
Всмысле вспышка света? Факел или "лампочки" ? Или на НПС свет? Обьясни сорри поподробнее dirol.gif
Batkom
у меня в разговоре есть скрипт
Neverwinter Script Source
int StartingConditional()
{
    object oGild = GetItemPossessedBy(GetPCSpeaker(), "gild");
    int iGP = GetLocalInt(OBJECT_SELF, "gp");
    int pGP = GetGold(GetPCSpeaker());
    int sGP = GetCampaignInt("guildbase", "gp"+ GetLocalString(oGild, "name"))
    if(pGP >= iGP)
        {
        SetCampaignInt("guildbase", "gp"+ GetLocalString(oGild, "name"), sGP+iGP);
        SetLocalInt(OBJECT_SELF, "gp", 0);
        return TRUE;
        }


    else
    {
    SetLocalInt(OBJECT_SELF, "gp", 0);
    return FALSE;
    }
}

не компилируется говоря, что потерян анализатор переменной
что за ботва?
Агрессинг
Vitalist
Можно деактивейтом, но если она тебе не нужна больше, то дестрой ее вот так -
На последнюю ветку диалога
CODE
DestroyObject(GetObjectByTag("ТЕГ ВСПЫШКИ"));

Добавлено в [mergetime]1122649229[/mergetime]
Batkom
У тебя в скрипте проверка guildbase идет выше чем ее определение.
Vitalist
Агрессинг, спасибо -помогло!
-fenix-
Batkom, постваь точку с запятой в этой строке
Neverwinter Script Source
int sGP = GetCampaignInt("guildbase", "gp"+ GetLocalString(oGild, "name"));

QUOTE (Агрессинг @ Jul 29 2005, 17:49)
У тебя в скрипте проверка guildbase идет выше чем ее определение.

И что? Просто в переменной ни чего небудет, вот и все!
Zirrex
Агрессинг, переменную можно взять хоть нулевую, хоть не нулевую, в расчет, это не изменит ничего.

Batkom, внимательно просматривай скрипты, прежде чем кричать, на помощь. Очень часто ошибка смешна и довольно популярна в больших скриптах.
Vitalist
На прошлой страницы Aiwan давал скрипт на "речь". Он написал, что "Текст над РС KeyTag - Количество раз. Если 0, то бесконечно" - я так понимаю, чтобы говорилось 1 раз надо исправить тут "if (!GetIsPC(oPC) || iSp >= i && i!=0)". Если да, то тогда почему после этого скрипт не работает (и даже если потом ставишь 0)? А если нет, то где надо было исправлять?
DEM
Я тебя в упор не понял....
Zirrex
Vitalist данное условие сработает только тогда, когда с ним работает не игрок или же "iSp >= i" и не равно 0. Впиши в Key Tag 1, и скрипт сработает 1 раз.

DEM если не понял, зачем же пишешь?
Vitalist
Блин, что меня здесь никто не понимает? crazy.gif Сейчас попробую по-другому... Итак, на прошлой странице Aiwan дал мне скрипт (при входе на тригер, перс говорит какую-нибудь фразу). Пока все понятно? Дальше: мне нужно, чтобы эта фраза говорилась только один раз, а не бесконечно. Что нужно там исправить?
Zirrex
Vitalist я же тебе написал. Ты внимательно читал? Чтобы не было более вопросов, лучше напишу. Открываешь свойства триггера, переходишь в раздел "дополнительные настройки", и ставишь в поле "Key Tag" 1. Что тут не ясного? Универсальный скрипт, количество фраз зависит от настроек.
Мефистофель
QUOTE (Zirrex @ Jul 28 2005, 09:09)

Мефистофель, а версия игры у тебя какая?

ХотУ 1.65
Zirrex
Мефистофель поэтому у тебя те эффекты и не работают, они же требуют версии 1.66. Я скачал по той ссылке файл, хотел посмотреть, и сразу понял, что версия не та. К тому же об этом написано на самом Ваулте.
Vitalist
Zirrex, все понятно - спасибо!(праду перевод тулсета у меня другой - не сразу разобрался) Просто когда я писал предыдуший пост, твоего еще не было. Опять не понятно, да? Обьясняю: открываю страницу, отключаюсь от инета (я такой экономный biggrin.gif ) и пишу сообщение. Поэтому и не увидел!
И сразу следующий вопрос: как забрать нужное количества бабла у перса при разговоре?
Dik Morris
QUOTE
Обьясняю: открываю страницу, отключаюсь от инета (я такой экономный)

Тоже самое Vitalist , я так же... biggrin.gif
Neverwinter Script Source
void main()
{


    TakeGoldFromCreature(Кол-во золота, GetPCSpeaker(), TRUE);
}

Это в визарде делается...
Vitalist
Dik Morris, ну да, в визарде. Но мне нуда, чтобы если у перса не хватало, то NPC вякнул что-нибудь. Такое моно?
Dik Morris
В смысле не хватало? Можно сделать, чтоб Текст появлялся при: При таком то кол-ве денег, допустим:

НПС - Хай, бабки давай!
ИГРОК - На держи (Текст появ. при: таком то кол-ве денег)
ИГРОК - Нету бабок…(Просто так появ.)
З.Ы: Вот скрипт на то чтоб текст появ. при опред. кол-ве золота…
Neverwinter Script Source
int StartingConditional()
{
    int iResult;

    iResult = GetGold(GetPCSpeaker())>1;
    return iResult;
}
Tonakien
Просьба о помощи...
Кто как дебагит модуль если он здоровый, а нужно оказаться в определенном месте с определенными значениями на тебе и на мире? dntknw.gif

ЗЫ Прошу прощение за дубляжи у модераторов, я здесь недавно и не знаю куда сУваться с подобными просьбАми unsure.gif
Vitalist
Dik Morris, самое то! А теперь моей буйной фантазии нужно следующие. К примеру NPC задает 3 вопроса, к которым прилагаються 3 варианта ответа, причем как не трудно догадаться по 1му правильному. К концу диалога NPC должен сказать, что "типа все правильно" - это если игрок выбирал только правильные фразы. Интуитивно догадываюсь, что это делаеться, наверное, через переменные, но хотелось бы уточнить. И ещё: что нужно нацарапать, чтобы игроку обращались на его имя? Помню что-то типа First Name, но как то подругому...
Dik Morris
QUOTE
К примеру NPC задает 3 вопроса, к которым прилагаються 3 варианта ответа, причем как не трудно догадаться по 1му правильному.

Проще и удобнее делать чтобы НПС сразу говорил что ты не прав, ну а если уж очень надо, тогда делай через локальные переменные, на каждый прав. ответ вешай локалку, а потом проверяй. yes.gif
QUOTE
чтобы игроку обращались на его имя?

В редакторе диалога ВСТАВИТЬ - <FirstName>
Vitalist
Dik Morris, не-а, так не катит. Нужно, как я писал. Можно так?
Dik Morris
QUOTE
Dik Morris, не-а, так не катит. Нужно, как я писал. Можно так?

Дык я и написал dirol.gif Говорю ставь локальные переменные и потом проверяй, их и все ОК good.gif
Ferst
QUOTE (Tonakien @ Jul 30 2005, 16:16)
Просьба о помощи...
Кто как дебагит модуль если он здоровый, а нужно оказаться в определенном месте с определенными значениями на тебе и на мире?  dntknw.gif

Neverwinter Script Source
SendMessageToPC(oPC, "iTop="+IntToString(iTop)+"  iBottom="+IntToString(iBottom)+"  iCount="+IntToString(iCount));//////


Тока так smile.gif
Слэши в конце специально, чтобы знать что эту строчку можно удалить в любой момент. Полезно, когда модуль заработал и дебаг не нужен, чтобы найти все такие строки.
Vitalist
Все, что я могу сам - так это одну переменную и сразу ее проверить. А мне во как надо: повесить 3 переменные и потом уже проверить - если хоть одной нет, то всё - фразы не будет. Если ты это имел ввиду, то напиши как это реализовать!
-fenix-
Neverwinter Script Source
if(GetLocalInt(object, "Имя") == число &&
  GetLocalInt(object, "Имя") == число &&
  GetLocalInt(object, "Имя") == число )

Знак && означает (И), то еть если верно это И это И это То сделать это.
Dik Morris
Vitalist, ну ладно, пишу более подробно...
Это ведь просто, в визарде делается: сначала создай переменные на каждый правильный ответ свою переменную, а потом проверь их вот этим скриптом:
Neverwinter Script Source
int StartingConditional()
{
if(!(GetLocalInt(GetPCSpeaker(), "ZAGADKA") == 01)) //Это первая локалка, та которая вешается на прав. ответ
   if(!(GetLocalInt(GetPCSpeaker(), "ZAGADKA") == 02)) //Это вторая которая вешается на прав. ответ
    if(!(GetLocalInt(GetPCSpeaker(), "ZAGADKA") == 03)) //Это третья которая вешается на прав. ответ
        return FALSE;

    return TRUE;
}

З.Ы: -feniks- я это отправил на тот случай если Vitalist тебя не понял.
З.З.Ы: Vitalist наверно тебе лучше в тему: ВОПРОСЫ НОВИЧКОВ...
Vitalist
Спасибо!
Млять, меня это уже задолбало: текст появляеться чрез 1! Т.е устанавливаю переменную, ставлю проверку - а он не появляеться! Приходиться заново переписывать скрипт. Может я что не правильно делаю: последовательность или ешё чего? До сих пор не могу сделать "Zagadku"... diablo.gif
PS Dik Morris, лады
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.