Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > 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
Lex
Я всегда HasItem пользуюсь, хоть там и одна строка, в проверках диалоговых на наличие вещи.
Nokoll
помогите мне ктонибудь на стр.23 drag.gif
Тобур
QUOTE (Nokoll @ Jan 23 2005, 19:39)
Срочно нужна помощь я написал скрипт где много наворотов всяких но скрипт не доделан до конца потому что я не знаю что делать с этой проблемой
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur)

; здесь не нужно, но почему эта проблема всегда вылезает?
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);

Поставлено.
Помогите коль кто может.
Маленькая просьба можно по подробнее.
ЗАРАНЕЕ СПАСИБО ВСЕМ!!!!!!!!!!!!

Честно говоря не понял вопроса, но если ты спрашиваешь почему в одном случае после функции надо ставить ; а в другом не надо, то ответ будет такой:
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur); - это объявление функции (такое же объявление применимо к константам, переменным). Это объявление говорит компилятору, что такая функция существует.
Дело в том, что компилирование скрипта идет сверху вниз. Если бы ты не объявил эту функцию, то при попытке ее вызова из главного тела программы была бы выдана ошибка, т.к. компилятор еще этой функции не знает.

Можно обойтись без объявления функции, если ее описание (т.е. ее текст) поставить перед телом основной программы.

Объявление функций и переменных служит также для документирования программы, т.к. если выбрать название функции в теле программы , в окошке подсказки высвечивается ее заголовок и примечание (если оно есть) , предшествующее заголовку. Например, все стандартные константы и функции НВНа объявлены в стандартном скрипте nwscript.
Тобур
QUOTE (Csardas @ Jan 22 2005, 04:07)
Народ помогайте дайте скриптик, мне очень нужно чтобы НПК дерется с тобой и когда он будет присмерти начел разговор с РС помогите.

Я бы предложил такую схему:

1 НПС делается или через тулсет сразу Immortal или в скрипте спауна через функцию (Immortal - статус означает, что урон ему наносится, но никогда не понижается ниже 1)

2 в событии On Damage этого НПСя идет проверка, равны ли его текущие хит поинты 1 (или тому значению, при котором ты хочешь остановить бой) или нет
Если да, то останавливаешь бой и начинаешь диалог.
mamuc
QUOTE
Я всегда HasItem пользуюсь, хоть там и одна строка, в проверках диалоговых на наличие вещи


"nw_i0_plot" это нехилово обьема инклюд( где то около полторы тыщи строк) с большим набором всяких функций...подключать это только для того, что бы пользоваться одной малюсенькой функцией HasItem( вместо которой очень просто можно сразу написать нужное) весьма не рационально biggrin.gif ИМХО
Nokoll
Нет Тобур ты неправельно понел мне нужно доделать скрипт а он не Компилитс и Тоолсет выдает что проблема в
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);

я бес понятия как это исправить может кто сдесь и знает мой скрипт целый можно посмотреть на стр 23!
Тобур
#include "x2_inc_cutscene"
void CutSound(int nCutscene, object oSound);
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);
void MultiJump(object oPC, string sWay);
void PlayMusic(int nCutscene, object oPC);
void SetShift(int nCutscene, object oPC, float fShift);

int nCutsceneNumber = 20;

void main()

{
object oPC = GetEnteringObject();
object oGlav = GetObjectByTag("PIVIGA");
object oWP1 = GetObjectByTag("WP_1");
object oWP3 = GetObjectByTag("WP_3");
object oWP4 = GetObjectByTag("WP_4");
object oWP5 = GetObjectByTag("WP_5");
object oWP6 = GetObjectByTag("WP_6");
object oWP7 = GetObjectByTag("WP_7");
object oSound = GetObjectByTag("cut20_summ_sfx");
//Effect Vizual Effect==========================================================
effect eZa1 = EffectVisualEffect(VFX_BEAM_BLACK);
effect eZa2 = EffectVisualEffect(VFX_BEAM_EVIL);
effect eZa3 = EffectVisualEffect(VFX_IMP_DEATH_WARD);
effect eZa4 = EffectVisualEffect(VFX_IMP_FEAR_S);
//Localnoe======================================================================
location lMes1=GetLocation(oWP1);
location lLoc2=GetLocation(oWP7);
location lMes3=GetLocation(oWP3);
location lMes4=GetLocation(oWP4);
location lMes5=GetLocation(oWP5);
//==============================================================================
if (!GetIsPC(oPC)||GetLocalInt(oPC,"Proverochoi tur!")==TRUE)
return;
{ // Первая ошибка
SetLocalInt(oPC,"Proverochoi tur",TRUE);
AssignCommand(oPC,ClearAllActions());
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectDarkness(),oPC,20.0);
DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa1,lMes1,3.0));
DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa2,lLoc2,3.0));
DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa3,lMes3,3.0));
DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa4,lMes4,3.0));
DelayCommand(2.0,AssignCommand(oGlav,JumpToLocation(lMes1)));
DelayCommand(2.0,AssignCommand(oGlav,ActionSpeakString("KO MHE MOI SLUGI")));
DelayCommand(1.0,AssignCommand(oGlav,ActionMoveToObject(oPC,FALSE,0.5)));
//Camera mode===================================================================
DelayCommand(1.5, DelayCommand(GetShift(oPC, TRUE), MyPentogramma(nCutsceneNumber, oPC, 482, 3.0)));
DelayCommand(1.5, FadeFromBlack(oPC));
CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 10.0, 50.0, CAMERA_TRANSITION_TYPE_SNAP);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 9.0, 40.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE);
CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 12.0, 60.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Vso dla camera
object oCam1 = GetWaypointByTag("Camera1");
object oCam2 = GetWaypointByTag("Camera2");
object oCam3 = GetWaypointByTag("Camera3");
object oCam4 = GetWaypointByTag("Camera4");
object oCam5 = GetWaypointByTag("Camera5");
object oCam6 = GetWaypointByTag("Camera6");
//+++++++++++++++++++++++++++++CAMERA+++++++++++++++++++++++++++++++++++++++++++
CutPlayAnimation(1.5, oCam1, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
CutPlayAnimation(1.5, oCam2, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
CutPlayAnimation(0.5, oCam3, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
CutPlayAnimation(1.5, oCam4, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
CutPlayAnimation(0.5, oCam5, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
CutPlayAnimation(18.0, oCam6, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
//Camera stroenie===============================================================
CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 182.0, 111.0, 56.0,
CAMERA_TRANSITION_TYPE_SLOW);
CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 5.0, 65.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
CAMERA_TRANSITION_TYPE_VERY_FAST);

CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 155.0, 45.0, 82.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(15.6, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 10.0, 4.0, 82.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 90.0, 40.0, 82.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
CAMERA_TRANSITION_TYPE_SNAP);

CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 105.0, 4.0, 82.0,
CAMERA_TRANSITION_TYPE_SNAP);
}
//PENTAGRAMMA VOCRUG++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur)
{
if(CutGetActiveCutsceneForObject(oPC) == nCutscene)
{
object oPen1 = GetObjectByTag("Pen1");
object oPen2 = GetObjectByTag("Pen2");
object oPen3 = GetObjectByTag("Pen3");
object oPen4 = GetObjectByTag("Pen4");
object oPen5 = GetObjectByTag("Pen5");

int iBeam2 = 483;

//Rasstavlaem+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam, oPen1, BODY_NODE_CHEST, FALSE), oPen2, fDur);

ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen2, BODY_NODE_CHEST, FALSE), oPen3, fDur);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen3, BODY_NODE_CHEST, FALSE), oPen4, fDur);

ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen4, BODY_NODE_CHEST, FALSE), oPen5, fDur);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen5, BODY_NODE_CHEST, FALSE), oPen1, fDur);
}
}

// Taime =======================================================================
void SetShift(int nCutscene, object oPC, float fShift) {
if(CutGetActiveCutsceneForObject(oPC) == nCutscene)
SetLocalFloat(GetArea(oPC), ".."fShift); // Вторая ошибка
}

void CutSound(int nCutscene, object oSound)
{
if(CutGetActiveCutsceneForObject(oSound) == nCutscene)
{
SoundObjectPlay(oSound);
}
//===============================================================================

}
MasterMage
Tiger Greyhawk скрипт вешается на НПС в слот OnUserDefinite
вообщем я попробую ту строчку про HasItem..........wink.gif
Leon PRO
Скрипт написаный ниже я поместил в On Use плейсибла, и при юзании игроком он вешает на игрока определенный Вижл эффект.

Neverwinter Script Source
void main()
{
int nVisEffect;
effect eCusEffect;
object oPC = GetLastUsedBy();

nVisEffect =  511; //просто номер эффекта - не обращайте внимания!!!

eCusEffect = EffectVisualEffect(nVisEffect);
eCusEffect = SupernaturalEffect(eCusEffect);

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCusEffect, oPC);
}


Я же теперь хочу, чтобы эффект вешался на объект или игрока, которого я укажу с помощью ванда, через Use Unical Power свойства, для облегчения скажу, что у ванда тэг "dm_effectorwand"

Вопрос номер 2. Можно - ли через runscript передать параметр для переменной.
например runscript myscript(papam1).

хех, держитесь у меня удет скоро тонна вопросов! spiteful.gif
Lemegeton
Вопрос номер один не дошел до абонента. Абонент перечитал, но вопрос все равно не дошел pardon.gif

Вопрос нумбер ту:

Низя. Вызываемый скрипт должен иметь ф-цию main.
Можно сделать inc файл, содержащий нужные ф-ции и прикреплять его к скриптам. Тогда можно напрямую вызывать необходимую ф-цию с параметрами.

З.Ы. Держимся. biggrin.gif
Leon PRO
вопрос номер 1 переделал...
по вопросу номер два:
т.е. возможно к.л. макаром всетаки указать в runscript аргумент для скрипта ?
Lemegeton
QUOTE
...т.е. возможно к.л. макаром всетаки указать в runscript аргумент для скрипта ?

Нет. Ты С или С++ знаешь? Хоть чуть-чуть? Там есть возможность группировать часто используемые универсальные ф-ции для вызова из других частей программы или из других программ. Это называется include файлом. В NWNScript тоже есть такая кракозябра. Т.е. создается файл - что-то вроде:

Neverwinter Script Source
//Имя файла my_functions.inc
void KillHim(object Who);

void KillHim(object Who)
{
DestroyObject(Who, 1);
return;
}


В скрипте, где надо использовать:
Neverwinter Script Source
#include "my_functions"  //ДО ф-ции main, БЕЗ указания расширения.

void main()
{
...
object BadNPC = GetObjectByTag("BadPC");
KillHim(BadNPC);   // Вызывается ф-ция, описанная в другом файле с указанием параметров.
}


ОБЯЗАТЕЛЬНО пересобрать модуль. Данный пример от-балды, вряд ли заработает, но идея такова.


<small>Добавлено в 12:15</small>
Вопрос номер один.

а. В свойствах предмета поставить: Заклинание -> Только собственное питание (это позволяет тыкать палкой biggrin.gif ).

б. Надо (или не надо, еще не разобрался biggrin.gif ) переписать OnActivateItem в свойствах модуля на такой:

Neverwinter Script Source
void main()
{
    object oItem = GetItemActivated();
    string tgItem = GetTag(oItem);
    object oTarget = GetItemActivatedTarget();
    ExecuteScript(tgItem, oTarget);
}


Это позволит запустить скрипт с именем тэга используемого предмета.!

в. Создать скрипт с именем тэга палки:

Neverwinter Script Source
void main()
{
int nVisEffect;
effect eCusEffect;
object oPC = OBJECT_SELF; // !!!!!!! - Это будет тот, на кого палкой ткнули - !!!!!!!

nVisEffect =  511; //просто номер эффекта - не обращайте внимания!!!

eCusEffect = EffectVisualEffect(nVisEffect);
eCusEffect = SupernaturalEffect(eCusEffect);

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eCusEffect, oPC);
}
Leon PRO
Хех, пасибо, за вопрос №2, хоть ты сам точно не знаешь, но хоть ткнул меня где копать.
А по вопросу №1 ты по-моему не понял, я в курсе про инклуды.

Я говорю о такой ситуации распишу по шагам:
1. Зашел ДМ-ом на шард.
2. написал в консоли runscript имя_скрипта - работает само-собой.
3. поддерживаются-ли такие скрипты, где можно написать, вызвав иго из консоли runscript имя_скрипта(параметр) ?

По поводу скрипта:
QUOTE
object oPC = OBJECT_SELF; // !!!!!!! - Это будет тот, на кого палкой ткнули - !!!!!!!

А разве OBJECT_SELF не на того, кто палкой тыкал сработает ?
Lemegeton
Не, извиняй. Я не в курсе про ДМ скрипты. dntknw.gif

QUOTE
... разве OBJECT_SELF не на того, кто палкой тыкал сработает ?


Neverwinter Script Source
void main()
{
    object oItem = GetItemActivated();
    string tgItem = GetTag(oItem);
    object oTarget = GetItemActivatedTarget();  // <----
    ExecuteScript(tgItem, oTarget);
}


Ф-ция ExecuteScript в качестве второго параметра получает объект, от лица которого запускается скрипт. Т.е. в запущеном скрипте этот объект будет как раз OBJECT_SELF.
Leon PRO
Ок, я дома попробую, завтра еще напишу, спасибо огромное!
mamuc
Leon PRO "умный в гору не пойдет,умный гору обойдет" - если ты хочешь передать параметр в скрипт вызванный с ExecuteScript, например :
ExecuteScript(tgItem, oPC ); , то повесь нужное значение на oPC локалкой какой нить..а в скрипте ты эту локалку(значение) сможешь считать и использовать, а потом эту локалку изничтожить, чтоб место зря не занимала...( это один из приемов серии"голь на выдумку хитра" biggrin.gif )
Leon PRO
mamuc Да вот пока на этом и остановился =\ но думаю как-бы попроще.
Лито
Как сделать так чтобы мешки с лутом исчезали через указанное время, например 250 секунд?
Есть плэйс мешка на открытия которого стоит срипт генерации лута, с этим понятно, есть скрипт на смерть моба при испольнении скрипта создается заданый мешок, пробовал такой вариант :
Neverwinter Script Source
void main()
{
string sTemplate = "low_plc_loot";
string sTag = GetTag(OBJECT_SELF);
location lLoc = GetLocation(OBJECT_SELF);

CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);

DestroyObject(OBJECT_SELF, 250.0);
}

Но мешок не дестроится, подскажите вариант лучше, три часа на это убил а результата не добился dntknw.gif
Lemegeton
Был такой вопрос... Решился "Чистильщиком". Т.е. НПЦ, который через некоторое время убирает все "левое" шмотье на карте. Где-то на форуме даже скрипты есть.
mamuc
ммм ..выше уже писалось - нельзя уничтожить обьект если его инвентарь не пуст..сначало надо весь инвентарь вычистить..
Lex
ну так чистильщик так и работает. smile.gif

А вообще в ХОТУ стандартная система выпадения вещей разве не кактит? Я в ней не копался, но вроде там можно указать время, через которое дестроится лут.
Тобур
QUOTE (Лито @ Jan 27 2005, 17:55)
Как сделать так чтобы мешки с лутом исчезали через указанное время, например 250 секунд?
Есть плэйс мешка на открытия которого стоит срипт генерации лута, с этим понятно, есть скрипт на смерть моба при испольнении скрипта создается заданый мешок, пробовал такой вариант :
Neverwinter Script Source
void main()
{
string sTemplate = "low_plc_loot";
string sTag = GetTag(OBJECT_SELF);
location lLoc = GetLocation(OBJECT_SELF);

CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);

DestroyObject(OBJECT_SELF, 250.0);
}

Но мешок не дестроится, подскажите вариант лучше, три часа на это убил а результата не добился dntknw.gif

Не уверен, но, по-моему объект не уничтожается потому, что назначаешь команду уничтожения исполнить объекту, который сам будет уничтожен (умерший моб должен уничтожить мешок).
К тому же у тебя просто ошибка в скрипте: DestroyObject(OBJECT_SELF, 250.0); должна уничтожить моба (если скрипт запускает моб).
Попробуй в скрипте вместо
DestroyObject(OBJECT_SELF, 250.0);
такую конструкцию:
object oBag = CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);
AssignCommand(GetModule(), DestroyObject(oBag , 250.0));
т.е. чтобы какой то другой объект уничтожал (в данном случае модуль)
Lex
Объект может сам себя уничтожать, так что все ок со скриптом, надо только содержимое почистить перед этим.
так:
Neverwinter Script Source
object oItem = GetFirstItemInInventory(OBJECT_SELF);
while (GetIsObjectValid(oItem))
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(OBJECT_SELF);
  }

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

Neverwinter Script Source
void Clear(object oBag = OBJECT_SELF)
{
object oItem = GetFirstItemInInventory(Bag);
while (GetIsObjectValid(oItem))
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(Bag);
  }
DestroyObject(oBag,1.0);
}
void main()
{
string sTemplate = "low_plc_loot";
string sTag = GetTag(OBJECT_SELF);
location lLoc = GetLocation(OBJECT_SELF);

CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);

DelayCommand(250.0,Clear(OBJECT_SELF));
}
Lemegeton
Кстати, получает ли такая система ограничение на количество лута? Есть ведь ограничение на количество команд (Actions) в стэке. Кроме того, таймер (ХартБит) "халявит" в тех картах на которых нет игрока. Там все будет ОК?
Lex
??
- Никаких ограничений на кол-во вещей в луте.
- с ХБ эта система никак не связанна.
- ХБ не халявит нигде. Он во всех локах работает.
Лито
Спасибо за помощь, сейчас буду пробовать good.gif
Кстати не хотите ли завести второй том скриптов?Как сделали с вопросами новичков, 27 страниц как то многовато dntknw.gif

Не помогло... После смерти моба из него вываливается мешок, лут генерится нормально, но мешки не исчезают...
этот скрипт стоит на OnDeath моба, может я его не туда впихнул?smile.gif
Neverwinter Script Source
void Clear(object oBag = OBJECT_SELF)
{
object oItem = GetFirstItemInInventory(oBag);
while (GetIsObjectValid(oItem))
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(oBag);
  }
DestroyObject(oBag,1.0);
}
void main()
{
string sTemplate = "low_plc_loot";
string sTag = GetTag(OBJECT_SELF);
location lLoc = GetLocation(OBJECT_SELF);

CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);

DelayCommand(10.0,Clear(OBJECT_SELF));
}

поставил 10 секунд чтобы побыстрее проверить
Lemegeton
С ХБ напрямую не связана. Но есть ведь буффер для подобных команд с задеркой. Он может и переполниться?! Или нет?

ХБ халявит еще как! Он раз в 7-10 секунд происходит на локации, где нет других игроков. По крайней мере, не в серверной версии...
Lex
ХБ сам по себе происходит раз в 6 секунд. Я не проверял, что там в локах, где нет игрока, но по идее так же должно быть.

Дома проверю.

то Лито, сорри, я ступил...
так надо:

Neverwinter Script Source
void Clear(object oBag = OBJECT_SELF)
{
object oItem = GetFirstItemInInventory(oBag);
while (GetIsObjectValid(oItem))
  {
  DestroyObject(oItem);
  oItem = GetNextItemInInventory(oBag);
  }
DestroyObject(oBag,1.0);
}
void main()
{
string sTemplate = "low_plc_loot";
string sTag = GetTag(OBJECT_SELF);
location lLoc = GetLocation(OBJECT_SELF);

object oloot = CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLoc, TRUE, sTag);

AssignCommand(oloot,DelayCommand(10.0,Clear(oloot)));
}


почему было неправильно то, что раньше щас объясню..

OBJECT_SELF в скрипте смерти НПС это сам НПС а не мешок лута, так что
DestroyObject(OBJECT_SELF,1.0) и тд это удаление НПС.
а нам то нужен лут, поэтому вводим object oloot и привязываем к нему (а не к НПС) команду с задержкой на 10 секунд.

Кстати, а сам НПС у тебя исчезает, или как?

Пожалуй щас сделаем второй том. А из этой темы надо будет в базу скриптов перенести потом готовые коды.



Том II находится тут
Lex
Том I находится тут
Лито
Lex к унитожению лута
Все дестроится в точно указанное время, и спасибо за то что разъяснил в чем была ошибка, для меня важно разобратся в чем проблема:)
Nokoll
Нарот все кто в состоянии мне помочь помогите у меня огромный зов о помощи.
я написал скрипт всё компилится вот только действия все сразу делаются а мне надо пости пенно кашмар
мне очень трудно обяснить поэтому поставте мой скрипт на синюю строчку ПК в диалоге и разу все уаидете
Помогите очень прошу. swoon.gif

вот мой проклятый скрипт

Neverwinter Script Source
//Scrip straha napadenie!!
#include "x2_inc_cutscene"
void main()
{
////////////////////////////////////////////////////////////////////////////////
//////////////:LICHNO MOI SCRIPT SPECALNO NAPISEN DLA NICITA:///////////////////
////////////////////////////////////////////////////////////////////////////////
        object oSauron = GetObjectByTag("Sauron");
        object oGimli = GetObjectByTag("Gimli");
        object oPC = GetPCSpeaker();
        object oSau = GetWaypointByTag("Go_Sauron");
        object oRc1 = GetObjectByTag("ORC_1");
        object oRc2 = GetObjectByTag("ORC_2");
        object oRc3 = GetObjectByTag("ORC_3");
        object oRc4 = GetObjectByTag("ORC_4");
        object oRc5 = GetObjectByTag("ORC_5");
        object oRc6 = GetObjectByTag("ORC_6");
        object oRc7 = GetObjectByTag("ORC_7");
        object oRc8 = GetObjectByTag("ORC_8");
        object oRc9 = GetObjectByTag("ORC_9");
        object oRc10 = GetObjectByTag("ORC_10");
//Tochki Morshruta==============================================================
        object oWp1 = GetWaypointByTag("Go1");
        object oWp2 = GetWaypointByTag("Go2");
        object oWp3 = GetWaypointByTag("Go3");
        object oWp4 = GetWaypointByTag("Go4");
        object oWp5 = GetWaypointByTag("Go5");
        object oWp6 = GetWaypointByTag("Go6");
        object oWp7 = GetWaypointByTag("Go7");
        object oWp8 = GetWaypointByTag("Go8");
        object oWp9 = GetWaypointByTag("Go9");
        object oWp10 = GetWaypointByTag("Go10");
//----------------------O Candelabr---------------------------------------------
        object oHak = GetObjectByTag("Hakel1");
        object oHak2 = GetObjectByTag("Hakrl2");
        object oHak3 = GetObjectByTag("Hakrl3");
        object oHak4 = GetObjectByTag("Hakrl4");
//----------------------O Camera Tochki-----------------------------------------
        object oCamera = GetWaypointByTag("Camera1");
        object oCamera2 = GetWaypointByTag("Camera2");
        object oCamera3 = GetWaypointByTag("Camera3");
//==============================================================================
//==========================+Nicita the Lord of tne Ring+=======================
//##############################=VISUAL EFFECT=#################################
        effect eVis1 = EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE);
        effect eVis2 = EffectVisualEffect(VFX_IMP_DEATH);
        effect eVis3 = EffectVisualEffect(VFX_IMP_CHARM);
        effect eVis4 = EffectVisualEffect(VFX_DUR_PIXIEDUST);
        effect eVis5 = EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT);
        effect eVis6 = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_20);
        effect eCutInv = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);
        effect eDed = EffectDeath();
//===========================SAMAA SLOZNNOA CHAST SCRIPTA=======================
        SetLocalInt(oPC, "CUT_SCEN_02", TRUE);
        SetLocalLocation(oPC,"START_POINT", GetLocation(oPC));
        AssignCommand(oGimli, ActionPauseConversation());
        AssignCommand(oGimli, ClearAllActions());
        AssignCommand(oSauron, ActionJumpToObject(oSau));
        FadeToBlack(oPC, FADE_SPEED_FASTEST);
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutInv, oPC, 41.0);
////////////////////////////////////////////////////////////////////////////////
////////////////////////////CAMERA MOTOR POEXALI////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
        SetCutsceneMode(oPC);
        SetAILevel(oSau, AI_LEVEL_HIGH);
        DelayCommand(1.0, AssignCommand(oPC, JumpToObject(oCamera)));
        DelayCommand(1.5, AssignCommand(oPC, SetCameraFacing(10.0, 12.0, 40.0,
        CAMERA_TRANSITION_TYPE_SNAP)));
        DelayCommand(2.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
        DelayCommand(3.5, AssignCommand(oPC, SetCameraFacing(10.0, 20.0, 40.0,
        CAMERA_TRANSITION_TYPE_SLOW)));
        ActionWait(5.5);
        DelayCommand(4.0, AssignCommand(oSauron, SpeakString("VAM CANEC!!")));
        DelayCommand(5.5, AssignCommand(oSauron, SpeakString("Nu Chtoz (ORCI)!!!")));
////////////////////////////////////////////////////////////////////////////////
//////////////////////:ORCI POBEHALI SUDA SLUSAAS SAURONA!://///////////////////
//============================================================================//
        DelayCommand(6.0, AssignCommand(oRc1, ActionForceMoveToObject(oWp1, TRUE, 1.0, 7.0)));
        DelayCommand(6.5, AssignCommand(oRc2, ActionForceMoveToObject(oWp2, TRUE, 1.0, 7.0)));
        DelayCommand(7.0, AssignCommand(oRc3, ActionForceMoveToObject(oWp3, TRUE, 1.0, 7.0)));
        DelayCommand(7.5, AssignCommand(oRc4, ActionForceMoveToObject(oWp4, TRUE, 1.0, 7.0)));
        DelayCommand(8.0, AssignCommand(oRc5, ActionForceMoveToObject(oWp5, TRUE, 1.0, 7.0)));
        DelayCommand(8.5, AssignCommand(oRc6, ActionForceMoveToObject(oWp6, TRUE, 1.0, 7.0)));
        DelayCommand(9.0, AssignCommand(oRc7, ActionForceMoveToObject(oWp7, TRUE, 1.0, 7.0)));
        DelayCommand(9.5, AssignCommand(oRc8, ActionForceMoveToObject(oWp8, TRUE, 1.0, 7.0)));
        DelayCommand(10.0, AssignCommand(oRc9, ActionForceMoveToObject(oWp9, TRUE, 1.0, 7.0)));
        DelayCommand(10.5, AssignCommand(oRc10, ActionForceMoveToObject(oWp10, TRUE, 1.0, 7.0)));
        ActionWait(5.5);
//===========================CAMERA ZANOVES=====================================
        DelayCommand(11.0, AssignCommand(oPC, ClearAllActions()));
        DelayCommand(11.5, FadeToBlack(oPC, FADE_SPEED_FASTEST));
        DelayCommand(12.0, AssignCommand(oPC, JumpToObject(oCamera2)));
        DelayCommand(13.6, AssignCommand(oPC, SetCameraFacing(130.0, 10.0, 40.0,
        CAMERA_TRANSITION_TYPE_SNAP)));
        ActionWait(5.5);
        DelayCommand(14.5, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
        DelayCommand(15.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis1, oSauron, 6.0));
        DelayCommand(15.5, AssignCommand(oSauron, SpeakString("BLA CHTO ETO BALO?")));
        DelayCommand(16.0, AssignCommand(oSauron, SpeakString("O SAURON POMOGI MNE!!!")));
        DelayCommand(16.5, AssignCommand(oSauron, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 0.9, 3.0)));
        DelayCommand(17.0, AssignCommand(oPC, SetCameraFacing(130.0, 10.0, 40.0,
        CAMERA_TRANSITION_TYPE_SNAP)));
        ActionWait(5.5);
//ACtive Hakel
        DelayCommand(17.5, AssignCommand(oHak, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(18.0, AssignCommand(oHak2, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(18.5, AssignCommand(oHak3, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(19.0, AssignCommand(oHak4, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
//-----------------------------------------------------------------------------------
        DelayCommand(20.0, AssignCommand(oSauron, SpeakString("SMERT TEBE")));
        ActionWait(5.5);
//-----------------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////////
////////////////////OTDELNOI SCRIPT PO POAVLENIU SMERTI/////////////////////////
////////////////////////////////////////////////////////////////////////////////
        effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
        location lLoc = GetLocation(GetNearestObjectByTag("WP_Morag"));
        object oMorag = CreateObject(OBJECT_TYPE_CREATURE,"Morag",lLoc,TRUE);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_LOS_EVIL_20),lLoc);
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMorag);
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
        DelayCommand(20.5, AssignCommand(oSauron, SpeakString("XA XA XA!!")));
//------------------------------------------------------------------------------
        effect eMor = EffectVisualEffect(VFX_DUR_FLIES);
        effect eMor2 = EffectVisualEffect(VFX_DUR_ANTI_LIGHT_10);
        location lLoc3 = GetLocation(GetNearestObjectByTag("Gop"));
        location lLoc4 = GetLocation(GetNearestObjectByTag("Gop"));
        object oHabas = CreateObject(OBJECT_TYPE_CREATURE,"Habas",lLoc3,TRUE);
        object oHabas2 = CreateObject(OBJECT_TYPE_CREATURE,"Habas",lLoc4,TRUE);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_LOS_EVIL_20),lLoc3);
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_LOS_EVIL_20),lLoc4);
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oHabas);
//------------------------------------------------------------------------------
        DelayCommand(21.0, AssignCommand(oSauron, SpeakString("You Kill him!!")));
        DelayCommand(22.5, AssignCommand(oRc1, SpeakString("Ecc Gospadin")));
        DelayCommand(23.0, AssignCommand(oRc1, ActionForceMoveToObject(oGimli, TRUE, 1.0, 7.0)));
        DelayCommand(25.0, AssignCommand(oPC, ClearAllActions()));
        ActionWait(5.5);
        DelayCommand(25.6, AssignCommand(oPC, SetCameraFacing(130.0, 10.0, 40.0,
        CAMERA_TRANSITION_TYPE_SLOW)));
        ActionWait(5.5);
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis3, oGimli, 90.5);
        DelayCommand(90.9, AssignCommand(oGimli, SpeakString("A A A A A")));
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDed, oGimli, 90.5);
        DelayCommand(90.10, AssignCommand(oPC, SpeakString("you dead")));
        DelayCommand(10.0, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL, 0.9, 5.0)));
        DelayCommand(90.6, AssignCommand(oSauron, SpeakString("A Xa xa xa")));
        DelayCommand(27.0, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHING, 0.9, 5.0)));



}
Nokoll
Вот обяснение моего скрипта для Lex. biggrin.gif

Скрипт мой состоит вот так.

Говариш со старухой она ваще нейтральна от всего так просто для диалога
На строке ПК стоит мой скрипт
И дело пошло, затемнение камеры и вдруг раз и все функции DelayCammand срабатывают не в порядке очереди в указанное время а сразу, далее прибегают орки
На заранее написанные и поставленные точки это делается ровно без прерываний
Зажигаются факелы здесь проблема , факелы должны зажыгатся поочередно функцией

Neverwinter Script Source
DelayCommand(17.5, AssignCommand(oHak, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(18.0, AssignCommand(oHak2, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(18.5, AssignCommand(oHak3, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(19.0, AssignCommand(oHak4, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));

А они зажигаются все сразу, причем зажечься они должны пока сароман стоит на коленях

DelayCommand(16.0, AssignCommand(oSauron, SpeakString("O SAURON POMOGI MNE!!!")));
        DelayCommand(16.5, AssignCommand(oSauron, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 0.9, 3.0)));

Далее идут действия появляются 2 главных орка функция указона в моём скрипте.
Скрипт мой Кампилится но делается все сразу это такой ужас все выглядит ужасно поговоришь камера тока пошла сразу появляется 2 орка и тому подобное, короче скрипт работает как будто его основные функции поставлены не DelayCommand а AssignCommand. Заранее извеняюсь дабы писал на форуме в без Тоолсета поэтому могут быть ошибки но всё было так на скока я помню.
Лито
Кто знает как выполнена краска на шардах?(итем которым игроки могут красить броню и шлемы)
Lemegeton
hi.gif Отвечу.
( - Не мог в "одиночном вопросе" ответить да?! Морочишь людям голову mad.gif
- Извентиляюсь, не знал, что будет время dntknw.gif )

Если надо что-то сложное нафигачить - смотри ф-цию:
Neverwinter Script Source
object IPDyeArmor(
    object oItem,
    int nColorType,
    action nColor
);


Параметры:
oItem - Бронька на покраску.
nColorType - константа из ITEM_APPR_ARMOR_COLOR_* (тип покраски)
nColor - собственно цвет (от нуля до 63-х)

Внимание:
Объект oItem просто дестроится, а ф-ция возвращает новый "покрашенный" предмет. oItem уничтожится даже в том случае, когда ф-ция будет применена не к броне!!! А нового не вернет!!! Надо делать проверки.

А вообще, есть способ гораздо проще. Смотри в св-вах предмета "Наложить Заклинание" -> Dye_что-то_там biggrin.gif

З.Ы. Кстати, почему именно на шардах? Что ты имеешь ввиду? Не скрытые цвета случайно?
Лито
Neverwinter Script Source
З.Ы. Кстати, почему именно на шардах? Что ты имеешь ввиду? Не скрытые цвета случайно?

Именно yes.gif

Кстати за этот ответ все равно спасибо, этот я не знал wink.gif

И еще на счет Dye_ там нельзя выбрать цвет в который будешь красить вещь.
Lemegeton
Про скрытые цвета даже писать не буду. Тут уже раз двадцать писали. Ищи. diablo.gif
Lex
Зажимаешь левую кнопку (при выборе краски) и тащишб курсор вниз. Представь, что там еще 2 ряда красок. Навел туда, где "находится" бокс с краской и отпускай кнопку.
Лито
Это я знаю, я не понимаю как с помощью Dye_xxx присвоить краске цвет
MasterMage
Tiger Greyhawk
mamuc
спасибо за скрипит с while...я додумал и вот , что вышло....
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On: 30.01.05
//::///////////////////////////////////////////////
#include "nw_i0_plot"
void main()
{

    object oPC=GetLastAttacker();
    object oNPC=GetObjectByTag("Deron");
    object oItem=GetObjectByTag("ss");
    if (GetCurrentHitPoints(oNPC)<10)
    {
        if(HasItem(oNPC,"ss"))
        {
        SurrenderToEnemies();
        ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC);
        ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectKnockdown(),oNPC);
        }
        else
        {
        SetImmortal(oNPC,FALSE);
        }
    }
}
//ставь бессмертие на НПС, чтобы он не умер, а остался с 1 хп

Добавлено в [mergetime]1107102368[/mergetime]
Neverwinter Script Source
if (GetCurrentHitPoints(oNPC)<10)
вот где собака зарыта была...
я ставил не это а

Neverwinter Script Source
GetHitDice
dntknw.gif не пойму, почему я ЕТО ставил. dntknw.gif
Lex
есть только 1 стремный момент. Было у НПС 12 ХП а перс наносит 15 дамажа и НПС мертв. Имхо таким вот драчунам надо ставить иммортал в самом начале драки. А в конце, после всего, снимать.
MasterMage
Ето для NoKoll (прокоментируйте...в смысле, может подкоректировать как:))
-----------------
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On: 30.01.05
//::///////////////////////////////////////////////
void main()
{
    object oPC=GetEnteringObject();
    object oRing=GetObjectByTag("Ring");
    object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,
    oPC,1,CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC, CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC);
    effect eEf=EffectInvisibility(INVISIBILITY_TYPE_DARKNESS);
    //когда ты входишь в локацию,PC одевает кольцo
    AssignCommand(oPC,ActionEquipItem(oRing,INVENTORY_SLOT_LEFTRING));
    // Затем PC становитсja невидимым
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf,oPC);
    // Затем все ближайшие НПС становjaтсja к PC нейтральны
    ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER);
    // у них чистjaтс действиja
    AssignCommand(oNPC,ClearAllActions());
}

<small>Добавлено в 01:18</small>
Nokoll
Neverwinter Script Source
DelayCommand(18.0, AssignCommand(oHak2, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(18.5, AssignCommand(oHak3, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));
        DelayCommand(19.0, AssignCommand(oHak4, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE, 0.9, 5.0)));

у тебя слишком маленькое время...18,5, 19,0 отличаются по времени в половину секунды...Это даже не чувствуется
АЛЕЕЕЕ buba.gif
поэтому все так быстро....надо на фразу, чтоб прочитать как минимум 4,0 секунды, а у тебя опять же 0,5 buba.gif
DBColl
QUOTE (Lemegeton @ Jan 27 2005, 19:15)
ХБ халявит еще как! Он раз в 7-10 секунд происходит на локации, где нет других игроков. По крайней мере, не в серверной версии...

Кстати, так оно и есть yes.gif. Имхо, это связано с тем, что при игре в сингл локальная машина является и сервером и клиентом. Так шо ето, товарищи, можно считать банальными лагами. ХБ ОЧЕНЬ редко срабатывает ровно через 6 сек. Обычно от 7 до 11-12! this.gif
Nokoll
QUOTE
у тебя слишком маленькое время...18,5, 19,0 отличаются по времени в половину секунды...Это даже не чувствуется
АЛЕЕЕЕ 
поэтому все так быстро....надо на фразу, чтоб прочитать как минимум 4,0 секунды, а у тебя опять же


Огромное пасибо мастермагии я вник! yes.gif
Добавлено в [mergetime]1107180334[/mergetime]
QUOTE
//когда ты входишь в локацию,PC одевает кольцo
    AssignCommand(oPC,ActionEquipItem(oRing,INVENTORY_SLOT_LEFTRING));
    // Затем PC становитсja невидимым
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf,oPC);

Извенябсь но мне не нужно эффект Darcnezz мне чтото вроде сияния например призрочное лицо. dntknw.gif
и второе мне ненужно чтобы при входе в местнось РС одивал кольцо (Кстати он этого не делает) мне нужно чтбы у пк в инвентаре было кольцо и коль когда он его оденит пойдут эти еффекты.
Коль тебе не трудно исправь пожалуйста.
MasterMage
Nokoll кольцо долэжно быть в инвинтаре....ааааа, дома поправлю...просто щас не дома.. pardon.gif
MasterMage
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On: 1.02.05
//::///////////////////////////////////////////////
void main()
{
    object oPC=GetEnteringObject();

    object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1,
CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,
CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC);
    effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
    if(GetTag(oItem)=="Ring")
    {
    AssignCommand(oPC,ActionEquipItem(oRing,INVENTORY_SLOT_LEFTRING));
    // Затем PC становитсja невидимым
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf,oPC);
    // Затем все ближайшие НПС становjaтсja к PC нейтральны
    ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER);
    // у них чистjaтс действиja
    AssignCommand(oNPC,ClearAllActions());
    }
}
// ставишь на модуль в слот onAcquirelItem, но не ЗАМЕНЯЯ, А РЕДАКТИРУЕШЬ ВОТ ТАК:

вот...

Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Example XP2 OnItemAcquireScript
//:: x2_mod_def_aqu
//:: © 2003 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Put into: OnItemAcquire Event

*/

//:://////////////////////////////////////////////
//:: Created By: Georg Zoeller
//:: Created On: 2003-07-16
//:://////////////////////////////////////////////

#include "x2_inc_switches"
#include "nw_i0_plotwizard"
void main()
{   object oIt = GetModuleItemAcquired();
    // PLOT WIZARD MANAGED CODE BEGINS
    PWSetMinLocalIntAndJournalForItemAcquired("p000state", "p000", 3, "Kamen", 150);
    if (GetTag(oIt)=="SKLEP_BOOK")
    {
    SetLocalInt(GetEnteringObject(),"p002began",3);
    AddJournalQuestEntry("p002",3,GetEnteringObject());
    }
    else if (GetTag(oIt)=="pp_pismo")
    {
    object oDoor=GetObjectByTag("PP_DOM3");
    SetLocalInt(GetEnteringObject(),"ppMain_began",1);
    AddJournalQuestEntry("ppMain",1,GetEnteringObject());
    SetLocked(oDoor,FALSE);
    }
    else if(GetTag(oIt)=="PISMO_NACHALO")
    {
    SetLocalInt(GetEnteringObject(),"ppMain_began",2);
    AddJournalQuestEntry("ppMain",2,GetEnteringObject());
    }
    else if(GetTag(oIt)=="Ring")
    {
    object oPC=GetEnteringObject();

    object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1,
CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,
CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC);
    effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
    AssignCommand(oPC,ActionEquipItem(oIt,INVENTORY_SLOT_LEFTRING));
    // Затем PC становитсja невидимым
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf,oPC);
    // Затем все ближайшие НПС становjaтсja к PC нейтральны
    ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER);
    // у них чистjaтс действиja
    AssignCommand(oNPC,ClearAllActions());
    }
    // PLOT WIZARD MANAGED CODE ENDS
     object oItem = GetModuleItemAcquired();
     // * Generic Item Script Execution Code
     // * If MODULE_SWITCH_EXECUTE_TAGBASED_SCRIPTS is set to TRUE on the module,
     // * it will execute a script that has the same name as the item's tag
     // * inside this script you can manage scripts for all events by checking against
     // * GetUserDefinedItemEventNumber(). See x2_it_example.nss
     if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE)
     {
        SetUserDefinedItemEventNumber(X2_ITEM_EVENT_ACQUIRE);
        int nRet =   ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF);
        if (nRet == X2_EXECUTE_SCRIPT_END)
        {
           return;
        }

     }

}
MasterMage
Nokoll прости, я соооооовсем обезумел..надо не на тот слот и не такой скрипт.........Люди!!! Чаго-то я соовсем........поправлю.....погоди до вечера black eye.gif black eye.gif this.gif
Nokoll
Коль Можеш переделай плиз я могу написать что надо ещё раз! unsure.gif
MasterMage
Neverwinter Script Source
object oPC=GetEnteringObject();

    object oNPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,oPC,1,
CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC,
CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_NOT_PC);
    effect eEf=EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
    // Затем PC становитсja невидимым
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEf,oPC);
    // Затем все ближайшие НПС становjaтсja к PC нейтральны
    ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER);
    // у них чистjaтс действиja
    AssignCommand(oNPC,ClearAllActions());
    }
вот как надо, а слот дома посмотрю, так как не помню просто
Nokoll
QUOTE
Nokoll прости, я соооооовсем обезумел..надо не на тот слот и не такой скрипт.........Люди!!! Чаго-то я соовсем........поправлю.....погоди до вечера

За что извенятсо та это я должен извенится за точто наделал хлопот! this.gif
MasterMage
swoon.gif Nokoll не надо, так помню... Вроде, когда ты надеваешь кольцо, становишься невидимым и все враги нейтральны, так? black eye.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.