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

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

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


Level 7
**

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



Kavin, скачай себе Lexicon. Очень полезная вещь.
Neverwinter Script Source
location loc = Location(objArea, vecPosition, fFacing);

и функция
Neverwinter Script Source
location Location(
    object oArea,
    vector vPosition,
    float fOrientation
);

QUOTE

oArea
An Area within the game module

vPosition
An object specifying an xyz coordinate

fOrientation
An angular value between 0.0 and 360.0
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 6 2005, 21:34
Сообщение #1712


Level 8
***

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



Угу. Ясно! Location - тип данных, полностью описывающий месторасположение объекта.

Лексикон качаю. Безуспешно - уже 4-й раз, с разных ссылок... :swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Nov 6 2005, 22:15
Сообщение #1713


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Объясните мне пожайлуста :shout: Почему при использовании функции - AddJournalQuestEntry, с целью добавить ступень в журнале, которая завершает категорию, мне не выдают опыт, который я назначаю.(в поле свойств категории)

Приведу более широкий пример.
Neverwinter Script Source
if(sTag == "KEY_PERSONAL1")
{
AddJournalQuestEntry("KEY_QUEST",2,oPC);
}

Игроку дают квест - найти ключик.
Добавляется запись в журнал(с этим проблем нет) - далее игрок находит ключ - квест завершается и запись в журнале переходит в закладку "выполненые", но опыта за завершенную категорию не дают :this:

Сообщение отредактировал Лито - Nov 6 2005, 22:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 6 2005, 22:20
Сообщение #1714


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

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



QUOTE (Nick Parker @ Nov 5 2005, 07:13)
4)При создании квеста, вешаемого на ветку диалога, когда пишешь ему имя, тэг, приоритет, ниже есть ХР. Что это? Думал опыт, но при прохождении опыт не дают. Приходится через «дать награды».

QUOTE (Dik Morris @ Nov 5 2005, 08:56)
GetJournalQuestExperience

и сами даем опыт.

Лито, с такими вопросами в ОДИНОЧНЫЕ ВОПРОСЫ или Вопросы Новичков, а не сюда.
\\ кстати ответ взят оттуда, с последней страницы, так что.. выводы сам делай.
Добавлено в [mergetime]1131304925[/mergetime]
Kavin, тебе кстати тоже.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Nov 6 2005, 22:30
Сообщение #1715


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Гм...тогда придется писать проверку, чтобы опыт давался только один раз. :unsure:
Эх...ладно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Nov 8 2005, 01:47
Сообщение #1716


Level 10
***

Класс: Мастер Оружия
Характер: Lawful Good
Раса: Человек



Ну кто-нибудь, помогите! :this:
Neverwinter Script Source
void main()
{
    object oMod = GetModule();
    object oPC = GetEnteringObject();
  if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME"))
      {return;}
      {
      SetLocalInt(oMod, "START_GAME", TRUE);
}
TakeGoldFromCreature(GetGold(oPC),oPC, TRUE);
object oChest = GetObjectByTag("startchest");
object oItem = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItem))
        {
            CopyItem(oItem, oChest, FALSE);
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
        }
  int i=0;
        while(i<14)
        {
        DestroyObject(GetItemInSlot(i, oPC));
        i++;

        }
}

Ну и так и так делал, все деньги у игрока НИ В КАКУЮ не забирает!
Ошибок тут нет, но вот не забирает деньги и всё, хотя строка такая есть...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 8 2005, 01:51
Сообщение #1717


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

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



Мля.. не первый раз уже такое.. Daemonix

функция:
Neverwinter Script Source
void TakeGoldFromCreature(
    int nAmount,
    object oCreatureToTakeFrom,
    int bDestroy = FALSE
);


из Лексикона
QUOTE

Description
Take nAmount of gold from oCreatureToTakeFrom.

The taker needs to be a non-area and non-module for it to work correctly. It can be the creature passed into oCreatureToTakeFrom, of course.


ну народ, блин, :RTFM:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
KoYuKi
сообщение Nov 10 2005, 20:40
Сообщение #1718


Level 6
**

Класс: Варвар
Характер: Chaotic Good
Раса: Полуорк



Друзья, есть у меня проблема, вобщем есть два города, допустим город А и город В, в окрестностях каждого города 6 лок, между городами можно передвигаться. Так вот, как сделать так чтобы если вы умерли в одной из шести лок города А, то вы появлялись в храме города А, а если в одной из 6 лок города В то в храме города В.
Я как то раз уже спрашивал про это дело в разделе Шарды Рунета, тогда мне никто толком ниче не разъяснил, может поможете?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Nov 10 2005, 20:59
Сообщение #1719


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



KoYuKi
в скрипте OnPlayerDeath добавь:
Neverwinter Script Source
//----
object oPC = GetLastPlayerDied();
// все тэги тут писать ЗАГЛАВНЫМИ буквами (чтоб избежать путаницы)
string sResWPtag = "тэг вэйпоинта для реса по умолчанию";
string sArea = GetStringUpperCase(GetTag(GetArea(oPC)));
if (FindSubString("тут через пробелы тэги лок вокруг А", sArea) != -1)
  sResWPtag = "тэг вэйпа в храме A";
else if (FindSubString("тут через пробелы тэги лок вокруг B", sArea) != -1)
  sResWPtag = "тэг вэйпа в храме B";
ActionJumpToLocation(GetLocation(GetObjectByTag(sResWPtag)));
//-----


edit: ой, ой. облажался :oops: - OnPlayerDeath идет на модуле ж... не OBJECT_SELF, а GetLastPlayerDied(). thx 2 AliceDiren ;)

Сообщение отредактировал dumbo - Nov 10 2005, 21:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Nov 10 2005, 21:00
Сообщение #1720


Level 7
**

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



KoYuKi, самый простой вариант - проверять таг локи, в которой умер персонаж.
В скрипте на OnPCDeath
Neverwinter Script Source
//...
object oPC = GetLastPlayerDied;
string sAreaTag = GetTag(GetArea(oPC));
if(sAreaTag = "area001" ||
    sAreaTag = "area002" ||
    sAreaTag = "area003" ||
    sAreaTag = "area004" ||
    sAreaTag = "area005" ||
    sAreaTag = "area006") {/*Перемещаем в город A*/}
if(sAreaTag = "area011" ||
    sAreaTag = "area012" ||
    sAreaTag = "area013" ||
    sAreaTag = "area014" ||
    sAreaTag = "area015" ||
    sAreaTag = "area016") {/*Перемещаем в город B*/}
//...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 10 2005, 21:10
Сообщение #1721


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

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



QUOTE (AliceDiren @ Nov 10 2005, 21:00)
KoYuKi, самый простой вариант - проверять таг локи, в которой умер персонаж.
В скрипте на OnPCDeath

мм... имхо этот вариант проще и малек удобнее:

Neverwinter Script Source
///
object oPC = GetLastPlayerDied();
object oRP = GetNearestObjectByTag("RP",oPC);
object oRespawnPouint = GetObjectByTag(GetName(oRP));
AssignCommand(oPC,ActionJumpToLocation(oRespawnPouint));
///


Что мы имеем.
В каждой локации ставим Waypoin с тэгом "RP" и именем = тэгу точки респауна.
И все... Берется поинт, по имени берется другой поинт и мы туда джампаемся.
Думаю все локации пометить такими поинтами - не проблема.
(можно сделать, что в локации будет храниться локалка, но имхо ставить поинты проще.. не надо никуда лазать.)

+ что добавление новых областей и новых мест респауна не требует изменения скрипта. Просто поставь поинты в локацию и все (имеет смысл сделать их в палитре).



имхо
Добавлено в 21:20
QUOTE (dumbo @ Nov 10 2005, 20:59)
edit: ой, ой. облажался :oops: - OnPlayerDeath идет на модуле ж... не OBJECT_SELF, а GetLastPlayerDied(). thx 2

QUOTE (dumbo @ Nov 10 2005, 20:59)
ActionJumpToLocation(GetLocation(GetObjectByTag(sResWPtag)));

не до конца поправил
Добавлено в 21:24
QUOTE (KoYuKi @ Nov 10 2005, 20:40)
Я как то раз уже спрашивал про это дело в разделе Шарды Рунета, тогда мне никто толком ниче не разъяснил, может поможете?

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



ЗЫ: вопрос - 3 ответа от мастеров... ГЫ :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Nov 10 2005, 23:50
Сообщение #1722


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



:offtop: (маленький и незаметный)
QUOTE (Lex @ Nov 10 2005, 22:10)
ЗЫ: вопрос - 3 ответа от мастеров... ГЫ

и, что характерно, все написаны в блокноте и нерабочие... :crazy:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
KoYuKi
сообщение Nov 11 2005, 04:56
Сообщение #1723


Level 6
**

Класс: Варвар
Характер: Chaotic Good
Раса: Полуорк



Спасибо всем, но вот насчёт блокнота это проблема, тогда мне тоже дали такой ответ как Lex, вот только он был не рабочий... щас этот проверю
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 11 2005, 13:11
Сообщение #1724


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

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



это куски кодов. Доводи их до состояния скриптов уже сам. Сам не научишься - мы за тебя все скрипты в модуль не напишем же.
С твоей стороны надо чуть больше, чем "дайте мне скрипт". Тем более в такой теме, где задаются вопросы и просятся советы

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
KoYuKi
сообщение Nov 11 2005, 18:24
Сообщение #1725


Level 6
**

Класс: Варвар
Характер: Chaotic Good
Раса: Полуорк



Lex да я то понимаю что это куски кодов, вот только куда эти коды писать, всмысле как, по каким законам, относительно чего... я с учебником по скриптингу довольно долго возился, порядка пары месяцев, но так толком ничего в C++ и не понял, так основы... видать не моё это...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
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 _без_ свойсва вещи?

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


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

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

 



Текстовая версия Сейчас: 1st May 2025 - 11:50