![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1726
|
|
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
KoYuKi, не отступать и не сдавацца!
Попробуй сначала изучить абстрактную объектно-ориентированную технологию, без привязки к определенному языку. События, свойства, классы, инкапсуляция, перекрытие и т.п. - усвой все это. Я, пока не прошел курс основ Объектно-Ориентированного Прогарммирования (оООП), тоже нифига не понимал и бросил скриптинг аж на 8 месяцев. Дело в том, что в случае NWNа объекты очень сильно замкнуты в себе, и чтобы манипулировать ими, ты должен на интуитивном уровне понимать, кто кому и кем приходится.... Непонятно сказал, кажись... Поясняю: если объект замкнут в себе, достучаться до него и использовать можно только через события... Чтобы из него достучаться до другого объекта, нужно определить, кем приходится тот объект этому.... Damager-ом, Killer-ом, EnteringObject-ом.... Я, лично, C++ в глаза никогда не видел, но это мне нимало не мешает. |
![]()
Сообщение
#1727
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Ну ООП для скриптинга не необходимость. NWScript (или как он там) процедурный язык, хотя "абстрактнуя объектно-ориентированную технология", конечно, тоже не помешает, даже поможет.
Куда эти коды писать, всмысле как, по каким законам, относительно чего: 1. Понять что надо (если сумел написать, что надо - значит уже понял что надо делать на шаг ближе к скрипту). 2. Алгоритм -- перед тем как доверить гудящему монстру что-то считать подумай, что бы ты сам сделал чтобы решить эту задачу. Например: "Есть два города, допустим город А и город В, в окрестностях каждого города 6 лок, между городами можно передвигаться. Так вот, как сделать так чтобы если вы умерли в одной из шести лок города А, то вы появлялись в храме города А, а если в одной из 6 лок города В то в храме города В?" Выше было предложено три варианта: а) находим место, где умер персонаж, если тэг этого места находится в списке 1, переносим в точку А, если в списке 2, переносим в точку B, если ни в каком списке нет, переносим в точку С. б) находим место, где умер персонаж, есил это тег Т1, Т2, T3, Т4, Т5 или Т6 -- переносим в точку А, если это тэг Т7, ... , Т12 -- в точку В. Ну и про запасной вариант не забудем -- если ни там - ни там, сообщим игроку, что его сьели гулли месяц спустя после кончины, ибо в такую жопь ему взбрело в голову забрести, и прежде времени избавляем его от мучений. в) находим ближайшую точку, где можно возродится и переносим умершего туда. Алгоритм выбираем тот, который кажется наиболее естественным (но это уже на любителя). 3. Вот только теперь берем книжицу и ищем как те же самые мысли написать с помощью предоставленых команд и функций. Я первые три дня знакомства со скриптами НВН только и делал, что читал описания функций, ищя названия тех, что выполняли нужные мне действия. Пример: "Находим место, где умер персонаж." используем функцию GetArea(), возвращающую область в которой находится объект (в частности персонаж); под тем что место найдено также подразумевается, что мы его запомним (иначе как бы мы далее искали его тэг) для етого создаем переменную (читаем книжицу много-много раз, иначе никак). 4. Используем шаг 3. до посинения -- читаем описание языка, просматриваем действие функций, пытаемся с помощью них воплотить аглоритм. |
![]()
Сообщение
#1728
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
"Скрипты, Все вопросы и ответы по скриптам"
Давайте не будем вдаваться в азы програмирования и то, как надо алгоритмизировать задачу и потом ее програмировать. |
![]()
Сообщение
#1729
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
Существует задача запрещения использования лечебных спеллов (всех из healing subschool, за исключением Rise Dead и Resurrect) на определенной расе.
Допустим, кастанул cure light wounds – эффекта ноль + StrRef-сообщение. Может кто теорией помочь? |
![]()
Сообщение
#1730
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
----------- вариант номер 1 "геморойный" Правка скриптов соотв. заклов. Не так сложно (точнее очень просто), но мутно. Хотя там вроде всего то с 10-ок спеллов поправить. Добавление проверки и отправка сообщения.
Пишу тут на форуме, не в тулсете (с) ----------- вариант номер 2 "ущербный" Повесить на цель шкурку (если есть уже, то добавить свойства) с имунами к определенным заклам. Ущербность в том, что сообщения не будет. ----------- |
||
![]()
Сообщение
#1731
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
Ага, спасибо, Лекс. Думаю остановиться на правке заклов.
------------------------------ Какие имеются варианты добавления персу Damage Reduction (а-ля поглощение варвара)?; Варианты добавления, не зависящего от других факторов, AC (Natural?!) И еще. Можно ли оперировать Spellcasting Failure? Добавлять свойство вещи, изменять значение (да\нет) Сообщение отредактировал Vhall - Nov 12 2005, 18:38 |
![]()
Сообщение
#1732
|
|||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
через добавку на шкурку свойств.
можно. Можно сделать, скажем, крутой кинжал для мага, который мешает кастовать. Применяй как хочешь Добавлено в [mergetime]1131810152[/mergetime] это не совсем скриптовые вопросы.. в Одиночные скорее |
||||
![]()
Сообщение
#1733
|
|||
Level 9 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] ![]() |
Чтобы не править скрипты спеллов - поправь один скрипт, spellhook кажется называется. С HoTu все спеллы вызывают его перед запуском любого спелла. Там ты можешь узнать и расу кастера, и ID спелла, отменить его и выдать сообщение. |
||
![]()
Сообщение
#1734
|
|||||
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
Дык, забыл я, конечно, уточнить что предпочтительны скриптовые решения. =)
Так скриптами никак? Я не очень хочу редактировать itemprops* и перескприпчивать шаги. Вот и ищу рациональное решение.
Угумс, довелось видать такую вкладку на айтеме - Properties. Можно ли назначить ScF _без_ свойсва вещи? Добавлено в [mergetime]1131819169[/mergetime] _kaa_, благодарю |
||||
![]()
Сообщение
#1735
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
эффектами на игрока. Каа, ага, я про спеллхук забыл совершенно :) |
||
![]()
Сообщение
#1736
|
|
Level 1 Класс: Обыватель Характер: Chaotic Good Раса: Эльф ![]() |
Здравствуйте.
У меня такой вопрос: Как сделать, чтобы при взломе двери игроком, находящиеся рядом охранники НПС становились для него враждебными, и нападали? |
![]()
Сообщение
#1737
|
|||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
скриптами на слоты onDamage onUnLock двери. логика там простая: берем дамагера/анлокера и натравливаем на него охрану, что рядом. функции:
Добавлено в [mergetime]1131887341[/mergetime] с такими вопросами малек не сюда. Тривиальные скрипты и прочие начальные вопросы в тему "Вопросы новичков". + посмотри обязательно тему "Вопросы и Ответы". Там же есть ссылка на туториал. Читать обязательно. |
||||
![]()
Сообщение
#1738
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Хм, такой вопросик.
Как отследить, кто первым начал бой, герой или НПС? |
![]()
Сообщение
#1739
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Ну НПС редко сам нападает :) Говори нормально. Где отследить, на шарде или сингл. Ситуацию... Как первый раз за мужем. |
||
![]()
Сообщение
#1740
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
хм.. по идее в слоте onAttack NPC смотрим. Если во время атаки игрока НПС нейтрален и не в бою, то игрок по идее напал первый.
|
![]()
Сообщение
#1741
|
|||||||||||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Неа Лекс, не прет. Ведь слот запускается не при клике на атаку. Ну, когда нажимаешь мирного атаковать. А в момент удара и вэтот же момент НПС становется враждебным и боевым. При чем это происходит раньше, чем проверка в слоте. Вот это не пашет
А это пашет
Так, точно пора отдыхать :crazy:
Угу. Видимо прейдется учитывать экстренные моменты, когда НПС сам начинает бой, при смерти НПС. Например, атака не там заснувшего ПС.
За сколько :oops: Сообщение отредактировал -fenix- - Nov 14 2005, 01:02 |
||||||||||
![]()
Сообщение
#1742
|
|||||||
Level 9 ![]() Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] ![]() |
покупайте наших слонов, наши слоны самые слоничтые слоны в мире 8(
не хостайловый
хостайловый... |
||||||
![]()
Сообщение
#1743
|
|||||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Эм, не понял, что есть хостайловый :sorry: |
||||
![]()
Сообщение
#1744
|
|
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
Фракция Hostile (Хостайл) - "враждебный".
|
![]()
Сообщение
#1745
|
|
Level 9 ![]() Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] ![]() |
в смысле если ПС ударил НПС, то НПС становится враждебным :DB: при этом ставить на ПЦ флаг напавшего
а если моб первым начал, то это можно узнать, изменив функцию DetermineCombatRound (или что-то типа того..) (проверку на нападение со стороны ПЦ - если флага нет, то моб начал 8( ) |
![]()
Сообщение
#1746
|
|||
Level 8 ![]() ![]() ![]() Класс: Паладин Характер: Lawful Good Раса: Полуэльф ПОДМАСТЕРЬЕ ![]() |
Отписываю о результатах. Все ништяк. Функция RandomLocation, как я и предполагал, работает даже без проверки верного местоположения. Просто движок не позволяет объекту создаться за пределами карты или на недоступном месте. Теперь стража появляется шагов за 10 от PC и подбегает к нему. Предупреждает три раза, на четвертый раз - убивает нафиг. Если игрок отбежал чуть дальше и снова сел - его догоняют два предыдущих стражника. Если отбежал далеко и сел - те двое уничтожаются, и появляются два новых, снова в 10 шагах. Lex, стоит лит этот скрипт в базу выложить?.. |
||
![]()
Сообщение
#1747
|
|||||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Выложи тут мы посмотрим. -fenix- вот я лично так и не понял зачем тебе узнавать кто напал первый. НПС сам не нападет, если РС не натворит дел. Соответсвенно, узнать кто первый дал по башке можно, но опять же, если НПС стоял и РС его тюкнул и не попал, то НПС не будет враждебным. (Помоему...) И эту тему уже разбирали где-то. Элементарное узнать кто начал невозможно. Можно конечно повесить на оружие евант, тюкнул по цели и записываем на нее имя, кто тюкнул и когда. Соответсвенно сверяем двух провенившихся и вычисляем кто виноват. Но это имхо не верно по соображениям морали. :this: Мы узнаем только КТО ПЕРВЫЙ УДАРИЛ. Но начать может тот кого спровоцировали. :agr: Добавлено в [mergetime]1131945069[/mergetime]
Хотя... :) Как в жизни. Судят кто попал под раздачу. :D |
||||
![]()
Сообщение
#1748
|
|||||||||
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Задумка такая, которая завязана на том, кто первым начал бой. Если ПС и НПС не был врагом и у ПС была одна вещь, то кой чего происходит :)
Неа. Если ПС совершил удар, не важно попал или нет, то раунд уже начался. НПС становется враждебным и долбит ПС.
Ведат проглядел я тот разговор :( Но уже и сам понял, что невозможно. Прейдется просто другие игровые моменты учитывать.
Объясни потом игроку :D |
||||||||
![]()
Сообщение
#1749
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Напишите плиз скриптик где НПС нагибается к бассеину и полностью вылечивается(типо как в Принце Персии).
|
![]()
Сообщение
#1750
|
|||
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Поставь скрипт на строчку в диалоге:
ЗЫ: в Принца Персии, я не играл. ЗЗЫ: сорри, просто скрипт я оч. быстро писал, торопился. А вы уж, "запинали" :crazy: Сообщение отредактировал Dik Morris - Nov 14 2005, 15:42 |
||
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 13:43 |