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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 58 59 60 61 62 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Aug 31 2005, 22:57
Сообщение #1476


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

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



QUOTE (Alian REXis @ Aug 31 2005, 23:47)
Как отследить попадание некого существа по PC с целью повреждения доспеха?

как это "с целью повреждения доспеха" ???

Вообще вариант у меня только 1: на всю одежку вешать OnHit - CastSpell - Unic... как-то так.. те уникальная обработка при попадании по доспеху.. Минусы есть
- кушает ресурсы
- игрок может быть и без доспеха
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Aug 31 2005, 23:09
Сообщение #1477


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



шкуру нацеплять.. и на шкуру вешать уже OnHit - CastSpell :drag:

Neverwinter Script Source
// инициализация шкуры =P
void sr_InitializePcSkin()
{
    struct SR_INFO_S sr = sr_GetSubRace(GetLocalInt(OBJECT_SELF, "SUBRACE"));

    object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR);

    if(oSkin == OBJECT_INVALID)
        return;

    craft_ParsePropStrForObject(oSkin, sr.skin);

    SendMessageToPC(OBJECT_SELF, "DEBUG: subrace "+sr.view);
}
// нацепление шкуры..
object oSkin = CreateItemOnObject("rau_emptyskin", oPC);
AssignCommand(oPC, ActionEquipItem(oSkin, INVENTORY_SLOT_CARMOUR)); // + проверки в модульном onEquip :P
DelayCommand(1.0f, AssignCommand(oPC, sr_InitializePcSkin()));

цкрипт на спелл:
Neverwinter Script Source
void main()
{
object oPC = OBJECT_SELF; // кого ударили
object oItem = GetSpellCastItem(); // шкура =P
object oTarget = GetSpellTargetObject(); // кто ударил
}


кстати.. почему оно будет кушать ресурсы? в модуле выполняются тысячами скрипты АИ мобов.. и норм.
не умрет сервант от маленького скриптика (хотя хрен знает :unsure: файтеры любят дрыном махать)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 31 2005, 23:32
Сообщение #1478


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

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



QUOTE (2_advanced @ Sep 1 2005, 00:09)
шкуру нацеплять.. и на шкуру вешать уже OnHit - CastSpell :drag

ты сам это пробовал, у тебя работало?
у меня нет.. :(
Добавлено в [mergetime]1125521403[/mergetime]
Neverwinter Script Source
if (nEvent ==X2_ITEM_EVENT_ONHITCAST)
    {
    oItem  =  GetSpellCastItem();                  // The item casting triggering this spellscript
    object oSpellOrigin = OBJECT_SELF ;
    object oTarget = GetSpellTargetObject();
    oPC = OBJECT_SELF;

    AssignCommand(oPC,SpeakString(GetName(oTarget)));


ничего не говорит
Добавлено в [mergetime]1125521571[/mergetime]
и что кстати там в инициализации происходит? Выдача на шкурку свойств субрассы?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 1 2005, 00:05
Сообщение #1479


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



у меня - да :) субрасса.. кроме как шкурами пока еще ни чего лучше не придумал..

Neverwinter Script Source
// в spells.2da
1605  <сабж>  16777296  ir_craft    E    T  vs  0x00  0x3A  <цкрипт>  **** ****  ****  **** **** ****  1 1500 hand ****  **** ****  ****  ****  ****  out 0 ****  ****    ****  ****  0      ****  ****  ****  **** ****  ****  0  ****  ****  ****  ****  ****  ****  ****  4  ****  0    0  **** 0  ****  ****  **** 0           

// в iprp_onhitspell.2da
180  <сабж>  16777296  1605        0.5

void sr_InitializePcSkin()
{
    object oSkin = GetItemInSlot(INVENTORY_SLOT_CARMOUR);

    if(oSkin == OBJECT_INVALID)
        return;

    AddItemProperty(DURATION_TYPE_PERMANENT, ItemPropertyOnHitCastSpell(180, 1), oSkin);
}

всё работает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 1 2005, 00:10
Сообщение #1480


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

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



аа..хех, я не знал, что тут надо в 2да прописывать уникальный спелл.. Сенькс. Сейчас у себя проверю..


А тогда X2_ITEM_EVENT_ONHITCAST для чего используется?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 1 2005, 00:17
Сообщение #1481


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



биоварами для чего-нибудь неизведомого :)
когда они этот евент сами скриптом откуда-то создают
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 1 2005, 00:21
Сообщение #1482


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

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



я думал как раз для уникального ОнХитКаст..
Neverwinter Script Source
// this code runs when the item has the OnHitCastSpell: Unique power property

Его и ставил в свойства шкурки, но этот кусок скрипта не запускался у меня и я забил.

Еще раз сенькс за идею со своим спелом, страно, что сам не дополз до нее. :)
Добавлено в [mergetime]1125523776[/mergetime]
А вот с обычными вещами (доспехами и одежкой) этот эвент запускается.... как собсна я и говорил Алину
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 1 2005, 00:38
Сообщение #1483


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



Neverwinter Script Source
//дык это nw_s3_actitem01
SignalEvent(GetModule(), EventActivateItem(oItem, lLocal, oTarget));

//или X2_S3_OnHitCast:

if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE)
{
      SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ONHITCAST);
      int nRet =  ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF);
      if (nRet == X2_EXECUTE_SCRIPT_END)
      {
          return;
      }
}

имхо лучше что-то своё использовать :) а то биовары извращенцы.. и оно действительно ресурсы будет жрать
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 1 2005, 00:44
Сообщение #1484


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

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



QUOTE (2_advanced @ Sep 1 2005, 01:38)
EventActivateItem

нене, активация вещи это не то... это у айтема SpellCast - ActivateItem

а вот X2_S3_OnHitCast вроде как вызывает для вещи тот самый эвент.. но вот для шкурок не хочет это работать :)

CODE

  WARNING!
  This item property can be a major performance hog when used
  extensively in a multi player module. Especially in higher
  levels, with each player having multiple attacks, having numerous
  of OnHitCastSpell items in your module this can be a problem.

я про это говорил..

Хотя Алину не актуально, у него сингл.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Sep 1 2005, 19:56
Сообщение #1485


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

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



QUOTE (Lex @ Sep 1 2005, 00:44)
Хотя Алину не актуально, у него сингл.

Да нет, у меня существа пудинги, они по Monsters Manual повреждают оружие и доспехи. Оружие я сделал. На объекте айтема у меня счетчик стоит. Типа при попадании он инкрементируется до некоторого лимита, потом доспех должен быть у ничтожен, плюс между этим должно происходить уменьшение армор класса. Это все понятно как сделать. Вот куда вешать я не совсем понял.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 1 2005, 20:14
Сообщение #1486


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

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



Alian REXis, так все же описал 2_advanced.
1. в spells.2da после всех стандартных строк добавить свою (по хорошему там надо до 1500 строки-пустышки забить.. юзай 2да эдиторы какой-нить)
CODE

1501  НАЗВАНИЕ    IDизТЛК    ИКОНКА    E    T  vs  0x00  0x3A  ИмяСкриптаОбработчика  **** ****  ****  **** **** ****  1 1500 hand ****  **** ****  ****  ****  ****  out 0 ****  ****    ****  ****  0      ****  ****  ****  **** ****  ****  0  ****  ****  ****  ****  ****  ****  ****  4  ****  0    0  **** 0  ****  ****  **** 0

а в iprp_onhitspell.2da (его в папке sourse не найти, надо вскрывать бики эксплорером)
CODE

180  НАЗВАНИЕ  IDизТЛК  1501     0.5

2. одеть на игрока шкурку, у которой будет свойство OnHitCast - а тут то, как ты назвал свой спелл (не НАЗВАНИЕ тут будет а текст, что лежит в ТЛК под номером IDизТЛК).
3. сделать в игре скрипт ИмяСкриптаОбработчика и там делать, что тебе надо.


Если какие проблемы, могу тебе сделать демку, там только скрипт впиши свой. :)


Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 1 2005, 21:09
Сообщение #1487


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



IDизТЛК = 0x1000000 (16777216) + № в кастомном tlk :crazy:

биовары зарезервировали для себя? :)
многовато, блин

Сообщение отредактировал 2_advanced - Sep 1 2005, 21:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Sep 1 2005, 21:11
Сообщение #1488


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

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



Lex, все понятно. Только смысл в том, как можно идентифицировать объект, который по тебе попал? Ведь нужно это только при попадании пудинга.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 1 2005, 21:14
Сообщение #1489


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



шкура:
Neverwinter Script Source
void main()
{
object oPC = OBJECT_SELF; // кого ударили
object oItem = GetSpellCastItem(); // шкура =P
object oTarget = GetSpellTargetObject(); // кто ударил
// пушка в этом случае = GetItemInSlot(oTarget, левая/правая рука :P)
}

пушка:
Neverwinter Script Source
void main()
{
object oPC = OBJECT_SELF; // кто ударил
object oItem = GetSpellCastItem(); // пушка =P
object oTarget = GetSpellTargetObject(); // кого ударили
// на когти им вешать..
}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Sep 3 2005, 17:36
Сообщение #1490


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

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



Можно скриптом узнать время, на которое был наложен эффект?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Sep 4 2005, 02:42
Сообщение #1491


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



все. что на ум пришло:

Neverwinter Script Source
const float F_SLEEP = 3.0f; // частота обновления =Р


при наложении эффекта:
Neverwinter Script Source
ApplyEffetToObj(objTarget, ....., fDelay);
if( fDelay > F_SLEEP)
{
  SetLocalFloat(objTarget, "_FL_DELAY", fDelay);
  AssignCommand(objTarget, DelayCommand(F_SLEEP, f_DecValue()););
}

Neverwinter Script Source
void f_DecValue() // каждые 3 секунды будет убавлять на 3 =Р
{
  float fDelay = GetLocalFloat(object_self, "_FL_DELAY") - F_SLEEP;
  SetLocalFloat(objTarget, "_FL_DELAY", fDelay);

  if(fDelay > 0.0f) // перезапуск..
     DelayCommand(F_SLEEP, f_DecValue());
}

ну и получать то, что нужно:
Neverwinter Script Source
float f_GetValue(object oTarget) // >0 еще существует. <=0 уже слетело. // время в секундах..
{
  return GetLocalFloat(oTarget, "_FL_DELAY");
}

для обозначения различных *эффектов* использовать что-то типа LocalFloat("_FL_DELAY_" + sName);..
вот такой изврат :BETA: тулсета под рукой нет. мож ошибся

блин :) вчитался в вопрос.. и понял, что что-то не по теме понаписал тут :swoon:
в общем можно просто вешать сотни переменных при наложении эффекта О.о но это изврат
биовары ведь не придумали что-то типа GetEffectTime(effect); ? :drag:

Сообщение отредактировал 2_advanced - Sep 4 2005, 02:54
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 7 2005, 22:26
Сообщение #1492


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

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



QUOTE (Vakhal @ Sep 7 2005, 21:30)
Скажите пожалуйста, как сделать переход в другой модуль? Например триггером.


Neverwinter Script Source
void main()
{
  object oPC = GetEnteringObject(); // Кто вошел на триггер
  if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") || GetIsInCombat(oPC))
        return; // Если не игрок, или уже наступал, или идет бой то возврат
  SetLocalInt(OBJECT_SELF, "TRIGGER", TRUE);
  ActionDoCommand(DoSinglePlayerAutoSave()); // Автосейв, на случай пожарный
  ActionDoCommand(StartNewModule("имя_модуля")); // НО БЕЗ РАСШИРЕНИЯ! *.mod
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Sep 10 2005, 19:03
Сообщение #1493


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

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



Ни кто не знает, как правельно, полностью отменить отдых у оруженосца, чтобы герой отдыхал, а оруженосец нет.
А то у меня белибердистика тварится! Написал AssignCommand(oHench, ClearAllActions()); и SetCommandable(FALSE, oHench); он отменяется, но при совершении REST_EVENTTYPE_REST_CANCELLED он опять может спокойно отдыхать. Чета похимичел и стало все нормально, лег спать. Просыпаюсь, включаю, опять все по старому и временами отдых вообще не отменяется. Химичество заключалось в раставлении ClearAllActions в разные места, это влияло, но как-то все это странно!
Да и вообще у меня сюрприз на сюрпризе, одно время
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAbilityDecrease(ABILITY_STRENGTH, 1), oHench, 300.0);
отказывалось накладываться, накладывалось только через
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAbilityDecrease(ABILITY_STRENGTH, 1), GetHenchman(oPC), 300.0);
потом само прошло. Все эти непонятности выводят из себя и отнимают кучу времени, помогите ПЛИЗЗ, я наверное чего-то не понимаю.
Через OnRest делать не могу
QUOTE

Up to version 1.60, this didn't ever ever work. As of 1.60, it does fire.

Я первый раз в темке 3DSMax и мы написал, сотрите кто-нить и извините.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Sep 12 2005, 14:51
Сообщение #1494


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

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



Видимо ответа на вышенаписанный вопрос нет!? Лично я такого не нашел, или единственный ответ: "Поставь нормальную версию и делай, как люди делают и не морочь голову"? Ну не могу я сейчас перейти на новую версию :(

Пользуюсь случаем не много оффтопа.
Если есть желающие помочь в тесте с версией НВН выше 1.60, напишите пожалуйста в ПМ. А я пошел переделывать с использованием OnRest.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Sep 13 2005, 15:18
Сообщение #1495


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

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



Я все о той же шкурке. Все сделал как вы сказали, но все дело в том, что у меня почему-то когда надет любой обычный доспех, шкурка игнорируется. Т.е. события на ней не срабатывают. Когда обычный доспех снимаешь, т.е. остаешься голый, то все работает нормально. Идея моя пролетает...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 13 2005, 15:21
Сообщение #1496


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

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



Не.. ты че-то путаешь.. у меня в броне все работало.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Sep 13 2005, 16:09
Сообщение #1497


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

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



QUOTE (Lex @ Sep 13 2005, 15:21)
Не.. ты че-то путаешь.. у меня в броне все работало.

Фиг знает, но когда броня одета обработчик закла ваще не работает. :xz: Когда снимаю броню, все нормально пашет. Ничего не могу понять.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Sep 13 2005, 16:16
Сообщение #1498


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (Alian REXis @ Sep 13 2005, 16:09)
Фиг знает, но когда броня одета обработчик закла ваще не работает. :xz: Когда снимаю броню, все нормально пашет. Ничего не могу понять.

Мне это напоминает ситуацию с работой функции, возращающей оружие. есть есть оружие - возращает его. если нет - возращает ... наручни. если и их нет - тогда ничего не возращает :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 13 2005, 16:36
Сообщение #1499


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

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



QUOTE (Alian REXis @ Sep 13 2005, 17:09)
Фиг знает, но когда броня одета обработчик закла ваще не работает. :xz: Когда снимаю броню, все нормально пашет. Ничего не могу понять.

хм.. глянул еще раз.. так и есть... плохо очень.

Вешай этот спел на весь армор тогда..хмы..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Sep 13 2005, 17:58
Сообщение #1500


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

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



QUOTE (Lex @ Sep 13 2005, 16:36)
Вешай этот спел на весь армор тогда..хмы..

Руками лень.
Возник вопрос как создать скриптово это свойство айтема? Потом просто можно в Онэквипе его добавлять всей броне, которую надеваешь.

Добавлено в [mergetime]1126624427[/mergetime]
Хотя болт! На хенчманов это действовать не будет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 28th April 2024 - 09:39