Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > 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
Lex
ну массивы вполне удобно эмулируются.
Ilerien
Neverwinter Script
struct C_NPC npc1
Цитата
ну массивы вполне удобно эмулируются.
Не сказал бы, что удобно smile.gif
Белатрис
У меня есть книга, с помощью которой можно вызвать заклинание. Но как запретить вызов, если, к примеру, переменная ch не равна 4?
Ilerien
Поставить проверку в скрипт спелла или в спелхук. Что-то типа
Neverwinter Script
object oItem = GetSpellCastItem();
if(GetTag(oItem) == "тег_итема" && GetLocalInt(<объект, на котором лежит переменная>, "ch") != 4)
    return;
Белатрис
Цитата(Ilerien @ Mar 30 2008, 05:23) *
Поставить проверку в скрипт спелла или в спелхук.

Модуля? rolleyes.gif
Ilerien
Скрипт спелла и спеллхук сами по себе не лежат ни в каких слотах.
В студию название спелла, который юзается со шмотки, её тег, и объект, на который вешается нужная локалка.
Deirel
А как реализовать, чтобы персонаж куда-нибудь прыгал (да хоть бы и в котел, как было реализовано в СоУ)?
Zirrex
Поищи на Ваулте тестовый модуль по слову "Jump". Там довольно подробно показано, как это делается. На самом деле нет ничего в этом сложного.

Для прыжков используется следующий эффект:

Neverwinter Script
effect EffectDisappearAppear(location lLocation, int nAnimation=1)
Deirel
Спасибо. rolleyes.gif буду знать...
просто у меня модуль, там по идее должны в ворота вбегать орки, на них кастуется заклинание (просто эффект) и они все сигают со скалы. Одновременно ))
Sugo77
Привет всем!
Подскажите какая в этом скрипте ошибка для спавна монстров?(
Никак не спавнится (в строчку монстра death ввел как меня учил Ineren и неработает уже 6 лет пытаюсь соспавнить хоть одного монстра и никак(((((((((((((((((((((((((((((((((((((((((((((
Ну научите же кто нибудь через асю или скинтье мне мод на мой емаил с применром ПЛИЗЗЗЗЗ!

Моё мыло:sugo3377@mail.ru
Моя ася:263683769
Имя:Игорь

А вот сам скрипт который не работаетsad.gif
Neverwinter Script
#include "nw_i0_2q4luskan"

void main()
{
    object oSelf = OBJECT_SELF;
    string sResRef = GetResRef(oSelf);
    location lLoc = GetLocation(oSelf);
    DelayCommand(60.0f, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc));
}
Lex
э.. и не будет работать. Вешать что-то на труп монстра, который щас исчезнет это вообще не айс.
попробуй вместо
Neverwinter Script
DelayCommand(60.0f, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc));

поставить
Neverwinter Script
AssignCommand(GetArea(OBJECT_SELF),DelayCommand(60.0, CreateObjectVoid(OBJECT_TYPE_CREATURE, sResRef, lLoc)));


ps: юзать для скриптов nss тэг, а то буду по рукам бить.

pss: На мыло никто писать ничего не будет.
Sugo77
ОООООООО я неверю,это свершилось yahoo.gif !
СПАСИБООООООО! rolleyes.gif angel.gif
Теперь буду создавать свои шарды.
Спасибо вам большое Ilerien and Lex! rolleyes.gif angel.gif





Охх рано радовался(
Спавн то получился да только монстры спавнятся там где их убили,а как сделать так чтобы он респился на конкретную точку?




Вот такой скриптик я выташил из стандартного модуля Кобольды против гоблинов для спавна на точку,но я нехочу чтобы у меня тока гоблины да кобльды спавнились,я его исправить пытался на Троля теги везде троля прописал но выдает ошибку на пункте 7 при нажатии F7,где что исправить пождскажите плиз?,где теги точки спавна прописать?и куда вообще этот скрипт вставить лучше?или предложите свой простенький скрипт для спавна монстра на точку плиз.
Neverwinter Script
void main()
{
    int iUD = GetUserDefinedEventNumber();
    int iRandom = Random(7)+1;
    string sRandom = IntToString(iRandom);
    object oNW_TROLLSpawn = GetNearestObjectByTag("NW_TROLL");
    location lSpawn = GetLocation(oNW_TROLL Spawn);

    if (iUD == 1007)
    {
        CreateObject(OBJECT_TYPE_CREATURE, "NW_TROLL"+sRandom, lSpawn);
    }
}


Вот названия в моем модуле монстра и точки:

Имя точки спавна:NW_TROLL Spawn
Тэг точки спавна:Spawn_NW_TROLL
Тэг Троля:NW_TROLL
Имя Троля:Тролль
И ещё плиз чтоб они бесконечно спавнились.

П.C:Ilerien and Lex ваш скрипт работает,но он спавнит не на конкретную точку,а там где убили монстра,а мне бы на конкретную точку научиться(Научите плиз.

Все вопрос со спавном снимается инерен научил меня biggrin.gif
Всю ночь неспал училсяwacko.gif
Melisse
Neverwinter Script
object oNW_TROLL_Spawn = GetNearestObjectByTag("NW_TROLL");
location lSpawn = GetLocation(oNW_TROLL_Spawn);

azathoth
в модуле с гоблинами и кобольдами создаются монстры с тегами типа "*goblin1", "*goblin2" и т.д. так что если у тебя тэг тролля "NW_TROLL" без циферок, то и спаунить надо без циферок:

Neverwinter Script
void main()
{
    int iUD = GetUserDefinedEventNumber();
    //int iRandom = Random(7)+1;
    //string sRandom = IntToString(iRandom); <-- то есть это нам уже не надо, ну а если надо - используй предыдущий вариант
    object oNW_TROLLSpawn = GetNearestObjectByTag("NW_TROLL_Spawn"); // <-- тут нужен тэг именно точки спавна, а не существа, чтобы оно создавалось там, где нам нужно, а не там, где умер предыдущий тролль. название тролля и спавна нам не нужно вообще.
    location lSpawn = GetLocation(oNW_TROLLSpawn); // <-- а тут верно вписать название нужного object'a

    if (iUD == 1007)
    {
        CreateObject(OBJECT_TYPE_CREATURE, "NW_TROLL", lSpawn); // ну и тут циферь уберём (подразумевается, что "NW_TROLL" - это резреф тролля, хоть он и должен быть с маленькой буковкиwink3.gif)
    }
}

как-то так...

P.S. Эх, помнится и я начинал свой скриптинг с разбора этого скрипта (только интернета у меня тогда ещё не было) - как раз повод если делать с нуля разобраться отличии резрефов, тэгов, названий и прочего.
Sugo77
Да спасибо со спавнами уже порядок умеем.

Следуший вопрос,точнее 2;

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

2.Как сделать так чтобы после смерти игрок портировался к определенной точке,а не оставался лежать на том месте где его убили?
при этом чтобы ему отнимались опыт и деньги,ну можно и без потерей,главное научите-подскажите как чтобы игрок портировался после смерти на какуюто определенную,заданную мною точку.
denis0k
1. Игроку фракцию изменить нельзя. Только сменить отношения всех фракций к нему.
2. Смотри по форуму в базе скриптов. Варианты смерти чара обсосаны до неприличия подробно, даже есть несколько готовых систем с подробными комментариями.
Sugo77
1.Ну а как этого добиться то поподробнее плиз.
2.Я долго искал не нашел можно ссылку на эту тему?
denis0k
1. Читай описание AdjustReputation().
2. В этом же разделе топик с недвусмысленным названием База скриптов.
Sugo77
Ну не нашул я то что мне нужно именно про смену фракции на тригерах при переходе локаций.
Если ты имееш этот скрипт дак проше выложи тут плиз чем меня посылать куда то.
Тут в теме описание -задаем вопросы -получаем ответы на них а ты меня посылаеш куда то.(
denis0k
Neverwinter Script
AdjustReputation(oPC, oNPC, nAdjust);
// oPC - игрок, если ловить с триггера, то GetEnteringObject()
// oNPC - непись из нужной фракции, можно найти по тегу
// nAdjust - число (мб отрицательное), на сколько изменить репутацию, например -100 сделает фракцию враждебной
Цитата
Если ты имееш этот скрипт дак проше выложи тут плиз чем меня посылать куда то.
Тут в теме описание -задаем вопросы -получаем ответы на них а ты меня посылаеш куда то.(
Если бы был, я бы выложил. Писать с нуля у меня времени нет, особенно учитывая мое непонимание твоего алгоритма.

Сейчас происходит не вопрос-ответ, сейчас происходит обычный троллинг. Информация по функциям есть, примеры есть, ради интереса я сделал по форуму поиск по строке AdjustReputation - выдало 2 страницы результатов с различными вопросами, комментариями и примерами.

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

Я не спорю, что скриптинг - это одна из самых сложных частей нвн тулсета, но тем не менее кормить троллей ответами на вопросы, заданными за 6 лет раз по сто, желания нет. Наверно поэтому и откликнулось всего пара человек.


Что делать? Пиши скрипт сам, какие функции использовать я тебе сказал. Если не заработает, выложишь его тут, мы поправим.
azathoth
Цитата
Тут в теме описание -задаем вопросы -получаем ответы на них а ты меня посылаеш куда то.(

задаём вопросы - получаем ответы. если ответ "найти в базе" на вопрос "как" не кажется вам ответом, то вы смотрите на проблему не с той стороны.
Memphis
Народ, подскажите мне скрипт, который открывает окно трейда! Срочно нужен!

ЗЫ. Я новичок. Но большое желание создать модуль. Заранее спс.
Aiwan
Neverwinter Script
//:://////////////////////////////////////////////
//:: Name: Открывает ближайший магазин
//:: Copyright © 2006 WRG! Team
//:://////////////////////////////////////////////
/*
          Открывает ближайший магазин
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 09.05.2006
//:://////////////////////////////////////////////

void main()
{
  object oSelf = OBJECT_SELF;
  object oPC = GetPCSpeaker();
  object oStore = GetNearestObjectByTag("ТАГ_МАГАЗИНА", oSelf);
  if(!GetIsObjectValid(oStore) || GetDistanceBetween(oStore, oSelf) > 20.0)
  {
    // Магазина нет или он дальше 20 метров
    return;
  }
   else  AssignCommand(oSelf, OpenStore(oStore, oPC));
}
Sugo77
Ох как сложно помочь-научить много знающему человеку в скриптах незнающему?лучше грязи на 10 страниц чем выложить 1 скрипт,да?И не надо меня оскорблять,я что давал повод для оскорблений?Я уже давно не маленький мальчик.

Скажи лучше куда мне его вставлять?

OnEnter Модуля,локации или куда?

Может кто то поможет мне все таки с его написанием,кто в этом смыслит?

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

Уже сделал около 30 карт+магазины,система опыта,спавны монстров,все это готово,но это только начало( сейчас как раз надо с фракциями чтоб кто то мне помог ,я потом собираюсь запустить этот сервер в интернет.Нехотел раскрывать свои карты думал что украдут идею,но чтобы мне помог кто то видимо придется,я делаю модуль по легендарной игре Стар крафт для европы,уже готово на 50% за год уже побывало на моем бета тест-сервере достаточно человек,щас мне нужна конкретно помощ ваша мастера!3 расы должны быть враждебны друг к другу:Зерги,Терраны и Протосы,помогите же с написанием скрипта фракций.3 планеты,3 базы ,3 основных карты сражений у меня+много локаций + арена с бесплатным золотом и опытом для тренировки.

Это теам-пвп сервер.

Нужно сделать так чтобы скажем игрок выбравший Зергов был враждебен к Теранам и Протосам,а игрок выбравший Протосов к Теранам и Зергам,ну и выбравший Теранов соответственно к Зергам и Протосам.

Моя личная идея и работаю уже несколько месяцев над ней,пока что один(

Очень нужна ваша помощ Мастера в написании скриптов,мне и самому интересно их использовать и запоминать-применять,только туго у меня с их написанием уж извиняйте.
azathoth
Neverwinter Script
OnEnter Модуля,локации или куда?

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

Вот такая есть функция:
Neverwinter Script
// Set how nStandardFaction feels about oCreature.
// - nStandardFaction: STANDARD_FACTION_*
// - nNewReputation: 0-100 (inclusive)
// - oCreature
void SetStandardFactionReputation(int nStandardFaction, int nNewReputation, object oCreature=OBJECT_SELF)


Если её вставить в блок main три раза с нужными параметрами - то будет счастье.

P.S. После запятой ставь пробел, или однажды ночью к тебе явится доктор Розенталь и съест моск.
Sugo77
Ну вот хоть один откликнулся тоько я нем немогу разобраться в скрипте етом

так надо менять для трех фракций чтобы игроки трех фракций были враждебны друг другу???
К примеру;

1 Тригер Зерги
void SetStandardFactionReputation(100 nStandardFaction, +50 nNewReputation, object oCreature=OBJECT_SELF)

2 Тригер Протос

void SetStandardFactionReputation(100 nStandardFaction, -50 nNewReputation, object oCreature=OBJECT_SELF)

3 Тригер Теран

void SetStandardFactionReputation(100 nStandardFaction, 100 nNewReputation, object oCreature=OBJECT_SELF)

А за место этого что-object? и этого-OBJECT_SELF?

и куда его вставлять в писмена свойства тригера OnEnter да?
Aiwan
Sugo77, язык скриптов это как язык иностранный. Его надо учить и понимать. Вот в этой теме я попытался дать азы. Почитай, может быть основы поймешь, а там сможешь задавать фопросы точно зная, что на них ответят.
Neakris
Доброго всем времени суток!

Помогите, пожалуйста, решить одну проблему. Есть предмет, при использовании которого игрок превращается в монстра. Вот скрипт:

Neverwinter Script
void main()
{
    object oPC = GetItemActivator();
    object oItem = GetItemActivated();
    effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
    effect ePoly = EffectPolymorph(POLYMORPH_TYPE_MEDUSA);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoly, oPC);
    DestroyObject(oItem);
}


Все работает прекрасно, игрок исправно превращается, но! Суть траблы: у некоторых существ не работают абилки. Например: "Тьма" у дроу и драйдера, "Окаменяющий взгляд" у медузы и василиска. Пишется, что "Вы не можете сконцентрироваться для эффективного применения этой способности". Но все другие абилки работают на ура, как то: метание игл у мантикоры и дыхание дракона.
Вопрос: в чем проблема?
Примечание: если просто поставить аналогичного монстра на карте, скажем, медузу, то она отлично будет пользоваться своими абилками, и не подозревая о моих проблемах. Плюс ко всему у Оборотня (престиж-класс) все отлично работает. Видимо, другой алгоритм? В любом случае, дроу оборотня превосходно накладывает заклинание тьмы.

+ Еще один вопрос, который может решить разом все проблемы: можно ли реализовать в игре полноценное превращение? Я имею в виду, что 1. создать монстра, 2. передать управление монстром игроку вместо его героя, 3. Сохранить героя и удалить его с локации, 4. По истечении времени создать сохраненного геро и, передав управление им игроку, убрать монстра.
Монстр должен быть обязательно с палитры, дабы не было подобных глюков! Заодно и баланс подкорректиирую.

Заранее благодарен!
Ilerien
Цитата
Пишется, что "Вы не можете сконцентрироваться для эффективного применения этой способности"
Глянь скрипты этих абилок, собака там зарыта smile.gif Скорее всего это не работает, если полиморф вызван не одним из фитов полиморфа шифтера (насколько я помню, там ещё скриптово прописанный лимит юзов есть, хоть иконки абилок и всегда активны). Почему неписи юзать могут - скорее всего у них там абилки другие, хоть эффект и похож.
Реализовать полноценное нельзя. По меньшей мере, стандартными средствами нвн.
Neakris
Ilerien, спасибо огромное! Я думал, что это глюк, связанный с тем, что у меня новый модуль, а не основные компании нвн.
Сам собой всплыл очень важный вопрос:
Где можно посмотреть скрипты абилок? Я думал, что они зарыты в *.exe.
Как отредактировать эти абилки, если они не являются типичными ресурсами нвн (то есть через редактор до них не добраться)?

Я нашел эти скрипты. Но есть 2 проблемы: во-первых, я по-прежнему не могу найти в этих скриптах, почему не работают они, а во-вторых, если я изменю их, версия моего сценария станет вместо глобальной расширенной. Что это значит?
По теме скриптования. Сам понимаю, что это уже не прилично, тем не менее: если кому-нибудь будет не лень, посмотрите в редакторе, что нужно изменить, чтобы избежать вышеупомянутых проблем.

Еще раз спасибо.
Ilerien
Абилки в экзешнике не зашиты.
Посмотреть, как точно называются эти скрипты, можно в spells.2da, юзая поиск по примерному названию абилки. Ну или воспользоваться фильтром. Скрипты абилок - это <название кампании>_s1_<название абилки>. Шифтер вроде появился только в ХотУ, поэтому надо искать скрипты x2_s1_<название>. Например, x2_s1_petgaze - скрипт окаменяющего взгляда. Открываем и видим:
Neverwinter Script
if (ShifterDecrementGWildShapeSpellUsesLeft() <1 )
    {
        FloatingTextStrRefOnCreature(83576, OBJECT_SELF);
        return;
    }

Строчка 83676 из диалог.тлк и есть "Вы не можете сконцентрироваться". Чтобы была возможность юзать абилки, можно убрать эту проверку. Ну или чтобы сохранить в неприкосновенности формы самого шифтера, можно при юзе твоего предмета вешать на игрока локалку и потом в скрипте абилки делать проверку на локалку.
Цитата
если я изменю их, версия моего сценария станет вместо глобальной расширенной. Что это значит?
Это значит, что твой модуль будет использовать переписанный тобой скрипт везде вместо стандартного. К стандартному всегда можно вернуться, удалив кастомный.
Neakris

/* OFFTOPIC
Ilerien, еще раз огромное тебе человеческое спасибо, я во всем разобрался, все отлично работает! Уже обставил маленький садик собственной коллекцией скульптур) Плюс поправил другие эффекты, наподобие тьмы. Спасибо!
*/
denis0k
Цитата
так надо менять для трех фракций чтобы игроки трех фракций были враждебны друг другу???
Я писал уже, что игроку фракцию сменить нельзя. Значит фракциями отношения между игроками не настроить. Можно использовать SetPCDislike(), но ничто не мешает потом залезть в список игроков и снять дизлайки.

Единственное, что ты можешь сделать - злых неписей. Как, уже написали целых два способа.

P.S. Имхо проще найти скриптера, чем с нуля выучить язык программирования, особенно если он первый в твоей жизни.
Neakris
Хмм, возник еще вопрос: можно ли через скрипт прописать существу дополнительную абилку (спелл, фит...)? Возможно, для этого можно использовать таинственную функцию talent с многообещающим переводом "талант", но я не знаю, честно, сколько ни бился...
И еще: можно ли изменять базовых существ (в которых превращается игрок, когда используется функция EffectPolymorph) из набора POLYMORPH_TYPE_***? А то несолидно это, я еще в основной компании невика отметил: балор без меча и без магии - просто огненная фея. Про бехолдеров без единой абилки, которые только кусаться горазды, я вообще молчу, хотя это уже другая история...
// И последнее: как удалять посты? =) А то я в соседней теме напостил, теперь хорошо бы убрать за собой...
denis0k
Цитата
можно ли через скрипт прописать существу дополнительную абилку (спелл, фит...)?
Можно с некоторыми оговорками. Как удаление гланд через задний проход.

Фит можно повесить на шкурку и одеть ее игроку (как у мобов, в тулсете слот шкурки виден, в игре - нет). Но он считается временным. Т.е. если дать так мощную атаку, на апе разрубание все равно не взять.

Спелл можно повесить на "обычный" итем и дать его игроку в инвентарь. Будет кастить как с палочки, с вытекающими.
Цитата
можно ли изменять базовых существ (в которых превращается игрок, когда используется функция EffectPolymorph) из набора POLYMORPH_TYPE_***?
Смотри polymorth.2da.
Memphis
Цитата(Aiwan @ May 16 2008, 18:48) *
Neverwinter Script
//:://////////////////////////////////////////////
//:: Name: Открывает ближайший магазин
//:: Copyright © 2006 WRG! Team
//:://////////////////////////////////////////////
/*
          Открывает ближайший магазин
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 09.05.2006
//:://////////////////////////////////////////////

void main()
{
  object oSelf = OBJECT_SELF;
  object oPC = GetPCSpeaker();
  object oStore = GetNearestObjectByTag("ТАГ_МАГАЗИНА", oSelf);
  if(!GetIsObjectValid(oStore) || GetDistanceBetween(oStore, oSelf) > 20.0)
  {
    // Магазина нет или он дальше 20 метров
    return;
  }
   else  AssignCommand(oSelf, OpenStore(oStore, oPC));
}


да я уже сам допер )) спасибо )) вскрыл другой модуль и оттуда содрал скрипт

Подскажите парочку скриптов (с детальным описанием - я новичок):

скрипт, который воскрешает монстра через определенное количество времени.

скрипт, который создает цикличность в диалоге. например:
(1)нпц: чем тебе помочь?
(2)перс: - где находится кузница?
- где находится храм?
- где находится таверна?
(3)нпц: (отвечает на один из вопросов) что еще хочешь узнать?
и тут нужно вернуться к пункту (1)

также нужен скрипт, который устанавливает условие для вывода фразы.
например: нпц дает квест, а потом если видет в инвенторе квестовый предмет, говорит тебе что-то другое

объясните скрипт, который задает условия для вывода фраз (например при первой встрече нцп приветствует персонада, а при второй он либо спрашивает про квест, либо предлогает услуги

и наконец последний скрипт, который задает условие для вывода фразы у самого игрока
например:
нпц спрашивает про квестовую вещь, когда ее нет и у игрока только один вариант ответа типа "извиняй, ничего не нашел", а когда игрок добывает квестовыйпредмет, то у него появляется второй вариант ответа типа "вот держи, я нашел"

пытаюсь сделать мощный мод, очень нужны эти скрипты
Lex
Цитата(Memphis @ May 19 2008, 21:40) *
скрипт, который создает цикличность в диалоге. например:
(1)нпц: чем тебе помочь?
(2)перс: - где находится кузница?
- где находится храм?
- где находится таверна?
(3)нпц: (отвечает на один из вопросов) что еще хочешь узнать?
и тут нужно вернуться к пункту (1)

тут скрипт не нужен, это позволяет делать редактор диалогов. Copy - Paste as link.
читай мануалы по работе с редактором.
Цитата(Memphis @ May 19 2008, 21:40) *
также нужен скрипт, который устанавливает условие для вывода фразы.
например: нпц дает квест, а потом если видет в инвенторе квестовый предмет, говорит тебе что-то другое
объясните скрипт, который задает условия для вывода фраз (например при первой встрече нцп приветствует персонада, а при второй он либо спрашивает про квест, либо предлогает услуги
и наконец последний скрипт, который задает условие для вывода фразы у самого игрока
например:
нпц спрашивает про квестовую вещь, когда ее нет и у игрока только один вариант ответа типа "извиняй, ничего не нашел", а когда игрок добывает квестовыйпредмет, то у него появляется второй вариант ответа типа "вот держи, я нашел"

разбирался вопрос десятки раз. См темы "скрипты", "вопросы новичков", "скрипты для новичков".
причем все 3 последних вопроса по сути своей один вопрос.
Sugo77
Ну почитал но ничего не выходит(
Я больше организатор идей и мап монстер мэйкер.Литератор так сказать поэт с матиматикой и физикой туго всегда было(
Вам трудно чтоли 5 букв написать?(подсказать этот скрипт как правилно что куда вписать
Не охото на половине проект забрасывать к которому долго стремился а шас уже с 2е неделе застрял из за этого.

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

Но как этого добиться никак невыходит .
Ilerien
Если ты не можешь написать _даже_ этот скрипт - возьми в команду скриптера, иначе из твоего проекта ничего хорошего не выйдет. Сомневаюсь, что все мало-мальски нетривиальные скрипты за тебя будут писать обитатели ГМ ph34r.gif
К слову, получение скриптов на блюдечке с голубой каёмочкой не способствует порядку в модуле.

1. Жмём ctrl+alt+f, открывается окошко редактора фракции. Жмём кнопку "Add faction". Открывается окошко добавления фракции. Имя выбираем, например, faction1. Какую выбирать базой - не важно, нужен ли тебе глобальный эффект - не знаю. Повторяем этот пункт ещё 2 раза. Выставляем в таблице фракций (вкладка advanced) репутацию (не знаю, какая тебе там нужна, сам разберёшься, 0 - 10 - враждебный, 11 - 90 - нейтральный, 91 - 100 - дружественный).
2. Получилось 3 фракции. Создаём специальную локацию (изолированную от остальных), куда помещаем трёх неписей, не важно, каких, важно, что фракции у них будут разные - как можно было догадаться, те самые, которые мы создали (в свойствах непися - вкладка advanced - дропменю faction). Все скрипты из слотов этих неписей убираем во избежание казусов, ставим флажок plot на вкладке advanced. Теги неписей - например fact_1, fact_2, fact_3.
3. Скрипт триггера, делает фракцию с номером, совпадающим с последним символом тега триггера, враждебной игроку, который на него наступает. Пример тега триггера - adjfact1. Слот для скрипта - onEnter триггера.
Neverwinter Script
void main()
{
    object oPC = GetEnteringObject();
    object oFactionMember = GetObjectByTag("fact_" + GetStringRight(GetTag(OBJECT_SELF), 1));
    if(GetIsPC(oPC))
        AdjustReputation(oPC, oFactionMember, -100);
}
Sugo77
БОльшое спасибо попробую разобраться
Хм ставим плот и чистим все другие скрипты вы сказали а как же тогда монстры будут спавниться у них то стояло string для спавна.
Я думаю здесь как раз пригодился бы тот самый скрипт не с респавном монстров а со спавнам на точку через заданное время про который я вам говорил Ilirien не могли бы вы его выложить?
А много монстров небудут уменя никогда потому что они все у меня идут друд на друга и борются тераны с зергам и протосы 3 фракции монстров также как и игроков.
Суть мода убть боса одной из трех фракций и модуль перезаргружается.
denis0k
Ил, сразу видно, с фракциями не работал smile.gif Плот-флаг ставить нельзя, иначе смена репутации не срабатывает.
Neakris
Привет всем еще раз.
Подскажите пожалуйста, как заставить существо, в которое ты превратился, надеть указанный предмет?
Вот скрипт превращения и одевания соответственно:
Neverwinter Script
void main()
{
    //Variables:
    object oPC = GetItemActivator();
    object oItem = GetItemActivated();

    //Polymorph:
    effect eForm = EffectPolymorph(POLYMORPH_TYPE_MEDUSA);
    effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eForm, oPC);

    //Epiquip:
    object oWeap = CreateItemOnObject("NK_MEDUSELONGBOW", oPC, 1);
    AssignCommand(oPC, ActionEquipItem(oWeap, INVENTORY_SLOT_RIGHTHAND));

    DestroyObject(oItem);
}

NK_MEDUSELONGBOW - специальный лук, добавляющий (на всякий случай, для подстраховки) умения владения воинским оружием, куда этот лук и входит.
Почему-то медуза, в которую я превращаюсь, упорно не желает одеть указанный лук, ни обычным способом, через инвентарь (что было бы катастрофой =)) ни, как и надо было бы, через скрипт.
Если ни в кого не превращаться - все отлично работает.
Функции DelayCommand и ActionDoCommand эффекта не произвели. Никакого.
Вопрос: так как заставить себя надеть шмотку (в нашем случае - лук), находясь в другой форме?

Кстати, имеется также и второй вопрос: есть ли возможность задержать выполнение остальных команд скрипта?
Т.е. пример:
//код скрипта
Задержка, скажем, в шесть секунд
//Остальная часть скрипта

Заранее благодарен.
azathoth
Цитата
Вам трудно чтоли 5 букв написать

а ты уверен, что потребуется только один скрипт? "5букв" - написано, но никто не будет тут тебе по заказу делать то то, то это (тут с одним скриптом народ, сам видишь, как артачится). или ищи скриптера, как уже предложили, или пойми сам (это не сложно на самом деле, только нужно понимать, что скрипты работают так как они хотят, а не так, как ты думаешь они должны работать). а кто сказал что будет просто?

Neverwinter Script
медуза, в которую я превращаюсь, упорно не желает одеть указанный лук

видимо особенность полиморфа, чтобы медведи не могли брать в лапы двуручи crazy.gif А ещё нельзя в полиморфе диалоги вести sad.gif Если же нужно что-то эдакое и прямо обязательно - смотри в сторону SetCreatureAppearanceType();

Цитата
Кстати, имеется также и второй вопрос: есть ли возможность задержать выполнение остальных команд скрипта?


Neverwinter Script
void Later(параметры) {
    //Остальная часть скрипта
}

void main() {
    //код скрипта
    DelayCommand(6.0, запуск Later(параметры));
или
    ActionWait(6.0);
    ActionDoCommand(Later(параметры));
}
Neakris
Цитата
видимо особенность полиморфа, чтобы медведи не могли брать в лапы двуручи

Да нет, не в этом дело... медуза МОЖЕТ использовать лук, более того, в ОРИГИНАЛЕ она его и использует - если это обычный NPC. Но полиморфный отличается от обычного, и потому я и спрашивал: можно ли дать медузе (как вариант - любому другому превратившемуся неписю) шмотку (епиквип) уже ПОСЛЕ превращения?

Еще вопрос: как через скрипт превратить игрока в камень, так, будто он подвергся заклинанию "Плоть в камень" или способности "Окаменяющий взгляд" или "Окаменяющее дыхание"? (Желательно, красиво. Вариант в трогательный момент создать рядом мага с соответствующим заклинанием и заставить его зачаровать нас не предлагать =) мне надо чтобы без спасов и сразу)
azathoth
EffectPertify()?
denis0k
В полиморфе нельзя кастить, юзать вещи (кроме банок) и менять экипировку. Все стандартные формы нвн сделаны через 2да - там указывается шкурка, 3 итема атаки (когти/зубы/кулаки) и один (!) произвольный итем для экипировки в стандартный слот. У дума там грейт, у кобольда - ножик с хипсом и т.п.
Ilerien
Цитата
Ил, сразу видно, с фракциями не работал Плот-флаг ставить нельзя, иначе смена репутации не срабатывает.
Сдаюсь, нельзя blush.gif
Цитата
Хм ставим плот и чистим все другие скрипты вы сказали а как же тогда монстры будут спавниться у них то стояло string для спавна.
Чистить скрипты надо исключительно у этих трёх неписей, дальше про них забываем. Изменение репутации сработает для ВСЕХ неписей данной фракции.
Цитата
Я думаю здесь как раз пригодился бы тот самый скрипт не с респавном монстров а со спавнам на точку через заданное время про который я вам говорил Ilirien не могли бы вы его выложить?
А то я его помню...
Sugo77
То есть правильно я понял?

Так как у меня 3 фракции,3 тригера то мы создаем 3 скрипта с разными параметрами и вставляем в onEnter тригеров?
Для тригера 1 скрипт1- fact_1 это также и тег монстров фракции 1 скажем да?-тераны
Для тригера 2 скрипт2- fact_2 вписываем в скрипт да?это будет и теги монстров фракции номер 2 например протосы
Для тригера 3 скрипт3- fact_3 вписываем в третий скрипт это у нас зерги

а тут вписываем то что и в улучшеных свойствах фракции да?у меня это faction1-9 очков,faction2-50 очков,фактион3-91 очков
Faction1 скрипт 1 -AdjustReputation(oPC, oFactionMember, -9
Faction2 скрипт 2 -AdjustReputation(oPC, oFactionMember, -50
Faction3 скрипт 3 -AdjustReputation(oPC, oFactionMember, -91

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

Вообше суть и цель моего модуля-игры такова-что изночально игрок выбирает одну из трех сторон-зерги,протосы или тераны(входя на тригер и при заходе на другую локацию,он уже должен быть враждебен двум другим сторонам),потом его перемещает на базу соответственно той стороны(фракции)которую он выбрал,это уже давно все готово у меня,затем вооружившись на базе соответсвенно в бой(с боя можно и даже нужно возвращаться иногда за провиантом на базу),и его поддерживает его войско (мобы)тераны там или зерги они(мобы) НЕ должны быть враждебны игроку выбравшему эту же сторону!,только другой команде,скажем зергам для прокачки то,и вот эти мобы вместе с игроками(нами)идут на базу другого врага с целью Убить Босса одной из этих трех команд(Например Королеву Зергов)!
Убийство боса и есть победа для перезагрузки Сервера,и для начинания все с начала,с первых левелов!
Потом я собираюсь искать хост и ставить полноценный сервер,для всего Мира!
Уже почти всё готово,но помогите же с фракциями доразбираться,застрял на этом этапеsad.gif

Ведь уже 6 лет работаю в тулсете господа,нужна ваша помощь.

Что то я сделал не так?
Не работает у меня Эта системаsad.gif,поправьте меня плиз,что я сделал не так?

P.S:По поводу поиска скриптера,еcтественно помощ бы мне не помешала над разработкой этого проекта Star Craft full team pvp,например через Асю(мой номер аси в моём профиле,для связи со мной),мы переписывались с Ilirienom,но его щас в асе совсем не застать,надеюсь не из за меняsad.gif
Neakris
Цитата
Еще вопрос: как через скрипт превратить игрока в камень, так, будто он подвергся заклинанию "Плоть в камень"

Приношу свои извинения команде разработчиков за глупый вопрос, я просто пропустил нужный эффект в списке. Благодарю за ответ.

Теперь для Sugo77:
Цитата
я же наступив на тригер должен быть враждебен только двум фракциям,а не своей третей(

Ну не изменяй реакцию нужногй тебе фракции (стороны), или изменяй на положительную, что тут сложного-то?
Идея у тебя неплохая, старая, но на Невике я ее реализацию еще не встречал. Делается тоже, по-моему, легко:
например, триггер твой на вход работает только один раз. Он изменяет репутацию и создает нужное тебе количество нужных воинов твоей и чужой базы. В событии OnSpawn каждого воина должна быть строчка AssignCommand(OBJECT_SELF, ActionAttack(oQueen, FALSE)); Ну, примерно так - посмотри уже в скриптах конкретнее, там есть прекрасный развернутый хелп. Причем знание английского НЕ обязательно, просто вместо констант подставляешь константы из списка, вместо переменных - переменные... ну я отвлекся. Вот. Это достаточно просто, но я сказал то, что ты попросил: воины стремятся убить королеву, и не факт, что они будут драться друг с другом, если встретятся, я предупреждаю! Скорее всего они пробегут мимо и всей гурьбой навалятся на королеву. Как реализовать "передвигаться, нападая на противников"я не знаюю. Могу только предложить очень кривой способ (оч кривой ибо тормозить будет на серве скорее всего, хотя хз) - в событие onHeartBeat поставить проверку:
Neverwinter Script
void main()
{
    object oEnemy = GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY);
    if ((oEnemy != OBJECT_INVALID) || (GetDistanceToObject(oEnemy) < 15.0))
    {
    AssignCommand(OBJECT_SELF, ActionAttack(oEnemy, FALSE));
    //Дополнительный код, вдруг солдат должен сделать что-нибудь еще,
    //скажем, с определенной вероятностью выдать воинственный крик.
    }
}

Вот. Пряморукого способа, повторюсь, не знаю. И совершенно не вижу проблем в создинии твоего модуля - старайся, пожалуйста, более конкретно ставить задачи.

P.S. я работаю в редакторе 2 недели, и мне удивительно, как ты за 6 лет не разобрался с ним. Я не смеюсь, просто... мой тебе совет: попробуй создать какой-нибудь модуль, не слишком нагруженный историей, с простеньким сюжетом, но кучей скриптов. Как бытовых (проверка на открытие сундука вблизи его владельца, скрипты проверок в диалогах и т.д), так и уникальных (финальная битва с главным злодеем в формате катсцены (ролика внутри игры)). И, конечно же, будет лучше, если ты сделаешь все это сам, на залазя в темы с готовыми скриптами - так научишься "думать" на языке скриптов - нестандартное мышление появаится, так сказать. Вот, наверное, и все. Удачи!
Sailar
Всем привет! У меня вопрос возможно глупый но я с Toolserom еще недоконца разобрался доэтого делал мод на варкрафт 3 и с джазом подружился а тут все ново. Впрочем неочень сложно но кое что я невпонятиях как сделать.
Вопрос таков как сделать скрипт для управление Хечьманом ну либо NPC наподобе как в NWN2 да и в первой я такое у фамиляров видел т.е созданный мной перс остаеться на месте а я управляю другим обектом. Теоретически это должно быть возможно Пачь стаит 1.66 может в других Патчах есть новые на смену контроля управления от oPC к NPC? функции или 2da редактировать, а может просто скрипт какойнибудь написать. Биовары же как-то реалезовавали...

Если кто знает напишите ПЛЗЗЗ........., желатель поподробней что там куда вставлять если надо 2da химичеть.......
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.