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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 71 72 73 74 75 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Batkom
сообщение Aug 9 2005, 19:58
Сообщение #1786


Level 4
**

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



:xz:
Сеповские константы?
Когда редактируешь свойства армора как предмета плащу соответствует моделька шеи 6 если ты об этом.
Если это чтото другое, тогда что и где мне ее искать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Aug 9 2005, 21:47
Сообщение #1787


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Здравствуйте. Вот у меня вопрос. Как при респавне, сделать чтобы труп возрожденного игрока удалялся. Заранее благодарю. Вот скрипты :
на ОнДеад
CODE
void main()
{
object oPlayer = GetLastPlayerDied();
location lDiedHere = GetLocation(oPlayer);
string sHelpString="Вы мертвы, если желаете реинкарнироватьсЯ нажмите кнопку Респавн.";
object oCorpse = CreateObject(OBJECT_TYPE_PLACEABLE,"pc_corpse", lDiedHere,FALSE);
object oBag = CreateObject(OBJECT_TYPE_PLACEABLE,"pc_bag", lDiedHere,FALSE);
SetLocalObject(oCorpse, "oOwner",  oPlayer);
SetImmortal(oPlayer, TRUE);
int nGP = GetGold(oPlayer);
int i=0;
 while(i<14)
   {
   AssignCommand(oBag,ActionTakeItem(GetItemInSlot(i, oPlayer),oPlayer));
   i++;
       }
AssignCommand(oBag,TakeGoldFromCreature(nGP,oPlayer,FALSE));

DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer));
DelayCommand(1.0,AssignCommand(oPlayer,ClearAllActions()));
DelayCommand(1.5,AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE")))));
DelayCommand(6.0,PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));
}


на ОнРеспаун

CODE
#include "nw_i0_plot"

void ApplyPenalty(object oDead)
{
  int nXP = GetXP(oDead);
  int nPenalty = 250 * GetHitDice(oDead);
  int nHD = GetHitDice(oDead);
  // * You can not lose a level with this respawning


  int nNewXP = nXP - nPenalty;

  SetXP(oDead, nNewXP);

}
void main()
{
  object oRespawner = GetLastRespawnButtonPresser();
  object oCorpse = GetLocalObject(oRespawner,"oOwner");
  DestroyObject(oCorpse);
  DelayCommand(1.0,DestroyObject(oCorpse));
  AssignCommand(oRespawner,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE01"))));
  ApplyPenalty(oRespawner);
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
  RemoveEffects(oRespawner);
  DeleteLocalInt(oRespawner,"oOwner");
  SetImmortal(oRespawner,FALSE);

  }

Добавлено в [mergetime]1123613353[/mergetime]
У меня там ошибка во втором скрипте с обозначением обьекта oCorpse, я не знаю как зделать
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 9 2005, 21:59
Сообщение #1788


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

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



QUOTE (Scaled @ Aug 9 2005, 21:47)
Здравствуйте. Вот у меня вопрос. Как при респавне, сделать чтобы труп возрожденного игрока удалялся. Заранее благодарю. Вот скрипты :


А он разве не удаляется?????
Если нет, то попробуй переделать стандартный скрипт смерти вставив, что тебе нужно.
А вообще труп должен удалиться, или я чего не понимаю?!
Если нет объясните и мне.

QUOTE (Scaled @ Aug 9 2005, 21:47)
У меня там ошибка во втором скрипте с обозначением обьекта oCorpse, я не знаю как зделать


Neverwinter Script Source
object oCorpse = GetLocalObject(oRespawner,"oOwner");

Интересная строчка :D
Я имею ввиду таг! Врятли у тебя такой. Наверное это имя переменной, в которой должен стоять таг, только она у тебя не объявлена. А если и объявлена, то она пишется без кавычек.
Пользуйся кнопкой NSS.

Хм. Чета я не то сказал (IMG:http://www.kolobok.wrg.ru/smiles/madhouse/wacko.gif) . Наверное ты что-то другое имел ввиду, тогда Что?
А зачем два раза удалять?
Neverwinter Script Source
DestroyObject(oCorpse);
DelayCommand(1.0,DestroyObject(oCorpse));


Сообщение отредактировал -fenix- - Aug 9 2005, 22:30
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Aug 9 2005, 22:26
Сообщение #1789


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

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



QUOTE (DEM @ Aug 9 2005, 21:54)
Скажите, как сделать что бы при нажатии ESC (кнопка на клаве), кат-сцена заканчивалась?

Посомтри слот на модуле есть. Я не пробовал но логика мне подсказывает там надо рыться. :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DEM
сообщение Aug 9 2005, 23:16
Сообщение #1790


Level 7
**

Класс: Маг
Характер: Lawful Neutral
Раса: Эльф



QUOTE
Здравствуйте. Вот у меня вопрос. Как при респавне, сделать чтобы труп возрожденного игрока удалялся. Заранее благодарю. Вот скрипты :


Я конечно не уверен, но по моему скромному мнению, я уверен на 100% что труп исчезает... А если нет (или это шард или что), то выкинь свй NWN :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Red Devil
сообщение Aug 10 2005, 00:06
Сообщение #1791


Level 1


Класс: Монах
Характер: Lawful Evil
Раса: Человек



Здравстуйте. Значит у меня 3 вопроса.
1) Как сделать, чисто черную краску и белую. В палитре же их нет, или может быть для них есть хак пак, как он называется ?
2) Как узнать уровень игрока ? Просто скажите как функция называется, беглым взглядом лексикон пробежал getlevel(), как я ожидал не нашел.
3) Есть ли русская документация к утилите NWN duplicator ? (просто лекь переводить, надеюсь я ее скоро поборю).

Сообщение отредактировал Red Devil - Aug 10 2005, 00:09
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Aug 10 2005, 04:41
Сообщение #1792


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

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



2 Red Devil
1. Зажми в палитре красок (набор квадратиков) любой цвет мышкой и тяни его ниже списка вниз. Внизу спрятан еще ряд цветов.
2.
Neverwinter Script Source
// Get the number of hitdice for oCreature.
// * Return value if oCreature is not a valid creature: 0
int GetHitDice(object oCreature)

3. Не думаю...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Aug 10 2005, 06:54
Сообщение #1793


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Как ни странно труп - не удаляеться. По идее когда ты воскрешаешься -он должен исчезнуть. Останеться только сумочка с вещами.
Случайно два раза удаляю труп, по не внимательности своей.
Строчка object oCorpse = GetLocalObject(oRespawner,"oOwner"); Это просто попытка как-то обозвать труп игрока который воскрешаеться в данный момент. Так как мне сделать чтобы труп удалялся? Я просто не первый день сижу мучую этот скрипт.
Добавлено в [mergetime]1123646210[/mergetime]
QUOTE
Я имею ввиду таг! Врятли у тебя такой. Наверное это имя переменной, в которой должен стоять таг, только она у тебя не объявлена. А если и объявлена, то она пишется без кавычек.

Так что же это - просто не назвал труп?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ferst
сообщение Aug 10 2005, 09:51
Сообщение #1794


Level 2
*

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



1. SetLocalObject(oCorpse, "oOwner", oPlayer);

2. object oCorpse = GetLocalObject(oRespawner,"oOwner");

В первом скрипте Вы устанавливаете локальный объект на _труп_.
А во втором берете переменную с _игрока_.

SetLocalObject(oPlayer, "oOwner", oCorpse);

Так будет верно.

ЗЫ.
При работе с объектами, чтобы проверить существует ли вообще объект, сделайте себе дебаг строки на имя объекта:
SendMessageToPC(oPlayer, "CorpseName="+GetName(oCorpse));
Если у Вас после "CorpseName=" будет пустое значение в логе чата, то объекта просто нет и нужно искать почему ;)
Естессно имя у объекта должно быть обязательно.

Сообщение отредактировал Ferst - Aug 10 2005, 10:20
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 10 2005, 09:53
Сообщение #1795


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

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



Scaled, ТЫ СМОТРЕЛ СТАНДАРТНЫЕ СКРИПТЫ?
Что значит ты их ставешь на на ОнДеад и на ОнРеспаун? У ПС слотов нет, а ставется это в слоты модуля OnPlayerDeath и OnPlayerRespawn.
Скрипты у тебя странные, я поставил и у меня какой-то ужас стал твориться, у тебя все правельно работает, кроме трупа?
Зачем в скрипте на смерть мудрить со слотами и деньгами?

У ПС при смерти трупа та и нет. Он какбы валяется а при нажатии на респаун он просто встает с полными хитами. В стандартных скриптах про удаление трупа ни слова. Откуда у тебя труп появляется, у меня скажем ничего не появлялось.

QUOTE (Scaled @ Aug 10 2005, 06:54)
Как ни странно труп - не удаляеться. По идее когда ты воскрешаешься -он должен исчезнуть. Останеться только сумочка с вещами.

Сумочка с вещами остается при убийстве монстров! Если у тебя шард, то для копирования вещей в труп или куда там, можно использовать скрипт из базы скриптов. Там на труп копируются все вещи и деньги, а труп исчезает через 250 секунд

QUOTE

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

"low_plc_loot" - резреф трупа в палитре.


Neverwinter Script Source
//::Created by      Лито
//::Modificated by  Lex
void Clear(object oBag = OBJECT_SELF)
{
object oItem = GetFirstItemInInventory(oBag);
while (GetIsObjectValid(oItem))
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(oBag);
  }
DestroyObject(oBag,1.0);
}
void main()
{
string sTemplate = "low_plc_loot";
string sTag = GetTag(OBJECT_SELF);
location lLoc = GetLocation(OBJECT_SELF);
object oloot = CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);
int i = 0;
object oItem = GetFirstItemInInventory(OBJECT_SELF);
while (GetIsObjectValid(oItem))
    {
    if (GetDroppableFlag(oItem))
      CopyObject(oItem,lLoc,oloot);
    DestoyObject(oItem);
    oItem = GetNextItemInInventory(OBJECT_SELF);
    }
oItem = GetItemInSlot(i,OBJECT_SELF);
while (i<14)
    {
    if (GetDroppableFlag(oItem))
      CopyObject(oItem,lLoc,oloot);
    DestoyObject(oItem);
    i++;
    oItem = GetItemInSlot(i,OBJECT_SELF);
    }
AssignCommand(oloot,DelayCommand(250.0,Clear(oloot)));
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ferst
сообщение Aug 10 2005, 10:06
Сообщение #1796


Level 2
*

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



QUOTE (-fenix- @ Aug 10 2005, 09:53)
Зачем в скрипте на смерть мудрить со слотами и деньгами?

Эффект, как в Дьябло - скидывание вещей с игрока и денег.
QUOTE
У ПС при смерти трупа та и нет. Он какбы валяется а при нажатии на респаун он просто встает с полными хитами. В стандартных скриптах про удаление трупа ни слова. Откуда у тебя труп появляется, у меня скажем ничего не появлялось.

1. Трупа нет скорее всего потому, что Скалед делал костомный объект-труп, который Вы не создали усебя ;)
2. Встает с хилами, т.к. нет в модуле у Вас объекта с нужным тэгом, к которому телепортируется игрок при респе.
QUOTE
Сумочка с вещами остается при убийстве монстров!

Именно поэтому Сумочку с вещами опять же он создает сам, чтобы она валялась рядом с трупом.
У Вас она скорее всего не появляется(если это так), из-за отсутствия в костомной палитре.


ЗЫ. Надеюсь не страшно, что ответил за Скаледа :) Я подумал, что он долго будет разбираться почему у Вас ничего не работает. Сорри, если помешал вашей дискуссии :)
ЗЫЫ. А почему не работало удаление у автора вопроса, написал чуть выше.

Сообщение отредактировал Ferst - Aug 10 2005, 10:09
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 10 2005, 11:12
Сообщение #1797


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

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



Блин. Да я чета совсем запутался!
Сам он создает труп или тот сам появлялся, если создает труп, то зачем мешочек с вещами да и вообще, что конкретно он хотел от скрипта только щаз понял. Я конечно не спец в скриптах но помоему в скриптах много всего, без чего можно обойтись(может я и ошибаюсь :xz: ).
Делай труп с вещами и удаляй смотря скрипт, который я приводил выше.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DEM
сообщение Aug 10 2005, 12:34
Сообщение #1798


Level 7
**

Класс: Маг
Характер: Lawful Neutral
Раса: Эльф



Мдя-я-я-я-я.... Я с тобой согласен -fenix- ...


Посмотри скрипт на оставление вещей и на респавны наших спутников (хенчманов)...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Aug 10 2005, 13:36
Сообщение #1799


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Хм, по порядку:

Труп, для чего он?

Когда игрок умирает он переноситься в Святилище(фуга), труп остаеться на месте смерти и мешочек с предметами которые были надеты в данный момент, на нем, и деньги. В фуге выходит таблица, где игрок может нажать кнопку - Респаун.
Труп можно украсть, что бы,скажем,игрок не смог реснуться, или же принести в город и там реснуть в храме за деньги.
На труп можно наложить спелл ресуректа и воскресить игрока, переместив на место, где валялся труп.

Почему я делаю мешочек и труп, а не труп с инвентарем? Потому что у меня в модуле планируеться возможность взять труп и утащить, а мешочек с предметами не брать.)))

Так вот у меня проблема в том что труп не удаляеться, когда происходит воскрешение посредством нажатия кнопки Респауна. И я не знаю как это сделать.Когда кастишь ресурект - все ок, а посредством менюшног воскрешения не получаеться. Да, извините я спешил и перепутал конечно же OnPlayerDeath и OnPlayerRespawn.)))
Что еще обьяснить?))) Я правда не знаю как доделать до ума, если есть другие варианты - подскажите.


Добавлено в [mergetime]1123670399[/mergetime]
Ах, да забыл еще вот что как бы мне не хотелось, чтобы труп разлогался через 250 сек....как вы предлогаете. Труп - это как бы точка прыжка, когда воскрешают спеллом.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Aug 10 2005, 14:48
Сообщение #1800


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

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



Scaled
насчет бага с переменными тебе уже указали. кстати, по смыслу, если уж переменная-объект трупа вешается на PC, то имя ей должно быть "oCorpse" ;)
а вот этот кусок тебе следует явно переделать:
Neverwinter Script Source
DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer)); DelayCommand(1.0,AssignCommand(oPlayer,ClearAllActions())); DelayCommand(1.5,AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE"))))); DelayCommand(6.0,PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));

если игрок через секунду после смерти выйдет из игры, то избежит "наказания"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 10 2005, 16:33
Сообщение #1801


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

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



Не знаю нужно это уже или нет :xz: , но пусть будет, мож кому прегодиться. Все работает!
Теги и ресрефы везде конечно свои

На OnPlayerDeath
Neverwinter Script Source
void Clear(object oBag = OBJECT_SELF)
{
object oItem = GetFirstItemInInventory(oBag);
while (GetIsObjectValid(oItem))
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(oBag);
  }
DestroyObject(oBag,1.0);
}

void main()
{
object oPlayer = GetLastPlayerDied();
string sTag = GetName(oPlayer);
location lDiedHere = GetLocation(oPlayer);
string sHelpString="Вы мертвы, если желаете реинкарнироватьсЯ нажмите кнопку Респавн.";
object oCorpse = CreateObject(OBJECT_TYPE_PLACEABLE,"blueprint001", lDiedHere,TRUE);
object oLoot = CreateObject(OBJECT_TYPE_PLACEABLE, "blueprint002", lDiedHere, TRUE, sTag);
int nGP = GetGold(oPlayer);
SetLocalObject(oPlayer, "oOwner", oCorpse);
SetImmortal(oPlayer, TRUE);

int i = 0;
object oItem = GetFirstItemInInventory(oPlayer);
while (GetIsObjectValid(oItem))
    {
    if (GetDroppableFlag(oItem))
      CopyObject(oItem,lDiedHere,oLoot);
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oPlayer);
    }
oItem = GetItemInSlot(i,oPlayer);
while (i<14)
    {
    if (GetDroppableFlag(oItem))
      CopyObject(oItem,lDiedHere,oLoot);
    DestroyObject(oItem);
    i++;
    oItem = GetItemInSlot(i,oPlayer);
    }

AssignCommand(oLoot,TakeGoldFromCreature(nGP,oPlayer,FALSE));

ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer);
AssignCommand(oPlayer,ClearAllActions());
AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE"))));
DelayCommand(1.0,PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));
}


На OnPlayerRespawn

Neverwinter Script Source
#include "nw_i0_plot"

void ApplyPenalty(object oDead)
{
  int nXP = GetXP(oDead);
  int nPenalty = 250 * GetHitDice(oDead);
  int nHD = GetHitDice(oDead);
  // * You can not lose a level with this respawning


  int nNewXP = nXP - nPenalty;

  SetXP(oDead, nNewXP);

}
void main()
{
  object oRespawner = GetLastRespawnButtonPresser();
  object oCorpse = GetLocalObject(oRespawner,"oOwner");

  DestroyObject(oCorpse);
  AssignCommand(oRespawner,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE01"))));
  ApplyPenalty(oRespawner);
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
  RemoveEffects(oRespawner);
  DeleteLocalInt(oRespawner,"oOwner");
  SetImmortal(oRespawner,FALSE);

}


Сообщение отредактировал -fenix- - Aug 10 2005, 16:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Aug 11 2005, 00:13
Сообщение #1802


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Все спасибо всем, теперь все удаляеться и новый вопрос)
Вот значит лежит на земле труп, я его беру игроком в свой инвентарь - он превращаеться из плэйсебла в итем. Теперь выкладывая - обратное превращение. НО!!!! Если теперь этот игрок воскреснет вдруг по средствам кнопки Респауна, то труп , выложеный мной, не исчезает. Почему? Я думал , думал, пришел к выводу, что нет на вновь созданом трупе той переменной, которая даеться при смерти. Что мне делать в это ситуации?
З.Ы.
Если не понятное что-то в вопросе - спрашивайте.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Aug 11 2005, 01:16
Сообщение #1803


Level 4
**

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



Повесь на итем у хозяина трупа переменную со статусом жив\мертв, а затем трупу на хертбит, на спавн или на юз проверку этой самой переменной сидящей в предмете в кармане хозяина, если жив дестрой
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 11 2005, 19:36
Сообщение #1804


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

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



Я вот не нашел анимации при которойбы чел махал руками, как маг, когда кастует что-то. У меня ущербная 1.30, все дело вней или этого вообще нет!

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DEM
сообщение Aug 11 2005, 19:39
Сообщение #1805


Level 7
**

Класс: Маг
Характер: Lawful Neutral
Раса: Эльф



-fenix-, не пробовал поставить скрипт кастования? ВОт сам скрипт
Neverwinter Script Source
ActionCastFakeSpellAtObject();
ActionCastFakeSpellAtLocation();


Одно из двух..... :D

Добавлено в [mergetime]1123778403[/mergetime]
Но возможно что вокруг чела будут летать те хре.... Ну корочи фигни :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Aug 11 2005, 20:09
Сообщение #1806


Восставший из пепла
***

Класс: Бледный Мастер
Характер: Neutral Evil
Раса: Человек
ПОДМАСТЕРЬЕ



QUOTE
Я вот не нашел анимации при которойбы чел махал руками, как маг, когда кастует что-то. У меня ущербная 1.30, все дело вней или этого вообще нет!

Я пользуюсь анимацией "ANIMATION_FIREFORGET_VICTORY2". Смотрится неплохо. Можешь попробывать сам. ;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DroWishSoul
сообщение Aug 12 2005, 07:56
Сообщение #1807


Level 3
*

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



Прошу прощенья, что суюсь в беседу :yes:
У меня вопрос появился. Я написал 2 скрипта. Поставил их на OnDeath двух разных NPC. Суть скрипта проста. После смерти он проверяет, мертв ли второй объект, после чего идет действие.
Вот сам скрипт одного из NPC
Neverwinter Script Source
void main()
{
object oPC = GetLastKiller();
object oTag = GetObjectByTag("tag"); // второй объект
effect eCurse = EffectCurse(4, 4, 4, 4, 4, 4); // я выбрал первое попавшееся действие просто для првоерки скрипта

oPC = GetMaster(oPC);

if(!GetIsPC(oPC)) return;

if(!GetIsDead(oTag)) return;

ApplyEffectToObject(1, eCurse, oPC, 10.0);

}

Скрипт компилится, умирают оба объекта, но ничего не происходит. Не могу понять, в чем дело.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 12 2005, 08:44
Сообщение #1808


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

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



DroWishSoul
Тут ты смотрешь, кто убил твоего НПС
Neverwinter Script Source
object oPC = GetLastKiller();

А потом получаешь мастера убийцы, убийца всегда хенч?
Далее смотрешь является ли мастер PC, если нет, то скрипт не работает. Зачем все это?
Neverwinter Script Source
oPC = GetMaster(oPC);

if(!GetIsPC(oPC)) return;

Не знаю, что тебе на самом деле нужно, но вот один из скриптов. Работает на убийцу-PC.

Neverwinter Script Source
void main()
{
object oPC = GetLastKiller();
object oTag = GetObjectByTag("tag");
effect eCurse = EffectCurse(4, 4, 4, 4, 4, 4);

if(!GetIsPC(oPC)) return;

if(!GetIsDead(oTag)) return;

ApplyEffectToObject(1, eCurse, oPC, 10.0);
}


Сообщение отредактировал -fenix- - Aug 12 2005, 08:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DroWishSoul
сообщение Aug 12 2005, 11:01
Сообщение #1809


Level 3
*

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



Я пробовал убирать oPC = GetMaster(oPC)
все равно не работает. Не знаю, почему. Может, я с эффектом наглючил?
Добавлено в [mergetime]1123834605[/mergetime]
Извиняюсь, все заработало. Спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Scaled
сообщение Aug 12 2005, 13:38
Сообщение #1810


Level 3
*

Класс: Волшебник
Характер: True Neutral
Раса: Человек



Мучил, мучил я систему смерть\воскрешение. Вот что получилось.

Создаем обьект - труп, обьект - сумочка

На труп в OnSpellCast(вродек так называеться)
Neverwinter Script Source
void main()
{

  if (GetResRef(OBJECT_SELF) != "pc_corpse") return;
  object oPC = GetLocalObject(OBJECT_SELF, GetName(oPC));
  if (oPC == OBJECT_INVALID) return;

  int nPenalty;
  int nSpell = GetLastSpell();
  if (nSpell == SPELL_RAISE_DEAD)
    nPenalty =100*GetHitDice(oPC);
  else if (nSpell==SPELL_RESURRECTION)
    nPenalty =50*GetHitDice(oPC);
  else return;


  AssignCommand(oPC, ClearAllActions(TRUE));
  AssignCommand(oPC, ActionJumpToLocation(GetLocation(OBJECT_SELF)));


  int nXP = GetXP(oPC);
  int nNewXP = nXP - nPenalty;
  SetXP(oPC, nNewXP);

  DeleteLocalObject(oPC,"oCorpse");
  DestroyObject(OBJECT_SELF, 1.0);
}


OnPlayerRespawn
Neverwinter Script Source
#include "nw_i0_plot"

void ApplyPenalty(object oDead)
{
  int nXP = GetXP(oDead);
  int nPenalty = 250 * GetHitDice(oDead);
  int nHD = GetHitDice(oDead);
  int nNewXP = nXP - nPenalty;
  SetXP(oDead, nNewXP);

}
void main()
{
  object oRespawner= GetLastRespawnButtonPresser();
  object oCorpse = GetObjectByTag("pc_corpse");
  if(GetLocalObject(oCorpse ,"oCorpse")==oRespawner)
    {
  DelayCommand(1.0,DestroyObject(oCorpse));
  AssignCommand(oRespawner,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE01"))));
  ApplyPenalty(oRespawner);
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
  ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
  RemoveEffects(oRespawner);
  DeleteLocalObject(oRespawner,"oCorpse");
  SetImmortal(oRespawner,FALSE);
    } }



OnPlayerDead
Neverwinter Script Source
void main()
{
object oPlayer = GetLastPlayerDied();
location lDiedHere = GetLocation(oPlayer);

string sHelpString="Вы мертвы, если желаете реинкарнироватьсЯ нажмите кнопку Респаун.";
DelayCommand(0.1,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer));
DelayCommand(0.5,AssignCommand(oPlayer,JumpToLocation(GetLocation(GetObjectByTag("WP_RAISE")))));
object oCorpse = CreateObject(OBJECT_TYPE_PLACEABLE,"pc_corpse", lDiedHere,FALSE);
SetLocalObject(oCorpse, "oCorpse",oPlayer);
object oBag = CreateObject(OBJECT_TYPE_PLACEABLE,"pc_bag", lDiedHere,FALSE);
SetImmortal(oPlayer, TRUE);
int nGP = GetGold(oPlayer);
int i=0;
  while(i<14)
    {
    AssignCommand(oBag,ActionTakeItem(GetItemInSlot(i, oPlayer),oPlayer));
    i++;
        }

AssignCommand(oBag,TakeGoldFromCreature(nGP,oPlayer,FALSE));
DelayCommand(6.0,PopUpDeathGUIPanel (oPlayer, TRUE,TRUE,1, sHelpString));
}




Neverwinter Script Source
OnPlayerDyining
void DyingTicker(object oPC)
{
  int iHP=GetCurrentHitPoints(oPC);
  if (iHP>0) {
      RemoveEffect(oPC,EffectBlindness());
      DeleteLocalInt(oPC,"DyingDC");
      DeleteLocalInt(oPC,"STvsDeathSucceed");
      return;
  }
  int iDC;
  int iDam;
  int iSuc;
  if (iHP<-9) { ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDeath(TRUE,TRUE),oPC); }
  else {
      iDam=d4();
      iDC=GetLocalInt(oPC,"DyingDC");
      if (FortitudeSave(oPC,iDC)>0) {
          iDam=iDam/2;
          iSuc=GetLocalInt(oPC,"STvsDeathSucceed")+1;
          SetLocalInt(oPC,"STvsDeathSucceed",iSuc);
          if (iSuc>2) {
              FloatingTextStringOnCreature("Кровотечение прекратилось",oPC,FALSE);
              return;
          }
      }
      AssignCommand(oPC,DelayCommand(6.0,DyingTicker(oPC)));
      ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(iDam), oPC);
      ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBlindness(),oPC,6.0);
      SetLocalInt(oPC,"DyingDC",iDC+1);
  }
}

void main()
{
  object oPC=GetLastPlayerDying();
  if (!GetIsPC(oPC)) return;
  SetLocalInt(oPC,"DyingDC",15);
  SetLocalInt(oPC,"STvsDeathSucceed",0);
  FloatingTextStringOnCreature("У менЯ открылось кровотечение",oPC,FALSE);
  DyingTicker(oPC);
}



Я взял стандарные скрипты предложеные на WRG.RU на слоты OnPlayerDying и на OnSpellCast (на трупе)
pc_corpse - тег и ресреф трупа
pc_bag - тег и ресреф сумочки

В итоге что у меня вышло - После того как хиты персонажа падают за 0 - он теряет сознание и лежит без него пока хиты не упадут за -10. Дальше Смерть - перс переноситься в фугу.....Шмот и деньги сбрасываються в сумку, появляеться труп, через который можно воскресить персонажа. Воскрешение - через кнопку Респан - теряет опыт 250хЛевел. Через Заклы 50хЛевел или 100хЛевел.

Критика и исправление приветствуеться, ибо самому надо чтобы глаз свежий проверил все))))

Далее вопрос:

Я вот пытался сделать, чтобы при руп при нажатии на него выдавал инфу "кто покойник".
В голову не пришло более ничего только это
OnUsed
Neverwinter Script Source
void FRAZA(object oD)
{
object oPlayer =  GetLocalObject(oD, "oCorpse");
string nm = GetName(oPlayer);
string s1="Здесь лежит"+nm+"";
AssignCommand(oD,DelayCommand(1.0,SpeakString(s1)));
}
void main()
{
object oPC = GetLastUsedBy();
object oD =OBJECT_SELF;
FRAZA(oD);
}

Но он чего-то не фурычит когда игрок выходит с сервера...
Большая прозьба внимательно посмотреть все или даже опробывать - если есть ошибки сообщить.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



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