Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
bern
Ilerien, спасибо.

И еще такой вопрос. Я скачал Невер через торент, но какой-то странный. Он был в архиве в уже установленном виде, я его распаковал и сразу смог зайти. Все работает. Но вместо версии в главном меню стоит v.8109. И как это понимать? unsure.gif Зашел в тулсет, там есть все плейсы и создания, которые были у меня, когда раньше стоял 1.69. Я создал небольшой тестовый модуль, может ли кто из разбирающихся людей глянуть открывается ли он вообще и точно ли это 1.69 версия? Буду очень признателен, а то хочется делать модуль и будет неприятно в конце осознать что он не рабочий. Скачать модуль можно по этой ссылке:

http://www.ex.ua/view_storage/524445904013
nwn2
не могу писать лс поэтому не ругайтесь. bern , ти мод свой хочешь сделать? для nwn2?

не могу писать лс поэтому не ругайтесь. bern , ты мод свой хочешь сделать? для nwn2?
kiruhs
1. Название форума "Neverwinter Nights Aurora Toolset" ни о чем не говорит?
2. Человек спрашивает про версию 1.69. НВН2 еще далеко до таких цифр.

Еще вопросы?
Ilerien
Цитата
Зашел в тулсет, там есть все плейсы и создания, которые были у меня, когда раньше стоял 1.69. Я создал небольшой тестовый модуль, может ли кто из разбирающихся людей глянуть открывается ли он вообще и точно ли это 1.69 версия?
Достаточно посмотреть версию файла nwmain.exe. Правой кнопкой на файле - вкладка версия, сверху должно быть написано 1.6.9.0.
Уверен, что у Вас 1.69 smile.gif
bern
Ilerien, проверил - действительно 1.6.9.0. Спасибо!
tyrrael
scratch_one-s_head.gif прошу извенение за флуд но проблема такова:Я на днях заметил на прилавках NWN kingsmaker а в теме проблемы с тулсетом увидил пост где написано что kingsmaker это пиратка.Может я неправльно понял но,смогу ли я поиграть по сети есле куплю его ? Теперь 2 вопросо в тему.
1)почему после установки некоторых хаков я не могу ставить сусчеств из 2 дополнених к оригиналу ? (дроу например)
2)как устонавливать моды которые не закинули в хак фаил.В моём случае это Undead Redux 2.
PaiNt
1. Лучше качать проверенные и правильно поломанные/переведенные диски из интернета чем брать пиратское говно на диске, конечно можно его настроить но боюсь для этого нужно иметь небольшой опыт, если не хочешь заморачиваться - качай нвн-даймонд который все качают, гденибуть на торрентах.


2. какая то путаница понятий.
-хак - архив с ресурсами (файлами определнных типов), когда ты подключаешь этот файл в .mod файл - то движок игры может использовать эти новые ресурсы. А уже о ресурсах стоит разбираться отдельно - тебе если тебе нужны существа - то это файлы чертежей палитры-существа (.utc), как только ты подключил файл в тулсете - лучше всегда перекомпилировать модуль, и лучше со всеми галками чтобы проивилось все из хака. Это действие выполняется в меню сверху "модйль-строить модуль" или по английски "module-built module".
Lex
лучше покупать лицензию. И потом в случае проблем е**ть мозг тех. поддержке.
virusman
Цитата(Lex @ Oct 25 2010, 14:13) *
лучше покупать лицензию. И потом в случае проблем е**ть мозг тех. поддержке.
Для НВНа и премиумов больше нет ни официальной продажи, ни даунлоада, ни поддержки.
Так что "Лучше качать проверенные и правильно поломанные/переведенные диски из интернета".
А пиратки из ларьков действительно покупать не стоит.
virus_found
Цитата(virusman @ Oct 25 2010, 15:47) *
Для НВНа и премиумов больше нет ни официальной продажи, ни даунлоада, ни поддержки.
Так что "Лучше качать проверенные и правильно поломанные/переведенные диски из интернета".
А пиратки из ларьков действительно покупать не стоит.

Abandonware уже? sad.gif
Satir
Всем привет.
Вопрос по Toolset. При запуске вместо букв программа выводит полоски( ▌▌▌▌) и заниматься постройкой модулей невозможно.
Можно это как-то исправить? Заранее спасибо!
gennady
Цитата(Satir @ Oct 28 2010, 17:01) *
Вопрос по Toolset. При запуске вместо букв программа выводит полоски( ▌▌▌▌) и заниматься постройкой модулей невозможно.
Можно это как-то исправить? Заранее спасибо!

Тебе поможет патч реестра от Virusmana, исправление палок (!!!!!) в тулсете. Было где-то тут на форуме, но моя не знает где... wacko.gif Так что см. тут:
http://remmgen.narod.ru/files.html declare.gif
Satir
Цитата(gennady @ Oct 28 2010, 22:36) *
Тебе поможет патч реестра от Virusmana, исправление палок (!!!!!) в тулсете. Было где-то тут на форуме, но моя не знает где... wacko.gif Так что см. тут:
http://remmgen.narod.ru/files.html declare.gif

Нашел. Большое спасибо, помогло good.gif
Necon
Люди помогите плиз! Я почти абсолютный нуб в скриптах, но мне нужен скрипт для создания предмета из других.
Ну например:
Подходишь к алтарю, в инвентарь кладешь длинный меч, рубин и, например, алмаз. И из этих предметов делается там Меч Света.
Напишите скрипт, или объясните словами, пожалуйста.
Буду очень признателен.
Talarasha
Ну ты спросишь. На словах не объяснишь так сразу, это большая задача. Смотри оригинальные скрипты Chapter1 (NW_O0_ITEMMAKER), там реализован крафт по разным рецептам. Если представить сферическую задачу в вакууме (сундук и сбор из трех кусков в нем одного предмета), то будет где-то так:
Neverwinter Script
void main()
{
    object oChest = OBJECT_SELF;
    object P1 = GetItemPossessedBy(oChest, "PART1"); // Первое комплектующее
    object P2 = GetItemPossessedBy(oChest, "PART2"); // Второе комплектующее
    object P3 = GetItemPossessedBy(oChest, "PART3"); // Ты не поверишь...
     // Проверяем, в наличии ли комплектующие:
     if (
     GetIsObjectValid(P1) == TRUE
     &&
     GetIsObjectValid(P2) == TRUE
     &&
     GetIsObjectValid(P3) == TRUE
     )
     {
        // Если в наличии, то уничтожаем их...
        DestroyObject(P1);
        DestroyObject(P2);
        DestroyObject(P3);
        CreateItemOnObject("RESREF",oChest); // И выдаем готовый предмет с ResRef'ом RESREF.
     }
}

Вешать на OnClose
Necon
Talarasha, спасибо, щас попробую. Просто это - одна из причин по которым я увлекся скриптингом. Мечта типа biggrin.gif
Necon
Еще один вопрос.
Я пытаюсь навесить на НПС эффект сна. Вбиваю коменду "effect EffectSleep", но чтобы я не делал, выдает ошибку "Потеря анализатора переменной"
Что ето значит, объясните плиз, что там надо исправить.
Talarasha
EffectSleep() это библиотечная функция, для какой цели пытаться ее переобъявлять?
Neverwinter Script
void main()
{
    EffectSleep();
}

Вот так просто будет. То, что в комментариях написано - это не образец использования, а описание функции, выделенное синим перед названием это тип возвращаемого функцией значения.
Ilerien
Neverwinter Script
ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectSleep(), <объект_непись>);
Necon
Спасибо, Ilerien и Talarasha. i-m_so_happy.gif
Necon
Хмммм....подскажите еще пожалуйста, что такое "sVarName"? scratch_one-s_head.gif

Хмммм....подскажите еще пожалуйста, что такое "sVarName"? scratch_one-s_head.gif
Talarasha
Теоретически - набор букв, подразумевающий что угодно.
Практически - имя строковой переменной. s расшифровывается как string, Var переменной, Name имя. В коде используется скорее для того, чтобы прямо по имени понимать тип переменной и отличать ее от одноименной с другим типом. Примерно следующим образом:
Neverwinter Script
object oTag;
string sTag;

sTag = "CR_ASSASIN";
oTag = GetObjectByTag("CR_ASSASIN");

sTag тогда содержит строку CR_ASSASIN, а oTag - указатель прямо на объект с тегом CR_ASSASIN. Такое наименование необязательно, но широко используется в оригинальных скриптах, да и в пользовательских тоже. Примерная расшифровка:
sName - string, строковой тип
oName - object, объект
lName - location, локация
nName - number, число целочисленное (int)
fName - float, число с плавающей точкой (float)
aName - action, действие
bName - boolean, булева переменная (TRUE/FALSE)
eName - effect, эффект
Necon
Talarasha, хмм, благодарю. Я получил писчу для размышлений....
Ilerien
Есть большой смысл заглянуть в Лексикон. Соглашения о стиле программирования там точно есть smile.gif
StasMokos
Извиняюсь за глупые вопросы, но..
1) Как сделать так, чтобы NPC, ходящие по точкам ночью исчезали (или засыпали)
2) Как организовать их активность? (Как в тавернах там каких-нибудь, чтобы они между собой разговаривали или просто двигались и т.п.)
3) Как выключить на ночь свет? (Колонны света, магические вспышки..) Я пытался поставить вот это

void main()
{
object oSelf = OBJECT_SELF;
if (GetIsDay()==FALSE && GetLocalInt(OBJECT_SELF,"on")!=1)
{
SetLocalInt(OBJECT_SELF,"on",1);
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf);
}

if (GetIsDay()==TRUE && GetLocalInt(OBJECT_SELF,"on")==1)
{
SetLocalInt(OBJECT_SELF,"on",0);
PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
effect eEffect = GetFirstEffect(oSelf);
while (GetIsEffectValid(eEffect) == TRUE)
{
if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT)
RemoveEffect(oSelf, eEffect);
eEffect = GetNextEffect(oSelf);
}
}

}

но ничего не вышло unsure.gif
gennady
Цитата(StasMokos @ Nov 27 2010, 13:51) *
1) Как сделать так, чтобы NPC, ходящие по точкам ночью исчезали (или засыпали)
2) Как организовать их активность? (Как в тавернах там каких-нибудь, чтобы они между собой разговаривали или просто двигались и т.п.)

http://remmgen.narod.ru/tmonster.html
Цитата(StasMokos @ Nov 27 2010, 13:51) *
3) Как выключить на ночь свет?

http://remmgen.narod.ru/tplace.html
StasMokos
Как сделать так, чтобы NPC лежал на земле (а лучше на алтаре) весь израненый и полуживой, но потом с ним можно было поговорить (при этом он вставал или садился на край алтаря), и он исчез (с анимацией телепортации)?
Talarasha
Neverwinter Script
void main()
{
    effect eKnock = EffectKnockdown();
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,Effect
Damage(3), OBJECT_SELF); // Нанести урон в количестве 3
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eKnock, OBJECT_SELF);
}

На onSpawn; это положит объект в состояние еле живой и снесет ему сколько-то хитов. Можно говорить. На алтарь положить - вряд ли, размещаемые объекты pc и npc не держат, только если алтарь будет являться частью локации. Ну а про излишества навроде "садился на край" - в каком мире мы живем, набор анимаций в нвне строго ограничен.
Со второй частью хз, что тебе требуется. Если исчезать будет в диалоге, то где-то на ветку диалога и вешать, перемещение - смотреть функцию ActionJumpToObject, эффекты - ApplyEffectToObject и таблицу константы либо лексикон для выбора нужных визуальных эффектов, которые сойдут за телепортацию.
elsefalse
// OnSpawn
void main()
{
ApplyEffectToObject(OBJECT_SELF, EffectDamage(GetCurrentHitPoints(OBJECT_SELF) - 1);
AssigCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_LOOPING_DEAD_BACK, 1.0, 100000.0));
}

На OnConversation(или где-нибудь на старте диалога) вешать AssignCommand(OBJECT_SELF, ActionSit(GetNearestObjectByTag("тег_невидимого обьекта"))); // невидимый обьект на котором будем сидеть, вроде есть в стандартной палитре, ставим его на край алтаря или куда мы там хотим садиться.
Talarasha
Да уж. Сам-то пробовал? Мало того, что он не соберется из-за опечаток и неправильного оформления функции, так еще и фактические ошибки. Во-первых, событие на onSpawn, оно не нуждается в AssignCommand(OBJECT_SELF... , так как само по себе уже выполняется объектом, вызвавшим скрипт. Во-вторых, анимация сбросится после первого же обращения к НПС.
А посадить на алтарь с помощью невидимого объекта кстати вряд ли получится - персонажи фиксированы по z-координате, поэтому в самом лучшем случае нпс просто будет торчать из середины объекта.
elsefalse
Не пробовал, вполне могут быть опечатки. Что не так с оформлением? С AssignCommand просто привык, а анимацию можно ресторить на других событиях. Алтарь да, по-другому думаю никак, только эти костыли.
Talarasha
Цитата
Что не так с оформлением?

Neverwinter Script
void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f)

Сравни со своим вариантом.
Цитата
а анимацию можно ресторить на других событиях.

Вопрос - а зачем? Эффективность кода не растет вместе с искуственным наращиванием его сложности.
elsefalse
Затем чтобы решить поставленную задачу.
Цитата
чтобы NPC лежал на земле

И причем тут эффективность кода? wacko.gif
Talarasha
Цитата
Затем чтобы решить поставленную задачу.
И причем тут эффективность кода?

Притом, что делать один кривой скрипт, реализованный через костыль с временным ограничением, сбрасывающий анимацию после каждого обращения и требующий дополнительного скрипта для восстановления анимации гораздо менее эффективно, чем сделать один нормальный скрипт того же размера.
elsefalse
У нас разные понятия об эффективности кода.
Кстати, покажешь этот нормальный скрипт? Только не тот который кночит чара.
Talarasha
Ну, в принципе... если требуется именно анимация на спине, тогда да, это вполне разумный вариант.
likkil
У меня возник такой вопрос даже 2

1- Как привезать скрипт к свитку ?

2- Как поставить огранечение по уровню к томуже свитку ?

Заранее при много блогодарен
elsefalse
1. В скрипте события загрузки модуля('OnModuleLoad') пишем эту
Neverwinter Script
SetModuleSwitch (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE);
строчку, потом создаем скрипт с таким же именем как тег у свитка. Копируем в скрипт вот это http://pastie.org/pastes/1359105/text (украдено с lexicon'а) и дописываем по своему желанию.
2. Ограничение по уровню ставим в том же скрипте функцией GetHitDice() либо если включен ILR, в св-вах шмотки накручиваем стоимость.
kiruhs
Цитата(elsefalse @ Dec 8 2010, 17:35) *
Копируем в скрипт вот это http://pastie.org/pastes/1359105/text (украдено с lexicon'а)


Стоит добавить, что если используются дефолтные скрипты в слотах
OnEquip - x2_mod_def_equ
OnUnEquip - x2_mod_def_unequ
OnAcquire - x2_mod_def_aqu
OnUnAcqucire - x2_mod_def_unaqu
OnActivate - x2_mod_def_act

То копировать ничего не надо. А если кастомные, тогда или копировать в каждый новый скрипт, то что в ссылке (что муторно) или просто вызвать с кастомных скриптов, соответствующие дефолтные
likkil
Что то я вообше не догнал
Можно по подробнее сам скрипт куда пехать тег придмета
А на счёт OnModuleLoad куда сунуть SetModuleSwitch (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE); У меня вот такой:

Neverwinter Script
// HCR v3.2.0 -
//::////////////////////////////////////////////////////////////////////////////
//:: FileName:  HC_On_Mod_Load
//::////////////////////////////////////////////////////////////////////////////
/*

*/

//::////////////////////////////////////////////////////////////////////////////
#include "HC_Inc"
#include "HC_Inc_On_Load"
#include "HC_Inc_HTF"
#include "X2_Inc_Switches"
//PC Vampire Subrace System by Fallen code:
#include "x2_inc_switches"
//ATS code:
#include "ats_inc_init"
//PCs Autosaving
#include "pc_export_inc"
//Player Guild System
#include "inc_gsystem_evnt"
//::////////////////////////////////////////////////////////////////////////////
void main()
{
//**************************************************
**************************
//PCs Autosaving function
pc_export_onmoduleload();
//----------------------------------------------------------------------------

//PC Vampire Subrace System by Fallen:
//
//if you are using another spellscript override you will need to execute the
//"f_vampirespells" script right before returning to the spell. If an altered
//spell is ran by f_vampirespells SetModuleOverrideSpellScriptFinished will be
//set (see x2_inc_switches and x2_inc_spellhook for more info).
SetModuleOverrideSpellscript("f_vampirespells");

// ----------------------------------------------------------- //
    //ATS code
  {
    object oMod=GetModule();
    ATS_Initialize();
    //Player Guild System
    PGSModuleLoadEvent();
  }
// ----------------------------------------------------------- //
//HCR code:
  if (!preEvent()) return;

  // Bioware Module Switches.
  if (GetGameDifficulty() >= GAME_DIFFICULTY_CORE_RULES)
    {
    // * Setting the switch below will enable a seperate Use Magic Device
    // * Skillcheck for rogues. This only applies to scrolls.
    //SetModuleSwitch(MODULE_SWITCH_ENABLE_UMD_SCROLLS, TRUE);

    // * Activating the switch below will make AOE spells hurt neutral NPCS by
    // * default.
    SetModuleSwitch(MODULE_SWITCH_AOE_HURT_NEUTRAL_NPC
S, TRUE);
    }

  // * AI: Activating the switch below will make the creaures using the WalkWaypoint function
  // * able to walk across areas
  SetModuleSwitch(MODULE_SWITCH_ENABLE_CROSSAREA_WAL
KWAYPOINTS, TRUE);

  // * Spells: Activating the switch below will make the Glyph of Warding spell behave differently:
  // * The visual glyph will disappear after 6 seconds, making them impossible to spot
  //SetModuleSwitch(MODULE_SWITCH_ENABLE_INVISIBLE_GLY
PH_OF_WARDING, TRUE);

  // * Craft Feats: Want 50 charges on a newly created wand? We found this unbalancing,
  // * but since it is described this way in the book, here is the switch to get it back...
  //SetModuleSwitch(MODULE_SWITCH_ENABLE_CRAFT_WAND_50
_CHARGES, TRUE);

  // * Craft Feats: Use this to disable Item Creation Feats if you do not want
  // * them in your module
  //SetModuleSwitch(MODULE_SWITCH_DISABLE_ITEM_CREATIO
N_FEATS, TRUE);

  // * Palemaster: Deathless master touch in PnP only affects creatures up to a certain size.
  // * We do not support this check for balancing reasons, but you can still activate it...
  //SetModuleSwitch(MODULE_SWITCH_SPELL_CORERULES_DMAS
TERTOUCH, TRUE);

  // * Epic Spellcasting: Some Epic spells feed on the liveforce of the caster. However this
  // * did not fit into NWNs spell system and was confusing, so we took it out...
  //SetModuleSwitch(MODULE_SWITCH_EPIC_SPELLS_HURT_CAS
TER, TRUE);

  // *
  //SetModuleSwitch(MODULE_SWITCH_RESTRICT_USE_POISON_
TO_FEAT, TRUE);

  // * Spellcasting: Some people don't like caster's abusing expertise to raise their AC
  // * Uncommenting this line will drop expertise mode whenever a spell is cast by a player
  //SetModuleSwitch(MODULE_VAR_AI_STOP_EXPERTISE_ABUSE
, TRUE);

  // * SpellScript: This is the name of the spell router script.
  SetModuleOverrideSpellscript("hc_spell_router");

  // Hark - Remarked out all PWDB stuff since it isnt used anymore.
  //if (GetLocalInt(oMod, "AlreadyExecutedOMD") == 1)
  //  {
  //  postEvent();
  //  return;
  //  }
  //else
  //  { SetLocalInt(oMod, "AlreadyExecutedOMD", 1); }
  //ExecuteScript("hc_pwdb_data", oMod);
  //SetLocalInt(GetModule(), "ModLoadEvent", 1);
  //int PWDB_HEARTBEAT_EVENT = 502;
  //event evEvent = EventUserDefined(PWDB_HEARTBEAT_EVENT);
  //SignalEvent(OBJECT_SELF, evEvent);

  // Execute the default script and set the HTF area variables.
  ExecuteScript("hc_defaults", oMod);
  ExecuteScript("hc_setareavars", oMod);

  // Store the starting year, month, day and hour.
  if (!GetPersistentInt(oMod, "HourStart"))
    SetPersistentInt(oMod, "HourStart", GetTimeHour());
  if (!GetPersistentInt(oMod, "DayStart"))
    SetPersistentInt(oMod, "DayStart", GetCalendarDay());
  if (!GetPersistentInt(oMod, "MonthStart"))
    SetPersistentInt(oMod, "MonthStart", GetCalendarMonth());
  if (!GetPersistentInt(oMod, "YearStart"))
    SetPersistentInt(oMod, "YearStart", GetCalendarYear());

  // Restore the calendar if one was saved.
  int iCurYear = GetPersistentInt(oMod, "CurrentYear");
  if (iCurYear > 0)
    {
    int iCurMonth = GetPersistentInt(oMod, "CurrentMonth");
    int iCurDay  = GetPersistentInt(oMod, "CurrentDay");
    int iCurHour  = GetPersistentInt(oMod, "CurrentHour");
    int iCurMin  = GetPersistentInt(oMod, "CurrentMin");
    SetCalendar(iCurYear, iCurMonth, iCurDay);
    SetTime(iCurHour, iCurMin, 0, 0);
    }

  // HCR v3.1.
  //LoopHTFSystemChk();

  postEvent();
{
//Music Changer:
}  ExecuteScript("toj_cm_ol",GetModule());
}
//::////////////////////////////////////////////////////////////////////////////
kiruhs
Цитата(likkil @ Dec 8 2010, 18:01) *
А на счёт OnModuleLoad куда сунуть SetModuleSwitch (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE); У меня вот такой:

Куда угодно после воид майн и между {}. И прячь скрипт в тэг, читать неудобно
likkil
Цитата(likkil @ Dec 8 2010, 19:01) *
Что то я вообше не догнал
Можно по подробнее сам скрипт куда пехать тег придмета
А на счёт OnModuleLoad куда сунуть SetModuleSwitch (MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE); У меня вот такой:

Neverwinter Script
// HCR v3.2.0 -
//::////////////////////////////////////////////////////////////////////////////
//:: FileName:  HC_On_Mod_Load
//::////////////////////////////////////////////////////////////////////////////
/*

*/

//::////////////////////////////////////////////////////////////////////////////
#include "HC_Inc"
#include "HC_Inc_On_Load"
#include "HC_Inc_HTF"
#include "X2_Inc_Switches"
//PC Vampire Subrace System by Fallen code:
#include "x2_inc_switches"
//ATS code:
#include "ats_inc_init"
//PCs Autosaving
#include "pc_export_inc"
//Player Guild System
#include "inc_gsystem_evnt"
//::////////////////////////////////////////////////////////////////////////////
void main()
{
//**************************************************
**************************
//PCs Autosaving function
pc_export_onmoduleload();
//----------------------------------------------------------------------------

//PC Vampire Subrace System by Fallen:
//
//if you are using another spellscript override you will need to execute the
//"f_vampirespells" script right before returning to the spell. If an altered
//spell is ran by f_vampirespells SetModuleOverrideSpellScriptFinished will be
//set (see x2_inc_switches and x2_inc_spellhook for more info).
SetModuleOverrideSpellscript("f_vampirespells");

// ----------------------------------------------------------- //
    //ATS code
  {
    object oMod=GetModule();
    ATS_Initialize();
    //Player Guild System
    PGSModuleLoadEvent();
  }
// ----------------------------------------------------------- //
//HCR code:
  if (!preEvent()) return;

  // Bioware Module Switches.
  if (GetGameDifficulty() >= GAME_DIFFICULTY_CORE_RULES)
    {
    // * Setting the switch below will enable a seperate Use Magic Device
    // * Skillcheck for rogues. This only applies to scrolls.
    //SetModuleSwitch(MODULE_SWITCH_ENABLE_UMD_SCROLLS, TRUE);

    // * Activating the switch below will make AOE spells hurt neutral NPCS by
    // * default.
    SetModuleSwitch(MODULE_SWITCH_AOE_HURT_NEUTRAL_NPC
S, TRUE);
    }

  // * AI: Activating the switch below will make the creaures using the WalkWaypoint function
  // * able to walk across areas
  SetModuleSwitch(MODULE_SWITCH_ENABLE_CROSSAREA_WAL
KWAYPOINTS, TRUE);

  // * Spells: Activating the switch below will make the Glyph of Warding spell behave differently:
  // * The visual glyph will disappear after 6 seconds, making them impossible to spot
  //SetModuleSwitch(MODULE_SWITCH_ENABLE_INVISIBLE_GLY
PH_OF_WARDING, TRUE);

  // * Craft Feats: Want 50 charges on a newly created wand? We found this unbalancing,
  // * but since it is described this way in the book, here is the switch to get it back...
  //SetModuleSwitch(MODULE_SWITCH_ENABLE_CRAFT_WAND_50
_CHARGES, TRUE);

  // * Craft Feats: Use this to disable Item Creation Feats if you do not want
  // * them in your module
  //SetModuleSwitch(MODULE_SWITCH_DISABLE_ITEM_CREATIO
N_FEATS, TRUE);

  // * Palemaster: Deathless master touch in PnP only affects creatures up to a certain size.
  // * We do not support this check for balancing reasons, but you can still activate it...
  //SetModuleSwitch(MODULE_SWITCH_SPELL_CORERULES_DMAS
TERTOUCH, TRUE);

  // * Epic Spellcasting: Some Epic spells feed on the liveforce of the caster. However this
  // * did not fit into NWNs spell system and was confusing, so we took it out...
  //SetModuleSwitch(MODULE_SWITCH_EPIC_SPELLS_HURT_CAS
TER, TRUE);

  // *
  //SetModuleSwitch(MODULE_SWITCH_RESTRICT_USE_POISON_
TO_FEAT, TRUE);

  // * Spellcasting: Some people don't like caster's abusing expertise to raise their AC
  // * Uncommenting this line will drop expertise mode whenever a spell is cast by a player
  //SetModuleSwitch(MODULE_VAR_AI_STOP_EXPERTISE_ABUSE
, TRUE);

  // * SpellScript: This is the name of the spell router script.
  SetModuleOverrideSpellscript("hc_spell_router");

  // Hark - Remarked out all PWDB stuff since it isnt used anymore.
  //if (GetLocalInt(oMod, "AlreadyExecutedOMD") == 1)
  //  {
  //  postEvent();
  //  return;
  //  }
  //else
  //  { SetLocalInt(oMod, "AlreadyExecutedOMD", 1); }
  //ExecuteScript("hc_pwdb_data", oMod);
  //SetLocalInt(GetModule(), "ModLoadEvent", 1);
  //int PWDB_HEARTBEAT_EVENT = 502;
  //event evEvent = EventUserDefined(PWDB_HEARTBEAT_EVENT);
  //SignalEvent(OBJECT_SELF, evEvent);

  // Execute the default script and set the HTF area variables.
  ExecuteScript("hc_defaults", oMod);
  ExecuteScript("hc_setareavars", oMod);

  // Store the starting year, month, day and hour.
  if (!GetPersistentInt(oMod, "HourStart"))
    SetPersistentInt(oMod, "HourStart", GetTimeHour());
  if (!GetPersistentInt(oMod, "DayStart"))
    SetPersistentInt(oMod, "DayStart", GetCalendarDay());
  if (!GetPersistentInt(oMod, "MonthStart"))
    SetPersistentInt(oMod, "MonthStart", GetCalendarMonth());
  if (!GetPersistentInt(oMod, "YearStart"))
    SetPersistentInt(oMod, "YearStart", GetCalendarYear());

  // Restore the calendar if one was saved.
  int iCurYear = GetPersistentInt(oMod, "CurrentYear");
  if (iCurYear > 0)
    {
    int iCurMonth = GetPersistentInt(oMod, "CurrentMonth");
    int iCurDay  = GetPersistentInt(oMod, "CurrentDay");
    int iCurHour  = GetPersistentInt(oMod, "CurrentHour");
    int iCurMin  = GetPersistentInt(oMod, "CurrentMin");
    SetCalendar(iCurYear, iCurMonth, iCurDay);
    SetTime(iCurHour, iCurMin, 0, 0);
    }

  // HCR v3.1.
  //LoopHTFSystemChk();

  postEvent();
{
//Music Changer:
}  ExecuteScript("toj_cm_ol",GetModule());
}
//::////////////////////////////////////////////////////////////////////////////


А как быть со свитком
Я хочу телепорт через свиток зделать Если вам не трудно помогите плиз
Предположим что мне надо поподать постоянно в точку ( 001 ) а тег свитка TP_001 А ResRef ( item01 )
kiruhs
Так. Постараюсь доступным языком. Сначала идешь в слот OnModuleLoad. Вставляешь сразу же после
void main()
{


такие строчки
Neverwinter Script
ExecuteScript( "x2_mod_def_load", OBJECT_SELF);
SetModuleSwitch ( MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE);


Потом идешь в OnEquip и если там стоит не x2_mod_def_equ вставляешь в скрипт

Neverwinter Script
ExecuteScript( "x2_mod_def_equ", OBJECT_SELF);


Если тот - ничего не делаешь. Ту же процедуру проводишь для других слотов по списку ниже, заменяя данные на нужные
OnUnEquip - x2_mod_def_unequ
OnAcquire - x2_mod_def_aqu
OnUnAcqucire - x2_mod_def_unaqu
OnActivate - x2_mod_def_act

Потом создаешь любой итем и даешь ему свойство Каст спелл-активатед итем. Создаешь новый скрипт ( в котором и пишешь, что должно произойти при активации) с именем таким же, как и тэг у итема

Скрипт должен быть примерно следующий:

Neverwinter Script
int nEvent =GetUserDefinedItemEventNumber();

  if (nEvent ==  X2_ITEM_EVENT_ACTIVATE)
  {
    //Тут что должно произойти
  }


Вобщем как-то так

Цитата(likkil @ Dec 8 2010, 19:03) *
Предположим что мне надо поподать постоянно в точку ( 001 ) а тег свитка TP_001 А ResRef ( item01 )

Значит делаешь то, что я описал выше. Создаешь скрипт TP_001 и пишешь в нем

Neverwinter Script
int nEvent =GetUserDefinedItemEventNumber();

  if (nEvent ==  X2_ITEM_EVENT_ACTIVATE)
  {
    object oPC  = GetItemActivator(); //наш игрок
    object oTarget = GetObjectByTag("WP_001"); // Предварительно созданный в нужном месте ВП

    // Кидаем чара
    if (GetIsPC(oPC))
    AssignCommand(oPC, ClearAllActions());
    AssignCommand(oPC, JumpToObject(oTarget));
  }


Как-то так
likkil
Потом идешь в OnEquip
Чёт у мея токого нет Единственное что похоже это OnPlayerEquipItem но там пусто вообше
kiruhs
Цитата(likkil @ Dec 8 2010, 19:28) *
Потом идешь в OnEquip
Чёт у мея токого нет Единственное что похоже это OnPlayerEquipItem но там пусто вообше

Впиши x2_mod_def_equ
likkil
не работает

kiruhs, Может если тебе не трудно полностью напишиш скрипты
kiruhs
Цитата(likkil @ Dec 8 2010, 20:05) *
kiruhs, Может если тебе не трудно полностью напишиш скрипты

Скрипты, по сути, я тебе уже написал. Дальше, осталось только вместо тебя модуль сделать. Извини, но это уже слишком rolleyes.gif


ЗЫ. Глянь - http://www.city-of-masters.ru/forums/index...?showtopic=1612 и не выдумывай велосипед
likkil
ну и за это сосибо большое за помошь
Aldaron
Снова здрасте.
Как сделать так, чтобы во время диалога игрок сдал свое оружие NPC, а потом мог забрать его обратно?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.