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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 66 67 68 69 70 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
DroWishSoul
сообщение Jul 20 2005, 21:30
Сообщение #1661


Level 3
*

Класс: Убийца
Характер: Chaotic Neutral
Раса: Эльф



Daemonix, наверное, вот так:
Neverwinter Script Source
void main()
{
  object oPC = GetLastKiller();
  AddJournalQuestEntry("TAG", ID, oPC); // вводим вместо TAG тэг квеста в журнале, а вместо ID - ID записи (это все вводится в Journal Editore)
}

PS Это если на случай, что ты его убил... эхм... а если его убьет твой фамилиар... мда... меня лучше не слушать :swoon:

Сообщение отредактировал DroWishSoul - Jul 20 2005, 21:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 20 2005, 21:33
Сообщение #1662


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

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



Не много дополню
QUOTE (Daemonix @ Jul 20 2005, 20:56)
Кто-нибудь знает как на OnDeath непися постаить добавление записи в журнал игрока?

Есть функция
Цитата из перевода Valleo
Neverwinter Script Source
void AddJournalQuestEntry(string szPlotID, int nState, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE, int bAllowOverrideHigher=FALSE)

string szPlotID - это плот ID, который создается при создании записи в toolset&#39;s Journal Editor
int nState - номер статейки, которую надо записать в ваш журнал, тоже найдете в toolset&#39;s Journal Editor
object oCreature - каму добавится запись в журнал
int bAllPartyMembers - если TRUE - запись добавится всем партийцам
int bAllPlayers - если TRUE - запись добавится ВСЕМ в этом МИРЕ
int bAllowOverrideHigher - если TRUE - вы сможете установить номер записи, меньшИй, чем текущий. То есть если номер текущей записи в квесте szPlotId - N, то с этой опцией вы сможете установить любой номер, меньший N. Это полезно в случае отката квеста на некоторое время назад, либо при множественном выборе номер, когда точно неизвестно, будет ли номер больше текущего, либо меньше.


Сообщение отредактировал -fenix- - Jul 20 2005, 21:39
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 20 2005, 21:38
Сообщение #1663


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Daemonix при смерти НПС добавляешь запись в журнал персонажа. Правда, НПС должен быть уникальным:

Neverwinter Script Source
void main()
{
    object oKiller = GetLastKiller();

    if (GetIsPC(oKiller) && (GetLocalInt(oKiller, "NW_JOURNAL_ENTRYJOUR_Save") < 10))
    {
        AddJournalQuestEntry("JOUR_Save", 10, oPC, TRUE, TRUE);
    }
}

Строчка "(GetLocalInt(oKiller, ""NW_JOURNAL_ENTRYJOUR_Save") < 10)", если у тебя не одна запись, и в данном случае добавляется первая.

На будущее, если есть какой-то вопрос, попробуй что-то подобное найти в одиночных модулях игры, там примеров просто море.

DroWishSoul, так надо выделить, кто убивает НПС.

-fenix-, да, сценка дошла, немного повозился с ней, скоро пришлю. Ты там очень много поставил таких вещей, как "ActionDoCommand", когда внутренняя функция уже имела "Action...".

Сообщение отредактировал Zirrex - Jul 20 2005, 21:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 20 2005, 21:39
Сообщение #1664


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

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



Не надо изобретать велосипедов. Все уже давно написано за вас и не так криво...
Neverwinter Script Source
void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)

Стандартная функция Биовар. Если прописать так:
Neverwinter Script Source
WalkWayPoints(FALSE, 10.0);

То будет ходить по поинтам и ждать ровно 10 секунд. Если повесить на поинт локалку X2_L_WAYPOINT_SETFACING становится лицом в сторну вепоинта.

QUOTE (DroWishSoul @ Jul 20 2005, 11:29)
Помогите еще раз со скриптом... мне надо, чтобы в определенный промежуток времени (например, с 21 вечера до 6 утра) объект (например, NPC с тагом "tag") делал определенные действия (например, сидел (то есть, анимация, а не отдых))
вот так... да, и куда этот скрипт всунуть?

То же самое, читаем спавн скрипт на НПС по дефолту. Там написано что надо разкомментировать, что бы НПС ходил домой ночью. И даже как назвать скрипт что будет запускаться когда он дойдет до ночного поинта отдыха. А что он будет делать, решать вам.

LocalString X2_S_SLEEP_AT_NIGHT_SCRIPT == "имя_скрипта_на_ночь" - Стринг на модуле - запускает скрипт ночью на НПС надо NW_FLAG_SLEEPING_AT_NIGHT
Neverwinter Script Source
SetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT);

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 20 2005, 21:54
Сообщение #1665


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Aiwan, так он же хочет, чтобы он не уходил, а просто сидел ночью. Чтобы НПС ушел, это не сложно, а вот чтобы сидел в определенный промежуток времени, надо бы уже иначе.

-fenix-, потому что, чем меньше подобных скриптов на хартбите, тем лучше. Если не указать определенных условий, он будет делать подобное, в данном случае, сидеть, когда ему захочется этого, точнее велит сам скрипт. Если не хартбите сделать команду отдыха, когда НПС в режиме покоя, т.е. с ним никто не разговаривает, не бьет, или он сам не сражается, причем не "ActionRest", а "ForceRest", чтобы он сел отдыхать, при этом будет выполняться соответствующий скрипт.

Я почему не хотел бы еще кидать тот скрипт на хартбит, чтобы он не проверялся постоянно, а выполнялся только тогда, когда это точно нужно. Т.е. НПС сидел и вдруг встал, и чтобы он сел снова, нужно уже иметь готовую переменную.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Jul 20 2005, 23:24
Сообщение #1666


Level 10
***

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



Хм,.. инетресно. А кто-нибудь в курсах, как можно при разговоре с неписём:

Непись:
- Пошёл отсюда!

Герой(вар.1):
<убеждение> Успокойся, я хочу помочь!

Герой(вар.2):
Ладно, пойду.

При первом варианте может быть так:

Непись(вар.1)
<успех>Да, ты прав... Мне надо расслабиться...

<неудача> Нет, я тебе не верю. Вали прочь!


Так вот, с появлением фразы
QUOTE

<убеждение> Успокойся, я хочу помочь!

я уже разобрался, а как далее?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Puh
сообщение Jul 21 2005, 02:35
Сообщение #1667


Level 2
*

Класс: Теневой Танцор
Характер: Neutral Evil
Раса: Полуэльф



Имеешь в виду как сделать проверку на скил, т.е. если достаточно, то вариант <успех>, а если не хватает, то второй вариант? Если да, то на вариант ответа неписи "Да, ты прав..." вешай что-нибудь типа такой фигни:
(во вкладке "надпись появляется при")

int StartingConditional ()
{
object oPC = GetPCSpeaker ();
if (!(GetAbilityScore(oPC, ABILITY_INTELLIGENCE) >= 15'к примеру')) return FALSE;
return TRUE;
}

на второй вариант можешь повесить почти тоже самое, только измени знаки >= на <, хотя это делать не обязательно(в смысле вешать второй скрипт :yes: ).

ЗЫ: если я неправильно понял твой вопрос, то извини...

Сообщение отредактировал Puh - Jul 21 2005, 02:36
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 21 2005, 09:04
Сообщение #1668


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

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



Daemonix открой любой диалог в ПЛ к примеру и посмотри как сделано. Все описывать тебе просто замучаешься... Там все просто. Я лично разбирался глядя на диалоги Биовар.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DroWishSoul
сообщение Jul 21 2005, 09:32
Сообщение #1669


Level 3
*

Класс: Убийца
Характер: Chaotic Neutral
Раса: Эльф



Эх... еще вопрос... как NPC заберет у меня 5 предметов с одним тагом во время диалога?
PS Уже стыдно спрашивать :oops:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
zmey
сообщение Jul 21 2005, 10:25
Сообщение #1670


Level 4
**

Класс: Маг
Характер: Chaotic Evil
Раса: Дракон



Люди добрые! (Гномы, эльфы и иже с ними) помогите ради всех богов! Нужно мне несколько спутников взять с собой. (2- 5) а больше одного не получается. Чего им нужно, блин? :DB:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Jul 21 2005, 10:59
Сообщение #1671


Level 10
***

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



QUOTE
zmey
Люди добрые! (Гномы, эльфы и иже с ними) помогите ради всех богов! Нужно мне несколько спутников взять с собой. (2- 5) а больше одного не получается. Чего им нужно, блин?


Всмысле каких спутников? Чтобы неписи просто шли за тобой или их морды появлялись в правом верхнем углу?(фамилиары) В последнем случае более одного никогда не видел... :swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
zmey
сообщение Jul 21 2005, 11:10
Сообщение #1672


Level 4
**

Класс: Маг
Характер: Chaotic Evil
Раса: Дракон



для daemonix: а в hordes? там было двое!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 21 2005, 11:36
Сообщение #1673


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

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



DroWishSoul, тут не давно было, вылелось в функцию
Neverwinter Script Source
int removeStackItems(object oInventory, string sItem, int nNum)
{
  object oItem = GetFirstItemInInventory(oInventory);
  int nCount = nNum; // столько итемов осталось удалить
  while(GetIsObjectValid(oItem) && (nCount > 0))
  {
    if(GetTag(oItem) == sItem)
    {
      int nStack = GetItemStackSize(oItem);
      if (nStack <= nCount)    // ЕСЛИ в стопке предметов меньше,
      {                        // чем нам нужно удалить:
        DestroyObject(oItem);  // - удаляем все стопку
        nCount-=nStack;        // - уменьшаем счетчик на кол-во уд-х пред-ов
      } else                     
      { // ИНАЧЕ сокращ. размер стопки и обнуляем счетчик
        SetItemStackSize(oItem, nStack-nCount);
        nCount = 0;
      }
    }
    oItem = GetNextItemInInventory(oInventory);
  }
  return nNum - nCount; // возвращаем кол-во уд-х пред-ов
}

zmey, на сколько я понимаю, то только в хорде так и можно делать, а вообще то же где-то это было.
Где-то нужно поставить максимум хенчменов, посмотри в темках.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DroWishSoul
сообщение Jul 21 2005, 13:03
Сообщение #1674


Level 3
*

Класс: Убийца
Характер: Chaotic Neutral
Раса: Эльф



Не пойму никак... где же тут указывается таг вещей?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Аваддон
сообщение Jul 21 2005, 13:09
Сообщение #1675


Level 10
***

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



QUOTE (DroWishSoul @ Jul 21 2005, 13:03)
Не пойму никак... где же тут указывается таг вещей?

В параметрах вещи.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 21 2005, 13:32
Сообщение #1676


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

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



Neverwinter Script Source
int removeStackItems(object oInventory, string sItem, int nNum)

object oInventory - объект в инвентаре которого нужно удалить вещь.
string sItem - тег вещи, которую надо удалить.
int nNum - кол-во, сколько надо удалить.


Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DroWishSoul
сообщение Jul 21 2005, 14:03
Сообщение #1677


Level 3
*

Класс: Убийца
Характер: Chaotic Neutral
Раса: Эльф



QUOTE (Аваддон @ Jul 21 2005, 13:09)
В параметрах вещи.

Я имел ввиду скрипт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 21 2005, 14:11
Сообщение #1678


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

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



Это функция, кОторая это делает, что тебе надо
Neverwinter Script Source
int removeStackItems(object oInventory, string sItem, int nNum)

object oInventory - объект в инвентаре которого нужно удалить вещь.
string sItem - тег вещи, которую надо удалить.
int nNum - кол-во, сколько надо удалить.


Это так сказать объяснение, что это функция делает
Neverwinter Script Source
{
  object oItem = GetFirstItemInInventory(oInventory);
  int nCount = nNum; // столько итемов осталось удалить
  while(GetIsObjectValid(oItem) && (nCount > 0))
  {
    if(GetTag(oItem) == sItem)
    {
      int nStack = GetItemStackSize(oItem);
      if (nStack <= nCount)    // ЕСЛИ в стопке предметов меньше,
      {                        // чем нам нужно удалить:
        DestroyObject(oItem);  // - удаляем все стопку
        nCount-=nStack;        // - уменьшаем счетчик на кол-во уд-х пред-ов
      } else                   
      { // ИНАЧЕ сокращ. размер стопки и обнуляем счетчик
        SetItemStackSize(oItem, nStack-nCount);
        nCount = 0;
      }
    }
    oItem = GetNextItemInInventory(oInventory);
  }
  return nNum - nCount; // возвращаем кол-во уд-х пред-ов
}

Чтобы воспользоваться функцией надо все, что я написал в первом ответе кинуть в файл скрипта и в нужном месте просто пользоваться функцией.

З.Ы описание должно быть до использование функции, лучше всего в самом начале.
З.З.Ы а еще лучше скинуть ее в отдельный файл и подключить его как инклюд!

Сообщение отредактировал -fenix- - Jul 21 2005, 15:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DroWishSoul
сообщение Jul 21 2005, 15:15
Сообщение #1679


Level 3
*

Класс: Убийца
Характер: Chaotic Neutral
Раса: Эльф



Ладно, я уже по-другому сделал, спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Jul 21 2005, 23:19
Сообщение #1680


Level 10
***

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



QUOTE
zmeyдля daemonix: а в hordes? там было двое!

Хм, просто я не играл в Hordes. У меня только Shadows of Undertide есть. Но скоро куплю.
Добавлено в [mergetime]1121977284[/mergetime]
З.Ы. Думаете, есть смысл делать мод для непрокачанного героя?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 22 2005, 00:36
Сообщение #1681


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

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



QUOTE (zmey @ Jul 21 2005, 11:25)
больше одного не получается. Чего им нужно, блин?

в скрипт OnModuleLoad добавь строку:
Neverwinter Script Source
SetMaxHenchmen(5);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 22 2005, 09:41
Сообщение #1682


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

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



Daemonix ты имеешь в виду мод для героя первого уровня? Дык конечно лучше делать, чтобы начинать первоуровневым игроком, а потом прокачать его (по ходу игры) скажем до 20 :D. Лично я так и делаю, у себя.
Добавлено в [mergetime]1122021364[/mergetime]
QUOTE
Хм,.. инетресно. А кто-нибудь в курсах, как можно при разговоре с неписём:

Непись:
- Пошёл отсюда!

Герой(вар.1):
<убеждение> Успокойся, я хочу помочь!

Герой(вар.2):
Ладно, пойду.



Daemonix! Наверно скорее всего я опоздал :xz: … Но если нет, или если ты до конца не понял тогда смотри:

Пример:
NPC: Привет игрок! У меня есть деньги!
Игрок: (убеждение) Не поделишься богатством?
1) Вариант ответа NPC, при срабатывании убеждения:
Конечно на, я не жадный!
2) Вариант ответа NPC, при провале убеждения:
Нет! Пошел ты!
Дык вот, Первый вариант появляется если в закладку ПОЯВЛЯЕТСЯ ПРИ, добавить этот скрипт:
Neverwinter Script Source
#include "nw_i0_tool"

int StartingConditional()
{
    if(!(AutoDC(DC_EASY, SKILL_PERSUADE, GetPCSpeaker())))
        return FALSE;

    return TRUE;
}

Ты можешь сам делать такие скрипты, просто в Мастере скриптов (Это в редакторе диалога, ты наверное знаешь) ПОЯВЛЯЕТСЯ ПРИ -> МАСТЕР СКРИПТОВ -> КРИТЕРИЙ УМЕНИЙ и проверяешь убеждение…
P.S: У меня стоит Hordes of the Underdark, а у тебя ведь Shadows of Undrentide может что не сойдется…но вроде и должно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Jul 22 2005, 15:33
Сообщение #1683


Level 10
***

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



Спасибо, Dik Morris!


Вот ещё что, я тут на днях придумал такой скрипт, хотя и уверен, что его кто-то до меня уже придумал.
Так вот: вам часто приходится делать города в своих модулях? И не все же неписи в городах смогут сказать что-то важное. Обычно их реплики сводятся к одной строчке. И мне в голову пришла мысль:
как можно сделать так, чтобы непись произносил не одну и ту же короткую реплику всё время, а разные?

Объяснение просто:
Берём непися, создаём ему разговор: а там, в разговоре делаем ему 4(можете сколько угодно) разных приветствия.
Я пробовал на таких:
-Привет!
-Тебе нравится наш город!
-Похоже ты не местный!
-Я бы посоветовал тебе пойти в таверну!

И привязываем к каждому приветствию условие появления:
CODE
int StartingConditional()
{

// Вместо 4 ставим своё кол-во реплик
if(Random(4) >= 1)
 return FALSE;

return TRUE;
}

Вот. Я всё проверил и вроде пашет. Но лучше всего увеличьте число реплик с 4 до 8-10.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 22 2005, 16:00
Сообщение #1684


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

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



Daemonix попробовал я твой скрипт :yes:, все вроде нормально но вот иногда НПС молчит и приходится повторно щелкать, напрягает знаете ли :unsure: ...Но можно делать проверкой, случайно (ТЕКСТ ПОЯВ. ПРИ СЛУЧАЙНО) так тоже нечего, и не надо каждый раз другие скрипты делать т.к не у всех ведь неписей одинаковое кол-во фраз, у кого-то больше, у кого-то меньше.

Сообщение отредактировал Dik Morris - Jul 22 2005, 16:08
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Jul 22 2005, 16:16
Сообщение #1685


Level 10
***

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



Да, это верно. Надеюсь, можно будет что-нибудь доработать. А такой простой скрипт можно и в ScriptWizard'е сделать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 16th July 2025 - 15:09