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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 23 24 25 26 27 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Jan 25 2005, 20:28
Сообщение #601


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

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



Я всегда HasItem пользуюсь, хоть там и одна строка, в проверках диалоговых на наличие вещи.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Jan 25 2005, 20:37
Сообщение #602


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

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



помогите мне ктонибудь на стр.23 :drag:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Тобур
сообщение Jan 25 2005, 21:01
Сообщение #603


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

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



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.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Тобур
сообщение Jan 25 2005, 21:11
Сообщение #604


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

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



QUOTE (Csardas @ Jan 22 2005, 04:07)
Народ помогайте дайте скриптик, мне очень нужно чтобы НПК дерется с тобой и когда он будет присмерти начел разговор с РС помогите.

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

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

2 в событии On Damage этого НПСя идет проверка, равны ли его текущие хит поинты 1 (или тому значению, при котором ты хочешь остановить бой) или нет
Если да, то останавливаешь бой и начинаешь диалог.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jan 26 2005, 10:07
Сообщение #605


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



QUOTE
Я всегда HasItem пользуюсь, хоть там и одна строка, в проверках диалоговых на наличие вещи


"nw_i0_plot" это нехилово обьема инклюд( где то около полторы тыщи строк) с большим набором всяких функций...подключать это только для того, что бы пользоваться одной малюсенькой функцией HasItem( вместо которой очень просто можно сразу написать нужное) весьма не рационально :D ИМХО

Сообщение отредактировал mamuc - Jan 26 2005, 10:07
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Jan 26 2005, 13:24
Сообщение #606


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

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



Нет Тобур ты неправельно понел мне нужно доделать скрипт а он не Компилитс и Тоолсет выдает что проблема в
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);

я бес понятия как это исправить может кто сдесь и знает мой скрипт целый можно посмотреть на стр 23!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Тобур
сообщение Jan 26 2005, 20:03
Сообщение #607


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

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



#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
сообщение Jan 27 2005, 08:52
Сообщение #608


Level 8
***

Класс: Маг
Характер: Lawful Good
Раса: Полуэльф



Tiger Greyhawk скрипт вешается на НПС в слот OnUserDefinite
вообщем я попробую ту строчку про HasItem..........;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Leon PRO
сообщение Jan 27 2005, 11:01
Сообщение #609


Ушедший на войну
Иконки Групп

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



Скрипт написаный ниже я поместил в 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).

хех, держитесь у меня удет скоро тонна вопросов! >:/

Сообщение отредактировал Leon PRO - Jan 27 2005, 11:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lemegeton
сообщение Jan 27 2005, 11:04
Сообщение #610


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

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



Вопрос номер один не дошел до абонента. Абонент перечитал, но вопрос все равно не дошел =)

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

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

З.Ы. Держимся. :D

Сообщение отредактировал Lemegeton - Jan 27 2005, 11:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Leon PRO
сообщение Jan 27 2005, 11:15
Сообщение #611


Ушедший на войну
Иконки Групп

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



вопрос номер 1 переделал...
по вопросу номер два:
т.е. возможно к.л. макаром всетаки указать в runscript аргумент для скрипта ?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lemegeton
сообщение Jan 27 2005, 12:04
Сообщение #612


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

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



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>
Вопрос номер один.

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

б. Надо (или не надо, еще не разобрался :D ) переписать 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);
}


Сообщение отредактировал Lemegeton - Jan 27 2005, 12:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Leon PRO
сообщение Jan 27 2005, 13:02
Сообщение #613


Ушедший на войну
Иконки Групп

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



Хех, пасибо, за вопрос №2, хоть ты сам точно не знаешь, но хоть ткнул меня где копать.
А по вопросу №1 ты по-моему не понял, я в курсе про инклуды.

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

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

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

Сообщение отредактировал Leon PRO - Jan 27 2005, 13:03
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lemegeton
сообщение Jan 27 2005, 13:11
Сообщение #614


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

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



Не, извиняй. Я не в курсе про ДМ скрипты. :xz:

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
сообщение Jan 27 2005, 13:17
Сообщение #615


Ушедший на войну
Иконки Групп

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



Ок, я дома попробую, завтра еще напишу, спасибо огромное!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jan 27 2005, 14:06
Сообщение #616


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



Leon PRO "умный в гору не пойдет,умный гору обойдет" - если ты хочешь передать параметр в скрипт вызванный с ExecuteScript, например :
ExecuteScript(tgItem, oPC ); , то повесь нужное значение на oPC локалкой какой нить..а в скрипте ты эту локалку(значение) сможешь считать и использовать, а потом эту локалку изничтожить, чтоб место зря не занимала...( это один из приемов серии"голь на выдумку хитра" :D )

Сообщение отредактировал mamuc - Jan 27 2005, 14:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Leon PRO
сообщение Jan 27 2005, 15:07
Сообщение #617


Ушедший на войну
Иконки Групп

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



mamuc Да вот пока на этом и остановился =\ но думаю как-бы попроще.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Jan 27 2005, 17:55
Сообщение #618


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Как сделать так чтобы мешки с лутом исчезали через указанное время, например 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);
}

Но мешок не дестроится, подскажите вариант лучше, три часа на это убил а результата не добился :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lemegeton
сообщение Jan 27 2005, 18:50
Сообщение #619


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

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



Был такой вопрос... Решился "Чистильщиком". Т.е. НПЦ, который через некоторое время убирает все "левое" шмотье на карте. Где-то на форуме даже скрипты есть.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mamuc
сообщение Jan 27 2005, 18:50
Сообщение #620


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



ммм ..выше уже писалось - нельзя уничтожить обьект если его инвентарь не пуст..сначало надо весь инвентарь вычистить..

Сообщение отредактировал mamuc - Jan 27 2005, 18:51
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 27 2005, 18:57
Сообщение #621


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

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



ну так чистильщик так и работает. :)

А вообще в ХОТУ стандартная система выпадения вещей разве не кактит? Я в ней не копался, но вроде там можно указать время, через которое дестроится лут.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Тобур
сообщение Jan 27 2005, 19:27
Сообщение #622


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

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



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);
}

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

Не уверен, но, по-моему объект не уничтожается потому, что назначаешь команду уничтожения исполнить объекту, который сам будет уничтожен (умерший моб должен уничтожить мешок).
К тому же у тебя просто ошибка в скрипте: 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));
т.е. чтобы какой то другой объект уничтожал (в данном случае модуль)

Сообщение отредактировал Тобур - Jan 27 2005, 19:31
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 27 2005, 19:33
Сообщение #623


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

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



Объект может сам себя уничтожать, так что все ок со скриптом, надо только содержимое почистить перед этим.
так:
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
сообщение Jan 27 2005, 19:42
Сообщение #624


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

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



Кстати, получает ли такая система ограничение на количество лута? Есть ведь ограничение на количество команд (Actions) в стэке. Кроме того, таймер (ХартБит) "халявит" в тех картах на которых нет игрока. Там все будет ОК?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jan 27 2005, 19:51
Сообщение #625


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

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



??
- Никаких ограничений на кол-во вещей в луте.
- с ХБ эта система никак не связанна.
- ХБ не халявит нигде. Он во всех локах работает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 23 24 25 26 27 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 11:46