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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 71 72 73 74 75 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Dec 7 2005, 15:32
Сообщение #1791


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

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



QUOTE (NedWarN @ Dec 7 2005, 03:18)
Lex
Наврятли, :unsure: Они в скриптах создали функции, подходящие для этого. Действа. :D

ответ:
QUOTE (RiPPeR @ Dec 7 2005, 14:02)
Тебе хватит в сервере поставить галочку на ELC


я ж говорил, что есть.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alaron
сообщение Dec 18 2005, 23:55
Сообщение #1792


Level 3
*

Класс: Друид
Характер: Chaotic Neutral
Раса: Эльф



Дамы и Господа, need help.
Нужно сделать либо навык, либо заклинание - массовое "животное переживание", а то как-то обидно, что приручив, например, одного волка, всю остальную стаю приходится отправлять к Сильванусу (или Миликки). У кого-нибудь есть идеи, потому что я в скриптах не понимаю ровным счетом ничего???!!!
Заранее спасибо...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Dec 19 2005, 00:44
Сообщение #1793


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

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



Alan, чтобы сделать свой навык или заклинание, нужно сначала ковырять 2da, а скрипты потом.
Ну а в скрипте пишешь, что тебе угодно например, применение спела DOMINATE ANIMAL на всех в заданном радиусе или на определенное кол-во существ.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alaron
сообщение Dec 21 2005, 23:12
Сообщение #1794


Level 3
*

Класс: Друид
Характер: Chaotic Neutral
Раса: Эльф



-fenix- Скажи, плиз, как в скрипте прописать изменение реакции на глав героя с негатива (атака при контакте) на хотя бы нейтральное отношение???
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NedWarN
сообщение Dec 22 2005, 02:16
Сообщение #1795


Level 5
**

Класс: Маг
Характер: Lawful Good
Раса: Тварь



Alan Этот скриптик, должен поменять реакцыю непися! в зависимости от характера ПК.
Если тебе нужно чтоб атаковали, то добавь функцыю ActionAttack.
Neverwinter Script Source
void main()
{
object oNPC = OBJECT_SELF;
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
if(GetDistanceToObject(oNPC) >= 5.0 && GetDistanceToObject(oPC)<= 10.0)
{
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
{
SpeakString("Вали от сюда");
}
else if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
{
SpeakString("Привет");
}
else if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL)
{
SpeakString("Мммда");
}
}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 22 2005, 02:58
Сообщение #1796


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

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



как часто бывает, ответ не соответствует вопросу.
Имелась ввиду реакия враждебная/нормальная.
Это надо юзать
Neverwinter Script Source
// Make oSource into a temporary enemy of oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the enmity decays over fDurationInSeconds;
//   otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
//   the enmity lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Enmity will only be in effect as long as
// (faction reputation + total personal reputation) <= REPUTATION_TYPE_ENEMY.
void SetIsTemporaryEnemy(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f)

// Make oSource into a temporary friend of oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the friendship decays over fDurationInSeconds;
//   otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
//   the friendship lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Friendship will only be in effect as long as
// (faction reputation + total personal reputation) >= REPUTATION_TYPE_FRIEND.
void SetIsTemporaryFriend(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f)

// Make oSource temporarily neutral to oTarget using personal reputation.
// - oTarget
// - oSource
// - bDecays: If this is TRUE, the neutrality decays over fDurationInSeconds;
//   otherwise it is indefinite.
// - fDurationInSeconds: This is only used if bDecays is TRUE, it is how long
//   the neutrality lasts.
// Note: If bDecays is TRUE, the personal reputation amount decreases in size
// over fDurationInSeconds. Neutrality will only be in effect as long as
// (faction reputation + total personal reputation) > REPUTATION_TYPE_ENEMY and
// (faction reputation + total personal reputation) < REPUTATION_TYPE_FRIEND.
void SetIsTemporaryNeutral(object oTarget, object oSource=OBJECT_SELF, int bDecays=FALSE, float fDurationInSeconds=180.0f)


можно конечно и просто менять отношение фракции НПС.. но это не всегда удобно.

ЗЫ: тэг закрывается / сразу после [, а не перед ]. Больше прощать такое не буду.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Dec 24 2005, 04:10
Сообщение #1797


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



Привет,

Neverwinter Script Source
void main()
{
  object oChair = GetObjectByTag("Tag_Char1", 0);
  object oNPC = OBJECT_SELF;
  AssignCommand(oNPC, ActionSit(oChair));

}

Вот єто получился прикольный скрипт, кидать его на OnHeartBeat(Непися)... Тоесть получается что когда вы нажимаете мышкой на стуле, то Непись бысто садится :).

- Мне нужно его переделать, я хотел что бы Непись просто садился, в чем моя ошибка?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
SeDAl
сообщение Dec 25 2005, 21:36
Сообщение #1798


Level 1


Класс: Друид
Характер: True Neutral
Раса: Эльф



Помогите, пожалуйста, нужен скрипт, который будет скрывать плейсейблы днем и показывать ночью... Какой скрипт, куда вставлять...
(Светлячки появляются ночью и прячутся днем)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Dec 25 2005, 22:51
Сообщение #1799


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

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



QUOTE (SeDAl @ Dec 25 2005, 22:36)
Помогите, пожалуйста, нужен скрипт, который будет скрывать плейсейблы днем и показывать ночью... Какой скрипт, куда вставлять... (Светлячки появляются ночью и прячутся днем)

Делаем в области невидимый(а можно и нет) объект и на его OnHeartbeat кидаем скрипт(можно на OnHeartbeat локи), который будет разрушать плейсы днем и криэйтить ночью.
И на хертбит светлячков нужно ставить скрипт, который ночью их будет прогонять в чащу леса, а ночью возвращать обратно или на OnHeartbeat объекта/локи дестроить и криэйтить их.
Делается так:
Neverwinter Script Source
void main()
{
//это наши плейсы
object oObject_1 = GetObjectByTag("ТАГ первого");
object oObject_2 = GetObjectByTag("ТАГ второго");
object oObject_3 = GetObjectByTag("ТАГ третьего");
//это вейпы. они обозначают место, на котором создаются плейсы ночью
object oWP_1 = GetWaypointByTag("ТАГ первого");
object oWP_2 = GetWaypointByTag("ТАГ второго");
object oWP_3 = GetWaypointByTag("ТАГ третьего");

//ночью
if (GetIsNight())//если ночь
    {
    if (GetLocalInt(OBJECT_SELF, "Night") != 1)//если локалка не равняется 1
        {
        //устанавливаем локалки
        SetLocalInt(OBJECT_SELF, "Day", 0);
        SetLocalInt(OBJECT_SELF, "Night", 1);
        //создаем плейсы
        CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса1", GetLocation(oWP_1));
        CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса2", GetLocation(oWP_2));
        CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса3", GetLocation(oWP_3));
        return;
        }
    else return;
    }

//утром
if (GetIsDay())
    {
    if (GetLocalInt(OBJECT_SELF, "Day") != 1)//если локалка не равняется 1
        {
        //устанавливаем локалки
        SetLocalInt(OBJECT_SELF, "Night", 0);
        SetLocalInt(OBJECT_SELF, "Day", 1);
        //уничтожаем объекты
        DestroyObject(oObject_1);
        DestroyObject(oObject_2);
        DestroyObject(oObject_3);
        return;
        }
    else return;
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
SeDAl
сообщение Dec 26 2005, 17:50
Сообщение #1800


Level 1


Класс: Друид
Характер: True Neutral
Раса: Эльф



Этот скприт подойдет под любой плейсейбл? Это как общий вид? Или нет, можите еще тогда выложить общий скрипт, подходящий для любых плейсейблов. За этот спасибо :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Dec 26 2005, 17:55
Сообщение #1801


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

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



Да подойдет под любой :)
Ставь желательно нивидемый обьект, скриптик на OnHeartbeat и вперед.
PS: феникс ведь все расписал...

Сообщение отредактировал Dik Morris - Dec 26 2005, 17:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
SeDAl
сообщение Dec 26 2005, 17:56
Сообщение #1802


Level 1


Класс: Друид
Характер: True Neutral
Раса: Эльф



и можно подробнее рассказать об этом:
QUOTE
//это вейпы. они обозначают место, на котором создаются плейсы ночью
object oWP_1 = GetWaypointByTag("ТАГ первого");
object oWP_2 = GetWaypointByTag("ТАГ второго");
object oWP_3 = GetWaypointByTag("ТАГ третьего");


И что такое "ResRes_плейса1"?

Сообщение отредактировал SeDAl - Dec 26 2005, 18:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Dec 26 2005, 18:06
Сообщение #1803


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

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



Neverwinter Script Source
//это вейпы. они обозначают место, на котором создаются плейсы ночью
object oWP_1 = GetWaypointByTag("ТАГ первого");
object oWP_2 = GetWaypointByTag("ТАГ второго");
object oWP_3 = GetWaypointByTag("ТАГ третьего");

Вейпы:
Вайпоинты. (Точки маршрута, в русс. версии)
В данном скрипте, они определяют место где создадутся нужные тебе плейсы. Т.е на том месте где ночью должны быть плейсы, поставь вайпоинты. (плейсы не размещай)
PS: старайся редактировать старые сообщения, ведь форум не резиновый. =)
Так же советую прочитать различные мануалы (раздел файлы) + на форуме огромное кол-во статей в помощь новичкам. ;)
********************************
QUOTE
И что такое "ResRes_плейса1"?

Не: ResRes, а ResRef.
Служебное имя, уникальное для каждого предмета.
Присваивается когда имя создания/плейса/итема/и т.п пишется англ. буквами
********************************
Например:
Neverwinter Script Source
void main()
{
CreateItemOnObject("nw_it_gem012", GetPCSpeaker(), 1);
//Выдаем предмет по ResRes.
}


Сообщение отредактировал Dik Morris - Dec 26 2005, 18:32
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
SeDAl
сообщение Dec 26 2005, 18:20
Сообщение #1804


Level 1


Класс: Друид
Характер: True Neutral
Раса: Эльф



Значит я не ставлю сам плейсейбл на локацию. Ставлю вейпоинт в то место, где должен появляться плейсейбл.
в строке
QUOTE
object oObject_1 = GetObjectByTag("ТАГ первого");

пишу тег плейсейбла
QUOTE
object oWP_1 = GetWaypointByTag("ТАГ первого");

пишу тег вейпоинта
QUOTE
CreateObject(OBJECT_TYPE_PLACEABLE, "ResRes_Плейса1", GetLocation(oWP_1));

ResRef плейса
Так все? У меня не работает что-то.
Так ResRes и ResRef - это одно и тоже? В скрипт нельзя писать ResRef заместо ResRes?
И еще могут быть имена, теги и РесРефи одинаковыми?

Сообщение отредактировал SeDAl - Dec 26 2005, 18:54
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Dec 27 2005, 10:48
Сообщение #1805


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

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



SeDAl я тебе даю скрипт, он делает вот что: есть невидимый объект. У него в слоте (любом) стоит эот скрипт. Любом я конечно пошутил, но я имею ввиду нужном тебе. У меня он стоит на OnUserDefaine. Можно хоть на хертбит, главное НАСТРОЙ УСЛОВИЕ КОГДА ОН СРАБОТАЕТ. Его суть. На этом невидимом объекте вешаем локальные стринги ResRef_PLC_1, ResRef_PLC_2 и т.д. равные ResRef-у объектов что должны создаться. Сам скрипт определит сколько их и создаст каждый раз уникальный из общего числа. Дальше. Если тебе нужно строгое положение, то предварительно поставь объект на локацию. Если тебе нужно разное расположение то тут, то дальше присвой на него "RandomLocation" LocalFloat равную метрам твоего круга. Ну присвоил ты 10, значит на 10 метрах по огружности он будет создаваться каждый раз. Дальше, если ничего не установить, то создаваться будет прямо на месте этого невидимого объекта. Скрипт рабочий, заточи под себя.
Таги. Невидимый объект - это общий таг группы. А все объекты создадутся в таком виде "AM_PLC_SP_"+ТАГ НЕВИДИМОГО ОБЪЕКТА. Соответсвенно, если тебе нужено строгое положение всех спавнящих плейсов, то поставь один такой в любом углу поверни как надо и все следующие пудут на нем спавниться. Зачем такие сложности? Вот у меня есть плейсы кристаллов на стенах. Их поймать трудно куда спавняться, а так я поставил его один раз и забыл. Каждый раз вхожу как бы в новую локацию, кристаллы меняются на стенах и полу. Так же и НПС. Но это уже совсем другой скрипт и настройки...

Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnUserDefaine  am_cud_spawn
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
    СКРИПТ НЕПОСРЕДСТВЕННО ИСПОЛНЯЕТ ОБМЕН PLC_
    ОБЪЕКТОВ В ЛОКАЦИЯХ В СЛУЧАЕ РАЗРУШЕНИЯ И
    В СЛУЧАЕ ВХОДА РС В ЛОКАЦИЮ ПО СИГНАЛУ

  Скрипт спавнящий разных PLC объекты на локациях.
  AM_PLC_SP_[+ТАГ OBJECT_SELF] - наши объекты.
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 28.11.2005
//:://///////////////////////////////////////////
location CreateRandomLocation(object oTarget, float fRadius, int bOnLine = TRUE)
{
if(!bOnLine)
fRadius=IntToFloat(Random(FloatToInt(fRadius)));

float iXO=VectorMagnitude(GetPosition(oTarget))*cos(VectorToAngle(GetPosition(oTarget)));
float iYO=VectorMagnitude(GetPosition(oTarget))*sin(VectorToAngle(GetPosition(oTarget)));
float fRndomAngle=IntToFloat(Random(360));
location lNEW=Location(GetArea(oTarget),Vector(iXO+fRadius*cos(fRndomAngle),iYO+fRadius*sin(fRndomAngle)),360.0);
return lNEW;
}

void Debug(string message)
{
    object oPC = GetFirstPC();
    if (!GetLocalInt(GetModule(), "DEBAG_PC"))
    {
      SendMessageToPC(oPC, "Debag message: "+message);
    }
    if (!GetLocalInt(GetModule(), "DEBAG_DM"))
          {
            SendMessageToAllDMs("Debag message to DMs: "+message);
          }
}

void main()
{

  int nEvent = GetUserDefinedEventNumber();
  if (GetLocalInt(OBJECT_SELF, "STOP")) return; // Отключаем, если надо
  if (GetLocalInt(OBJECT_SELF, "DAYS_WAITING")>0) return;
//======================== USER DEFINED EVENT===================================
    if (nEvent == 7000)
  // nEvent == 7000 - сигнализируем скриптом. У меня так, у тебя может быть другое
    {
    if (GetLocalInt(OBJECT_SELF, "STOP"))
      return;

      object oSelf = OBJECT_SELF;
      string sTag = GetTag(oSelf); // Таг невидимого объекта (Общий таг группы)
      object oPlc = GetNearestObjectByTag("AM_PLC_SP_"+sTag);
      int i=1;
      string sResRef = GetLocalString(oSelf, "ResRef_PLC_"+IntToString(i));
      object oNext; // Следующий объект на это место
      location lLoc; // Место где появляется наш объект

    // Задержка для стандартных объектов, зависит от имени OBJECT_SELF
    if(GetName(oSelf)=="Spawn PLC System")
      SetLocalInt(oNext, "DAYS_WAITING", Random(5)+1);

      float f = GetLocalFloat(oSelf, "RandomLocation");
      if(f!=0.0)lLoc = CreateRandomLocation(oSelf, f);
      // Если установить на скрытый объект LocalFloat == "RandomLocation"
      // то ее значение будет радиусом на которм будет пояляться объект.
      // Если поставить один объект в точку, то все следующие будут
      // появляться на его месте. Если не ставить НИЧЕГО, то все объекты
      // будут создаваться на этом невидимом объекте.

      if(f==0.0)
      {
            if(!GetLocalInt(oSelf, "DO_THIS"))
            {
              if(oPlc != OBJECT_INVALID)
              {
                SetLocalLocation(oSelf, "SPAWN", GetLocation(oPlc));
              }
              else
                  {
                    SetLocalLocation(oSelf, "SPAWN", GetLocation(oSelf));
                  }
              SetLocalInt(oSelf, "DO_THIS", TRUE);
            }
          lLoc = GetLocalLocation(oSelf, "SPAWN");
        }

      while(sResRef!="")
      {
        i++;
        sResRef=GetLocalString(oSelf, "ResRef_PLC_"+IntToString(i));
      }
      // Так, как вверху, условие было для первого пустого значения
      // то один порядковый номер мы отнимаем из результата
      i = i-1;
      Debug("Общее число объектов - "+IntToString(i));
      int iNext = Random(i)+1;
      sResRef = GetLocalString(oSelf, "ResRef_PLC_"+IntToString(iNext));
      Debug("Следующий - "+IntToString(iNext));

      //----------------------------------------------------------------------
      //  Если выпал тот же ResRef, что стоит здесь
      //----------------------------------------------------------------------
        if(sResRef == GetResRef(oPlc))
        {
            Debug(IntToString(iNext)+" - этому PLC выпало опять быть здесь.");
            iNext++; // Увеличиваем его номер на еденицу
            if(iNext > i) iNext = 1;
            // Если номер больше общего кол-ва PLC, то начинаем с первого.
            Debug(IntToString(iNext)+" - сменим номер на еденицу больше.");
        }
        oNext = CreateObject(OBJECT_TYPE_PLACEABLE, GetLocalString(oSelf, "ResRef_PLC_"+IntToString(iNext)), lLoc,0, "AM_PLC_SP_"+sTag);
        DestroyObject(oPlc);
    }
//------------------------------------------------------------------------------
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sayran
сообщение Dec 27 2005, 15:53
Сообщение #1806


Level 2
*

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



Всем привет,народ подскажите пожалуйсто как реализовать в скриптах респаун мобов,хочу сделать чтото типа линки,но в скриптах пока плохо разбираюсь,буду очень благодарен за помощь !!!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Dec 27 2005, 16:25
Сообщение #1807


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

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



Sayran, смотря какой!
Можно с помощью энкаунтера(случайной встречи) - это при наступлении игрока на определенную область, тогда можно вообще без скриптов обойтись.

Еще посмотри в Базе скриптов - тема такая в этом форуме, там есть несколько скриптов про респаун.

QUOTE (Sayran @ Dec 27 2005, 16:53)
чтото типа линки

Эм, а поподробнее, что конкретно нужно?

QUOTE (SeDAl @ Dec 26 2005, 19:20)
Так ResRes и ResRef - это одно и тоже? В скрипт нельзя писать ResRef заместо ResRes?

Есть ТОЛЬКО ResRef , а ResRes - это опечатка!

SeDAl, скачай туториал Айвана с сайта, там очень много полезного!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sayran
сообщение Dec 27 2005, 17:27
Сообщение #1808


Level 2
*

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



Со встречами случайными я разобрался,это просто,мне нужен такой скрипт,что б например герой появился на карте убил моба,а он допустим через минуту респаунился,на этой же карте в этом же месте,неполучаится ничего и все тут.....
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 27 2005, 17:48
Сообщение #1809


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

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



QUOTE (Sayran @ Dec 27 2005, 17:27)
неполучаится ничего и все тут.....

а как, позволь спросить, ты делаешь, что у тебя не получается?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Dec 27 2005, 18:21
Сообщение #1810


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

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



QUOTE (Sayran @ Dec 27 2005, 18:27)
Со встречами случайными я разобрался,это просто,мне нужен такой скрипт,что б например герой появился на карте убил моба,а он допустим через минуту респаунился,на этой же карте в этом же месте,неполучаится ничего и все тут.....


Вот простенький на слот OnDeath моба.
Neverwinter Script Source
//это мы написали функцию, чтобы можно было CreateObject использовать в функции DelayCommand
void ActionCreateObject(int iIbjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="");



void ActionCreateObject(int iIbjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="")
{
CreateObject(iIbjectType, sTemplate, lLocation, bUseAppearAnimation, sNewTag);
}

//это само действие
void main()
{
location lLoc = GetLocation(OBJECT_SELF);//место, где умер моб
string sString = "deer002";//тут указываешь его РесРеф в палитре

//создаем его на месте смерти. 3.0 - это время, через которое создастся моб
DelayCommand(3.0, ActionCreateObject(OBJECT_TYPE_CREATURE, sString, lLoc));
}


Обязательно посмотри в Базе скриптов.

QUOTE (Lex @ Dec 27 2005, 19:32)
1. ты даешь тело функции над void main() так что описание функции не нужно.


:yes: , но за то при нажатии на ActionCreateObject в списке функций будет памятка
QUOTE
//это мы написали функцию, чтобы можно было CreateObject использовать в функции DelayCommand

:)

QUOTE (Lex @ Dec 27 2005, 19:32)
2. ты сам проверял? Если труп исчезает, то твой DelayCommand пропадет вместе с ним.

Пардон, запарил. :oops:

Сообщение отредактировал -fenix- - Dec 27 2005, 22:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Dec 27 2005, 18:32
Сообщение #1811


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

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



1. ты даешь тело функции над void main() так что описание функции не нужно.
те это:
QUOTE (-fenix- @ Dec 27 2005, 18:21)
//это мы написали функцию, чтобы можно было CreateObject использовать в функции DelayCommand
void ActionCreateObject(int iIbjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="");

лишнее.

2. ты сам проверял? Если труп исчезает, то твой DelayCommand пропадет вместе с ним. При задержке 3 сек может еще успеешь.. но при большей, чем 5 - нет. (в случае стандартной настройки с исчезновением тел. Но в любом случае это не надежно). Вешай эту вещь на что-нить.. например на локацию.

3.Sayran, посмотри в разделе Шарды (я так понял, ты всетаки не сингл делаешь, ибо спавн монстров какой-то специфически-шардовый у тя) что-нить по Спавн-Системам. Там было. Скриптить ничего не надо, тока разобраться и настроив, поставить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sayran
сообщение Dec 27 2005, 19:44
Сообщение #1812


Level 2
*

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



Огромное спасибо ЗА ПОМОЩЬ !!! МАСТЕРАМ !!! ВЫРУЧЕЛИ !!! :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
justshurik
сообщение Jan 2 2006, 02:40
Сообщение #1813


Level 4
**

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



Ситуация такая.Есть два обьекта : рычаг и баллиста. Баллиста нацелена на определенную точку.
Нужно чтобы при нажатии на рычаг баллиста выстреливала (к примеру фаерболом). Если кому не сложно, подскажите, как сделать. Заранее благодарен!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NedWarN
сообщение Jan 2 2006, 06:19
Сообщение #1814


Level 5
**

Класс: Маг
Характер: Lawful Good
Раса: Тварь



justshurik
Поставь скрипт на ОнЮзет Рычага!
Всем Сорри >> нет Возможности Использовать NSS!
void main()
{
object oPC = GetLastUsedBy();
object oBallista = GetObjectByTag("BALLISTA");
object oCel = GetObjectByTag("CEL");
int nSpell = SPELL_FIREBALL;
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
AssignCommand(oBallista, DelayCommand(0.6, ActionCastFakeSpellAtObject(nSpell,oCel, PROJECTILE_PATH_TYPE_DEFAULT)));
}
Добавлено в [mergetime]1136172081[/mergetime]
А вообще Зачем Тема Вопросы Новичков, или Скрипты. Создана? :D
Пость такие вопросы Там!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jan 2 2006, 09:50
Сообщение #1815


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

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



Есть множество тем где можно было задать вопрос, повнимательнее в следующий раз:
Одиночный вопрос
Скрипты
Вопросы новичков
Дополнение к скрипту NedWarN’ а.
Neverwinter Script Source
void main()
// Cкрипт на onUsed рычага.
{
object oPC = GetLastUsedBy();//Определяем игрока, в данном случаее ето тот кто юзает обьект.
object oBa = OBJECT_SELF;//Так все упрощается.
object oCel = GetObjectByTag("CEL");//Объект на который должен быть скастован спелл.
int nSpell = SPELL_FIREBALL;//Определяем переменную скастованного спелла, сейчас это фаербол
//Но может быть и другой (набери в фильтре констант: SPELL_*)

if (((GetIsObjectValid(oCel))
&& GetDistanceToObject(oCel)<=40.0f)
&&  GetLocalInt(OBJECT_SELF,"BALL")==!1)
//Длинная проверка. Если обьект "живой" и находится на дистанции больше или равной 40, а так же проверка на локалку (сейчас поймешь зачем)
  {
  AssignCommand(oBa, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));//Активируем плейс
  AssignCommand(oBa, DelayCommand(0.6, ActionCastFakeSpellAtObject(nSpell,oCel, PROJECTILE_PATH_TYPE_DEFAULT)));//Запускаем снаряд. НО! Снаряд "пустышка", вреда не наносит, если нужен боевой снаряд то замени фун=цию на: ActionCastSpellAtObject
  SetLocalInt(OBJECT_SELF,"BALL",1);//Уст. локальную переменную для эффекта перезарядки баллисты.
  DelayCommand(5.0, SetLocalInt(OBJECT_SELF,"BALL",0));//Снимаем локалку, типа перезарядилась
  DelayCommand(5.3, AssignCommand(oBa, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)));
  }
else if(GetLocalInt(OBJECT_SELF,"BALL")==1)//Думаю по спиакам понятно.
  {
  FloatingTextStringOnCreature("Баллиста перезаряжается...",oPC);
  }
else if(!GetIsObjectValid(oCel))//Думаю по спиакам понятно.
  {
  FloatingTextStringOnCreature("Обьект уничтожен...",oPC);
  }
else if(GetDistanceToObject(oCel)>40.0f)//Думаю по спиакам понятно.
  {
  FloatingTextStringOnCreature("Обьект слишком далеко!",oPC);
  }
}


Сообщение отредактировал Dik Morris - Jan 2 2006, 19:54
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



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