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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 68 69 70 71 72 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
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 _без_ свойсва вещи?

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


Каа, ага, я про спеллхук забыл совершенно :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
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 смотрим. Если во время атаки игрока НПС нейтрален и не в бою, то игрок по идее напал первый.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



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