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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 57 58 59 60 61 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Aiwan
сообщение Jun 19 2005, 08:02
Сообщение #1451


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

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



QUOTE (Lex @ Jun 18 2005, 20:50)
СОУ методы скриптига.
Сам иногда грешу, но надо бы переходить на локалки.

Тем кто может разобраться со скриптингом, мой код не очень то и нужен. А молодежи трудно будет объяснить куда вешать локалку, да еще если у нег например только СОУ... ТАк что этот код хоть и старомоден, но универсален для любого варианта.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jun 19 2005, 10:16
Сообщение #1452


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

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



У меня опять вопрос...
Вот скрипт для открытия (и закрытия) двери, рычагом:


void main()
{
object oDoor=GetNearestObjectByTag("ТЭГ_ДВЕРИ");
if(GetIsOpen(oDoor)) // если она открыта
{
AssignCommand(OBJECT_SELF,ActionCloseDoor(oDoor));
// захлопнуть дверь. действие привязанно к рычагу.
SetLocked(oDoor,TRUE); // запереть дверь
ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
// рычаг переходит в другое положение
}
else if(!GetIsOpen(oDoor)) //иначе, если дверь не открыта
{
SetLocked(oDoor,FALSE);// отпереть дверь
AssignCommand(OBJECT_SELF,ActionOpenDoor(oDoor));
// открыть дверь.
ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
// перевод рычага в другое положение
}
}
Как все поняли этот скрипт на OnUsed рычага, я его туда ставлю, соответственно ввожу ТЭГ двери, но почемуто когда использую рычаг нечего не происходит.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 19 2005, 10:32
Сообщение #1453


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

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



Проверил скрипт, у меня все работает. Может ты тег не тот пишешь?

Сообщение отредактировал -fenix- - Jun 19 2005, 11:10
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 19 2005, 11:24
Сообщение #1454


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



QUOTE (Equilibrium @ Jun 19 2005, 00:44)
Предположим у нас есть мантия искателя приключений: +1 впитывание 30 поврежений

30 - это то насколько кменьшатся повреждения? Тогда что такое +1? 

Тута как я понимаю такое дело. Это значит, что "впитывание" пробивается только +1 и выше оружием. Т.е. Если тебя бьют обычным мечом, то все как сказал ДБ. Если +1, то твое "впитывание" уже не работает. Обычно такое свойство висит на шкурках всяких мэджик бистов, которые пробиваются только зачарованным оружием.
Если я ничего не перепутал.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jun 19 2005, 22:53
Сообщение #1455


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



Dark@ngel

QUOTE
Как заставить НПС сидеть на стуле?

Neverwinter Script Source
void main()

  {
  int nUser = GetUserDefinedEventNumber();
  if(nUser == 1001)
  {
  if(GetLocalInt(OBJECT_SELF,"BUSY")==0) //если НПС не занят ни чем

      {
      SetLocalInt(OBJECT_SELF,"BUSY",1); // Ставим локалку, что НПС занят


  if (!GetIsInCombat() && !IsInConversation(OBJECT_SELF)) // проверка на битву и диалог
  if (GetCurrentAction() != ACTION_SIT)
  {
        ClearAllActions();
        int i = 1;

        object oChair = GetNearestObjectByTag("[COLOR=red]ТЕГ СТУЛА(ИЛИ МОЖЕТ ТЫ ЕГО НА ГОРШОК ХОЧЕШЬ ПОСАДИТЬ)[/COLOR]", OBJECT_SELF,i);
        int bFoundChair = FALSE;
        while (bFoundChair == FALSE && GetIsObjectValid(oChair) == TRUE) //когда НПС нашел стул....
        {

          if (GetIsObjectValid(GetSittingCreature(oChair)) == FALSE) //если кто уже на нем сидит, то НПС не садится
          {
              bFoundChair = TRUE; //если он нашел стул..
              ActionSit(oChair); //  .. то плюхается на него
          }
          else
          {
              i++;
              oChair = GetNearestObjectByTag("Chair", OBJECT_SELF,i);
          }
        }
        if (bFoundChair == FALSE) // Если он НЕ нашел стул...
        {

          ClearAllActions();
          ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD); // то чешет репу и само собой никуда не садится
        }
    }
}
}
}

А вообще, возьми и покопайся в стандартных скриптах - найдешь много интересного.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Equilibrium
сообщение Jun 20 2005, 00:08
Сообщение #1456


Level 2
*

Класс: Друид
Характер: True Neutral
Раса: Человек



Friedrich, DBColl, Санькс.

Тогда еще вопросик:
Есть задачка, для решения которой у меня, пока что, слишком мало знаний:

Есть стафф, с тегом staf и РезРеф’ом staf.

Задача:
Если стафф лежит в контейнере.
И на контейнер кастуется заклинание.
То:
если это заклинание 0-го уровня
то у стаффом можно колдовать это заклинание бесконечно в день.
если 1-го
то – 5\день
если 2-го
4\день
3-го
3\день
4-го
2
5-го
1

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

В принципе, там еще проверки на наличие определенных предметов в том же контейнере, но это я и сам напишу. =)

Второй вопрос:

Можно ли сделать проверку на Школу магии, выбранную волшебником(цой)? Не пакет, а именно школу (Некромантия, Воскрешение, Иллюзия, Защитная...)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Jun 20 2005, 12:00
Сообщение #1457


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

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



QUOTE
Как заставить НПС сидеть на стуле?

Вставь это в OnHeartBeat НеПиСя:
Neverwinter Script Source
void main
{
object oChair=GetObjectByTag("ТЭГ_СТУЛА")
ActionSit(oChair);
}

А Агрессинг тебе загнул супер пупер скрипт с просто дофигищем проверок.
В большинстве случаев просто ненужных. Ну что уж поделать - у BioWare все оч продумано :D
ЗЫ
Агрессинг! Не пугай новичков! :lol:


Сообщение отредактировал Archangel - Jun 20 2005, 13:34
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 20 2005, 13:18
Сообщение #1458


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

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



QUOTE (Archangel @ Jun 20 2005, 15:00)
Встась это в OnHeartBeat НеПиСя:

Актион НПС не выдержит больше 75 действий. Соотвественно, если каждые 6 секунд будет даваться акция сесть, то скоро начнется дикий дебаг :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Archangel
сообщение Jun 20 2005, 13:31
Сообщение #1459


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

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



QUOTE
Актион НПС не выдержит больше 75 действий. Соотвественно, если каждые 6 секунд будет даваться акция сесть, то скоро начнется дикий дебаг

Да у меня НеПиСей так 30 с таким скриптом в OnHeartBeat стоят и ниче, живы еще :D
Ну есть еще один вариант.... моно вставить в OnSpawn, но тогда правильность действий не гарантирую... :no:


Сообщение отредактировал Archangel - Jun 20 2005, 13:35
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 20 2005, 16:27
Сообщение #1460


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

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



QUOTE
Да у меня НеПиСей так 30 с таким скриптом в OnHeartBeat стоят и ниче, живы еще biggrin.gif
Ну есть еще один вариант.... моно вставить в OnSpawn, но тогда правильность действий не гарантирую...


В страшном скрипте Биоваров есть на такой случай проверка на занятость.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 20 2005, 16:52
Сообщение #1461


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

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



QUOTE (Archangel @ Jun 20 2005, 16:31)
Да у меня НеПиСей так 30 с таким скриптом в OnHeartBeat стоят и ниче, живы еще

Это настолько тупо и безгамотно, что я бы даже постеснялся говорить о таком на форуме. :D У меян испоьзуется хербит пару раз для Евентов, но не больше.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 20 2005, 18:19
Сообщение #1462


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Equilibrium
В общем, тебе нужно
1. получить кастуемый спел (константу)
2. получить левел спела. Функции типа GetSellLevel вроде нету (тем более, что одни и те же спелы могут быть разного уровня у разных классов. Да они еще метамагическими). Так что, придется ручками перебирать все константы и с помощью if ... else расставлять уровни. (Или упростить задачу).
3. Проверить на вещи кол-во свойств ITEM_PROPERTY_CAST_SPELL
4. Уничтожить вещь или добавить свойство (c этим тоже придется по париться).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dark@ngel
сообщение Jun 20 2005, 19:21
Сообщение #1463


Level 1


Класс: Друид
Характер: Lawful Neutral
Раса: Полуэльф



У меня тут проблемка возникла, сама я не дойду:
Допустим есть локация-корабль с триггером выхода. Хочу сделать так, чтобы выйти с этой локации нельзя было в течение одного дня, а если будешь ломиться - то на триггере всплывал текст типа еще рано. Но потом по стечению 24 часов можно было выйти. Если это очень сложно, можно не отвечать я пойму.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 20 2005, 19:51
Сообщение #1464


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

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



QUOTE (Dark@ngel @ Jun 20 2005, 20:21)
Допустим есть локация-корабль с триггером выхода. Хочу сделать так, чтобы выйти с этой локации нельзя было в течение одного дня, а если будешь ломиться - то на триггере всплывал текст типа еще рано. Но потом по стечению 24 часов можно было выйти. Если это очень сложно, можно не отвечать я пойму.

просто, но я не уловил условие блокировки выхода в начале.. Те в какой момент лока закрывается..
Добавлено в [mergetime]1119287097[/mergetime]
Neverwinter Script Source
void main()
{
  object oClicker = GetClickingObject();
  object oTarget = GetTransitionTarget(OBJECT_SELF);

  SetAreaTransitionBMP(AREA_TRANSITION_RANDOM);

  if (GetLocalInt(GetArea(OBJECT_SELF),"BLOCK"))
      {
      FloatingTextStringOnCreature("Çàáëîêèðîâàíî",oClicker,TRUE);
      return;
      }
  else
      {
      AssignCommand(oClicker,JumpToObject(oTarget));
      }
}


На клике на переход местности.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 20 2005, 20:10
Сообщение #1465


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



В общем, должно быть на onClick триггера должны быть что-то в этом роде:
Neverwinter Script Source
void main()
{
    object oPC = GetClickingObject();
    int nDate = GetLocalInt(OBJECT_SELF, "SHIP_NO_EXIT_DATE");
    if(GetCalendarDay() == nDate)
    {
      object oDest = GetTransitionTarget(OBJECT_SELF);
      AssignCommand(oPC, ActionJumpToObject(oDest));
    } else
    {
      AssignCommand(oPC, SpeakString("Сегодня выйти не выйдет!"));
    }
}

Локалку с датой, в которую нельзя сходить с корабля нужно повесить заранее (кстати, может быть лучше не на триггер, а на ПС или модуль). Н.п. при заходе чувака на корабль, загрузке модуля и т.п. (в зависимости от конкретных обстоятельств). :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 20 2005, 21:32
Сообщение #1466


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

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



Dark@ngel это просто как 2х2=5. Чертишь триггер, соединяешь его с нужным, на он Ентр триггера ставь.
Neverwinter Script Source
//:://////////////////////////////////////////////
//:: OnExit
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 20.06.2005
//:://///////////////////////////////////////////
void main()
{
    object oPC = GetEnteringObject(); // Взять того кто наступил
    object oJump = GetTransitionTarget(OBJECT_SELF);
    // Это объект куда надо попасть
    float fDel = 2880.0;
    /*
    Предположим, дин час игры равен 2 минутам. Это 120 секунд
    Задержка 1 день  (fDel = 120*24*1)
    Если надо два дня то так: (fDel = 120*24*2)
    Если в модуле час равен 3 минутам то так: (fDel = 180*24*1)
    */

    if (GetIsPC(oPC)) // Если тот кто наступил является Игроком
    {
    if (GetLocalInt(oPC, "TRANSITION")==2)// Если на нем локалка с числом 2, то попадет
    {                                    // Куда ему надо
    AssignCommand(oPC, ClearAllActions());
    AssignCommand(oPC, ActionJumpToObject(oJump));
    return;
    }
    if (GetLocalInt(oPC, "TRANSITION")==1) // Если локалка ровна 1, то говорит фразу
        {
        SpeakString("Фраза");
        return;
        }
    if (!GetLocalInt(oPC, "TRANSITION")) // Если Игрок наступил ПЕРВЫЙ раз.
        {
        SpeakString("Фраза"); // говорим фразу
        SetLocalInt(oPC, "TRANSITION", 1); // Отметим что наступил раз
        DelayCommand(fDel, SetLocalInt(oPC, "TRANSITION", 2));
        // Задержим присвоение переменной на сутки. Как расчитан fDel см. выше.
        }
      }
}

Добавлено в [mergetime]1119292497[/mergetime]
:lol: ЛОЛ...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 20 2005, 22:17
Сообщение #1467


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

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



LOL.
3 чела кинулись помогать девушке...
гы.. Понеслась.
Фрид
- привязка к дате это не есть гут
ну а в остальном как у меня. :)
Айв
- привязка к секундам не канает, если например отдохнуть 3 раза по 8 часов, то пройдет 100 секунд например и 24 часа игровых.. но выйти никак
- плохо, что отсчет времени идет от первого наступания

короче мой вариант само то. Вот только к нему продолжение:
там, где надо (может в диалоге, может еще где)
Neverwinter Script Source
int nTime = GetTimeHour() + (GetCalendarDay() + GetCalendarMonth()*30)*24;
SetLocalInt(GetObjectByTag("TAG_OF_AREA"),"BLOCK",TRUE));
SetLocalInt(GetObjectByTag("TAG_OF_AREA"),"BLOCK_TIME",nTime));

в ХБ локации
Neverwinter Script Source
void main()
{
if (!GetLocalInt(OBJECT_SELF,"BLOCK")) return;
int nTime = GetTimeHour() + (GetCalendarDay() + GetCalendarMonth()*30)*24;
int nBTime = GetLocalInt(OBJECT_SELF,"BLOCK_TIME");
if ((nTime - 24 > nBTime )&&( nBTime != 0))
{
SetLocalInt(OBJECT_SELF,"BLOCK",FALSE);
SetLocalInt(OBJECT_SELF,"BLOCK_TIME",0);
}
}


не проверял, но примерно так..

Friedrich, сенькс за скобки.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 20 2005, 23:33
Сообщение #1468


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Айв, на онЕнтер инициализировать локалки не есть вери гуд. Я тоже сначала об этом подумал. Вряд ли нам нужно чтобы игрок не мог выйти в течении суток именно с момента первой попытки выйти.
Так что, время блокирования нужно задавать отдельно. И делать что Лекс сказал.
Тока:
if ( (nTime > (nBTime + 24)) && (nBTime != 0) ){
Гы-гы. :D Скобки забыл! ХЗ вообще, у кого приоритет больше у "+" или ">".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Equilibrium
сообщение Jun 21 2005, 00:29
Сообщение #1469


Level 2
*

Класс: Друид
Характер: True Neutral
Раса: Человек



Friedrich
Спасибочки.
1)Понятно... почти... как у нас константа возвращается?
2)Эз... понятно... думал будет легче.
3)Санькс.
4)А по подробнее можно? Именно про добовление свойств?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 21 2005, 01:03
Сообщение #1470


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Equilibrium
1) int GetLastSpell();

This is for use in a OnSpellCastAt script, it gets the ID (SPELL_*) of the spell that was cast.

4) Создаешь свойство:
itemproperty ItemPropertyCastSpell(int nSpell, int nNumUses);
Ахтунг! nSpell - это не константа спела (SPELL_*), это константа свойства предмета IP_CONST_CASTSPELL_*
Чтобы преобразовать одну в другую есть функция
IPGetIPConstCastSpellFromSpellID(int) из x2_inc_itemprop. Пользуй ее или пиши свою.

Добавляешь:
void AddItemProperty(
int nDurationType,
itemproperty ipProperty,
object oItem,
float fDuration = 0.0f
);
Внимательно почитай описания этих функций.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Equilibrium
сообщение Jun 21 2005, 02:55
Сообщение #1471


Level 2
*

Класс: Друид
Характер: True Neutral
Раса: Человек



Ой мамочки! Ох... Эээ... Дамссс...
В-вобщем с-спасибо т-тебе б-б-большое...
Чувст-твую н-на б-ближайшую нед-делю у м-меня уже есть з-задачка... :unsure:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 21 2005, 11:10
Сообщение #1472


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

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



Lex, Friedrich согласен с вами. НО вы не понимаете. Ваш код верный, но слишком сложен для новичка. Мой код воткнул и забыл. Когда она сможет сама разобраться в скриптинге наши советы отпадут. :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jun 21 2005, 19:48
Сообщение #1473


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

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



Если кому не трудно выложите скрипт, чтобы хейчман присоединялся к игроку.(или укажите название стандартного)
П.с: не думайте что ленюсь, искал этот скрипт в разговоре с хейчманом, но там их море.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 21 2005, 21:31
Сообщение #1474


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



void AddHenchman(
object oMaster,
object oHenchman = OBJECT_SELF
);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jun 21 2005, 22:47
Сообщение #1475


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



Dik Morris
Советую таки получше изучить и всмотрется в стандартны оруженосческий диалог, если не хочешь, чтобы даже после присоединения он говорил что нибудь вроде: "Здраствуйте незнакомец, не хотите ли вы нанять оружееносца?" Легче всего посмотреть на фразе "Хотите взять Томи/Делана/Лину/Г-г-римгноу" к себе в команду."
ЗЫ
Кстати, скачай демо модуль из файлов и посмотри там скрипты - откроешь для себя много интересного, да и в своем модуле использовать ни кто не запрещает
Sorry за оффтоп, но надо же человеку посоветовать, как лучше, а то обойдется только одним скриптом.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 57 58 59 60 61 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27th April 2024 - 19:55