denis0k
Jun 25 2011, 16:30
Проблема в том, что нвскрипт - это обычный (или необычный) язык программирования, соответственно для пользования им надо знать основы теории алгоритмов и программирования

Мануал там отличный (по сравнению с некоторыми другими играми), тут база огромная, плюс комментарии к функциям в самом тулсете, но для непрограммиста это всё действительно бесполезно, потому как именно базиса нигде нет. И быть не может. В учебник по математике не вкладывают же букварь для обучения чтению.
Так что если совсем непонятно, могу порекомендовать для начала любой вузовский курс лекций по программированию. Либо нанять программера в команду. Собственно, чтобы разбираться, какие команды и в какой последовательности использовать (в любом языке программирования), люди учатся годами
Ollone5
Jun 28 2011, 14:11
У меня свои скрипты не работают, ошибка компиляции.
Что делать?!
denis0k
Jun 28 2011, 16:55
Оплатить нам услуги телепата, мб тогда мы узнаем хотя бы текст ошибки.
FlandayHoD
Jun 28 2011, 18:19
Где можно достать плагин который позволил бы переделывать файлы объектов - формата Невервинтера - в формат какого-нибудь 3ds max'а или еще лучше Blender'a?
Ollone5
Jun 29 2011, 12:02
Так, ошибки в каждом скрипте если он не сгенерирован тулсетом!
denis0k
Jun 29 2011, 19:04
У всех ошибок есть имя и описание.
Laajin
Jun 29 2011, 22:02
Может быть, ты в коментариях используешь букву "я" ?)
ты бы хоть выложил хоть один скрипт - denis0k тебе уже довольно понятно намекнул на это, или что? - надо разжевать - ВЫЛОЖИ ХОТЯ БЫ ОДИН СКРИПТ, ГДЕ ЕСТЬ ОШИБКА =))))) так?)
FlandayHoD
Jul 1 2011, 08:30
Насколько я знаю, нет. Да и в модулях в которые я играл, я тоже не видел ее. Если только комбинацией каких-то объектов; на худой конец- комод какой-нибудь установить отрицательный уровень высоты таким образом он у тебя наполовину будет выступать (ну или вовсе под землей будет если больше чем -3 поставить, вроде бы), и таким образом для создания стойки сделай парочку этих комодов; только не пробуй копировать их, с этой высотой, а то они у тебя в стандартное положение (над землей) вернуться. Так что сразу несколько ставь их, выделяй, и ставь высоту. Как-то так. Надеюсь если будешь использовать этот "метод" в своем модуле он тебе не сильно подпортит красоты)
Цитата(Вестель @ Jun 28 2004, 21:19)

Глупый вопрос, но все равно задам: в упор не могу найти в палитре стойку бара (или что-то вроде). Облазил все, что можно, но всеже нигде нету. Не ужели ее в стандартной палитре нету?
Насколько я знаю, нет. Да и в модулях в которые я играл, я тоже не видел ее. Если только комбинацией каких-то объектов; на худой конец- комод какой-нибудь установить отрицательный уровень высоты таким образом он у тебя наполовину будет выступать (ну или вовсе под землей будет если больше чем -3 поставить, вроде бы), и таким образом для создания стойки сделай парочку этих комодов; только не пробуй копировать их, с этой высотой, а то они у тебя в стандартное положение (над землей) вернуться. Так что сразу несколько ставь их, выделяй, и ставь высоту. Как-то так. Надеюсь если будешь использовать этот "метод" в своем модуле он тебе не сильно подпортит красоты)
Ollone5
Jul 1 2011, 13:00
[/nss]void main()
{
object oDoor=GetNearestObjectByTag("ТЭГ_ДВЕРИ");
if(GetIsOpen(oDoor)) // если она открыта
{
AssignCommand(OBJECT_SELF,ActionCloseDoor(oDoor));
// захлопнуть дверь. действие привязанно к рычагу.
SetLocked(oDoor,TRUE); // запереть дверь
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE
);
// рычаг переходит в другое положение
}
else if(!GetIsOpen(oDoor)) //иначе, если дверь не открыта
{
SetLocked(oDoor,FALSE);// отпереть дверь
AssignCommand(OBJECT_SELF,ActionOpenDoor(oDoor));
// открыть дверь.
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
// перевод рычага в другое положение
}
}[nss]
Взято с базы скриптов!
Ошибка: список изменения синтаксического анализа
Цитата(Ollone5 @ Jul 1 2011, 14:00)

Neverwinter Script
void main()
{
object oDoor=GetNearestObjectByTag("ТЭГ_ДВЕРИ");
if(GetIsOpen(oDoor)) // если она открыта
{
AssignCommand(OBJECT_SELF,ActionCloseDoor(oDoor));
// захлопнуть дверь. действие привязанно к рычагу.
SetLocked(oDoor,TRUE); // запереть дверь
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE
);
// рычаг переходит в другое положение
}
else if(!GetIsOpen(oDoor)) //иначе, если дверь не открыта
{
SetLocked(oDoor,FALSE);// отпереть дверь
AssignCommand(OBJECT_SELF,ActionOpenDoor(oDoor));
// открыть дверь.
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
// перевод рычага в другое положение
}
}
Взято с базы скриптов!
Ошибка: список изменения синтаксического анализа
Компилируется без проблем. Попробуй
патч.
Ollone5
Jul 1 2011, 16:48
Цитата
Компилируется без проблем. Попробуй патч.
У меня раньше тоже проблем небыло а сейчас любой скрипт с ошибкой!
Патч - (Error 404. Document not found.Запрашиваемый документ отсутствует на сервере.)
denis0k
Jul 1 2011, 16:54
Убери из скрипта русские буквы "я", неломанный тулсет ими давится. И я бы для тулсета сделал английский язык - на функционале никак не сказывается, но перевод там просто ппц.
Ollone5
Jul 4 2011, 10:11
Мой редактор скрита пишет:
Neverwinter Script
object oDoor=GetNearestObjectByTag("ТЭГ_ДВЕРИ");
Потеря анализатора переменной, но раньше все было без проблем
denis0k
Jul 5 2011, 00:13
Несмотря на довольно неплохую память, я ума не приложу, как эта ошибка пишется по-английски и, следовательно, что значит на самом деле. Потому как русский перевод тулсета - набор случайных слов из англо-русского словаря, не более. После перлов с тулсетом больше всего доставлял только "сундук дварфов" (на самом деле он там "of drawers", т.е. банальный комод), так и не исправленный за эндцать лет жизни перевода

P.S. Тулсет запускай с оригинальным тлк
virus_found
Jul 5 2011, 12:31
Цитата(denis0k @ Jul 5 2011, 00:13)

больше всего доставлял только "сундук дварфов"
Спасибо, посмеялся
Ollone5
Jul 15 2011, 15:04
Запустил, та же ошибка
Цитата(Ollone5 @ Jul 15 2011, 15:04)

Запустил, та же ошибка unknw.gif
Приведи скрипт полностью, чтобы можно было хоть посмотреть, что это может быть.
может быть дважды в скрипте
Код
object oDoor=GetNearestObjectByTag("ТЭГ_ДВЕРИ");
или где+то ранее не закрыта строка ";"
StasMokos
Jul 16 2011, 17:19
Все-таки мне очень хотелось бы знать, каким образом засунуть в модуль свои звуки для боя и диалогов (озвучка)?
StasMokos, открой модуль ПВ и посмотри, звуки боя для пустынь. Там все реализовано и прописано в хаке для звуков.
StasMokos
Jul 19 2011, 12:58
На счет боя, спасибо большое, я посмотрел и разобрался, но как быть с озвучкой?
Не помню, но по моему их можно выбирать при создании диалога. Там вообще почти все звуки можно выбрать.
Montalaar
Jul 19 2011, 23:31
Скажите пожалуйста, как сделать так, что бы твой спутник нападал на тебя после определённой фразы с посторонним npc.
Функция типа:
AdjustReputation(GetPCSpeaker(), GetObjectByTag("тег хенча"), -100);
DetermineCombatRound(GetPCSpeaker());
Почему-то не действует, нападает npc. Фразы хенча так же присутствуют в диалоге с npc.
Ilerien
Jul 19 2011, 23:58
Во-первых, нужно убрать хенча из пати с помощью RemoveHenchman(). Во-вторых, перебросить DetermineCombatRound() на хенча с помощью AssignCommand().
Montalaar
Jul 20 2011, 00:28
Наверное я что-то не то делаю, скрипт не составляется. Не могли бы вы продемонстрировать на примере как это всё делается... если Вас не затруднит....
Ilerien
Jul 20 2011, 02:10
Как-то так:
Neverwinter Script
#include "nw_i0_generic"
void main()
{
object oPC = GetPCSpeaker();
object oHenchman = GetObjectByTag("tag");
RemoveHenchman(oPC, oHenchman);
AdjustReputation(oPC, oHenchman, -100);
AssignCommand(oHenchman, DetermineCombatRound(oPC));
}
Скрипт не проверял, могут быть опечатки.
Montalaar
Jul 20 2011, 03:08
Благодарю Вас, всё прекрасно работает.
StasMokos
Jul 20 2011, 15:30
Спасибо, я уже разобрался.
Кстати, если что, я разобрался наконец-то с портретами, хотя делал все как и раньше, только последнюю букву в имени файлов заглавной писал.
Goldfinger
Aug 4 2011, 04:58
Я создал модуль, где с двух сторон создаются монстры, идут друг навстречу другу и начинают драться. Что-то вроде Dota Allstars. Стороны вполне сбалансированы, если какая-то сторона проигрывает, то ей присылают подкрепление. Короче он работает нормально. Если запустить, то битва будет происходить бесконечно, примерно по 10-13 монстров с каждой стороны.
Проблема в том, что если запустить его на dedicated server'е, то монстры продолжат спавниться, однако драться между собой будут только в присутствии игроков. Таким образом локация переполняется живностью и зайти посмотреть "как дела" не представляется возможным. Никаких обработчиков на onClientEnter и т.д. не стоит.
Можно ли как-то сделать чтобы монстры дрались на dedicated сервере, даже если игроков нет?
Можно, конечно.
Судя по тому, что говорит вирусман - то хербит имеет тенденцию отключатся в локах, в которых нет игроков, через какой-то промежуток времени (если я правильно понял) - можно сделать искусственый запуск через курсирующий на модуле скрипт (каждые 6 сек) - это единственное, что мне приходит в голову.
Goldfinger
Aug 4 2011, 13:57
Цитата(Laajin @ Aug 4 2011, 09:14)

Можно, конечно.
Судя по тому, что говорит вирусман - то хербит имеет тенденцию отключатся в локах, в которых нет игроков, через какой-то промежуток времени (если я правильно понял) - можно сделать искусственый запуск через курсирующий на модуле скрипт (каждые 6 сек) - это единственное, что мне приходит в голову.
Так хербит вон, работает походу, монстры то спавняться! Да кстати, скрипт на драку у меня в onPerception. Там просто, проверки на враждебность цели, проверка переменных свободен\нет, ну и ActionAttack. А в хертбите у меня задача идти вперед, если бить некого.
Монстры просто не дерутся!
[offtop: не вижу кнопки редактировать сообщение

]
Дык АI хербит и останавливается
Talarasha
Aug 5 2011, 01:52
Цитата
Судя по тому, что говорит вирусман - то хербит имеет тенденцию отключатся в локах, в которых нет игроков, через какой-то промежуток времени (если я правильно понял)
virusman дело говорит, да и в описаниях стандартных функций сказано, что ХБ отключается, когда игрок не в зоне.
Не занимался этим вопросом специально, но видел освещение подобной темки в лексиконе. Вот этот абзац:
Цитата
Remarks
When used for a creature, conditions set within the OnSpawn script are checked and executed if they are applicable; these include "fast buff" for enemies (used when a PC draws within a certain range to simulate preparation), day/night postings for the WalkWayPoints() function, and the standard ambient animations used by creatures when standing around. Though the PC doesn't have an OnHeartbeat event, if you create a script called "default", it will automatically trigger every PC heartbeat. It would be wiser to use the modules OnHeartbeat however. Setting the AI level to AI_LEVEL_HIGH on a creature will force the heartbeat to fire as if a PC was in the area. This is useful for monsters you want to travel across multiple area's with waypoints, but is costly on the CPU. Area of effects can have a Heartbeat script defined, and can apply damage (such as Acid Fog does) to everyone in the area, each combat round.
Т.е. по идее, отключение хертбита при отсутствии игрока убирается с помощью функциии SetAILevel() с параметром AI_LEVEL_HIGH, но это должно стоить производительности. Описание констант там дано.
Цитата
Таким образом локация переполняется живностью
Это странно. Если ты говоришь, что стороны балансируются в зависимости от того, какая проигрывает, а в отсутствие игрока боя не происходит, то почему тогда идет переполнение? В моем представлении, балансировка подразумевает проверку числа живых мобов. Нет боя - нет потерь - нет подкреплений. Разве нет?
Goldfinger
Aug 5 2011, 02:56
Спасибо за наводки. Как будет возможность проверю.
Цитата
Цитата
Цитата
Таким образом локация переполняется живностью
Это странно. Если ты говоришь, что стороны балансируются в зависимости от того, какая проигрывает, а в отсутствие игрока боя не происходит, то почему тогда идет переполнение? В моем представлении, балансировка подразумевает проверку числа живых мобов. Нет боя - нет потерь - нет подкреплений. Разве нет?
Просто нет ограничения на количество спавнящихся мобов, однако проигрывающая сторона всегда получает больше войск чем доминирующая. Если мобы дерутся, то все нормально подкрепления приходят, старые воины умирают чаши весов постоянно прыгают, но победу не может одержать ни одна сторона. А вместо проверки числа живых, я просто веду учет: заспавнился +1 в переменную, сдох -1 в переменную.
Мне просто интересно наблюдать за ними

сижу, пишу скрипты, пью чаек, болею за кого-нибудь.
P.S. так и не нашел где тут на этой борде кнопка "редактировать сообщение"
Talarasha
Aug 5 2011, 17:27
Цитата
P.S. так и не нашел где тут на этой борде кнопка "редактировать сообщение"
Если не ошибаюсь, возможность редактирования появляется при получении второго вроде бы уровня. От количества сообщений, в общем, зависит.
Первое что пришло в голову, что мона поставить проверку на локалку, и принудительно запускать. а если нет никого на арене, ни ДМов, ни игроков, то просто на мобов ПВК, при заходе игрока на арену КВП и далее батл, стек команд на пустых локах запущенный принудительно не айс. как только игрок выходит из зоны видимости через турн выключается АИ, и моб выходит в режим "по дефолту" (даже когда в камне, т.е. в позе появления)
Ollone5
Aug 16 2011, 15:32
Как поставить режим монстру, чтобы он разрушал все плэйсы в пределах своей видимости?
Цитата(Ollone5 @ Aug 16 2011, 15:32)

Как поставить режим монстру, чтобы он разрушал все плэйсы в пределах своей видимости?
Использовать GetNearestObject(OBJECT_TYPE_PLACEABLE) в аи-скриптах моба.
Ollone5
Aug 17 2011, 10:05
Цитата
Использовать GetNearestObject(OBJECT_TYPE_PLACEABLE) в аи-скриптах моба.
Можно подробнее.
Цитата(Ollone5 @ Aug 17 2011, 10:05)

Можно подробнее. wacko.gif
Neverwinter Script
//:://////////////////////////////////////////////////
//:: NW_C2_DEFAULT1
/*
Default OnHeartbeat script for NPCs.
This script causes NPCs to perform default animations
while not otherwise engaged.
This script duplicates the behavior of the default
script and just cleans up the code and removes
redundant conditional checks.
*/
//:://////////////////////////////////////////////////
//:: Copyright © 2002 Floodgate Entertainment
//:: Created By: Naomi Novik
//:: Created On: 12/22/2002
//:://////////////////////////////////////////////////
#include "nw_i0_generic"
void main()
{
// * if not runnning normal or better Ai then exit for performance reasons
if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
// Buff ourselves up right away if we should
if(GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
{
// This will return TRUE if an enemy was within 40.0 m
// and we buffed ourselves up instantly to respond --
// simulates a spellcaster with protections enabled
// already.
if(TalentAdvancedBuff(40.0))
{
// This is a one-shot deal
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY, FALSE);
// This return means we skip sending the user-defined
// heartbeat signal in this one case.
return;
}
}
if(GetHasEffect(EFFECT_TYPE_SLEEP))
{
// If we're asleep and this is the result of sleeping
// at night, apply the floating 'z's visual effect
// every so often
if(GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
{
effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
if(d10() > 6)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
}
}
}
// If we have the 'constant' waypoints flag set, walk to the next
// waypoint.
else if ( GetWalkCondition(NW_WALK_FLAG_CONSTANT) )
{
WalkWayPoints();
}
// Check to see if we should be playing default animations
// - make sure we don't have any current targets
else if ( !GetIsObjectValid(GetAttemptedAttackTarget())
&& !GetIsObjectValid(GetAttemptedSpellTarget())
// && !GetIsPostOrWalking())
&& !GetIsObjectValid(GetNearestSeenEnemy()))
{
if (GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) || GetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE) ||
GetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE))
{
// This handles special attacking/fleeing behavior
// for omnivores & herbivores.
DetermineSpecialBehavior();
}
else if (!IsInConversation(OBJECT_SELF))
{
if (GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS)
|| GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVI
AN)
|| GetIsEncounterCreature())
{
PlayMobileAmbientAnimations();
}
else if (GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIM
ATIONS))
{
PlayImmobileAmbientAnimations();
}
// addition to original onHeartbeat
else if (GetLocalInt(OBJECT_SELF, "AI_HAVE_TO_DESTROY_PLACEABLES")) {
object placeable = GetNearestObject(OBJECT_TYPE_PLACEABLE);
if (GetIsObjectValid(placeable)) {
ActionAttack(placeable);
}
} // addition ends
}
}
// Send the user-defined event signal if specified
if(GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
{
SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT));
}
}
Самый простой, а потому почти наверное далеко не лучший способ.
Ollone5
Aug 17 2011, 12:23
На что ставить?
Laajin
Aug 17 2011, 17:10
Цитата
Neverwinter Script
//:://////////////////////////////////////////////////
//:: NW_C2_DEFAULT1
/*
Default OnHeartbeat script for NPCs.
This script causes NPCs to perform default animations
while not otherwise engaged.
This script duplicates the behavior of the default
script and just cleans up the code and removes
redundant conditional checks.
*/
//:://////////////////////////////////////////////////
//:: Copyright © 2002 Floodgate Entertainment
//:: Created By: Naomi Novik
//:: Created On: 12/22/2002
//:://////////////////////////////////////////////////
nepejke
Aug 18 2011, 16:17
Приветствую всех на этом прекрасном форуме!
У меня небольшой вопрос, в каком 2да файле или может скрипте, редактируется система опыта?
Скажем я хочу увеличить себе длительность игры небольшим модом, как увеличить порог до 45-50 уровня?
wirTUS
Aug 20 2011, 06:22
Насколько я знаю (раньше вроде задавались подобные вопросы), увеличить порог нельзя. Можно растянуть получение опыта, вроде бы как через xptable.2da (не знаю, к чему приведет добавление в нее строк за 40, скорее всего к ошибке при попытке подняться на уровень/на добавленный уровень, ибо есть куча таблиц классов, которые наверняка связаны с уровнями, класс/кросс-класс скиллы и так далее. К чему приведет оное добавление во все таблицы, которые связаны с уровнями, не знаю тем более, но можно попытаться. Кстати, на пг какой-то товарищ выкладывал xptable, отредактированный на ускорение кача -
http://www.playground.ru/cheats/14583/ ). Кстати под 2da имеется отдельная тема, может найдешь там что-нибудь себе полезное.
http://www.city-of-masters.ru/forums/index.php?showtopic=78
Laajin
Aug 20 2011, 09:45
Цитата
Скажем я хочу увеличить себе длительность игры небольшим модом, как увеличить порог до 45-50 уровня?
Нафиг вам это? Если хотите +100500 лвл, лучше поиграйте в Пэрфэкт форд или Ла2 или Еверквест 2 или хз, чего там еще...
там все это + лучше чем можно сделать тут.
nepejke
Aug 22 2011, 02:39
большое спасибо, но именно онлайн игры мне надоели, хочу быть королём сингла
насчёт опыта, спасибо, помогло..
Так же у меня есть один вопрос, которым я очень давно интересовался.
Почему базовый урон в этой игре ограничен числом 20?
Со спеллами не уверен, но с оружием так. Можно ли увеличить эти цифры и какими последствиями это можем обернуться?
Со спеллами к примеру, мы работает в спеллс.2да и скрипты(в скриптах и изменяем характеристики магии), с оружием сложнее, в том же редакторе стоит ограничение на числа, и поставить сколько хочешь - нельзя.
Конкретно интересует как изменить характеристики оружия(ограничения) и как на работоспособность игры, повлияет правка цифр в скриптах о спеллах, неужели так всё просто, изменить там пару строчек и урон магий изменится?
заранее благодарен пользователям этого форума
дело в том, что с друзьями разрабатываем патч для совместной игры онлайн. Хотим немного подправить баланс, под себя так сказать
wirTUS
Aug 22 2011, 04:43
Цитата
Почему базовый урон в этой игре ограничен числом 20?
Не понял.
Вроде бы урон в скриптах ограничивается только ограничениями типа, наиболее вероятно, что это от -32768 до 32767.
nepejke
Aug 22 2011, 05:23
ну например оружие, свыше 3d6(=18) или просто Урон20 сделать в тулсете нельзя.
Это ограничение игры или можно в ручную прописать сколько хочешь? (через 2да файл baseitems или где итемы искать, если не в нём? ещё интересует место где можно вручную отредактировать файл от моего модуля, обходя ограничения тулсета)
И что дают нам эти цифры? -32768 до 32767.
в каком скрипте ты их встречал? судя по этому, пока мы их не изменим, урон выше не сделать
denis0k
Aug 22 2011, 07:42
Цитата
большое спасибо, но именно онлайн игры мне надоели, хочу быть королём сингла
Цитата
дело в том, что с друзьями разрабатываем патч для совместной игры онлайн
Взаимоисключающие параграфы.
К слову, увеличение левелкапа и урона - это один конец палки. Второй конец палки - "старые" мобы. К примеру, если речь о сингле нвн1, какой смысл делать 50 уровней и 50 урона от оружия, когда финального босса можно убить на 13м уровне с мечом 1д8+2? Я сам проходил сингл нвн1 в компании 3х друзей, там на любом уровне халява нереальная, даже когда опыт на четверых делится.
nepejke
Aug 22 2011, 14:57
ну смысл в том, чтобы уметь.
И эта игра больше сингл для меня.
Неважно с каким мечом ты проходишь кампанию, ты просто не думал, что в моде можно сделать босса которого 13ым лвлом не убьёшь
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.