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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 120 121 122 123 124 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
greye
сообщение Nov 24 2008, 21:06
Сообщение #3011


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Как и где определяется в игре, будет ли существо умерщвлено жестоко или нет(месиво или нет)? В EffectDeath есть параметр nSpectacularDeath, отвечающий за это, но для начала мне надо отконтролить его срабатывание в модуле.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Nov 25 2008, 16:58
Сообщение #3012


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

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Цитата
Как и где определяется в игре, будет ли существо умерщвлено жестоко или нет(месиво или нет)? В EffectDeath есть параметр nSpectacularDeath, отвечающий за это, но для начала мне надо отконтролить его срабатывание в модуле.


Да там есть такой параметр, но особой разницы я не увидела...если хочешь жестко, то тебе нужны спецэффекты разбрасывания костей и кровищи...они есть в стандартном наборе
все эффекты,которые можно задавать скриптово, можно глянуть в visualeffect.2da....как то так называется.
Кстати есть интересная анимация - судороги...с взрывом кровищи и последующем создавании плэйсов было бы эффектно ^ ^

P.S. на ваулте можно найти плэйсовые куски рук и ног, голов...там этого полно ))

Сообщение отредактировал Melisse - Nov 25 2008, 17:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Nov 25 2008, 17:17
Сообщение #3013


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Цитата(greye @ Nov 24 2008, 21:06) *
Как и где определяется в игре, будет ли существо умерщвлено жестоко или нет(месиво или нет)? В EffectDeath есть параметр nSpectacularDeath, отвечающий за это, но для начала мне надо отконтролить его срабатывание в модуле.
Не уверен, но на это может влиять настройка в SetIsDestroyable.
Хотя подозреваю, что это где-нибудь в 2da определяется.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Nov 25 2008, 19:48
Сообщение #3014


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



2Melisse )) Спасибо за идею с эффектами, не думал об этом.
2virusman В 2da я этого не нашел, но SetIsDestroyable хватает для работы, спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Nov 29 2008, 10:43
Сообщение #3015


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Вопрос наполовину глупый: как можно выйти из очереди OnDeath события? Мне надо поставить с него команду, но так, чтобы она выполнялась без флага "умирающий".
P.S. Прошу прощения за даблпост.

Обошелся без этого, но вопрос остается: можно ли вызвать команду так, чтобы она была в очереди другого события?
SignalEvent это не то, т.к. все равно последующие команды идут в очередь основного события(по-крайней мере, по действию).

Сообщение отредактировал greye - Nov 29 2008, 13:36
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Dec 7 2008, 09:45
Сообщение #3016


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

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



greye, опиши задачу. Так будет проще думать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Dec 7 2008, 10:17
Сообщение #3017


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Цитата(greye @ Nov 29 2008, 10:43) *
Вопрос наполовину глупый: как можно выйти из очереди OnDeath события? Мне надо поставить с него команду, но так, чтобы она выполнялась без флага "умирающий".
P.S. Прошу прощения за даблпост.

Обошелся без этого, но вопрос остается: можно ли вызвать команду так, чтобы она была в очереди другого события?
SignalEvent это не то, т.к. все равно последующие команды идут в очередь основного события(по-крайней мере, по действию).
AssignCommand? Действия назначаются не на события, а на объекты.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Dec 7 2008, 11:06
Сообщение #3018


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Я уж и забыл про это. В общем, мне надо было SetIsDestroyable(FALSE) ставить в скрипт OnDeath при некоторых условиях, после чего было воскрешение, соответственно, сразу за ним необходимо было вернуть SetIsDestroyable(TRUE), но в таком случае крич исчезал согласно corpse fade time. Любые перенаправления в OnUserDefined или через ExecuteScript приводили к тому же.

Сообщение отредактировал greye - Dec 7 2008, 11:18
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Dec 7 2008, 11:30
Сообщение #3019


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Видимо, флаг, заданный SetIsDestroyable, отрабатывает до события OnDeath. Так что лучше поставить SetIsDestroyable(FALSE) на спауне, а при смерти либо "добивать", либо нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Dec 7 2008, 11:49
Сообщение #3020


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Это да, просто я забыл еще сказать, что это может происходить с одним существом много раз, то есть OnSpawn тут не поможет, так как надо было, чтобы это значение менялось туда-обратно при каждом выполнении.

Добавлено: не каждый раз, а при определенных условиях, другое дело, что эти условия могут много раз повторяться.
P.S. Да и еще, проблема была также с тем, что если этот флаг оставить FALSE, то при убийстве крича будет невидимая подвеска < name> dead, что тоже неприятно, поэтому и надо было переставлять флаг.

Сообщение отредактировал greye - Dec 7 2008, 12:11
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Dec 7 2008, 12:06
Сообщение #3021


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



А зачем тебе тогда SetIsDestroyable трогать, если каждый раз существо будет воскрешаться?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Андрей ЮП
сообщение Dec 9 2008, 03:46
Сообщение #3022


Level 2
*

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



Товарищи, подскажите пожалуйста, как составить скрипт, чтобы, например персонажа арестовали и сажают в тюрьму, при этом у него забирают все его вещи из инвентаря и все что на нем, но потом, когда его выпускают из тюрьмы, все вещи ему возвращают обратно. Мне интересно, как должны выглядеть скрипты на такую манипуляцию с вещами персонажа? Перерыл форум, смотрел в других модулях - ничего такого похожего ненашел. Может кто-нибудь знает?

С уважением, Андрей ЮП.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kamita
сообщение Dec 9 2008, 08:42
Сообщение #3023


Level 1


Класс: Фея
Характер: Chaotic Good
Раса: Фея



Это целый цикл скриптов.
Очень широкий вопрос, слишком много тонкостей. Например:
Как ты хочешь чтобы это выглядело - кат сценой или игровой процесс...сжали в тюрму - вели или просто персонаж прыгл в тюрму после ареста...
Эти нюансы прямо пропорциональны количеству скритов и времени затраченного на их синхронизацию.


А вообще все функции действий описаны ТУТ
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 9 2008, 09:29
Сообщение #3024


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

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



нене, там не те функции.
Андрей ЮП, глянь ПЛ, первую главу. Тот эпизод, где игрока огревают по башке и он оказывается у Ви.
Но вообще все просто, скрипт отбора всех вещей есть (выкладывался не раз, обычно юзают в начале модуля. Просто надо до дестроя добавить копирвание в сундук). Ну а вернуть обратно - все тоже самое, но объекты (игрок-сундук) местами меняются. А как это все обставлено (стража, катсцена, тюрьма) - это уже совсем другая история.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Dec 9 2008, 11:09
Сообщение #3025


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

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



Андрей ЮП, еще можешь глянуть в ПВ скрипты которые срабатывают при попытке украсть что-то. Но боюсь разобраться будет в них сложно...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Андрей ЮП
сообщение Dec 10 2008, 01:49
Сообщение #3026


Level 2
*

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



Цитата(Kamita @ Dec 9 2008, 08:42) *
Как ты хочешь чтобы это выглядело - кат сценой или игровой процесс...сжали в тюрму - вели или просто персонаж прыгл в тюрму после ареста...

Товарищ Kamita, это я уже все сделал. Продолбался целый день, но сделал. С помощью не сложных скриптов, переменных и тэгов. Я сделал не тюрьму, а карцер (типа как КПЗ (IMG:style_emoticons/kolobok_light/biggrin.gif) ) Устроил мордобой в населенном пункте, нагрубил солдату или другому представителю власти и персонажа арестовывают (надо будет еще на воровство сделать арест...). Отсидев в камере, персонаж должен либо заплатить штраф, либо его отправят на принудительные работы, после чего отпустят. Тут у меня все получилось, кроме вот этой проблемы с вещами персонажа. Получается как-то глупо: нарушитель правопорядка оказывается в камере с оружием, в броне, и всеми вещами. Это неправильно.

Цитата(Lex @ Dec 9 2008, 09:29) *
Андрей ЮП, глянь ПЛ, первую главу. Тот эпизод, где игрока огревают по башке и он оказывается у Ви.

Уже смотрел, товарищ Лекс, не смог понять где там и что. Но попробую еще раз, может разберусь.

Цитата(Lex @ Dec 9 2008, 09:29) *
Просто надо до дестроя добавить копирвание в сундук).

Вот на этом моменте бы поподробнее... (IMG:style_emoticons/kolobok_light/declare.gif) Я попробую. Спасибо!

Цитата(Lex @ Dec 9 2008, 09:29) *
А как это все обставлено (стража, катсцена, тюрьма) - это уже совсем другая история.

Ну это намного проще, чем скрипты составлять (IMG:style_emoticons/kolobok_light/declare.gif)

Цитата(Aiwan @ Dec 9 2008, 11:09) *
Андрей ЮП, еще можешь глянуть в ПВ скрипты которые срабатывают при попытке украсть что-то. Но боюсь разобраться будет в них сложно...

Спасибо, товарищ Aiwan! Это тоже посмотрю.

Всем спасибо за полезные советы!

С уважением, Андрей ЮП.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Dec 10 2008, 06:14
Сообщение #3027


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Тут для нашего иодернизированного модуля потребовался такой арест и водворение в тюрьму... В общем это целая система скриптов, но судь идеи в том, что нужно сперва крутануть цикл на нахождение и перенос сумок из инвентаря героя, а затем лишь чистить шмотки... Чего не было сделано в Леворе, поэтому многие и матерились... (IMG:style_emoticons/kolobok_light/biggrin.gif) Вот тебе скриптик, надеюсь поможет.
Neverwinter Script
//:://////////////////////////////////////////////////
//:: АРЕСТ ГЕРОЯ ЗА НАПАДЕНИE НА ПРОСТОЛЮДИНОВ
//:: Created By: Gennady
//:: File Name: stop_commoner
//:://////////////////////////////////////////////////
#include "ludi"

// ДАТЬ И ОПОЗНАТЬ ПРЕДМЕТЫ
// string sItem - ResRef предмета
// object oTarget - Объект или существо кому дать
// int iKol - Количество предметов
// int iStack=1 - Количество предметов в стеке
void CreateItemSklad(string sItem, object oPC, int iKol=1, int iStack=1);

void CreateItemSklad(string sItem, object oPC, int iKol=1, int iStack=1)
{
while(1 <= iKol)
{
  if(iKol < iStack) iStack = iKol;
  object oItem = CreateItemOnObject(sItem, oPC, iStack);
  SetIdentified(oItem, TRUE); // опознать
  iKol-=iStack;
}
}
////////////////////////////////////////////////////////////////////////////////
void DeletItem(object oPC, object oSklad)
{
object oItem = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItem))
    {
    string sTag = GetTag(oItem);
    int iDestroy = 0;
    if (sTag == "itm_magsteleport" || sTag == "itm_magstelepor1")
    {iDestroy = 1; SetLocalInt(oPC, "MARSHIK_COMMONER", 1);}
    if(iDestroy == 0)
    CopyItem(oItem, oSklad);
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oPC);
    }
    // ***** Оденем *****
  object oMan = CreateItemOnObject("t_roba_a", oPC, 1); // Роба
  AssignCommand(oPC, ClearAllActions(TRUE));
  AssignCommand(oPC, ActionEquipItem(oMan,INVENTORY_SLOT_CHEST)); // Роба
  AssignCommand(oPC, ActionSpeakString("Я что в тюрьме?"));
  FadeFromBlack(oPC, FADE_SPEED_SLOW); // Уберем занавес
  if(GetLocalInt(oPC, "MARSHIK_COMMONER")==1)
  SetCustomToken(2202, "Да, совсем забыл… Я вам верну маршрутизатор.");
  else
  SetCustomToken(2202, "");
  if(GetLocalInt(oPC, "VOR_COMMONER")>=10)
  {
    DelayCommand(1.0, ReputationTorg(-1));
    SetLocalInt(oPC, "VOR_COMMONER", 0);
    SetLocalInt(oPC, "R2_NPC_OSKAR", 1);// ДЛЯ ДИАЛОГА С ЗАКЛЮЧЕННЫМ
  }
  else
  DelayCommand(1.0, ReputationTorg(-3));
  DelayCommand(1.1, SendMessageToPC(oPC, "<c у >Прошло три часа... Вас доставили в тюрьму...</c>"));
}
////////////////////////////////////////////////////////////////////////////////
void Arest(object oPC, object oWP)
{
int iGold = GetGold(oPC);
int i, iShtraf = iGold/10; //Размер штрафа
int iT = GetTimeHour();
object oSklad = GetObjectByTag("SKLAD_COMMONER");
object oItem = GetFirstItemInInventory(oPC);

if(GetLocalInt(oPC, "VOR_COMMONER")>=10)
iShtraf = iGold/50; //Размер штрафа
SetCustomToken(2201, IntToString(iShtraf));
SetLocalInt(oPC,"GOLD_TURMA", iGold); // золото
SetTime(iT+3,0,0,0);
SetLocalLocation(oPC, "STOP_LOC_COMMONER", GetLocation(oPC)); // ТОЧКА ВОЗВРАТА
CreateItemSklad("nw_it_gold001", oSklad, iGold-iShtraf, 50000);
TakeGoldFromCreature(iGold, oPC, TRUE); // забрать золото
SetStandardFactionReputation(STANDARD_FACTION_COMM
ONER, 50, oPC);
SetLocalInt(GetModule(),"REP_COMMONER",0);
JumpFirstPC(oWP);

    while(GetIsObjectValid(oItem))
      {
      if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
      AssignCommand(oPC, ActionGiveItem(oItem, oSklad)); // Дать сумку или предмет
      oItem = GetNextItemInInventory(oPC);
      }
    for (i = 0; i < NUM_INVENTORY_SLOTS; i++)
      {
      oItem = GetItemInSlot(i, oPC);
      if (GetIsObjectValid(oItem))
      {
        CopyItem(oItem, oSklad);
        DestroyObject(oItem);
      }
      }
  DelayCommand(7.0, DeletItem(oPC, oSklad));
}
////////////////////////////////////////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
object oMod = GetModule();
object oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 50.0,GetLocation(oPC),TRUE);
object oStop = GetWaypointByTag("STOP_COMMONER");
object oZak = GetObjectByTag("NPC_OSKAR");//Заключенный
effect ePar = EffectCutsceneParalyze();// Эффект парализации
effect eOtz = EffectVisualEffect(VFX_IMP_UNSUMMON);// Отзыв животного
effect eSM3 = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);// ГолубаЯ  звезда
float Time = 17.0;
float fAngle = GetFacing(oPC);
location Loc1 = CreateLocation(oPC, 3.0, fAngle+120.0, 0.0, fAngle);
location Loc2 = CreateLocation(oPC, 3.0, fAngle-120.0, 0.0, fAngle);
string sSt1 = "<c у >Вы нарушили закон Империи! Убили важного гражданина!</c>";
string sSt2 = "<cюa >Вас ждет арест и суд! Пошли!</c>";

if(GetLocalInt(oPC, "VOR_COMMONER")>=10)
  {
  sSt1 = "<c у >Стой! Сколько можно воровать? Вас ждет арест и суд!</c>";
  sSt2 = "<cюa >Спокойно воришка, и без глупостей! Пошли!</c>";
  }
  while (GetIsObjectValid(oNPC))  // Все существа в радиусе 30 метров
  {
    AssignCommand(oNPC, ClearAllActions(TRUE));
    if(oNPC != oPC)
    AssignCommand(oMod, DelayCommand(Time+5.0, AssignCommand(oNPC, ClearAllActions(TRUE))));
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePar, oNPC, Time);
    if (oPC==GetMaster(oNPC))
      {
        if(oNPC!= GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC))
        {
          ApplyEffectToObject(DURATION_TYPE_INSTANT, eOtz, oNPC);
          DestroyObject(oNPC, 2.0);
        }
        else RemoveHenchman(oPC, oNPC); // Удалить спутника
      }
    oNPC = GetNextObjectInShape(SHAPE_SPHERE, 50.0, GetLocation(oPC), TRUE);
  }

if(GetGender(oPC)==GENDER_FEMALE && GetGender(oZak)==GENDER_MALE)
  {
  location Loc3 = GetLocation(oZak);
  DestroyObject(oZak);
  DelayCommand(3.0, CreateObjectN(OBJECT_TYPE_CREATURE, "zak_oskar_gg", Loc3));
  }
AssignCommand(oPC, SpeakString("Что случилось?"));
  object oStraz1 = CreateObject(OBJECT_TYPE_CREATURE, "straz", Loc1);
  object oStraz2 = CreateObject(OBJECT_TYPE_CREATURE, "straz", Loc2);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eSM3, Loc1);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eSM3, Loc2);
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePar, oStraz1, Time));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePar, oStraz2, Time));
DelayCommand(6.0, AssignCommand(oStraz1, SpeakString(sSt1)));
DelayCommand(6.0, PlayVoiceChat(VOICE_CHAT_NO, oStraz2));
DelayCommand(12.0, AssignCommand(oStraz2, SpeakString(sSt2)));
DelayCommand(15.0, PlayVoiceChat(VOICE_CHAT_YES, oStraz1));
DelayCommand(Time, FadeToBlack(oPC, FADE_SPEED_FASTEST)); // Занавес
DelayCommand(Time+0.1, Arest(oPC, oStop));
DestroyObject(oStraz1, Time);
DestroyObject(oStraz2, Time);
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Dec 14 2008, 14:48
Сообщение #3028


Level 3
*

Класс: Псионик
Характер: Chaotic Neutral
Раса: Тварь



Вот еще один вопрос насчет скрипта: (В кампаниях не нашел ничего подобного, к сожалению)
Каждые 20 секунд НПС телепортируется на случайный вейпоинт из шести. При этом показывается визуальный эффект.
Заранее, опять таки, спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Dec 14 2008, 15:34
Сообщение #3029


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

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Neverwinter Script
const string NPC_WP_TAG = "NPC_WP_TAG";
const int NPC_VFX = 24;
const float NPC_TELEPORT_TIME = 20.0f;

void Teleport(object oNPC);

void main()
{
    Teleport(OBJECT_SELF);
}

void Teleport(object oNPC)
{
    object oCurrentWP = GetNearestObjectByTag(NPC_WP_TAG, oNPC), oWP;

    do
        oWP = GetObjectByTag(NPC_WP_TAG, d6());
    while(oWP != oCurrentWP);

    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(NPC_VFX), oNPC);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneImmobilize(), oNPC, 1.0f);

    DelayCommand(1.05f, AssignCommand(oNPC, JumpToObject(oWP)));

    DelayCommand(NPC_TELEPORT_TIME, Teleport(oNPC));
}
Функцию вызывать из onSpawn непися (IMG:style_emoticons/kolobok_light/smile.gif) Вейпоинты должны иметь тег, указанный в константе NPC_WP_TAG. При этом объектов с таким тегом в модуле больше быть не должно.

Сообщение отредактировал Ilerien - Dec 14 2008, 15:36
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Dec 14 2008, 15:58
Сообщение #3030


Level 3
*

Класс: Псионик
Характер: Chaotic Neutral
Раса: Тварь



За скрипт еще раз спасибо.
Цитата(Ilerien @ Dec 14 2008, 15:34) *
При этом объектов с таким тегом в модуле больше быть не должно.

А вот это можно было и не писать, т.к. и ежу понятно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Андрей ЮП
сообщение Dec 15 2008, 02:08
Сообщение #3031


Level 2
*

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



Цитата(gennady @ Dec 10 2008, 06:14) *
Тут для нашего иодернизированного модуля потребовался такой арест и водворение в тюрьму... В общем это целая система скриптов, но судь идеи в том, что нужно сперва крутануть цикл на нахождение и перенос сумок из инвентаря героя, а затем лишь чистить шмотки... Чего не было сделано в Леворе, поэтому многие и матерились... Вот тебе скриптик, надеюсь поможет.

Товарищ gennady, спасибо конечно, но я в этом скрипте не все понял. Дело в том, что процесс ареста и пр. наглядной рутины у меня уже и так есть. Меня интересует именно - скрипт отбирание вещей с их сохранением и скрипт возврата этих сохраненных вещей. В вашем большом скрипте это есть, но лишнее сбивает меня с толку. Если нетрудно, выложите отдельные скрипты на отбирание и возврат вещей, хорошо бы с комментариями. Заранее благодарен.


С уважением, Андрей ЮП.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Dec 15 2008, 06:28
Сообщение #3032


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Neverwinter Script
// ДАТЬ И ОПОЗНАТЬ ПРЕДМЕТЫ (ДЛЯ ОБРАБОТКИ ЗОЛОТА)
// string sItem - ResRef предмета
// object oTarget - Объект или существо кому дать
// int iKol - Количество предметов
// int iStack=1 - Количество предметов в стеке
void CreateItemSklad(string sItem, object oPC, int iKol=1, int iStack=1);

void CreateItemSklad(string sItem, object oPC, int iKol=1, int iStack=1)
{
while(1 <= iKol)
{
  if(iKol < iStack) iStack = iKol;
  object oItem = CreateItemOnObject(sItem, oPC, iStack);
  SetIdentified(oItem, TRUE); // опознать
  iKol-=iStack;
}
}
//////////////  ЗАБРАТЬ ВЕСЬ ИНВЕНТАРЬ И ОДЕТЬ ГЕРОЯ В РОБУ    /////////////////
void DeletItem(object oPC, object oSklad)
{
object oItem = GetFirstItemInInventory(oPC);
int i;
// ИНВЕНТАРЬ
while(GetIsObjectValid(oItem))
    {
    CopyItem(oItem, oSklad);
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oPC);
    }
// СЛОТЫ
    for (i = 0; i < NUM_INVENTORY_SLOTS; i++)
      {
        oItem = GetItemInSlot(i, oPC);
        if (GetIsObjectValid(oItem))
        {
          CopyItem(oItem, oSklad);
          DestroyObject(oItem);
        }
      }
    // ***** Оденем *****
  object oMan = CreateItemOnObject("t_roba", oPC, 1); // Роба
  AssignCommand(oPC, ClearAllActions(TRUE));
  AssignCommand(oPC, ActionEquipItem(oMan,INVENTORY_SLOT_CHEST)); // Роба
}
/////////////////  ЗАБРАТЬ ВСЕ СУМКИ ГЕРОЯ  ////////////////////////////////////
void CopyBase(object oPC, object oSklad)
{
object oItem = GetFirstItemInInventory(oPC);
    while(GetIsObjectValid(oItem))
      {
      if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
      AssignCommand(oPC, ActionGiveItem(oItem, oSklad)); // Дать сумку или предмет
      oItem = GetNextItemInInventory(oPC);
      }
}
////////////////////////////////////////////////////////////////////////////////
void main()
{
object oPC = GetFirstPC();
object oSklad = GetObjectByTag("SKLAD_ITEM");
int iGold = GetGold(oPC); // золото

// забрать золото и положить его в сундук
CreateItemSklad("nw_it_gold001", oSklad, iGold, 50000);
TakeGoldFromCreature(iGold, oPC, TRUE);
///////////////////////////////////////////
// забрать все сумки
CopyBase(oPC, oSklad);
//////////////////////////////////////////
// забрать все шмотки
DelayCommand(2.0, DeletItem(oPC, oSklad));
//////////////////////////////////////////
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Андрей ЮП
сообщение Dec 15 2008, 20:17
Сообщение #3033


Level 2
*

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



Огромное спасибо, товарищ gennady! Это как раз то что нужно! Все теперь получается. Правда возврат вещей я решил сделать по другому, не автоматически. Просто герою перед освобождением из карцера открывают тот самый шкаф, куда были перенесены его вещи, и он сам все берет.
Еще раз спасибо!


С уважением, Андрей ЮП.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение Dec 29 2008, 22:15
Сообщение #3034


Level 3
*

Класс: Монах
Характер: Lawful Good
Раса: Эльф



Подскажите что в этом скрипте(скрипт-телепорт на точку после смерти) не так?, он выдает кучу ошибок.

Neverwinter Script
location lRespawnLocation;

string sPlanet = GetLocalString(oRespawner,"planet");
sPlanet = GetStringUpperCase(sPlanet); //Работа со строкой планеты, у тебя просто разные точки используют разный шрифт, эти - верхний
string sFraction = GetLocalString(oRespawner, "fraction");
object wpStart = GetObjectByTag("PLANET"+sPlanet
+"ToBase"+sFraction); //Вэйпоинт на базе

lRespawnLocation = GetLocation(wpStart);
AssignCommand(oRespawner, JumpToLocation(lRespawnLocation));//Прыгаем на вэйпоинт на базе


Сообщение отредактировал Sugo77 - Dec 29 2008, 22:18
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Dec 29 2008, 22:57
Сообщение #3035


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Добавь в начале
Цитата
object oRespawner = GetLastPlayerDying();

А по второму случаю надо было писать
Цитата
object oPC = GetEnteringObject(); if (GetIsPC(oPC)) SetLocalString(oPC, "planet", "Earth");

Прошу прощения за те ошибки, хотя вроде всё было правильно...


Сообщение отредактировал greye - Dec 29 2008, 23:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 120 121 122 123 124 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



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