Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
Lex
Цитата(Lester @ Mar 19 2008, 19:58) *
Народ, выручайте опять) Как мне сделать так, чтоб значение переменной (интовой иль стринговой) отображалось в диалоге. Например: я говорю с НПС, отвечаю на вопросы и в конце опроса НПС мне выдает: "Вы набрали [переменная] балов" ?

по ходу диалога высчитывать переменную, а на этой фразе НПС сделать скрипт, который загонит переменную в токен (см функцию SetCustomToken(int,string))

Цитата(Lester @ Mar 19 2008, 19:58) *
И еще вопрос, как сделать чтоб переход от ветки к ветке в диалоге был не по порядку, а иногда "перепрыгивал" несколько веток, в зависимости от ответа?

скриптами + такой архитектурой диалога. Для такого как минимум нужно чтобы после каждого ответа игрока были возможны все ответы НПС. Те тот, что по порядку + линк на все, которые позже, те через один и тд. При этом на всех фразах НПС должно быть условие. Самый простой вариант (как я понял, у вас диалог типа устный тест) - некая переменная, отвечающая за номер фразы НПС. Те первый вопрос он скажет когда переменная равна 1, второй когда 2 и тд. Если все слинковать так как сказал выше, то ставя скрипты на ответы игрока вы можете управлять последующим вопросом. Те +1 на переменную даст следующий вопрос, а +2 - через один. Если структура диалога более сложная, те там ветвления и тд - тут уже все сложнее, хотя принцип тот же - линк на все ответы + условия на них. Просто придется немного подумать над структурой
Lester
Я структуру уже прописал... вроде.... Я логику исполнения понимаю, мне синтаксис реализации этого всего не понятен. Можете на примерах объяснить? Или ссылку на пример дать?

С архитектурой диалога я разобрался, а вот с локалками и КастомТокенами не сильно.... Я объявляю токен, вставляю его в диалоге куды надо а он мне его не отображает.... тоесть отображает но не значение, а имя токена.
И еще вопрос: в окне создания диалогов, для подключения скриптом используются две вкладки: Text Appears When и Actions Taken. Можете по-подробнее объяснить какая между ними разница?

Такс.... Уже токен отображает значение....Нуль правда..... Можете кто-нибудь на примере показать, как из одной ветки диалога в другую с помощью локалок передавать значение переменной? Желательно со скринами диалог едитора. Заранее благодарен.
gennady
Цитата(Lester @ Mar 20 2008, 06:39) *
С архитектурой диалога я разобрался, а вот с локалками и КастомТокенами не сильно.... Я объявляю токен, вставляю его в диалоге куды надо а он мне его не отображает.... тоесть отображает но не значение, а имя токена.

Что вобьешь, то тебе и выведет... Если нужно вывести в диалог значение переменной, то нужно сделать следующее:
Neverwinter Script
///////////////////////////////////////
// :: ДЛЯ СЛОТА ДИАЛОГА Actions Taken
//////////////////////////////////////
void main()
{
// Значение локалки TEST1
int iTest1 = GetLocalInt(OBJECT_SELF,"TEST1");
//Переводим числовое значение в строчное
string sTest1 = IntToString(iTest1);
//Задаем фразу диалога <CUSTOM2001>
SetCustomToken(2001, "Test 1: результат = "+sTest1);
}

В диалоге нужно записать строку с токеном, но только после срабатывания скрипта. Например так:
«Значение локалки ответа на вопрос <CUSTOM2001>…»
в диалоге отобразится при значение локалки равной 3:
«Значение локалки ответа на вопрос Test 1: результат = 3…»
Цитата(Lester @ Mar 20 2008, 06:39) *
И еще вопрос: в окне создания диалогов, для подключения скриптом используются две вкладки: Text Appears When и Actions Taken. Можете по-подробнее объяснить какая между ними разница?

Text Appears When служит для блокирования ветки диалога, нужен скрипт проверки условия появления с оператором int StartingConditional()
Actions Taken слот для реакции на ответ, т.е. действие, которое вызовет клик по одной из веток ответов героя, или же просто сработает на одиночной ветке, не зависимо будет ли эта ветка НПС или героя… В принципе в скрипте появления можно записывать и условие и действие, как-то задание ваших токенов, см. код, там при значение локалки TEST1 больше нуля, задается токен, и эта ветка появляется в диалоге. Можно сразу же в эту ветку ставить и сам токен <CUSTOM2001>:
Neverwinter Script
///////////////////////////////////////////
// :: ДЛЯ СЛОТА ДИАЛОГА Text Appears When
//////////////////////////////////////////
int StartingConditional()
{
// Значение локалки TEST1
int iTest1 = GetLocalInt(OBJECT_SELF,"TEST1");
if(iTest1 > 0)
{
//Переводим числовое значение в строчное
string sTest1 = IntToString(iTest1);
//Задаем фразу диалога <CUSTOM2001>
SetCustomToken(2001, "Test 1: результат = "+sTest1);
return TRUE;
}
return FALSE;
}
Neakris
Доброго всем времени суток!

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

Вот скрипт для вещи, которая превращает меня в монстра:
Код
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);
}
Neakris
Ммм... поправка: дыхание дракона работает, как и, например, метание игл у мантикоры, но! не работают все абилки типа "Взгляд" (т.е. фактически все конусы) и не работает, как я уже говорил выше, "Тьма" у дроу и драйдера.

+Вопрос, который заодно разом решит все вышеупомянутые проблемы: есть ли возможность сделать полноценное превращение? Т.е. не через функцию POLYMORPH_... а как-нибудь иначе. Причем в существо, заранее мной указанное. Чисто теоретически, это возможно, не хватате одной лишь функции: мы генерим монстра, в которого будем превращаться, и ! передаем управление игрока из тела героя в тело монстра, после чего сохраняем и стираем игрока. Я не знаю только, как передать управление. А, и еще как быстро и безболезненно удалить игрока.

Заранее благодарен.
denis0k
Файл x2_inc_shifter, ф-я ShifterSetGWildshapeSpellLimits() - именно там ставится кол-во юзов абилок.

Переместить игрока в другое тело нельзя.
Acer
Хай народ! у меня к вам несколько вопросов.
1) Существует ли программа конвертер, которая бы переделала модуль первой части игры под вторую.
(второй насчет квестов)
2)По завершению квеста, NPC1 появляется в другой локации, у NPC2 появляется квест на поиск NPC1,
после того как находишь NPC1, запускается ролик где видно что NPC2 умирает, у игрок вместе с NPC1 уходят и на экране "the end"

вопрос жизни и смерти, надеюсь на вашу помошь!
Lex
1. Нет. Можно перетащить скрипты (но возможно потребуется некоторый напилинг), диалоги уже врядли, локации тем более.
2. а вопрос то где? Описанное делается скриптами.
azathoth
Neverwinter Script
1) Существует ли программа конвертер, которая бы переделала модуль первой части игры под вторую.

тупо отктой старый модуль в новом тулсете - и насладись всей тяжестью кармического страдания. и это лучший вариант конверции. ph34r.gif единственное, что конвертится нормально - это скрипты (только в нвн2 функции многие не работают или работают не так), этим можно сконвертнуть и русские диалоги.
Цитата
а вопрос то где? Описанное делается скриптами.

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

Памятка:
Neverwinter Script
CreateObject - "создание объектов, в том числе и NPC"
SetLocalInt, GetLocalInt - "установка и проверка переменных, можно использовать для создания квестов"
GetEnteringObject - "используется в OnEnter триггера для определения приближающегося объекта"
GetIsPC - "проверка, является ли объект персонажем игрока"
SetCutsceneMode - "запуск/завершение ролика"
ApplyEffectToObject - "наложение эффекта на существо"
EffectDeath - "название говорит само за себя - эффект смерти"
EndGame - "завершение модуля"

Dalinfein
Добрый День не нащел где тут отписаться... Я вот с такой проблемой.. где можно модуль Ландс оф Нордок скачать! мы играли когда-то на серваке... Хотим просто вместе побегать по сетке.. Диск купили русский все пропатчили а модуля нету( найти не можем.. Помогите пожалуйста.

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

я с ваулта пару каких-то нордоков скачал.. но проверить не могу диска нет.. там 20 лвл максм, а я помню 40 у нас было... Помогите найти нормальный Lands of Nordock (

Заранее благодарен rolleyes.gif
Ogneslav
Люди, я конечно извеняюсь за ОЧЕНЬ глупый вопрос, но я в английском не секу, и в установке хаков тоже, поэтому прошу мне дословно по пунктикам обьяснить как он ставится, потому что я решил взятся за невер по серьезному, а единственно что я умею в нем делать пока-это играть)))
(не удаляйте плз этут пост, если подобные уже были, так как я их не могу найти)
Lex
1. поместить *.hak файл в папку haks.
2. в модуле открыть свойства модуля - там выбрать закладку Пользовательский Контент (Custom Content). В имеющемся там выпадающем списке выбрать нужный хак и нажать кнопку добавить.
3. сохранить модуль.
shadowdweller
Возник неожиданный косяк с левелапом хенчмена. Вот библа, которая, по идее, за это ответственна.
Neverwinter Script
#include "nw_i0_henchman"

// Determines how many levels behind the PC the henchman lays
//Minimum of 0
int HENCH_LAG = 1;

// Defines the lowest level the henchman can be
// Minimum of 1, Maximum of 20
int HENCH_MIN = 14;

// Defines the highest level the henchman can be
// Minimum of HENCH_MIN, Maximum of 20
int HENCH_MAX = 17;

// This function figures out what level the henchman
// "should" be, based on the min, max & lag
// numbers above, as well as the PC's level
int GetTargetLevel (object oHench = OBJECT_SELF)
{
// Find the PC's level
int nMasterLevel = GetHitDice(GetMaster(oHench));
// Apply the lag
int nTargetLevel = nMasterLevel-HENCH_LAG;
// if that is less than the minimum level, the henchman
// should be that minimum level.
if (nTargetLevel < HENCH_MIN)
    nTargetLevel = HENCH_MIN;
// If the level is over the max, cap
// the level to that max.
if (nTargetLevel > HENCH_MAX)
    nTargetLevel = HENCH_MAX;
  return nTargetLevel;
}

//This function checks to see if the henchman
// is ready to level up.
int GetReadyToLevel(object oHench = OBJECT_SELF)
{
//Find both the current henchman level, and
// what level the henchman should be.
int nTargetLevel = GetTargetLevel(oHench);
int nCurrentLevel = GetHitDice(oHench);

//If the current level is too low, it is ready
// to level up
if (nCurrentLevel < nTargetLevel)
  return TRUE;
  else
  return FALSE;
}

// This is the biggie. This is the function to
// actually level up the henchman.
void LevelHench(object oHench = OBJECT_SELF)
{
// Find the desired level.
int nTargetLevel = GetTargetLevel(oHench);

//Whee! Fun with string manipulation!
// All this is working tp find the appropriate blueprint ResRef
// to create the "new and improved" henchman.
string sNewBlueprint = GetTag(oHench);
sNewBlueprint = GetStringLowerCase(sNewBlueprint);
if (nTargetLevel <= 14)
  sNewBlueprint = sNewBlueprint + "0";
  sNewBlueprint = sNewBlueprint + IntToString(nTargetLevel);

// Create the new henchman.
// There will be a "fade in" of the new one and "fade out"
// of the old.
object oNewHench = CreateObject(OBJECT_TYPE_CREATURE, sNewBlueprint,GetLocation(oHench));

// Get rid of the old henchman. You're fired!
object oMaster = (GetMaster(oHench));
RemoveHenchman(oMaster,oHench);

// Copy our desired behaviour patterns to the new henchman.
CopyLocals(oHench,oNewHench);
AssignCommand(oNewHench,SetAssociateListenPatterns
());

// Add in our new henchman
AddHenchman(oMaster,oNewHench);

// Take out the trash
DestroyObject(oHench);
}

Запускается она скриптом, который ставится в диалоге на Text Appears When
Neverwinter Script
// Starting Conditional script: sc_level_hench
#include "th_henchlib"
int StartingConditional()
{
int nResult;
object oHench = GetHenchman(GetPCSpeaker());
nResult = GetReadyToLevel(oHench) == TRUE;
return nResult;
}


Все работает, хенч левелапится прекрасно. Но старый хенч никуда не исчезает. Он остается стоять рядышком и попрежнему готов присоединиться к партии. Никак не пойму, отчего это происходит.
denis0k
Надо копаться, пробовать разные варианты smile.gif

1. Убрать скриптово плот и иммортал флаги.
2. Перекинуть дестрой на модуль: assigncommand(getmodule(), destroy...).
3. Попробовать отложенное удаление через пару секунд.
4. Кардинально - не удалять, а именно апать и переодевать.

P.S. Вот тут:
Neverwinter Script
if (nTargetLevel <= 14)
  sNewBlueprint = sNewBlueprint + "0";
по идее должно быть <= 9. Но это к делу не относится.
gennady
Шад, а собственно вопрос… Зачем тебе эти базовые скрипты поднятия уровня? Верней даже не поднятия, а замены хенчей. Эти скрипты были написаны для 1 Невера, хенчами и так забита базовая палитра NPC => Другое, аж по 11 на каждого… Это было сделано для смены оружия и брони, т.к. тогда у хенчей не был доступен инвентарь, да и уровней было всего 20. Там стоят похожие скрипты nw_ch_check_38 на начало диалога, и nw_ch_action_17 на поднятие, попробуй еще эти…

А вообще-то функция LevelUpHenchman поднимает уровень хенча, по определённому классу, до нужной величины… Правда, только у классов поддерживаемых героем. smile.gif
shadowdweller
Ген, так я и делаю под НВН1. За скрипты спасибо, обязательно гляну. У меня вообще в моде слетела половина скриптов и диалогов почему-то. Я не обращалась к нему месяца 4. Пошла тестить, а там такое! sad.gif
Родные скрипты ковырять я боюсь, тем более, что почти ничего в них не понимаю. Поэтому делаю другие. И мне сложно. например, сравнить два скрипта на левелап и понять, почему в одном случае старый хенч исчезает, а в другом нет. smile.gif
gennady
shadowdweller, я имел ввиду самую первую игру, а не 2 Невер. В СОУ и ХОТУ уже был инвентарь хенчей, и кажется там стоят другие скрипты. Мы ж тоже на первом пишем, да еще на версии 1.32, но и там уже есть функция поднятия уровня. Вспомни Левор...

Я помнится написал все о хенчах в статейке: http://remmgen.narod.ru/tmonster.html
Там вроде есть все, что нужно и присоединение и удаление и повышение уровня, ну и все имена базовых скриптов хенчей... А вот если ты используешь классы, допустим животное, то нужно вызывать раннее созданного хенча их палитры, и удалять старого.

Почему у тебя не удаляется? Кто ж его знает! Вроде в скрипте стоит дестрой, и настройки хенча не должны влиять... Значит что-то другое в скрипте глючит...
shadowdweller
Gennady, спасибо. Придется смотреть SoU и HoTU и ковыряться дальше.
Lirulin
Люди, у мну проблема - никак не получается портреты запихнуть в хак! Вроде уже все сделал - и 5 штук разного размера, и в хак-эдиторе их загнал в хак, и в 2da файле про портреты их приписал, и тот файл тож в хак запихнул - а не работает. (естесно, к модулю я этот хак присобачил). Где же я ошибся?<@_@>
Ilerien
Кинь модуль и хак на мыло, разберёмся smile.gif
Lirulin
Угу, в ближайшее время кину. Попутно возник следующий вопрос - как сделать скрипт проверки на наличие в инвентаре одного из нескольких предметов? (а то у меня получается что проверяет, чтоб все сразу были)
Aiwan
Neverwinter Script
//:://////////////////////////////////////////////
//:: Проверяем наличие двух предметов
//:: Copyright © 2006 WRG! Team
//:://////////////////////////////////////////////
/*

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 03.03.2006
//:://////////////////////////////////////////////
#include "nw_i0_tool"

int StartingConditional()
{
    object oPC = GetPCSpeaker();

    if(HasItem(oPC, "TAG_ITM_01") && HasItem(oPC, "TAG_ITM_02"))
      return TRUE;
      return FALSE;
}



Если && заменить на || то будет или.
Lirulin
Спасиб! Работает! (я до этого где-то не там это || писал=(((
А вот проблема № следующая - пытаюсь сделать, чтобы можно было брать больше 1 спутника, приписал скрипт SetMaxHench(2) на onLoadModule - а они все равно отцепляются!=/
Xfans
Цитата(Lirulin @ Jun 10 2008, 18:00) *
Люди, у мну проблема - никак не получается портреты запихнуть в хак! Вроде уже все сделал - и 5 штук разного размера, и в хак-эдиторе их загнал в хак, и в 2da файле про портреты их приписал, и тот файл тож в хак запихнул - а не работает. (естесно, к модулю я этот хак присобачил). Где же я ошибся?<@_@>

Ой! а плейсеблы тоже надо в 5 экземплярах, да? А то мы хотим вставить туда картинку (чтоб она была портретом для картины, висящей на стене), а вот чего писать в колонках в 2da файле? (тех где плейсебловые характеристики)

Цитата(Lirulin @ Jun 11 2008, 08:20) *
Спасиб! Работает! (я до этого где-то не там это || писал=(((
А вот проблема № следующая - пытаюсь сделать, чтобы можно было брать больше 1 спутника, приписал скрипт SetMaxHench(2) на onLoadModule - а они все равно отцепляются!=/

Мы решили проблему таким образом:
Цитата
// * Joins, takes away other people's personal items, give player his personal item
#include "nw_i0_henchman"

void main()
{//DestroyAllPersonalItems(GetPCSpeaker()); DONE IN THE GIVBE ITEM FUNCTION
// * remove previous henchman

//SpeakString("test");
if (GetIsObjectValid(GetHenchman(GetPCSpeaker())) == TRUE)
{ SetFormerMaster(GetPCSpeaker(), GetHenchman(GetPCSpeaker()));
object oHench = GetHenchman(GetPCSpeaker());
RemoveHenchman(GetPCSpeaker(), GetHenchman(GetPCSpeaker()));
AssignCommand(oHench, ClearAllActions());
}

SetWorkingForPlayer(GetPCSpeaker());
SetBeenHired();

ExecuteScript("NW_CH_JOIN", OBJECT_SELF);
// GivePersonalItem(GetPCSpeaker());
}


Жирное убрать вообще. Это у хенча в скрипте присоединения (tm_ch_action_13). После этого у нас стали двое цепляться=)
Ilerien
Лучше
Neverwinter Script
object oPC = GetPCSpeaker();
if(GetIsObjectValid(GetHenchman(oPC, GetMaxHenchmen()))) // если есть "последний дозволенный" хенч smile.gif
    RemoveHenchman(oPC, GetHenchman(oPC)); // убираем первого

Я бы свой диалог присоединения сделал smile.gif А то там слишком много ненужной фигни.
Для плейсеблов вроде 3 портрета нужны, без _h и _l. Не знаю, зачем нужны столбцы InanimateType и LowGore. Это уже в Custom Content.
Lirulin, модуль и хак выслал. У тебя там в 2да базовый реф был неверно прописан ("_" лишнее), и хак не был к модулю подключён.
Xfans
Цитата(Ilerien @ Jun 11 2008, 17:47) *
Лучше
Neverwinter Script
object oPC = GetPCSpeaker();
if(GetIsObjectValid(GetHenchman(oPC, GetMaxHenchmen()))) // если есть "последний дозволенный" хенч smile.gif
    RemoveHenchman(oPC, GetHenchman(oPC)); // убираем первого

Я бы свой диалог присоединения сделал smile.gif А то там слишком много ненужной фигни.


Спасибо thank_you.gif , а этот скрипт отдельно идет, или его надо вставить в тот, tm_ch_action_13? В принципе, мы бы и рады написать свое, но увы - пока не очень умеем. Пока меняем готовые скрипты, все норм, а как только свое делаем - все! У компайлера насчет наших скриптов 2 любимых выражения : PARCING VARIABLE LIST и UNKNOWN STATE IN COMPILER=(((
И еще вопрос - как правильно соединять скрипты? Ну например, сделали триггер, в котором хенчмен должен что-то вякнуть, а игрок - ответить (скрипт вроде тут нашли). Все бы хорошо, но игрок свою реплику выдавал вовсе без хенча с его вопросом. Приляпали условие, что триггер срабатывае олько когда хенч есть (точнее у героя есть данный хенчем предмет). Мало того, что оно не компилировалось, пока условие было не в начало поставлено, так теперь вовсе не срабатывает, ни с хенчем, ни без! scratch_one-s_head.gif

Цитата(Ilerien @ Jun 11 2008, 17:47) *
Для плейсеблов вроде 3 портрета нужны, без _h и _l. Не знаю, зачем нужны столбцы InanimateType и LowGore. Это уже в Custom Content.


А, ну да, если _h и _l нужны для выбора портрета перса, то плейсеблу они ни к чему (не захочется же кому-нить в буквальном смысле "рожу кирпичом"!=)))))) biggrin.gif
Ilerien
Те 3 строчки вместо
Neverwinter Script
RemoveHenchman(GetPCSpeaker(), GetHenchman(GetPCSpeaker()));

Скрипт для триггера:
Neverwinter Script
void main()
{
    object oPC = GetEnteringObject();
    object oHench = GetHenchman(oPC);
    if(GetIsObjectValid(oHench) && GetIsPC(oPC))
    {
        AssignCommand(oHench, SpeakString("<слова хенча>"));
        DelayCommand(0.5f, AssignCommand(oPC, SpeakString("<слова игрока>")));
    }
}
Xfans
Мерси, мерси, мерси! Эх, освоить бы побыстрее эту сложную науку писания скриптов sad.gif Не вечно же дергать тех, кто умеет делать это быстро и правильно!
Lirulin
Цитата(Ilerien @ Jun 11 2008, 20:47) *
Lirulin, модуль и хак выслал. У тебя там в 2да базовый реф был неверно прописан ("_" лишнее), и хак не был к модулю подключён.


Ясно. Не, ну если я в этот раз забыл его присобачить, то это потому, что уже раз 100 присобачивал - и без результата! Значит, из-за одной " _ " лишней... мда, симптоматично. (куда только подевалась моя мудрость, а также интеллект? unsure.gif ведь прокачивал жеwink3.gif)
Ilerien
Цитата
Эх, освоить бы побыстрее эту сложную науку писания скриптов Не вечно же дергать тех, кто умеет делать это быстро и правильно!
Мануалы, задачи соответствующей сложности и образцы скриптов в руки smile.gif
Цитата
уда только подевалась моя мудрость, а также интеллект? ведь прокачивал же)
Видать, 1ка...
*offtop mode off* smile.gif
Xfans
Цитата(Ilerien @ Jun 12 2008, 17:34) *
Мануалы, задачи соответствующей сложности и образцы скриптов в руки smile.gif


Не присоветуете, где можно их найти? (кроме NWNLexicon'а, он у нас есть, но не всегда понятно, как ту теорию применять на практике)
Ilerien
Задачи обычно возникают по мере разработки (сам так учился, первый скрипт был вроде в онспавн мобу кастомная аура с дамагом). Лексикон - штука хорошая, но мне в своё время хватало того, что есть в хелпе. Образцы есть на ГМ (тут т. е.) и в стандартном паке скриптов.
Lirulin
Цитата(Ilerien @ Jun 12 2008, 23:08) *
Лексикон - штука хорошая, но мне в своё время хватало того, что есть в хелпе. Образцы есть на ГМ (тут т. е.) и в стандартном паке скриптов.

Слуш, а если там в образце идет например object oMoveTo - вместо него надо тэг объекта, до, после или как? unsure.gif
azathoth
Neverwinter Script
в образце идет например object oMoveTo - вместо него надо тэг объекта

c чего это вдруг? Тэг - это строка, а нужен "object oMoveTo" - объект написано.

Чтобы из тэга получить объект надо сделать
Neverwinter Script
// Get the nNth object with the specified tag.
// - sTag
// - nNth: the nth object with this tag may be requested
// * Returns OBJECT_INVALID if the object cannot be found.
// Note: The module cannot be retrieved by GetObjectByTag(), use GetModule() instead.
object GetObjectByTag(string sTag, int nNth=0)
Lirulin
Так вот в этом-то и проблема - как связать object oMoveTo и GetObjectByTag? "=" между ними поставить? (сколько ни смотрю на образцы скрипов, что-то не то выходит)
Ilerien
Neverwinter Script
string sTag = GetTag(oMoveTo); // если хотим получить тег по объекту
object oMoveTo = GetObjectByTag(sTag); // если хотим получить объект по тегу
Есть смысл почитать книжку Керниган, Ричи "Язык С" wink3.gif
Xfans
Наверное и нам не помешает ознакомиться с этой книгой? Дабы не плодить глупые вопросы в геометрической прогрессии rolleyes.gif
Ilerien, а тот скрипт, на триггер, где хенч должен говорить - там условие, что без хенча не сработает, уже включено? (чур тапком не убивать, хоть ты и Evil)
Ilerien
Цитата
Наверное и нам не помешает ознакомиться с этой книгой? Дабы не плодить глупые вопросы в геометрической прогрессии
Стоит, чтобы избежать совсем глупых вопросов wink3.gif Книжка хорошая, позволит понять некоторые общие принципы smile.gif
Цитата
Ilerien, а тот скрипт, на триггер, где хенч должен говорить - там условие, что без хенча не сработает, уже включено? (чур тапком не убивать, хоть ты и Evil)
Предпочитаю файерболы crazy.gif Условие вот:
Neverwinter Script
if(GetIsObjectValid(oHench)
virusman
По NWScript'у лучше и проще Лексикон почитать, чем Кернигана и Ричи. smile.gif
Xfans
Цитата(Ilerien @ Jun 13 2008, 22:12) *
Стоит, чтобы избежать совсем глупых вопросов wink3.gif Книжка хорошая, позволит понять некоторые общие принципы smile.gifПредпочитаю файерболы crazy.gif Условие вот:
Neverwinter Script
if(GetIsObjectValid(oHench)

Ага, учебник скачали, щас будем читать=)
Слуште, а как управлять тем, кого именно отцеплять вместо нового хенча? Он первого отцепляет, а если второго хочешь отцепить, тока вручную надо, да? Может для этого тоже имеется что-нить чудодейственное в ваших закромах-мозгах? blush.gif
И побежали-ка мы закупать амулеты защиты от огня, раз уж тебе так нра файрболы=)))))
justshurik
Помогите! столкнулся с проблемой. При написании скриптов не могу писать на кирилице(я имею ввиду комментарии в коде, фразы, которые должны произносить персонажы по сцене) в коде. Я видел что многие каким-то образом обошли эту проблему, подскажите пожалуйста как это сделать!
Заранее спасибо!
Ilerien
Цитата
Помогите! столкнулся с проблемой. При написании скриптов не могу писать на кирилице(я имею ввиду комментарии в коде, фразы, которые должны произносить персонажы по сцене) в коде. Я видел что многие каким-то образом обошли эту проблему, подскажите пожалуйста как это сделать!
Патч
Цитата
Слуште, а как управлять тем, кого именно отцеплять вместо нового хенча? Он первого отцепляет, а если второго хочешь отцепить, тока вручную надо, да? Может для этого тоже имеется что-нить чудодейственное в ваших закромах-мозгах?
И побежали-ка мы закупать амулеты защиты от огня, раз уж тебе так нра файрболы=)))))

А мы баньшой, баньшой... Фокус на некро имеется smile.gif
Всё очень просто, нужно заменить
Neverwinter Script
RemoveHenchman(oPC, GetHenchman(oPC));
на
Neverwinter Script
RemoveHenchman(oPC, GetHenchman(oPC, 2));
justshurik
Спасибо за патч. только не помогло. все равно вместо русских букв сплошные крауозябры...=(
Может есть еще какой-то способ?
virusman
Цитата(justshurik @ Jun 14 2008, 16:08) *
Спасибо за патч. только не помогло. все равно вместо русских букв сплошные крауозябры...=(
Может есть еще какой-то способ?
Панель управления -> Язык и региональные стандарты -> Дополнительно. Какой язык выставлен по умолчанию?
sixpounder
где можно скачать nwn1 НЕ купить а скачать.
если кто знает дайте ссылку желательно не через торрент.
буду очень благодарен
justshurik
прошу прощения. проблема решилась. нужно было просто поменять шрифт.
Aiwan
Тут запрещен варез.
sixpounder
мне сказали что на этом сайте мне могут помочь в поисках smile.gif
но почему то я ожидал такой ответ
justshurik
У меня глупый вопрос.
Не могу заставить НПС встать со стула.
Сажал я его на стул так:
CODE
object Mont=GetObjectByTag("mont"); <- сам НПС
object Chair = GetObjectByTag("Chair"); <- стул, на который НПС должен сесть и потом встать
...
AssignCommand(Mont,ActionSit(Chair));

и никак не могу заставить его подняться. Знатоки, подскажите пожалуйста!
Заранее благодарен!
virusman
ClearAllActions?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.