Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 68 69 70 71 72 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Kavin
сообщение Nov 11 2005, 19:02
Сообщение #1726


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



KoYuKi, не отступать и не сдавацца!
Попробуй сначала изучить абстрактную объектно-ориентированную технологию, без привязки к определенному языку.
События, свойства, классы, инкапсуляция, перекрытие и т.п. - усвой все это.
Я, пока не прошел курс основ Объектно-Ориентированного Прогарммирования (оООП), тоже нифига не понимал и бросил скриптинг аж на 8 месяцев.

Дело в том, что в случае NWNа объекты очень сильно замкнуты в себе, и чтобы манипулировать ими, ты должен на интуитивном уровне понимать, кто кому и кем приходится....
Непонятно сказал, кажись...

Поясняю: если объект замкнут в себе, достучаться до него и использовать можно только через события...
Чтобы из него достучаться до другого объекта, нужно определить, кем приходится тот объект этому.... Damager-ом, Killer-ом, EnteringObject-ом....

Я, лично, C++ в глаза никогда не видел, но это мне нимало не мешает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Nov 12 2005, 11:58
Сообщение #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. до посинения -- читаем описание языка, просматриваем действие функций, пытаемся с помощью них воплотить аглоритм.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 12 2005, 13:33
Сообщение #1728


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



"Скрипты, Все вопросы и ответы по скриптам"
Давайте не будем вдаваться в азы програмирования и то, как надо алгоритмизировать задачу и потом ее програмировать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Vhall
сообщение Nov 12 2005, 15:43
Сообщение #1729


Level 19
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Дварф
NWN: Контент



Существует задача запрещения использования лечебных спеллов (всех из healing subschool, за исключением Rise Dead и Resurrect) на определенной расе.
Допустим, кастанул cure light wounds – эффекта ноль + StrRef-сообщение.
Может кто теорией помочь?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 12 2005, 16:02
Сообщение #1730


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



-----------
вариант номер 1 "геморойный"
Правка скриптов соотв. заклов. Не так сложно (точнее очень просто), но мутно. Хотя там вроде всего то с 10-ок спеллов поправить.
Добавление проверки и отправка сообщения.
Neverwinter Script Source
if (GetRacialType(oTarget)==XXXX) { SendMessageToPC(oCreator,"TEXT"); return;}

Пишу тут на форуме, не в тулсете (с)
-----------
вариант номер 2 "ущербный"
Повесить на цель шкурку (если есть уже, то добавить свойства) с имунами к определенным заклам.
Ущербность в том, что сообщения не будет.
-----------
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Vhall
сообщение Nov 12 2005, 18:37
Сообщение #1731


Level 19
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Дварф
NWN: Контент



Ага, спасибо, Лекс. Думаю остановиться на правке заклов.
------------------------------
Какие имеются варианты добавления персу Damage Reduction (а-ля поглощение варвара)?;
Варианты добавления, не зависящего от других факторов, AC (Natural?!)

И еще. Можно ли оперировать Spellcasting Failure? Добавлять свойство вещи, изменять значение (да\нет)

Сообщение отредактировал Vhall - Nov 12 2005, 18:38
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 12 2005, 18:42
Сообщение #1732


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Vhall @ Nov 12 2005, 18:37)
Какие имеются варианты добавления персу Damage Reduction

через добавку на шкурку свойств.

QUOTE (Vhall @ Nov 12 2005, 18:37)
И еще. Можно ли оперировать Spellcasting Failure?

можно.
Можно сделать, скажем, крутой кинжал для мага, который мешает кастовать. Применяй как хочешь

Добавлено в [mergetime]1131810152[/mergetime]
это не совсем скриптовые вопросы.. в Одиночные скорее
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Nov 12 2005, 21:10
Сообщение #1733


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (Vhall @ Nov 12 2005, 16:43)
Существует задача запрещения использования лечебных спеллов (всех из healing subschool, за исключением Rise Dead и Resurrect) на определенной расе.
Допустим, кастанул cure light wounds – эффекта ноль + StrRef-сообщение.
Может кто теорией помочь?

Чтобы не править скрипты спеллов - поправь один скрипт, spellhook кажется называется. С HoTu все спеллы вызывают его перед запуском любого спелла. Там ты можешь узнать и расу кастера, и ID спелла, отменить его и выдать сообщение.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Vhall
сообщение Nov 12 2005, 21:11
Сообщение #1734


Level 19
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Дварф
NWN: Контент



Дык, забыл я, конечно, уточнить что предпочтительны скриптовые решения. =)
QUOTE (Lex @ Nov 12 2005, 18:42)
через добавку на шкурку свойств.

Так скриптами никак? Я не очень хочу редактировать itemprops* и перескприпчивать шаги. Вот и ищу рациональное решение.
QUOTE (Lex @ Nov 12 2005, 18:42)
Можно сделать, скажем, крутой кинжал для мага, который мешает кастовать. Применяй как хочешь

Угумс, довелось видать такую вкладку на айтеме - Properties. Можно ли назначить ScF _без_ свойсва вещи?
Добавлено в [mergetime]1131819169[/mergetime]
_kaa_, благодарю
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 13 2005, 02:29
Сообщение #1735


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Vhall @ Nov 12 2005, 21:11)
Угумс, довелось видать такую вкладку на айтеме - Properties. Можно ли назначить ScF _без_ свойсва вещи?

эффектами на игрока.


Каа, ага, я про спеллхук забыл совершенно :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ashram
сообщение Nov 13 2005, 15:45
Сообщение #1736


Level 1


Класс: Обыватель
Характер: Chaotic Good
Раса: Эльф



Здравствуйте.
У меня такой вопрос:
Как сделать, чтобы при взломе двери игроком, находящиеся рядом охранники НПС становились для него враждебными, и нападали?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 13 2005, 16:05
Сообщение #1737


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Ashram @ Nov 13 2005, 15:45)
Как сделать, чтобы при взломе двери игроком, находящиеся рядом охранники НПС становились для него враждебными, и нападали?

скриптами на слоты onDamage onUnLock двери.
логика там простая: берем дамагера/анлокера и натравливаем на него охрану, что рядом.
функции:
Neverwinter Script Source
object GetLastDamager(object oObject=OBJECT_SELF)

object GetLastUnlocked()

object GetObjectByTag(string sTag, int nNth=0)

void DetermineCombatRound(object oIntruder = OBJECT_INVALID, int nAI_Difficulty = 10)


Добавлено в [mergetime]1131887341[/mergetime]
с такими вопросами малек не сюда. Тривиальные скрипты и прочие начальные вопросы в тему "Вопросы новичков".
+ посмотри обязательно тему "Вопросы и Ответы". Там же есть ссылка на туториал. Читать обязательно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 13 2005, 23:18
Сообщение #1738


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



Хм, такой вопросик.
Как отследить, кто первым начал бой, герой или НПС?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Nov 13 2005, 23:40
Сообщение #1739


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (-fenix- @ Nov 14 2005, 02:18)
Как отследить, кто первым начал бой, герой или НПС?

Ну НПС редко сам нападает :) Говори нормально. Где отследить, на шарде или сингл. Ситуацию... Как первый раз за мужем.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 14 2005, 00:02
Сообщение #1740


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



хм.. по идее в слоте onAttack NPC смотрим. Если во время атаки игрока НПС нейтрален и не в бою, то игрок по идее напал первый.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 14 2005, 01:01
Сообщение #1741


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE (Lex @ Nov 14 2005, 01:02)
хм.. по идее в слоте onAttack NPC смотрим.

Неа Лекс, не прет.
Ведь слот запускается не при клике на атаку. Ну, когда нажимаешь мирного атаковать. А в момент удара и вэтот же момент НПС становется враждебным и боевым. При чем это происходит раньше, чем проверка в слоте.
Вот это не пашет
Neverwinter Script Source
void main()
{
object oPC = GetLastAttacker();
int iPCvsNPC = GetReputation(OBJECT_SELF, oPC);

if(iPCvsNPC > 10)
{
SpeakString("FEfef");
}
}

А это пашет
Neverwinter Script Source
void main()
{
object oPC = GetLastAttacker();
int iPCvsNPC = GetReputation(OBJECT_SELF, oPC);

if(iPCvsNPC < 11)
{
SpeakString("FEfef");
}
}

Так, точно пора отдыхать :crazy:

QUOTE (Aiwan @ Nov 14 2005, 00:40)
Ну НПС редко сам нападает

Угу. Видимо прейдется учитывать экстренные моменты, когда НПС сам начинает бой, при смерти НПС. Например, атака не там заснувшего ПС.

QUOTE (Lex)
Cдается место. Дорого.

За сколько :oops:

Сообщение отредактировал -fenix- - Nov 14 2005, 01:02
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Nov 14 2005, 02:31
Сообщение #1742


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



QUOTE
-----------------------------------
|                                |
|  Тут могла быть ваша реклама    |
|                                |
-----------------------------------
покупайте наших слонов, наши слоны самые слоничтые слоны в мире 8(

Neverwinter Script Source
if(iPCvsNPC > 10)

не хостайловый
Neverwinter Script Source
if(iPCvsNPC < 11)

хостайловый...

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 14 2005, 04:26
Сообщение #1743


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE (2_advanced @ Nov 14 2005, 03:31)
не хостайловый

QUOTE (2_advanced @ Nov 14 2005, 03:31)
хостайловый...

Эм, не понял, что есть хостайловый :sorry:

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 04:47
Сообщение #1744


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Фракция Hostile (Хостайл) - "враждебный".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Nov 14 2005, 05:43
Сообщение #1745


Level 9
Иконки Групп

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



в смысле если ПС ударил НПС, то НПС становится враждебным :DB: при этом ставить на ПЦ флаг напавшего
а если моб первым начал, то это можно узнать, изменив функцию DetermineCombatRound (или что-то типа того..)
(проверку на нападение со стороны ПЦ - если флага нет, то моб начал 8( )
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 07:18
Сообщение #1746


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



QUOTE (Kavin @ Nov 6 2005, 11:09)
Кроме того, я подумал сегодня и забраковал этот вариант по той причние, что если я сяду отдыхать прям у невидимого Вэйпойнта, то стража "появится из сумрака" прямо около меня. Некузяво. Ночной дозор, блин. 
Так что остается только случайное расположение Вэйпойнта. В принципе, сейчас найду функцию RandomLocation и разберусь.
О результатах отпишу. 


Отписываю о результатах.
Все ништяк.
Функция RandomLocation, как я и предполагал, работает даже без проверки верного местоположения.
Просто движок не позволяет объекту создаться за пределами карты или на недоступном месте.

Теперь стража появляется шагов за 10 от PC и подбегает к нему.
Предупреждает три раза, на четвертый раз - убивает нафиг.

Если игрок отбежал чуть дальше и снова сел - его догоняют два предыдущих стражника.
Если отбежал далеко и сел - те двое уничтожаются, и появляются два новых, снова в 10 шагах.

Lex, стоит лит этот скрипт в базу выложить?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Nov 14 2005, 08:08
Сообщение #1747


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (Kavin @ Nov 14 2005, 10:18)
Lex, стоит лит этот скрипт в базу выложить?..

Выложи тут мы посмотрим.

-fenix- вот я лично так и не понял зачем тебе узнавать кто напал первый. НПС сам не нападет, если РС не натворит дел. Соответсвенно, узнать кто первый дал по башке можно, но опять же, если НПС стоял и РС его тюкнул и не попал, то НПС не будет враждебным. (Помоему...) И эту тему уже разбирали где-то. Элементарное узнать кто начал невозможно. Можно конечно повесить на оружие евант, тюкнул по цели и записываем на нее имя, кто тюкнул и когда. Соответсвенно сверяем двух провенившихся и вычисляем кто виноват. Но это имхо не верно по соображениям морали. :this: Мы узнаем только КТО ПЕРВЫЙ УДАРИЛ. Но начать может тот кого спровоцировали. :agr:
Добавлено в [mergetime]1131945069[/mergetime]
QUOTE (Aiwan @ Nov 14 2005, 11:08)
Мы узнаем только КТО ПЕРВЫЙ УДАРИЛ. Но начать может тот кого спровоцировали.

Хотя... :) Как в жизни. Судят кто попал под раздачу. :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 14 2005, 11:21
Сообщение #1748


Level 19
Иконки Групп

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE (Aiwan @ Nov 14 2005, 09:08)
-fenix- вот я лично так и не понял зачем тебе узнавать кто напал первый.

Задумка такая, которая завязана на том, кто первым начал бой. Если ПС и НПС не был врагом и у ПС была одна вещь, то кой чего происходит :)

QUOTE (Aiwan @ Nov 14 2005, 09:08)
если НПС стоял и РС его тюкнул и не попал, то НПС не будет враждебным. (Помоему...)

Неа. Если ПС совершил удар, не важно попал или нет, то раунд уже начался. НПС становется враждебным и долбит ПС.

QUOTE (Aiwan @ Nov 14 2005, 09:08)
Элементарное узнать кто начал невозможно.

Ведат проглядел я тот разговор :(
Но уже и сам понял, что невозможно.
Прейдется просто другие игровые моменты учитывать.
QUOTE (Aiwan @ Nov 14 2005, 09:08)
Судят кто попал под раздачу.

Объясни потом игроку :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Nov 14 2005, 14:17
Сообщение #1749


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Напишите плиз скриптик где НПС нагибается к бассеину и полностью вылечивается(типо как в Принце Персии).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Nov 14 2005, 14:41
Сообщение #1750


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Поставь скрипт на строчку в диалоге:
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("ТАГ НПС");
object oBass= GetObjectByTag("ТАГ БАССЕЙНА");
effect eHeal = EffectHeal(100);
ActionDoCommand(AssignCommand(oNPC, ClearAllActions()));//Почистим акции у НПС
ActionDoCommand(AssignCommand(oNPC, ActionMoveToObject(oBass,FALSE))); //Подойдем к бассейну
ActionDoCommand(AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0f,5.0f)));//"Копошится"
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oNPC));//Вылечим НПС
}

ЗЫ: в Принца Персии, я не играл.
ЗЗЫ: сорри, просто скрипт я оч. быстро писал, торопился.
А вы уж, "запинали" :crazy:

Сообщение отредактировал Dik Morris - Nov 14 2005, 15:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 68 69 70 71 72 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 13:43