Помощь - Поиск - Пользователи - Календарь
Полная версия: ОДИНОЧНЫЙ ВОПРОС
Город Мастеров > РЕДАКТОРЫ > 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
Мефистофель
Vhall Спасибо! заменил, я балван.
Добавлено в [mergetime]1121565207[/mergetime]
Очень нужен скрипт, чтобы ПК полиморфился в заранее созданного в политре существа. такое возможно реализовать?
Zirrex
Мефистофель, полиморфиться можно не во всех существ, если ты посмотришь 2da, то увидишь, что там не все существа рассмотрены, а сменить облик можно на любое существо. Меняешь ему облик, добавляешь скриптово возможности, и готово. Если ты решишь добавлять невидимые объекты, то нужно убедиться, что они соответствуют уровню персонажа. Хотя бы так:

Neverwinter Script Source
void main()
{
    object oPC = OBJECT_SELF;

    effect eSummon = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
    effect eWerewolf = EffectPolymorph(POLYMORPH_TYPE_WEREWOLF, TRUE);

    if (GetAppearanceType(oPC) != APPEARANCE_TYPE_WEREWOLF)
    {
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, oPC);
        DelayCommand(1.0, AssignCommand(oPC, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_WEREWOLF)));
    }
// или же обычный полиморф

    effect eEffect = GetFirstEffect(oPC);

    while (GetIsEffectValid(eEffect))
    {
        if (GetEffectType(eEffect) != EFFECT_TYPE_POLYMORPH)
        {
            AssignCommand(oPC, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eWerewolf, oPC));
            return;
        }
        eEffect = GetNextEffect(oPC);
    }
}
dumbo
Zirrex, застрелю! wizard.gif
это еще мелочи, что в первом блоке скрипта явно затянувшееся вступление: "DelayCommand(1.0, AssignCommand(oPC,"... а вот то, что во втором - уже ни в какие ворота. т.е. страшного, конечно, ничего не случится от того, что полиморф наложится столько раз, сколько эффектов в данный момент на игроке, но это не может быть примером хорошего поведения для скриптера! wink.gif

ps. вот вылез с критикой, а глаза не разул - return не заметил. тем не менее, правильнее от этого скрипт не становится - на первом же не полиморф-эффекте он вывалится - зачем тогда вообще цикл? dntknw.gif
Мефистофель
Дело в том что у меня кут-сценка где ведьма превращает ПК в "что угодно" и мне нужно реализовать превращение в кат-сценке что делать?
Добавлено в 00:15
И ещё нужно чтобы некая волшебница в разговоре вернула нормальный облик.
//пк в лягушку biggrin.gif
Добавлено в 00:21
Попробовал добавить в кут-сцену.
SQL
effect eP = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2);
effect eW = EffectPolymorph(POLYMORPH_TYPE_WEREWOLF, TRUE);

if (GetAppearanceType(oPC) != APPEARANCE_TYPE_WEREWOLF)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, oPC);
DelayCommand(1.0, AssignCommand(oPC, SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_WEREWOLF)));

}
-----------------------------
Найн не пашет?
Мефистофель
dumbo Вы што я не так умён чтоб это понять.
тулсет орёт что нет функции пустоты?
1) ведьма: где тег ведьмы, и вабще как скрипт находит нужного Непися?
2) волшебница: тож самое?

Мефистофель
dumbo извени плиз за тот пост, просто ночь мозги не работают.
вот состряпал кажись работать должно, глянь.
ето ведьма превратит ПК во пингвина верно?
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oM1 = GetObjectByTag("MM1");
object oCAM1 = GetObjectByTag("CAM1");
//---------------------------------
if (GetIsPC(oPC) == FALSE)
return;
SetCutsceneMode(oPC);
//--------------------------------
DelayCommand(1.0, AssignCommand(oPC, ActionJumpToObject(oCAM1)));
DelayCommand(1.6, AssignCommand(oPC, SetCameraFacing(180.0, 3.0, 90.0, CAMERA_TRANSITION_TYPE_FAST)));
}
void PenguinPC(object oPC)
{
  if (!GetLocalInt(oPC, "SavedAppearance"))
    SetLocalInt(oPC, "SavedAppearance", GetAppearanceType(oPC));
  SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_PENGUIN);
}

Раскалдовываем. biggrin.gif
Neverwinter Script Source
void main()
{
object oPC = GetPCSpeaker();
object oVol = GetObjectByTag("Vol");
}
void UnpenguinPC(object oPC)
{
  if (GetLocalInt(oPC, "SavedAppearance"))
    SetCreatureAppearanceType(oPC, GetLocalInt(oPC, "SavedAppearance"));
}

Разумееется будет добавлена пара спеллов.
dumbo
Мефистофель, процедуры являются отдельными блоками скрипта, которые нужно вызывать, чтобы код, находящийся в них, исполнялся. предназначены процедуры для того, чтобы избежать постоянного повторения однотипных операций - один раз написал блока кода, а потом его просто вызываешь в разных местах. ы? я же оформил эти куски в виде процедур потому, что не знал как именно у тебя протекают кут-сцены. процедуры сами ты вставил, а вызывать их кто будет?!
Neverwinter Script Source
void PenguinPC(object oPC)
{
  if (!GetLocalInt(oPC, "SavedAppearance"))
    SetLocalInt(oPC, "SavedAppearance", GetAppearanceType(oPC));
  SetCreatureAppearanceType(oPC, APPEARANCE_TYPE_PENGUIN);
}

void main()
{
  object oPC = GetEnteringObject();
  object oM1 = GetObjectByTag("MM1");
  object oCAM1 = GetObjectByTag("CAM1");
  //---------------------------------
  if (GetIsPC(oPC) == FALSE) return;
  SetCutsceneMode(oPC);
  //--------------------------------
  DelayCommand(1.0, AssignCommand(oPC, ActionJumpToObject(oCAM1)));
  DelayCommand(1.6, AssignCommand(oPC, SetCameraFacing(180.0, 3.0, 90.0, CAMERA_TRANSITION_TYPE_FAST)));
  DelayCommand(2.0, PenguinPC(oPC));
}


если вызов скрипта висит на диалоге волшебницы, то не нужно ее искать по тэгу - скрипт и так выполняется "от ее имени" - т.е. волшебница = OBJECT_SELF. и обрати внимание, как надо делать, чтобы размещать процедуры ниже основной процедуры main().
Neverwinter Script Source
// опережающее объявление процедуры
void UnpenguinPC(object oPC);

void main()
{
  object oPC = GetPCSpeaker();
  object oVol = OBJECT_SELF; //GetObjectByTag("Vol");
  UnpenguinPC(oPC);
}

// непосредственно само описание процедуры
void UnpenguinPC(object oPC)
{
  if (GetLocalInt(oPC, "SavedAppearance"))
    SetCreatureAppearanceType(oPC, GetLocalInt(oPC, "SavedAppearance"));
}
Мефистофель
Спасиб Думбо всё проверил пашит как надо! good.gif .
респект! и просьба потри тут половину всего ты "мастер" ты можеш, а то мне достанется.
Добавлено в [mergetime]1121741079[/mergetime]
Думбо пока ты не ушёл ещё вопросик, вот у меня например кут-сценка, идтёт и вдруг бац, и появляются 2ПК передо мной. т.е. скриптом откопировать ПК, и сделать и поставить 2, но чтоб они были враждебны против истенного ПК.
dumbo
Мефистофель, удалять чужие посты могут модераторы, но не мастера. а вот свои ты можешь сам грохнуть, чем и рекомендую заняться. начиная с 1:14 можно все убивать. я свои протру - и будет чистота. а потом иди в скрипты и там повтори свой последний вопрос - там отвечу, как время будет.
Мефистофель
Неполучается грохать есть только редактировать.
Zirrex
dumbo, сейчас посмотрел, не помню, зачем цикл сделал, видимо я вначале хотел снять полиморф, а потом зачем-то сделал, что он наоборот должен наложиться. Все верно, цикл там не нужен. А в первом блоке у меня задержка лишь для того, чтобы вначале проиграл эффект, а уж потом наложился облик. На практике все работает.

Мефистофель, не совсем понял, что ты подразумеваешь под ПК? Слово ПК актуально в онлайновой игре, но ни как не в одиночной. Тут они будут просто убийцами.
Batkom
Zirrex скорее всего PC (Player Char)
-=PsyXaoc=-
Наверное все же сюда... Такс
Есть две команды А и Б, они постоянно воюют,
Есть нондроп дивайс, на него нужно положить скрипт, чтобы:
1)Записывал кол-во убийств(фрагов) (число X)
2)При убийтве перса ниже чем на 10 уровне вычитать из X единицу
3)Команда, при которой можно узнать хонор статус другого игрока...
Как это реализовать?

Почти уверен, что такая херь есть на волте, только никак не найду...
Batkom
вставь в скрипт смерти игрока счетчик, а потом сделай чтобы дейвас подводил статистику
-=PsyXaoc=-
А можно конкретней чуть-чуть? unsure.gif
Loxness
Здравсвуйте
Подскажите пожалуйста где можно найти что нибудь типа справочника или описания на русском языке скриптов использовавшихся в стандарстной компании и 2 официальных адднонах
Под описнаием подразумеваю - скрипт компании -называется -так то испльзуеться там -то так то и так -то

Например Скрипт (.....) вставляется в диалог и после этой фразы оппонент атакует

Спасибо
Zirrex
-=PsyXaoc=- посмотри в базе скриптов код скрипта, который сохраняет координаты персонажа даже после рестарта. Тебе нужно на его подобии сделать предмет, на который впоследствии записывать любые переменные, которые должны сохраняться даже после рестарта.

И еще, учись писать понятно, я твое сообщение перечитал несколько раз, и все равно не понял некоторые слова. Зачем заменять слова бредом, если их можно написать по-русски?
Мефистофель
Zirrex ПК, Перс, персонаж кем играешь в одиночной игре.
-fenix-
Loxness, есть только незаконченный перевод функций! тут
zmey
Я ещё не (вырезано цензурой) вас со своими глупостями? так вот тут такое дело: возможно ли значения переменных хоть каким - нибудь раком перенести из одного модуля в другой (у меня задумано шесть взаимосвязанных модулей, пока готово два). diablo.gif
Добавлено в [mergetime]1121939686[/mergetime]
и ещё, в Ордах (второй эпизод) один хмырь, забыл кто, усовершенствовал экиперованное оружие. Но, насколько я понял, замены оружия из инвентаря на новое там нет. Тогда как же это работает? crazy.gif
Добавлено в [mergetime]1121939955[/mergetime]
и последнее. Если я атакую в своем модуле простолюдина в одной из локаций, то за мной охотятся во всех. Например, убил я фермера на затеряной в полях ферме, а потом в городе за три (ВЫРЕЗАНО ЦЕНЗУРОЙ) оттуда вся стража меня гоняет. Как от этого избавиться НЕ МЕНЯЯ ФРАКЦИИ НЕПИСЕЙ?
Аваддон
QUOTE (zmey @ Jul 21 2005, 11:37)
Я ещё не (вырезано цензурой) вас со своими глупостями? так вот тут такое дело: возможно ли значения переменных хоть каким - нибудь раком перенести из одного модуля в другой (у меня задумано шесть взаимосвязанных модулей, пока готово два).

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



QUOTE (zmey @ Jul 21 2005, 11:37)
и ещё, в Ордах (второй эпизод) один хмырь, забыл кто, усовершенствовал экиперованное оружие. Но, насколько я понял, замены оружия из инвентаря на новое там нет. Тогда как же это работает? crazy.gif



Вероятно так же как в стандартном НВН-крафте. Посмотри в скриптах.

QUOTE (zmey @ Jul 21 2005, 11:37)
и последнее. Если я атакую в своем модуле простолюдина в одной из локаций, то за мной охотятся во всех. Например, убил я фермера на затеряной в полях ферме, а потом в городе за три (ВЫРЕЗАНО ЦЕНЗУРОЙ) оттуда вся стража меня гоняет. Как от этого избавиться НЕ МЕНЯЯ ФРАКЦИИ НЕПИСЕЙ?


А ты в свойствах фракции Commoner убери галочку "Глобальный эффект" (Global Effect).
zmey
Аваддону: смотрел в скриптах, не врубился. Я - маг начинающий, к тому же по инглишски не спикаю.

А за совет про глобальный эффект - спаибище! Попробую испытать. crazy.gif
Batkom
вот кстати, в сепе есть моделька шеи для армора(например 06) изображающая плащик, можно ли смены модельки повесить на onEquip, чтобы когда одеваешь плащ, менялась моделька шеи на соответствующую с плащом?
zmey
Здрасьте, снова я вернулся засерать ваши мозги.

1. Как сделать, чтобы при входе непися в триггер менялось значение переменной

2. как сделать, чтобы при входе в триггер вещь "размножалась"? Например, есть кольцо, которое время от времени "рождает" еще несколько...

3. Если можно, то подробно, и с примерами, мы, драконы, пока маленькие - страшно тупые... crazy.gif
-fenix-
QUOTE (zmey @ Jul 21 2005, 13:55)
2. как сделать, чтобы при входе в триггер вещь "размножалась"? Например, есть кольцо, которое время от времени "рождает" еще несколько...


ВСЕ СТАВЕТСЯ НА ОнЭнтер ТРИГЕРА

Не уверен, но вроде должно работать dntknw.gif
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oCol = GetObjectByTag ("Таг кольца");
object oItem = GetFirstItemInInventory(oPC);

if (GetIsPC(oPC)) // проверяем, что наступил PC

  {
      while (GetIsObjectValid(oItem)) // проверяем, что взятый объект - это 
                                    // правельный объект
      {
          if (GetTag(oItem) == GetTag(oCol)) // проверяем тот ли тег у объекта
            {
            ActionGiveItem(oCol, oPC); // даем кольцо
            }
          oItem = GetNextItemInInventory(oPC); // берем следующий предмет
      }
    }
}


QUOTE (zmey @ Jul 21 2005, 13:55)
1. Как сделать, чтобы при входе непися в триггер менялось значение переменной


Neverwinter Script Source
void main()
{
SetLocalInt(object oObject, string sVarName, int nValue);
// object oObject - объект на котором будет записана переменная
// string sVarName - название переменной
// int nValue - значение переменной
}


З.Ы Скачай из файлов туториал Айвана по авроре!
З.З.Ы это скорее уже в вопросы по скриптам
zmey
Fenixу, вечно живому и из пепла возрождающемуся! Спасибо! Но ты это, раскладку клавиатуры менять не ленись, З.Ы - этокак- то странно смотрится...
Добавлено в [mergetime]1121949907[/mergetime]
Вопрос номер следующий: я хочу добавит в игру новые иконки (кольца, амулеты и т д.) создаю рисунки в формате tga засовываю их в hak и... ничего не работает.

а иконки, выдранные из других hak-ов и засунутые в один новый прекрасно отображаются. НЕ ВРУБЛЮСЬ, В ЧЁМ ДЕЛО? Вроде размеры соблюдены...

и ещё... у меня в модуле 50 различных иконок колец. Достал ещё несколько (HAk) подключил... а их нет. Больше 50 нельзя, что - ли? Ведь заменить их получается. crazy.gif
Аваддон
zmey надо править baseitems.2da там есть столбец отвечающий за кол-во иконок.
Loxness
Подскажите пожалуйста пример скрипта вставляемых в диалог что бы персонаж
1.падал и дрых
2.Герой получал ХР за получение вещи (в диалоге передали и с трупа взяли)
3.Герой получает ХР за финальную фразу
4.Герой менял свой пол
5.Как перейти в область что бы наемники не перешли с главным героем ?
6.как перейти в диалоге последней фразой в новый модуль и соотв. в новом модуле активировать старого перса?

Также как задать в области тригггер что бы при наступлении на него героем появились NPS но не нападающие на героя?

Как регулировать фразы в диалогах - как сделать так что бы в первый раз когда подошли к персонажу была одна фраза а во второй другая?


dumbo
QUOTE (Loxness @ Jul 21 2005, 22:42)
1.падал и дрых

не совсем понятно, что ты имеешь ввиду. самое простое:
Neverwinter Script Source
AssignCommand(GetPCSpeaker(), ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 9999.0));// 9999 - длительность в секундах

QUOTE (Loxness @ Jul 21 2005, 22:42)
2.Герой получал ХР за получение вещи (в диалоге передали и с трупа взяли)

обратно не понять тебя - с какого трупа? что значит в "диалоге передали"? если я правильно понимаю процесс окончания стандартного квеста "пойди-принеси-пошелнахнемешай", то на строку PC "на тебе вещь" проверку типа:
Neverwinter Script Source
return  GetIsObjectValid(GetItemPossessedBy(GetPCSpeaker(), "тэг мегавещи"));
и Actions Taken типа:
Neverwinter Script Source
DestroyObject(GetItemPossessedBy(GetPCSpeaker(), "тэг мегавещи"));
GiveXPToCreature(GetPCSpeaker(), 1000);

QUOTE (Loxness @ Jul 21 2005, 22:42)
3.Герой получает ХР за финальную фразу

мда. опять же, только по предположениям о том, что ты имел ввиду - на строку("финальную") повесь Actions Taken:
Neverwinter Script Source
GiveXPToCreature(GetPCSpeaker(), 1000);

QUOTE (Loxness @ Jul 21 2005, 22:42)
4.Герой менял свой пол

ура! четко и ясно. но. буу. это невозможно. wink.gif можно только поменять вид игрока(SetCreatureAppearance), но пол останется неизменным.
QUOTE (Loxness @ Jul 21 2005, 22:42)
5.Как перейти в область что бы наемники не перешли с главным героем ?

отцепить их - RemoveHenchman. либо корректировать стандартные скрипты хенчей. может и есть такая возможность в изначальном варианте, но я насчет такого не в курсе(не смотрел).
QUOTE (Loxness @ Jul 21 2005, 22:42)
6.как перейти в диалоге последней фразой в новый модуль и соотв. в новом модуле активировать старого перса?

Neverwinter Script Source
//для шарда
ActivatePortal(GetPCSpeaker(), "nwn.blabla.ru:5151", "пароль",
              "ВЭЙПОИНТ В НОВОМ МОДУЛЕ(только верхний регистр)", TRUE);
//для сингла
StartNewModule("имя файла нового модуля(без расширения)");

QUOTE (Loxness @ Jul 21 2005, 22:42)
Также как задать в области тригггер что бы при наступлении на него героем появились NPS но не нападающие на героя?

простой single-shot encounter. NPC фракции Commoner, но в свойствах encounter'а фракция должна быть Hostile - иначе не сработает.
QUOTE (Loxness @ Jul 21 2005, 22:42)
Как регулировать фразы в диалогах - как сделать так что бы в первый раз когда подошли к персонажу была одна фраза а во второй другая?

сто пятьдесят тысяч раз уже жевали. в скриптах на фразах надо ставить/проверять локальные переменные.

ps. устал. уехал в иные страны на моря. cool.gif mamba.gif alcoholic.gif
Loxness
Прошу прощения за неточные вопросы и за дельные ответы
итак продолжим

1.Как сделать так что бы после сказанной фразы - произошел мультик вызова какой нибудь зверюги
(не помощника а например Демона из круга...там скалы из земли лезут )?
2.Как сделать так что бы наемник сам отделялся , отказываясь далее идти (наступив на триггер какой нибудь)?
3.Предположим сделаны 3 одинаковых персонажа , поместив их в одну локацию и создать точки маршрута , все трое туда ломятся, как сделать так что бы ходил один а остальные стояли?
Dik Morris
1. Не помню biggrin.gif
2. Дык вот скриптик на onEnter тригерра: (попозже выложу)
3. Нет ничего проще! Просто сделай этим персам уникальные (свои разные тэги) тэги, и все.
-fenix-
QUOTE (Loxness @ Jul 22 2005, 02:01)
1.Как сделать так что бы после сказанной фразы - произошел мультик вызова какой нибудь зверюги (не помощника а например Демона из круга...там скалы из земли лезут )?

Тут надо сценку писать! А для этого либо ты сам в них разбераешься, с задаванием вопросов, либо досконально объясняешь, что тебе точно нужно - может кто тут напишет.
QUOTE (Loxness @ Jul 22 2005, 02:01)
2.Как сделать так что бы наемник сам отделялся , отказываясь далее идти (наступив на триггер какой нибудь)?

Loxness, тут уже спрашивали

QUOTE (zmey @ Jul 21 2005, 11:01)
Люди! Мне нужна такая хреновина: Например, с моим персом идет напарник. Мне надо, чтобы в определенном месте он остановился, и сказав типа "Я дальше не пойду" выбыл из компаниии уже НЕ ПРИСОЕДИНЯЛСЯ НИКОГДА.


QUOTE (-fenix- @ Jul 21 2005, 12:07)


zmey, есть функция
Neverwinter Script Source
void RemoveHenchman(object oMaster, object oHenchman=OBJECT_SELF)


где
oMaster - это тот от кого уходит хенчмен
oHenchman - это хенчмен, каторый уходит

То, что ты хочешь можно сделать с помощью тригера и скрипта на нем проверяющего кто наступил. Рисуешь тригер и на ОнЭнтер ставишь скрипт

Neverwinter Script Source
void main()
{
object oMaster = GetEnteringObject();
object oHenchman = GetHenchman(oMaster);

if (GetIsPC (oMaster) && !GetLocalInt(OBJECT_SELF, "TRIGER") == 1)
  {
  AssignCommand(oHenchman, ActionSpeakString("Я дальше не пойду"));
  RemoveHenchman(oMaster, oHenchman);
  SetLocalInt(OBJECT_SELF, "TRIGER", 1);
  SetLocalInt(oHenchman, "TRUS", 1); // устанавливаем локалку, а на ветке  
  // диалога, где хенча можно обратно взять, ставим проверку на эту локалку
  }
}

Loxness
Вопрос по скрипту об удалении из гурппы наемника
я попробовал что то не получается
взял тестовую локацию вставил туда наемника Alex с тегом 123 - далее диалог = он со мной
ставлю триггер (настраиваемый ) в onenter добавляю заранее созданный скрипт как написано
выше ) запускаю игру ...все хорошо только наемник пробегает местность где триггер и ничго..не уходитsad.gif
что я делаю не так?
-fenix-
У меня все работает!!!

Не знаю ,какой настраиваем, наверное перевод разный - у меня называется новый общий.
QUOTE (Loxness @ Jul 22 2005, 19:45)
с тегом 123

Плохой тег, мож из-за него?
QUOTE (Loxness @ Jul 22 2005, 19:45)
далее диалог

Диалог, чтоб он присоеденился?

Тут должен наступить ты, а не хэнчмен!

--------------------------
Есть функции
Neverwinter Script Source
void SetPCDislike(object oPlayer, object oTarget)
void SetPCLike(object oPlayer, object oTarget)

А как понять устаналивает oPlayer и oTarget , чтобы испытывать неприязнь/приязнь друг к другу. В чем заключается эта неприязнь/приязнь.
Zirrex
-fenix- они должны менять отношение одного персонажа к другому персонажу. Данная опция работает только в онлайновом режиме. Если ты обратил внимание, то при нажатии на кнопку "P", появляется список персонажей, в данный момент играющих на шарде. Там же есть иконка "любит, не любит". При ее переключении твой персонаж может стать врагом выбранному персонажу.

Эти функции должны скриптовым путем переключать это отношение. Я в свое время пробовал их использовать даже на хартбите, проверяя, если персонаж отвечает требованиям низкой репутации, то выставить автоматически для всех находящихся персонажей на сервере отрицательное отношение. Почему-то не получается. Либо я не то делал, либо эти функции так не работают.
Batkom
Эмм....может я чего то не до конца понимаю, везде, где я использую локальные переменные или "базы данных" а ля SetCampaigin[впиши недостающее], они прилично проглюкивают, гдето не считываются, или не записываются... хз, я логически размышляя пришел к выводу, что эти функции должны сохранять то, что тебе нужно, вроде сохраняют, но далеко не всегда.
Расскажите пожалуйста об этом как можно поподробнее и как могут себя повести вункции установки переменных и работы с базами данных с тех или иных случаях.

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

С уважением , Wolv
Zirrex
wolverine очень просто, находишь диалог "x0_skill_ctrap", и либо удаляешь его, оставляя пустым, либо добавляешь новый раздел диалога, например "Крафт отключен". Теперь при попытке активации всегда будет выводиться эта фраза.

Batkom ты их постоянно что ли используешь? Дело в том, что эти функции нужны 1 раз. Они создают запись в файл базы, а дальше ты уже просто изменяешь ее содержимое. Т.е., тебе надо создать уникальный файл, куда записать переменную, а потом ее изменять, но не создавать каждый раз файл заново.

Например, входит на шард первый раз игрок, ему присуждается номер, который сохраняется в уже существующий файл базы данных. Далее, когда он перезайдет, этот номер просто считается, а не создастся новый номер на одного и того же персонажа.
Batkom
ну допустим крафт
сначала считывается навык игрока
а = GetCampaignInt("craft", "Weapon" + GetName(oPC))
если ничего такого нет, то помоему а = 0
а далее при удачных обстоятельствах навык может прокачаться тогда

SetCampaignInt("craft", "Weapon" + GetName(oPC), a+1)

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

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

Функция SetCampaignInt у меня сработала 1 раз, когда только персонаж создавался, потом она уже не используется, а все значения берутся с предмета. Конечно, если ты не хочешь смешивать переменные в одном месте, то создавай разные базы.
Batkom
то есть SetCampaign лучге не пользоваться?
Zirrex
Batkom нет, его использовать можно, но верно, а не работать как с переменной, которую надо часто перезаписывать.
Larrel
Какой скрипт нужно юзать, чтобы переместить НПС по окончании диалога к конкретному вэйпоинту и обратно?
Nick Parker
Меня стал мучить один вопрос. Можно сделать так, чтобы играть в модуле можно было только за одну рассу? В ПЛ, если уровень больше был, то Game Over, тут наверное также: если не человек, то GoodBye. Но как это сделать?
Tiger Greyhawk
QUOTE (Larrel @ Jul 24 2005, 22:47)
Какой скрипт нужно юзать, чтобы переместить НПС по окончании диалога к конкретному вэйпоинту и обратно?

Это обсуждалось по отдельности уже немерено раз. Смотри FAQ по Aurora Toolset Вопросы и ответы и читай темы "Скрипты" и "Вопросов новичков"
На последней ветке диалога, во вкладке "Action Taken" (Совершены действия) пишешь скрипт:
Neverwinter Script Source
void main()
{
object oPC=GetPCSpeaker();
object oWP=GetObjectByTag("TAG_WP");
location lCurrent=GetLocation(oPC);
AssignCommand(oPC, ActionJumpToObject(oWP));
AssignCommand(oPC, ActionWait(5.0));
AssignCommand(oPC, ActionJumpToLocation(lCurrent));
}

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

QUOTE (Nick Parker @ Jul 25 2005, 03:49)
Меня стал мучить один вопрос. Можно сделать так, чтобы играть в модуле можно было только за одну рассу? В ПЛ, если уровень больше был, то Game Over, тут наверное также: если не человек, то GoodBye. Но как это сделать?

Дык, на OnClientEnter ставишь проверку на расу...
DEM
Помогите, если это возможно!! shout.gif Можно ли свернуть окно скрипта... Я понимаю это глупый вопрос, но просто так мешает когда не можешь свернуть окно скрипта и разместить что нить в локе, посмотреть тег и т.д. swoon.gif
zmey
Здрасьте, это снова Я! Посидел я пару деньков, (ВЫРЕЗАНО ЦЕНЗУРОЙ), и возникла у меня вопросов куча немеряная:

1. У меня установлены Тени и Орды. Как можно сделать, чтобы в моем модуле перс не мог создавать оружие, броню, зелья и свитки из материалов?

2. Как сделать, чтобы непись утром выходил из дома, а но ночь возвращался в дом и закрывал дверь?

3. Как предмету присваивается уникальная сила?
НАПРИМЕР:
а) нужно, чтобы при использовании уникальной силы предмета игрок получал один из трех предметов случайным образом? (Сила используется 1 раз в день)
Пусть тег предмета с уникальной силой: UN, Рес реф : un

теги получаемых предметов: ITEM1 , ITEM2, ITEM3
Рес реф-ы :item1, item2 ,item3



б) нужно, чтобы три раза можно было вызвать существо. (после чего предмет исчезает)

Пусть тег предмета с уникальной силой : UN , рес реф: un

тег существа : CREATURE

ОЧЕНЬ ПРОШУ, ОБЪЯСНИТЕ ПОДРОБНО. crazy.gif
Добавлено в [mergetime]1122372681[/mergetime]
ишо пара глупостей: как сделать, чтобы при наличии в инвентаре перса определённого предмета время от времени происходило что - то?

ПОЯСНЯЮ: например, если у перса в инвентаре есть предмет с ТЕГОМ: ITEM и рес реф-ом :item , ето каждый день в его инвентаре появляется один предмет с тегом: PREDMRT и рес реф-ом :predmet

это еще не всё!

как сделать, чтобы предмет, если он экиперован, нельзя было снять, пока lokal int A=1
пример: кольцо имеет тег :RING и рес реф ring
Добавлено в [mergetime]1122383052[/mergetime]
Аваддону

QUOTE
zmey надо править baseitems.2da там есть столбец отвечающий за кол-во иконок.


уже нашёл. Но за помощь - спасибо! crazy.gif
Добавлено в [mergetime]1122387559[/mergetime]
..............
нужон скрипт, при котором если НЕПИСЬ отойдет от объекта на определённое расстояние, то подохнет. Поделитесь, ежели не жалко! crazy.gif
Vitalist
Обьясните, плиз, шаг за шагом, как создать триггер, при прохождение которого перс скажет нужную мне фразу?
Zirrex
zmey краткие ответы:

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

2. Посмотри скрипт "nw_c2_default9", там все написано.

3. На модульном эвенте "OnActivateItem" делаешь такой скрипт:

а)
Neverwinter Script Source
void main()
{
    object oItem = GetItemActivated();
    object oPC = GetItemActivator();
    string sItemTag = GetTag(oItem);

    if ((sItemTag == "un"))
    {
        if (GetLocalInt(oPC, "UnDay") == FALSE)
        {
            int iRandom = d2() + 1;
            float fHour = HoursToSeconds(24);

            switch (iRandom)
            {
                case 1: CreateItemOnObject("item_1", oPC); break;
                case 2: CreateItemOnObject("item_2", oPC); break;
                case 3: CreateItemOnObject("item_3", oPC); break;
            }
            SetLocalInt(oPC, "UnDay", TRUE);
            DelayCommand(fHour, SetLocalInt(oPC, "UnDay", FALSE));
        }
    }
}

Уникальную силу надо делать на себя.

б) В свойствах каждой вещи добавляешь требуемое заклинание, и устанавливаешь, сколько раз можно использовать вещь. Ставишь не больше 3-х раз.

4. Ставишь на эвент модуля "OnHeartbeat" сей скрипт:

Neverwinter Script Source
void main()
{
    object oPlayer = GetFirstPC();

    while (GetIsObjectValid(oPlayer))
    {
        if (GetLocalInt(oPlayer, "ItemDay") == FALSE)
        {
            if (GetItemPossessedBy(oPlayer, "item1") != OBJECT_INVALID &&
                GetItemPossessedBy(oPlayer, "item2") == OBJECT_INVALID)
            {
                CreateItemOnObject("item2", oPlayer);
                SetLocalInt(oPlayer, "ItemDay", TRUE);
                DelayCommand(fHour, SetLocalInt(oPlayer, "ItemDay", FALSE));
            }
        }
        oPlayer = GetNextPC();
    }
}


5. На эвентах модуля "OnPlayerUnEquipItem" и "OnUnAcquireItem" делаешь такие скрипты:

На эвент "OnUnAcquireItem":

Neverwinter Script Source
void main()
{
    object oItem = GetModuleItemLost();
    object oPC = GetModuleItemLostBy();

    if (GetTag(oItem) == "ring")
    {
        CopyObject(oItem, GetLocation(oPC), oPC);
        DestroyObject(oItem);
        AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTRING));
    }
}

На эвент "OnPlayerUnEquipItem":

Neverwinter Script Source
void main()
{
    object oPC = GetPCItemLastUnequippedBy();
    object oItem = GetPCItemLastUnequipped();

    if (GetTag(oItem) == "ring")
    {
        AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTRING));
    }
}


6. На хартбите НПС делаешь проверку:

Neverwinter Script Source
void main()
{
    object oPlace = GetNearestObjectByTag("place");

    if (GetDistanceBetween(OBJECT_SELF, oPlace) > 1.0)
    {
        effect eDeath = EffectDeath(FALSE, FALSE);
        ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, OBJECT_SELF);
    }
}

Надеюсь, не ошибся. Сам не проверял, но по идее должно работать. Требует проверки.

Vitalist, самое простое, создать триггер, на его эвенте "OnEnter" повесить такой скрипт:

Neverwinter Script Source
void main()
{
    object oPC = GetEnteringObject();

    if (GetIsPC()
    {
        if (GetLocalInt(oMod, "Trigger") == FALSE)
        {
            SetLocalInt(oMod, "Trigger", TRUE);
        }
    }
}

Далее, на хартбите НПС сделать такой скрипт:

Neverwinter Script Source
void main()
{
    if (GetLocalInt(oMod, "Trigger") == TRUE)
    {
        AssignCommand(OBJECT_SELF, ActionSpeakString("Сообщение НПС", TALKVOLUME_TALK));
        SetLocalInt(oMod, "Trigger", FALSE);
    }
}
Vitalist
Zirrex, как я понял, эту фразу скажет NPC, да? А мне хотелось бы что бы это вякнул игрок, типа мысли вслух...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.