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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 120 121 122 123 124 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Андрей ЮП
сообщение 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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Jan 17 2009, 11:10
Сообщение #3036


Level 3
*

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



Немного научился я в написании скриптов, но все-равно есть некоторые вопросы -
Этот скрипт висит на "Совершенных Действиях" в диалоге, но не работает. При этом скрипт компяллируется.
Neverwinter Script
void main()
{
        location lSigil = GetLocation(GetNearestObjectByTag("sigil2"));
        object oSigil = CreateObject(OBJECT_TYPE_PLACEABLE,"blueprint",lSigil);
        object oDoor = GetNearestObjectByTag("door");
        object oMark = GetNearestObjectByTag("PlanarBeacon");
        AssignCommand(oDoor,ActionCloseDoor(oDoor));
        AssignCommand(oDoor,ActionLockObject(oDoor));
        DestroyObject(oMark);
}


И еще - Скрипт висит на onDeath одного из НПС. В журнал добавляется, а другой НПС не появляется. Также компяллируется.
Neverwinter Script
void main()
{
        location lTel3 = GetLocation(GetNearestObjectByTag("kaldar_enter"));
        object omage1 = CreateObject(OBJECT_TYPE_CREATURE,"kaldar0",lTel3);
        object oPC = GetFirstPC();
        AddJournalQuestEntry("Drugs", 2, oPC);
}


Сообщение отредактировал Latiss - Jan 17 2009, 11:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jan 17 2009, 11:47
Сообщение #3037


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

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



Вы определяете объекты оператором GetNearestObjectByTag... Тот ли объект нужен? Если в диалоге, то НПСа с которым идет диалог нужно брать как OBJECT_SELF, как в прочем и в скрипте смерти...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Jan 17 2009, 12:02
Сообщение #3038


Level 3
*

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



Цитата(gennady @ Jan 17 2009, 11:47) *
Вы определяете объекты оператором GetNearestObjectByTag... Тот ли объект нужен? Если в диалоге, то НПСа с которым идет диалог нужно брать как OBJECT_SELF, как в прочем и в скрипте смерти...

Все-таки не понял. Можно чуть поподробнее?
Цитата(gennady @ Jan 17 2009, 11:47) *
OBJECT_SELF

А это зачем? Мы же проверяем объект Door (Дверь), Sigil (Вейпоинт, на котором будет стоять знак), Mark (Вейпоинт, который дестроится) в первом скрипте и Tel3 (Вейпоинт на котором появится НПС).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jan 17 2009, 13:38
Сообщение #3039


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

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



Цитата(Latiss @ Jan 17 2009, 12:02) *
Все-таки не понял. Можно чуть поподробнее?
Т.е. нельзя определять НПС или плейс или дверь на котором весит диалог, как объект GetNearestObjectByTag, а нужно обязательно брать OBJECT_SELF, а еще лучше его определить:
Neverwinter Script
object oSelf = OBJECT_SELF; // Объект на котором работает скрипт

Но в вашем случае это не ошибка, т.к. берутся другие объекты. Значит все дело в написание тегов и ресрефов. Задайте все правильно и скрипты будут работать, т.к. в них ошибок...

Сообщение отредактировал gennady - Jan 17 2009, 13:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Jan 17 2009, 14:01
Сообщение #3040


Level 3
*

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



Цитата(gennady @ Jan 17 2009, 13:38) *
Задайте все правильно

Хм... Я провеляр всех их. Написаны вроде бы правильно.
P.S. Аааа... Локацию в которой все эти объекты находилась стала сначала area006, в которой все серое и тулсет вылетал при ее загрузке, а потом мне пришлось ее удалить (IMG:style_emoticons/kolobok_light/cray.gif)
P.P.S Это так - крик души.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Jan 18 2009, 13:33
Сообщение #3041


Level 3
*

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



Я понял в чем суть проблемы - Диалог и скрипт смерти находились в других локациях, нежели в той, где должны были создаваться объекты.
Сегодня написал еще один скрипт и поместил его на onEnter триггера в одной локации (тоже на создание НПС). Он дестроился, но НПС не создавал (В другой локации). Как только поставил его на вход этой локации - Сразу же заработал.
Поэтому придется делать триггеры, а простым диалогом не обойтись...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jan 18 2009, 14:21
Сообщение #3042


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

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



Цитата(Latiss @ Jan 18 2009, 13:33) *
Поэтому придется делать триггеры, а простым диалогом не обойтись...
Чё за чушь... (IMG:style_emoticons/kolobok_light/biggrin.gif) Бери в диалоге объекты как GetObjectByTag или же запиши так:
Neverwinter Script
void main()
{
object oWP = GetObjectByTag("sigil2"); //точка в нужной области с уникальным тегом (определяет объекты во всем модуле)
object oArea = GetArea(oWP); //сама область
// ближайшие к выбранной точке объекты (объекты должны быть только в одной области с oWP)
object oDoor = GetNearestObjectByTag("door", oWP);
object oMark = GetNearestObjectByTag("PlanarBeacon", oWP);
location lSigil = GetLocation(oWP);

object oSigil = CreateObject(OBJECT_TYPE_PLACEABLE,"blueprint",lSigil);
        AssignCommand(oDoor,ActionCloseDoor(oDoor));
        AssignCommand(oDoor,ActionLockObject(oDoor));
        DestroyObject(oMark);
// ПРОВЕРКА
SpeakString("В области" +GetName(oArea)+" создали плейс " +GetName(oSigil));
}


Сообщение отредактировал gennady - Jan 18 2009, 15:15
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Latiss
сообщение Jan 18 2009, 14:59
Сообщение #3043


Level 3
*

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



Хм... А вот этого не знал. Зато теперь буду знать. Спасибо, gennady.
P.S. На досуге не заглянешь в тему Threads of Truth в Главном Зале? Хочется все-таки узнать мнение общественности (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jan 25 2009, 07:56
Сообщение #3044


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

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



Кто знает в каком скрипте описана кнопочка отмены полиморфа??? Нужно срочно! (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jan 25 2009, 13:31
Сообщение #3045


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

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



Цитата(gennady @ Jan 25 2009, 07:56) *
Кто знает в каком скрипте описана кнопочка отмены полиморфа??? Нужно срочно! (IMG:style_emoticons/kolobok_light/biggrin.gif)
Она вшита в движок.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
sowhat
сообщение Feb 12 2009, 17:37
Сообщение #3046


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Доброго всем! Народ, мучает такой вопрос, возможно ли как нить написать на скриптах бота для онлайн шарда?.. Чтобы не писать доп. приложений. Догадываюсь что нет, но хочется в этом убидится. И если вдруг я не прав, киньте линк плз.

--- к вышенаписаному топику ---

В смысле есть ли в НВНке скрипты, для клиентской части, вот)

можно ли выполнить runscript без прописи DebugMode 1 на шарде? народ, хелп плиз, очень срочно нада...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Feb 12 2009, 17:55
Сообщение #3047


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

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



лучше по этому поводу теребить шардовиков, но мне с моей сингловой колокольни видится только 1 вариант запуска скрипта со стороны пользователя - default.nss. Те ХБ чара, причем не только своего, а вообще всех на шарде. Теоретически бота с его помощью написать можно, простенького, типа "убийство всех монстров на карте". Но практически, без данных типа тэгов, точек и зон перехода, будет сложновато сделать что-то путное, если вообще возможно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
sowhat
сообщение Feb 12 2009, 18:13
Сообщение #3048


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Цитата(Lex @ Feb 12 2009, 17:55) *
лучше по этому поводу теребить шардовиков, но мне с моей сингловой колокольни видится только 1 вариант запуска скрипта со стороны пользователя - default.nss. Те ХБ чара, причем не только своего, а вообще всех на шарде. Теоретически бота с его помощью написать можно, простенького, типа "убийство всех монстров на карте". Но практически, без данных типа тэгов, точек и зон перехода, будет сложновато сделать что-то путное, если вообще возможно.


А моно поподробней про default.nss... Де должен находится/как запускать?) Пробывал писать пробные скрипты и запускать на шарде, не хочет =( Одно дело запустуть в модуле через runscript, а тут это не катит =(
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Feb 12 2009, 22:38
Сообщение #3049


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

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



default.nss - это onHeartbeat скрипт игрока, исполняется каждый раунд. Можно попробовать написать какой-нибудь аи для игрового чара, основанный только на этом скрипте, но, думаю, игра не стоит свеч.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
haljavan
сообщение Feb 15 2009, 02:34
Сообщение #3050


Level 1


Класс: Монах
Характер: Lawful Good
Раса: Гном



короче так. нада чтоб у мобов генерировался дроп. желательно с ооочень маленким процентом выпадания.

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

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

 



Текстовая версия Сейчас: 1st May 2024 - 17:29