Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > 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
Vitalist
Fenix:
1) спасибо за "1001"
2) Э-э-э, куда это пихать?
-fenix-
QUOTE (Vitalist @ Sep 18 2005, 17:14)
1) спасибо за "1001"

Это че за код biggrin.gif

QUOTE (Vitalist @ Sep 18 2005, 17:14)
2) Э-э-э, куда это пихать?

Это функция, пихать в зависимости то того, когда нужно вешать эффект.
Если нужно, чтоб он все время горел(типа св-во у него такое), то нужно пихать на OnSpawn НПС.

Поставь вот это - смотрится круто good.gif
Neverwinter Script Source
void main()
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_PARALYZED), OBJECT_SELF);
}
Vitalist
О, то, что надо - респект! А то, что я удалил все в OnSrawn, ниче не будет?
Далее. Что надо написать, чтобы NPC одел нужный мне предмет, после нужной фразы в диалоге?

И еще: где можно узнать, какие виз. эффекты можно повесить?
Archangel
Люди, подскажите, как сделать такую фишку:
предположим игрок впервые запускает модуль, но у героя, входящего в модуль, уровень
должен быть не больше 3го, т.е. игрок, например, с 10м уровнем должен стать героем
с 3м уровнем, а герой, например, с 1м уровнем должен стать героем с 3м уровнем. this.gif
Я точно знаю, что такое возможно, но уменя чего-то не получается black eye.gif
dumbo
Archangel, SetXP(nLev*(nLev-1)*500); где nLev - нужный уровень.
Ghost
Гм.. у меня вопрос. Как запретить игроку выбирать тот или иной класс\рассу??? Чтоб низя было играть например эльфами и орками и нельзя было бы выбрать класс, скажем рейнджер и вор.
zmey
Народ! Я зае... мучился! Не могу написать такую вещь: Непись дает игроку задание: иди спаси моего сына/брата/жениха/ ит.п., если не выполнишь за день, то его убьют. Так вот, как определить, что день прошел и сыну/братю/жениху помирать пора?
Добавлено в [mergetime]1127140742[/mergetime]
Короче, как задавать время (не в секундах, а в днях, месяцах и т. п.) через которое должно произойти событие?

и еще: как из модуля в модуль перенести год/день/месяц?
Добавлено в [mergetime]1127140881[/mergetime]
не могу сделать поединок между магами: не кастуют друг на друга, сволочи! Поможите, люди добрые!!! diablo.gif

3. как сделать разговор между двумя неписями?


ПАЖАЛЫСТА, не нужно советовать типа: посмотри там-то, разберись. Смотрел, не разобрался. Лучше для наглядности скриптик с пояснениями, а.... biggrin.gif
-fenix-
QUOTE (Ghost @ Sep 19 2005, 14:44)
Гм.. у меня вопрос. Как запретить игроку выбирать тот или иной класс\рассу??? Чтоб низя было играть например эльфами и орками и нельзя было бы выбрать класс, скажем рейнджер и вор.

Как и с полом в леворе.

На OnClientEnter проверку и убийство не нужного PC.
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();

if (GetRacialType(oPC) == RACIAL_TYPE_ELF ||
    GetRacialType(oPC) == RACIAL_TYPE_HALFORC ||
    GetClassByPosition(1, oPC) == CLASS_TYPE_RANGER ||
    GetClassByPosition(1, oPC) == CLASS_TYPE_ROGUE)
{
SetCommandable(FALSE, oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE,TRUE), oPC);
return;
}
}


А на OnPlayerDeath объясним причины смерти
Neverwinter Script Source
void main()
{
object oPC = GetLastPlayerDied();

if (GetRacialType(oPC) == RACIAL_TYPE_ELF ||
    GetRacialType(oPC) == RACIAL_TYPE_HALFORC ||
    GetClassByPosition(1, oPC) == CLASS_TYPE_RANGER ||
    GetClassByPosition(1, oPC) == CLASS_TYPE_ROGUE)
{
string sDeathMessage = "Играть за эльфов и полуорков и классы рэнджера и вора не льзя";
PopUpDeathGUIPanel(oPC, FALSE, TRUE, 0, sDeathMessage);
}
}
Хэмфаст
Как вскрыть и изменить информацию dialog.tlk?
-fenix-
QUOTE (zmey @ Sep 19 2005, 18:37)
Короче, как задавать время (не в секундах, а в днях, месяцах и т. п.) через которое должно произойти событие?

Вот функция, которой можно задать время
Neverwinter Script Source
// Set the time to the time specified.
// - nHour should be from 0 to 23 inclusive
// - nMinute should be from 0 to 59 inclusive
// - nSecond should be from 0 to 59 inclusive
// - nMillisecond should be from 0 to 999 inclusive
// 1) Time can only be advanced forwards; attempting to set the time backwards
//    will result in the day advancing and then the time being set to that
//    specified, e.g. if the current hour is 15 and then the hour is set to 3,
//    the day will be advanced by 1 and the hour will be set to 3.
// 2) If values larger than the max hour, minute, second or millisecond are
//    specified, they will be wrapped around and the overflow will be used to
//    advance the next field, e.g. specifying 62 hours, 250 minutes, 10 seconds
//    and 10 milliseconds will result in the calendar day being advanced by 2
//    and the time being set to 18 hours, 10 minutes, 10 milliseconds.

void SetTime(int nHour,int nMinute,int nSecond,int nMillisecond)

Для получения текущего времени соответственно функции
Neverwinter Script Source
int GetTimeHour(), int GetTimeMinute(), int GetTimeSecond(), int GetTimeMillisecond()


А вот, для установки года, месяца, дня
Neverwinter Script Source
// Set the calendar to the specified date.
// - nYear should be from 0 to 32000 inclusive
// - nMonth should be from 1 to 12 inclusive
// - nDay should be from 1 to 28 inclusive
// 1) Time can only be advanced forwards; attempting to set the time backwards
//    will result in no change to the calendar.
// 2) If values larger than the month or day are specified, they will be wrapped
//    around and the overflow will be used to advance the next field.
//    e.g. Specifying a year of 1350, month of 33 and day of 10 will result in
//    the calender being set to a year of 1352, a month of 9 and a day of 10.
void SetCalendar(int nYear,int nMonth, int nDay)

И соответственно, для получения
Neverwinter Script Source
int GetCalendarYear(), int GetCalendarMonth(), int GetCalendarDay().


QUOTE (zmey @ Sep 19 2005, 18:37)
Народ! Я зае... мучился! Не могу написать такую вещь: Непись дает игроку задание: иди спаси моего сына/брата/жениха/ ит.п., если не выполнишь за день, то его убьют. Так вот, как определить, что день прошел и сыну/братю/жениху помирать пора?

Значит нужно запомнить время, когда ПС взял задание + время для выполнения квеста. Для этого на жертву нужно повесить локалки с этими значениями. И на OnHeartbeat жертвы проверять, если запомненые значения больше или равно текущему времени, то дестроить НПС. Так же нужно поставить условие, что если задание невзято или выполнено, то вход в цикл не происходит(соответствующие локалки).

Скажем на нужной ветки в диалоги ставим скрипт
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("ТАГ СПАСАЕМОГО НПС");

SetLocalInt(oNPC, "START", 1);

SetLocalInt(oNPC, "YEAR", GetCalendarYear() + 1);
SetLocalInt(oNPC, "Month", GetCalendarMonth() +1);
SetLocalInt(oNPC, "Day", GetCalendarDay() + 1);
SetLocalInt(oNPC, "Hour", GetTimeHour() + 1);
SetLocalInt(oNPC, "Minute", GetTimeMinute() + 1);
SetLocalInt(oNPC, "Second", GetTimeSecond() + 1);
SetLocalInt(oNPC, "Millisecond", GetTimeMillisecond() + 1);
}


А на OnHeartbeat спасаемого
Neverwinter Script Source
void main()
{

if(GetLocalInt(OBJECT_SELF, "START") == 1 || GetLocalInt(OBJECT_SELF, "FINISH") == 1)
return;

int iYaer = GetCalendarYear();
int iMonth = GetCalendarMonth();
int iDay = GetCalendarDay();
int iHour = GetTimeHour();
int iMinute = GetTimeMinute();
int iSecond = GetTimeSecond();
int iMillisecond = GetTimeMillisecond();

if(iYaer >= GetLocalInt(OBJECT_SELF, "YEAR"))
//ну и так далее
DestroyObject(OBJECT_SELF);
}

Конечно все запоминать и проверять не надо, только то, что тебе нужно, скажем только год или месяц или час.
А когда квест считается выпоненым, то устанавливать локадку FINISH на 1.
Вроде так.

QUOTE (zmey @ Sep 19 2005, 18:37)
и еще: как из модуля в модуль перенести год/день/месяц?

Запоминаешь локалками текущии значения и потом с помощью SetTime и SetCalendar устанавливаешь.
Добавлено в 20:19
QUOTE (zmey @ Sep 19 2005, 18:37)
не могу сделать поединок между магами: не кастуют друг на друга, сволочи! Поможите, люди добрые!!!

Может они просто не могут произносить эти закленания?
Чтоы могли произносить неизвестные им закленания, то в функции
Neverwinter Script Source
void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE)

Нужно в bCheat поставить TRUE.

QUOTE (zmey @ Sep 19 2005, 18:37)
3. как сделать разговор между двумя неписями?

С помощью SpeakString и ActionSpeakString.

QUOTE (Хэмфаст @ Sep 19 2005, 19:41)
Как вскрыть и изменить информацию dialog.tlk?

Тебе в форум 3D MAX, Maya и др... тема 2DA ТАБЛИЦЫ.
Ghost
-fenix- Огромное спасибо smile.gif
QUOTE (Хэмфаст @ Sep 19 2005, 19:41)
Как вскрыть и изменить информацию dialog.tlk?

Используй TLK Editor
Vhall
QUOTE (Ghost @ Sep 19 2005, 14:44)
Гм.. у меня вопрос. Как запретить игроку выбирать тот или иной класс\рассу??? Чтоб низя было играть например эльфами и орками и нельзя было бы выбрать класс, скажем рейнджер и вор.

Замени (именно замени, а не удали!) 2da строки пустышками - ****. Это racialtypes и classes
QUOTE (Хэмфаст @ Sep 19 2005, 19:41)
Как вскрыть и изменить информацию dialog.tlk?
QUOTE (-fenix- @ Sep 19 2005, 19:10)
Как и с полом в леворе.

Если только ставится задача "сделать через ж-у":D
-fenix-
QUOTE (Vhall @ Sep 19 2005, 21:26)
Если только ставится задача "сделать через ж-у":D

Ставилась задача достичь это скриптами, так как вопрос был задан в этом форуме, а не в 3D MAX, Maya и др...!!! Уж, чем можем, тем и помогаем!!! Если спрашивается в этой теме и это можно сделать скриптами, то отвечаем, если не лзя, то посылаем в другую тему.
QUOTE (-fenix- @ Sep 19 2005, 19:54)
Тебе в форум 3D MAX, Maya и др... тема 2DA ТАБЛИЦЫ.

Vhall
//
-fenix-, да не обижайся ты. wink.gif Мне как человеку абсолютно не сведущему в скриптах эта идея не по душе. К тому же, в случае с 2da игроку все ясно и понятно - выбрать нельзя при самой генережке
Aiwan
Ghost единсвенно что мне приходит на ум: ставишь проверку в слоте на OnPlayerLevelUp на два класса мультиклассовых игроков, второй и третий. Ведь первый ты уже проверил при входе. Дальше.
Neverwinter Script Source
int iHit = GetHitDice(oPC); // Берем уровень объекта
     int i = iHit*1000; // Это ХР на один уровень больше чем у объекта

Если уровень игрока поднялся на один из запрещенных классов, вычитай сразу из игрока число i хр и пиши мессагу, что такой класс нельзя. Единственно я не знаю с какой стадии проверяется в этом слоте, до поднятия или уже после поднятия срабатывает скрипт. Вернее надо проверить как сработает число i. Возможно придется вычитать еденицу из iHit и дальше как я написал, главное вычислить искомоме число хр что получает РС. Я сам буду делать такую систему позже чуток. Поэтому говорю как я думал сделать. Сделаешь ты я тоже заюзаю после. biggrin.gif В принципе осталось это написать, может если бы я не писал пост а сразу код написал... А, ща! Через четыре часа.... Какой я был наивный...

Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnPlayerLevelUp  "am_mod_levelup"
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  Скрипт запрещающий использование выборочных
  классов в модуле. Спасибо Dumbo за упрощенную
  форумулу, моя была в пять раз больше pardon.gif.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 20.09.2005
//:://////////////////////////////////////////////
void main()
{
    object oPC = GetFirstPC();
    int iHit = GetHitDice(oPC); // Берем уровень игрока
    int iXP = GetXP(oPC); // Вся ХР игрока
    string sClass; // Для сообщения игроку что он сделал неправильно
    int iClass2 = GetClassByPosition(2, oPC); // Второй класс мультикласса
    int iClass3 = GetClassByPosition(3, oPC); // Третий  класс мультикласса
    int F = CLASS_TYPE_FIGHTER; // Воин
    int R = CLASS_TYPE_ROGUE;  // Вор
    int D = CLASS_TYPE_DRUID;  // Друид
    int P = CLASS_TYPE_PALADIN; // И так далее...

    // Для примера классs: Если Воин, Вор, Друид, Паладин
    if  ((iClass2==F || iClass3==F) || (iClass2==R || iClass3==R)
      || (iClass2==D || iClass3==D) || (iClass2==P || iClass3==P))
      {
          if(iClass2==F || iClass3==F) sClass = "Воин";
          if(iClass2==R ||  iClass3==R) sClass = "Вор";
          if(iClass2==D || iClass3==D) sClass = "Друид";
          if(iClass2==P || iClass3==P) sClass = "Паладин";

        // Присвоим РС в начале ХР на уровень меньше, значит заберем один
        // уровень, что мы запретили из использования. Дальше, мы возвращаем
        // назад всю нашу ХР, ведь ХР может быть намного больше чем мы
        // потратили на поднятие уровня.
        SetXP(oPC, (iHit*(iHit-1)*500)-((iHit-1)*1000));
        DelayCommand(0.5, SetXP(oPC, iXP));

        // Можно так сообщить, можно что-то другое.
        SendMessageToPC(oPC, "Вы использовали запрещенный класс: "+sClass);

        /*
          Тут можно вписать что-нибудь из эффектов, для острастки.
        */

      }
}


Потом я глянул на пост Думбо и чуть не упал lol.gif lol.gif Я перепишу свой скрипт чуть позже. biggrin.gif
Ghost
*чуток офигел от такого громадного скрипта*
Aiwan спасибо огромное, но я думаю что лучше сделать это через 2да.
1)мне понятней, ибо я в скриптах ни бум-бум.. biggrin.gif а в 2да немного понимаю...
2)игроку легче и удобней, ибо не надо будет заново париться, создавая нового перса разрешенного класса... wink.gif
Но за скрипт спасибо... не простое... огромное!!! biggrin.gif
NedWarN
2-fenix-
Скрипт с Временем.
Как только входиш в локу, скрипт дестроя на OnHeartbeat НеПиСя, сразу срабатывает.
Непись мнгновенно дестроится.
я вот нахимичил, вроде катить должно.
Использовать , ради профелактики.
DeleteLocalInt(OBJECT_SELF, "START");
DeleteLocalInt(OBJECT_SELF, "FINISH");
---
далее, не ставить сразу непися, а только после получения задания, и соответственно акривации, твоего скрипта. например стрингом, из политры и джампить.
---
или использовать ExecuteScript("123", oPC);, где 123 тег твоего выше написанного скрипта.
---
А во избежания, другого бага использовать проверку журнала, дабы активировать скрипт только тогда когда дано задание с опредилённым тегом.
Aiwan
QUOTE (Ghost @ Sep 20 2005, 02:26)
Aiwan спасибо огромное, но я думаю что лучше сделать это через 2да.

Подскажешь, как сделал? Может и я использую. biggrin.gif А про скрипт не стоит wink.gif Мне самому было интересно его написать.
yudgi
Ой, а что это такое 2да и где оно водится а?????
zmey
Где-где! Берешь, NWN explorer, открываешь папку с невером, там будет список. Просто выбери нужную 2 да таблицу
Ghost
QUOTE (Aiwan @ Sep 20 2005, 09:10)
Подскажешь, как сделал? Может и я использую

Как Vhall сказал...
QUOTE (Vhall @ Sep 19 2005, 21:26)
Замени (именно замени, а не удали!) 2da строки пустышками - ****. Это racialtypes и classes

У меня получилось только с классами (потер варвара, и при выборе класса он не отображается совсем)... а расса осталась... dntknw.gif И даже вроде работает... хотя я все о ней потер...
Vitalist
Кто-нибудь поделиться секретом, на счет одевания предмета на NPC во время диалога?
Aiwan
Ghost а сами классы то в игре присутсвуют? У НПС например? Ты просто заюзай мой скрипт и поймешь что там все просто. Попробуй сам. Никаких траблов. Жмешь получить новый мультикласс и ничего не происходит. Игрок даже не замечает что его раздели и одели.
QUOTE (Vitalist @ Sep 20 2005, 15:47)
Кто-нибудь поделиться секретом, на счет одевания предмета на NPC во время диалога?

Neverwinter Script Source
object oDrag = GetItemPossessedBy(oHalib, "AM_ITM_DAG002");
  AssignCommand(oHalib, ActionEquipItem(oDrag, INVENTORY_SLOT_RIGHTHAND));
Lex
QUOTE (Aiwan @ Sep 20 2005, 09:10)
Подскажешь, как сделал? Может и я использую. biggrin.gif А про скрипт не стоит wink.gif Мне самому было интересно его написать.

в столбце PCClass в таблице classes.2da у тех классов, что тебе не нужны поставь 0.
(не забудь, что есть рекомендованные классы, это обычно воин. Так что если его блокируешь, то нужно еще где-то поменять рекомендованный класс, чтобы не было глюка. smile.gif)
Ghost
QUOTE (Lex @ Sep 20 2005, 15:15)
в столбце PCClass в таблице classes.2da у тех классов, что тебе не нужны поставь 0.
(не забудь, что есть рекомендованные классы, это обычно воин. Так что если его блокируешь, то нужно еще где-то поменять рекомендованный класс, чтобы не было глюка. )

Эм... значит он просто блокируется для выбора, но в игре (среди неписей) присутствует???
Добавлено в [mergetime]1127216629[/mergetime]
Проверил... точно.. сама структура класса сохраняется, но выбрать его нельзя... Осталось разобраться с рассами... smile.gif
-fenix-
QUOTE (Vhall @ Sep 19 2005, 23:22)
-fenix-, да не обижайся ты.

Да не, все нормально wink.gif

QUOTE (NedWarN @ Sep 20 2005, 02:45)
2-fenix- Скрипт с Временем. Как только входиш в локу, скрипт дестроя на OnHeartbeat НеПиСя, сразу срабатывает.


Ошибочка тут не большая в условии. Вместо
Neverwinter Script Source
if(GetLocalInt(OBJECT_SELF, "START") == 1 || GetLocalInt(OBJECT_SELF, "FINISH") == 1)

Надо
Neverwinter Script Source
if(GetLocalInt(OBJECT_SELF, "START") != 1 || GetLocalInt(OBJECT_SELF, "FINISH") == 1)
Vitalist
Aiwan, что-то он не хочет... Я правильно понял, что вместо "AM_ITM_DAG002" нужно вставить тег оружия\брони\другое?
Aiwan
QUOTE (Vitalist @ Sep 20 2005, 22:17)
Aiwan, что-то он не хочет...

Заставь. aggressive.gif

п.с. Так как мне нечем заняться, я могу порассуждать почему он не хочет. Но если ты приведешь код, то мы могли бы заняться этим вместе. scratch_one-s_head.gif
Добавлено в [mergetime]1127275690[/mergetime]
Vitalist из ПМ. Разве тот код что ты мне дал компилится?
Добавлено в [mergetime]1127275794[/mergetime]
Приведи ВЕСЬ КОД сюда.
yudgi
Help! Если не трудно подскажите в каком разделе сайта написано о добавлении в тулсет своей музыки, а то я заблудилась(надо было компас брать).
dumbo
yudgi
загляни сюда: http://www.wrg.ru/files/?cr=./toolset и первым делом слей и прочитай тутор Aiwan'a - FAQ по Aurora Toolset
yudgi
Ёщё один глупейший вопрос: чем открывать файлы формата bif.
Vitalist
Aiwan, ага не компилируется... Вообще только сейчас узнал про эту компиляцию.
CODE
void main()
{
object oDrag = GetItemPossessedBy(oHalib, "Тэг_шмотки");
 AssignCommand(oHalib, ActionEquipItem(oDrag, INVENTORY_SLOT_RIGHTHAND));
}

Дык что тут не правильно?
dumbo
можно посмотреть в раздел Ссылки. NWN explorer'ы, viewer'ы итд итп. и пользуйтесь nwvault'ом - это самое большое хранилище всего, относящегося к нвн'у
Добавлено в [mergetime]1127296715[/mergetime]
Vitalist, не определен объект oHalib.
если скрипт указывается в слотах непися, который должен напялить шмотку, то первой строчкой внутри функции main() вставь
Neverwinter Script Source
object oHalib = OBJECT_SELF;
иначе ищи его по тэгу:
Neverwinter Script Source
object oHalib = GetObjectByTag("тэг нужного непися");
Vitalist
Dumbo, спасибо, заработало...
Не так давно, Fenix писал скрипт на виз. эфект NPC. А какие еще можно запихнуть эфекты, кроме того?
dumbo
QUOTE (Vitalist @ Sep 21 2005, 19:39)
А какие еще можно запихнуть эфекты, кроме того?

Lexicon > Reference > Constants > VFX_*
(группы констант, начинающиеся на VFX)
Daemonix
В разделе "ВиО по тулсету часть 2" было описано, как убрать из инвентаря несколько одинаковых предметов с одним тэгом. А как проверить наличие в инвентории этих нескольких предметов с одним тэгом?
Добавлено в [mergetime]1127771429[/mergetime]
И вот ещё: ставлю на начало модуля команду
Neverwinter Script Source
TakeGoldFromCreature(GetGold(oPC),oPC, TRUE);
, а нет, денюжки никто не забирает... Почему? Вроде бы всё компилируется..

Добавлено в [mergetime]1127771599[/mergetime]
И последнее:
нужно, чтобы в модуль играли непрокачанные персы первого уровня. Можно ли на входе клиента в модуль забрать у него все очки опыта? Я знаю, что можно. Но у перса всё же останутся его прокачанные скиллы, или я не прав?
В общем, мой вопрос таков: как сделать суперперса зелёным новичком 1ого уровня?
Alian REXis
QUOTE (Daemonix @ Sep 26 2005, 23:51)
В разделе "ВиО по тулсету часть 2" было описано, как убрать из инвентаря несколько одинаковых предметов с одним тэгом. А как проверить наличие в инвентории этих нескольких предметов с одним тэгом?


Neverwinter Script Source
int StartingConditional()
{
string sGH = "items_tag";
object oGH = GetFirstItemInInventory(GetPCSpeaker());
int nCount = 0;
while (GetIsObjectValid(oGH))
{
      if (GetTag(oGH) == sGH) nCount++; //считаем кол-во предметов с одинаковым тэгом

      oGH = GetNextItemInInventory(GetPCSpeaker());
}
if (nCount>1) return TRUE;
return FALSE;
}


QUOTE (Daemonix @ Sep 26 2005, 23:51)
И вот ещё: ставлю на начало модуля команду

Neverwinter Script Source
TakeGoldFromCreature(GetGold(oPC),oPC, TRUE);

, а нет, денюжки никто не забирает... Почему? Вроде бы всё компилируется..


По идее все правильно, не знаю почему не работает.


QUOTE (Daemonix @ Sep 26 2005, 23:51)
И последнее:
нужно, чтобы в модуль играли непрокачанные персы первого уровня. Можно ли на входе клиента в модуль забрать у него все очки опыта? Я знаю, что можно. Но у перса всё же останутся его прокачанные скиллы, или я не прав?
В общем, мой вопрос таков: как сделать суперперса зелёным новичком 1ого уровня?


Neverwinter Script Source
SetXP(GetFirstPC(),0);


Скиллы не остаются.
yudgi
Привет всем, нужна ваша помощь, как сделать так, чтобы при в ходе в модуль в журнале поялялось задание.
Tiger Greyhawk
QUOTE (yudgi @ Sep 27 2005, 04:56)
Привет всем, нужна ваша помощь, как сделать так, чтобы при в ходе в модуль в журнале поялялось задание

в слоте OnClientEnter скрипт с функцией
Neverwinter Script Source
AddJournalQuestEntry("first_record", 1, oPC, FALSE, FALSE, FALSE);
first_record - тэг категории (конкретной ветки, которая может содержать большое кол-во записей) журнала
1 - ID. грубо говоря, порядковый номер в категории. (можно перескакивая: 100,200,300 и т.д.)
oPC - игрок, на которого "вешать" запись. в данном случае можно GetEnteringObject, но естественно с проверками, а нет ли у него уже такой записи не ДМ ли он...
FALSE - для всей партии, в которой состоит этот герой или только для него одного. TRUE - для всей.
FALSE - для всех ли игроков в принципе в модуле. TRUE - для всех.
FALSE - перезаписывать ли запись, если ID выше данного. TRUE - перезаписывать. Т.е. к примеру у нас уже есть запись в этой категории под ID 4.
yudgi
Спасибо, и ещё вот такой вопрос появился, при входе в модуль игрок должен сказать фразу, как это сделать, или может лучше чтобы она появлялась когда на тригер наступаешь, но как тогда сделать чтобы она появлялась только один раз?
Aiwan
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnEnter  am_ten_speak_pc
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  Текст над РС  KeyTag - Количество раз
            Если 0, то бесконечно
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Original idea By: DBColl
//:: Created On: 21.04.2005
//:://////////////////////////////////////////////
void main()
{
object oPC = GetEnteringObject();
object oTrig = OBJECT_SELF;
string sSpeak = GetName(OBJECT_SELF);
int i = StringToInt(GetLockKeyTag(oTrig));
int iSp = GetLocalInt(oTrig, "SPEAK");
  if (!GetIsPC(oPC) || iSp >= i && i!=0)
    {
    return;
      }
      AssignCommand(oPC, SpeakString(sSpeak));
      if (i!=0)
      {
      SetLocalInt(oTrig, "SPEAK", (iSp+1));
      }
}
dumbo
кстати, о птичках: народ, вы ненавязчиво указывайте, что именно вы делаете - сингл-модуль или шард. лучше даже в подпись вставить. типа "я синглофил" wink.gif

ps. это я к тому, что для шарда, например, скрипт Aiwan'а не проканает - триггер затопчут толпы "падонкафф". crazy.gif
yudgi
QUOTE (dumbo @ Sep 27 2005, 08:47)
кстати, о птичках: народ, вы ненавязчиво указывайте, что именно вы делаете - сингл-модуль или шард. лучше даже в подпись вставить. типа "я синглофил"

Одиночный модуль, до шарда я пока не доросла.

Добавлено в [mergetime]1127809311[/mergetime]
Я тут пробую иногда нужные мне скрипты сама написать(К сожалению не часто получаются). Вот вопрос появился с целью повышения скриптообразования.
Скрипт на то,когда РС первый раз входит в область и говорит фразу.
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
string sString = " ";
}

Подскажите, что добавить,какие ошибки и какие сюда нужно проверки ставить? Решила спросить, потому что уже надоело готовые скрипты списывать,так сама точно не научусь, но без вашей помощи не справлюсь.
zmey
void main()
{
object oPC = GetEnteringObject();
string sString = " ";
}


э-э-э. Это на вход в локацию или при наступлении на триггер?



yudgi
Вход в локацию.
zmey
Тогда так: (вроде бы)

Neverwinter Script Source
void main()
{
object oPC = GetFirstPC();// это первый попавшийсЯ PC у тебЯ ведь сингл, правда?
string sString = "бла-бла-бла, (вырезано цензурой)! ";

Assign Command(oPC,ActionSpeakString(sString));
}

НО! ТЕКСТ БУДЕТ ПОЯВЛЯТСЯ КАЖДЫЙ РАЗ ПРИ ВХОДЕ В ЛОКАЦИЮ
object oPC = GetEnteringObject(); -это для триггеров. Типа oPC -это тот, кто встал в триггер.


yudgi
QUOTE (zmey @ Sep 27 2005, 12:35)
НО! ТЕКСТ БУДЕТ ПОЯВЛЯТСЯ КАЖДЫЙ РАЗ ПРИ ВХОДЕ В ЛОКАЦИЮ

А как чтобы один?
zmey
ставить нужно в onEnter локации diablo.gif
Добавлено в [mergetime]1127814409[/mergetime]
но diablo.gif все равно будет не один раз. а чтобы один, нужно проверку локалки делать
yudgi
Zmey а проверку ты не подскажешь?
dumbo
yudgi, тебе же Aiwan готовый скрипт дал. в слот OnEnter триггера его вставить и в свойствах триггера (Advanced) в поле Key Tag(первое поле сверху) ввести количество срабатываний - в твоем случае 1. все.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.