![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#36
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
ShadowKeeper, ну для кутсцены ничего делать и не нужно, игроку и так доступен только внешний вид. (IMG:style_emoticons/kolobok_light/smile.gif) Посему, SetCreatureAppearanceType, будет в самый раз. (IMG:style_emoticons/kolobok_light/wink3.gif)
|
![]() ![]()
Сообщение
#37
|
|
Level 2 ![]() Класс: Псионик Характер: True Neutral Раса: Рептилия ![]() |
Вопрос следующий
Нужен таг локации в которой находится игрок и еще интересно почему не работает NSS string sCheckTag = GetTag(GetArea(oPC)); он возвращает пустоту |
![]()
Сообщение
#38
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Gloom @ Jan 5 2007, 19:07) [snapback]101568[/snapback] он возвращает пустоту хм.. попробуй для начала определить, получается ли там локация. Типа так: NSS void main() { object oPC = GetFirstPC(); SendMessageToPC(oPC,"Имя: "+GetName(oPC)); object oArea = GetArea(oPC); SendMessageToPC(oPC,"Локация: "+GetName(oArea)); } Короче суть в том, чтобы дебажить на всех этапах (определение игрока, определение локации), чтобы понять где именно косяк. Так как игра только вышла, ни у кого еще нет достаточных знаний об ошибках и подводных камней, так что ищем (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#39
|
|
Level 2 ![]() Класс: Псионик Характер: True Neutral Раса: Рептилия ![]() |
Не получается (IMG:style_emoticons/kolobok_light/sad.gif)
только у меня NSS object oPC = GetEnteringObject(); потомучто скрипт oncliententer |
![]()
Сообщение
#40
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Что не получается-то?
Возможно возвращается пустота, так как стоит скрипт на КлиентЭнтер. Попробуй проверить на тригере или на ОнЭнтер локи. Сообщение отредактировал -fenix- - Jan 5 2007, 19:34 |
![]()
Сообщение
#41
|
|
Level 2 ![]() Класс: Псионик Характер: True Neutral Раса: Рептилия ![]() |
Не получается = возвращает "Локация - " т.е пустоту
он_энтер локи тоже не работает С он_ентер тригера ситуация та же... Пустота Ах да, во всех трех случаях имя игрока показывается правильно |
![]()
Сообщение
#42
|
|
Level 2 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
QUOTE(Gloom @ Jan 5 2007, 20:53) [snapback]101575[/snapback] Не получается = возвращает "Локация - " т.е пустоту он_энтер локи тоже не работает С он_ентер тригера ситуация та же... Пустота Предположу, что название локи на русском. На OnClientEnter не советую вешать. Слабо срабатывает. Лучше на эвенты локации или уж на PC Loaded. Попробовал у себя только что. Версия 1.03. Работает. Кинул вещь на землю в локе и дописал этот код в On Acquire Item (чиста ради срабатывания (IMG:style_emoticons/kolobok_light/smile.gif) ) NSS object oPC = GetFirstPC ();
object oArea = GetArea (oPC); string sName = GetName (oArea); FloatingTextStringOnCreature (sName, oPC); Сообщение отредактировал Narruin - Jan 5 2007, 20:57 |
![]()
Сообщение
#43
|
|
Level 2 ![]() Класс: Псионик Характер: True Neutral Раса: Рептилия ![]() |
Имя локи на английском, версия 1.3, повесил ваш скрипт он_ентер тригера...
NSS object oArea = GetArea (); ругается дебагер NSS FloatingTextStringOnCreature (sName, oPC); текст не показывает Моя ошибка, тепрь показывает имя... у меня DisplayName было пусто |
![]()
Сообщение
#44
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ну потому что там не скрипт в полном понимании, а набросок (с синтаксическими и прочими ошибками типа лишних пробелов)
Если бы глюк был только в onClientEnter, можно было бы списать на то что не успевает грузиться.. но если такая же петрушка на триггере, то похоже возможно не определяет.. возможное те банально GetArea не работает. Эх,, был бы тулс под рукой, поэкспериментировал бы. зы: попробуй взять локу по тэгу и вывести ее название. зыы: попробуй взять локу не по oPC, а по триггеру, те oArea = GetArea(OBJECT_SELF). -------------- э.. а теперь помедленнее, что показывает и где? (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#45
|
|
Level 2 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
QUOTE(Lex @ Jan 5 2007, 22:02) [snapback]101587[/snapback] те банально GetArea не работает. Эх,, был бы тулс под рукой, поэкспериментировал бы. GetArea работает. |
![]()
Сообщение
#46
|
|
Level 2 ![]() Класс: Псионик Характер: True Neutral Раса: Рептилия ![]() |
Показывает название локации
Тот скрипт который выше NSS object oArea = GetArea (); кстати работает хоть и ругается дебагер остальные варианты тоже работают на он_ентер локации проверял NSS string sName = GetTag(GetArea(OBJECT_SELF)); FloatingTextStringOnCreature (sName, oPC); на on_enter локации работает на oncliententer -нет |
![]()
Сообщение
#47
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Ну вот, знач работает. (IMG:style_emoticons/kolobok_light/smile.gif)
А если на oncliententer не пашет, значит, как гооврил Лекс, не успевает грузиться. Тут вообще многа чего не будет срабатывать. Операции с игроком должны проходить, по идее с вещами на нем, в общем смотреть надо. Сообщение отредактировал -fenix- - Jan 5 2007, 22:12 |
![]()
Сообщение
#48
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
OnClientEnter запускается еще до того, как персонаж попал в какую-либо локацию.
|
![]()
Сообщение
#49
|
|
Level 2 ![]() Класс: Псионик Характер: True Neutral Раса: Рептилия ![]() |
Всем спасибо за помощь (IMG:style_emoticons/kolobok_light/angel.gif)
Сообщение отредактировал Gloom - Jan 7 2007, 09:54 |
![]()
Сообщение
#50
|
|
Level 2 ![]() Класс: Убийца Характер: Lawful Evil Раса: Рептилия ![]() |
Пытаюсь сделать так: При получении предмета такого-то предмет удаляется и появляется рядом волк и становится хенчманом. При попытке удалить предмет вылетает из игры (НВН2). Сдается мне это изза того что не успевает что-то сделать, да? Профи, подскажите как лучше поправить. Вот мой код в OnAcquireItem:
NSS int nObjectType = OBJECT_TYPE_CREATURE;
object oTaker = GetModuleItemAcquiredBy(); object oItem = GetModuleItemAcquired(); location lLocationOfTaker = GetLocation(GetModuleItemAcquiredBy()); if (GetResRef(oItem) == "it_dw10") { ActionTakeItem(oItem, oTaker); //тут вылетает с ошибкой CreateObject(nObjectType, "c_dogwolfdire",lLocationOfTaker, FALSE, "c_dogwolfdire1"); object oHench = GetObjectByTag("c_dogwolfdire1"); AddHenchman(oTaker, oHench); |
![]()
Сообщение
#51
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
ActionTakeItem - это действие, его можно использовать только от имени существ. Модуль (или даже OBJECT_INVALID), от имени которого вызывается OnItemAcquired, не может взять предмет у игрока.
Вместо этого поставь DestroyObject. В строчке NSS AddHenchman(oTaker, oHench); используется oHench, но она ранее не объявлена и не установлена.
|
![]()
Сообщение
#52
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
webkent, слишком много лишнего в твоем коде, для НВН я бы записал так: NSS void main() { object oTarget = GetModuleItemAcquiredBy(); object oItem = GetModuleItemAcquired(); location Loc = GetLocation(oTarget); if (GetTag(oItem) == "itm_***") // Лучше определить через тэг { // Сразу определим хенча object oHench = CreateObject(OBJECT_TYPE_CREATURE, "c_dogwolfdire", Loc, FALSE, "c_dogwolfdire1"); AddHenchman(oTarget, oHench); DestroyObject(oItem, 3.0); // Удалим с задержкой, чтобы исключить баги // На пожарный случай DelayCommand(3.0, DestroyObject(GetItemPossessedBy(oTarget, "itm_***"))); } } |
![]() ![]()
Сообщение
#53
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
QUOTE ActionTakeItem(oItem, oTaker); //тут вылетает с ошибкой как говорится не в ту степь попали (IMG:style_emoticons/kolobok_light/biggrin.gif) кстати- лучше бы сразу не удалять токо что найденый итем, а сделать процесс подлинее (IMG:style_emoticons/kolobok_light/biggrin.gif) - этот итем делал бы волка на каком нить алтаре, например, или повесить скрипт одноразового юза на сам предмет - тогда появление волка -хенча будет или у алтаря илии после юза спец свойства итема (IMG:style_emoticons/kolobok_light/biggrin.gif) CODE CreateObject(nObjectType, "c_dogwolfdire",lLocationOfTaker, FALSE, "c_dogwolfdire1"); object oHench = GetObjectByTag("c_dogwolfdire1"); ..и еще ...а почему 2 строчки (IMG:style_emoticons/kolobok_light/biggrin.gif) ведь можно и одной (IMG:style_emoticons/kolobok_light/biggrin.gif) CODE object oHench = CreateObject(nObjectType, "c_dogwolfdire",lLocationOfTaker, FALSE, "c_dogwolfdire1"); а то создание обьекта - процесс сравнительно "громоздкий"( как правило лучше на этом процесе действие скрипта и заканчивать (IMG:style_emoticons/kolobok_light/biggrin.gif) ), а ты уже ищешь обьект (по тэгу), который еще может и не успел досоздатся (IMG:style_emoticons/kolobok_light/biggrin.gif) п.с. пока ходил по делам ( пост не завершил писать) gennady уже об этом написал (IMG:style_emoticons/kolobok_light/biggrin.gif) Сообщение отредактировал mamuc - Jan 8 2007, 11:59 |
![]()
Сообщение
#54
|
|
Level 2 ![]() Класс: Убийца Характер: Lawful Evil Раса: Рептилия ![]() |
QUOTE как говорится не в ту степь попали кстати- лучше бы сразу не удалять токо что найденый итем, а сделать процесс подлинее - этот итем делал бы волка на каком нить алтаре, например, или повесить скрипт одноразового юза на сам предмет - тогда появление волка -хенча будет или у алтаря илии после юза спец свойства итема Да там просто магазин петомцев =) Ок спасибо всем щас буду править. |
![]()
Сообщение
#55
|
|
Level 2 ![]() Класс: Убийца Характер: Lawful Evil Раса: Рептилия ![]() |
И вот что интересно - Я ставлю волка в тулсете, меняю ему некоторые параметры, меняю ТАГ и меняю Тэмплейт. Потом через скрипт хочу создать волка с таким темплейтом(еще одного) а он не создается. Если пробую создать НПЦ со стандартным темплейтом то всё отлично создается. Вот вопрос - что, разве обязательно еще 1 шаблон создавать чтобы потом через скрипт этого НПЦ создать или как-то можно без этого?
|
![]()
Сообщение
#56
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Все объекты создаются из палитры по их РесРефу. Тобишь, добавляешь в палитру своего волка, делаешь ему уникальный РесРеф и потом по нему создаешь этого волка где тебе надо. В первом НВН была еще возможность создания копии, хз как тут. Но лучше делай через палитру. Еще, если этот непись тебе нужен тока раз, там по квесту он где появляется или еще чего, то можно его для начала кинуть в закрытую локу, а потом просто переместить куда надо.
|
![]()
Сообщение
#57
|
|
Level 2 ![]() Класс: Убийца Характер: Lawful Evil Раса: Рептилия ![]() |
Тупой вопрос: как скриптами убить объект? =)
Сообщение отредактировал webkent - Jan 12 2007, 23:40 |
![]()
Сообщение
#58
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Убить или удалить?
|
![]()
Сообщение
#59
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить ![]() |
2 webkent:
Самое простое: NSS // Destroy oObject (irrevocably). // This will not work on modules and areas. void DestroyObject(object oDestroy, float fDelay=0.0f) Так же, можно ипользовать эффекты. Например дамага/смерти: NSS effect EffectDamage(int nDamageAmount, int nDamageType=DAMAGE_TYPE_MAGICAL, int nDamagePower=DAMAGE_POWER_NORMAL) NSS effect EffectDeath(int nSpectacularDeath=FALSE, int nDisplayFeedback=TRUE) Применяюцца, они с помощью функции: NSS ApplyEffectToObject. Ну либа ApplyEffectAtLocation; Сообщение отредактировал Waromon - Jan 13 2007, 13:38 |
![]()
Сообщение
#60
|
|
Level 2 ![]() Класс: Паладин Характер: Lawful Good Раса: Человек ![]() |
Подскажите кто знает как "ловить" (как эвент) момент, когда по игроку бьют?
Нужно для реализации durability на вещах. Исользование только On Hit Cast Spell : Unique на мэйн арморе не подходит. Вдруг игрок без армора будет бегать (IMG:style_emoticons/kolobok_light/smile.gif) Тогда шлем, перчи etc. не будут ломаться. Сообщение отредактировал Narruin - Jan 13 2007, 15:50 |
![]() ![]() |
Текстовая версия | Сейчас: 16th July 2025 - 17:55 |