![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2851
|
|
Level 2 ![]() Класс: Тайный Лучник Характер: True Neutral Раса: Эльф ![]() |
Lex
По поводу первого вопроса: у тебя остался скрипт или подробная информация ( про угол обзора в 220 градусов) Если да то можно ли для разных существ сделать угол обзора разным. Заранее благодарен. |
![]()
Сообщение
#2852
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
NSS int NER_GetObjectSeen(object oTarget, object oCreature, int fVisualAngle = 220)
{ vector vTarget = GetPosition(oTarget); vector vCreature = GetPosition(oCreature); float fTargetXNew = vCreature.x - vTarget.x; float fTargetYNew = vCreature.y - vTarget.y; float fFacing = GetFacing(oCreature); float fDistance = GetDistanceBetween(oTarget,oCreature); float fTangle = asin(fTargetYNew/fDistance); float RESULT; if (fTargetXNew < 0.0) { if (fFacing < 180.0) RESULT = fFacing + fTangle; else RESULT = 360 - fFacing - fTangle; } else { if (fFacing < 180.0) RESULT = 180 - fFacing + fTangle; else RESULT = - 180 + fFacing - fTangle; } if (GetObjectSeen(oTarget,oCreature)) { if ( abs(FloatToInt(RESULT)) <= (fVisualAngle/2) ) return TRUE; } return FALSE; } |
![]()
Сообщение
#2853
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Доброго времени суток всем!
Aiwan Спасибо. Тема, действительно, оказалась полезной. Кстати, подумав, c DelayCommand разобралась, ты подтвердил мои догадки. А теперь возник ну совершенно дурацкий вопрос: почему могут не работать дневные и ночные вэйпойнты, находящиеся в разных локациях? Переменную на свойства модуля надо ставить? (IMG:style_emoticons/kolobok_light/unsure.gif) |
![]()
Сообщение
#2854
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(shadowdweller @ Sep 9 2006, 02:31) [snapback]91376[/snapback] ременную на свойства модуля надо ставить? Вот эту... (IMG:style_emoticons/kolobok_light/declare.gif) NSS X2_SWITCH_CROSSAREA_WALKWAYPOINTS
|
![]()
Сообщение
#2855
|
|
Level 2 ![]() Класс: Тайный Лучник Характер: True Neutral Раса: Эльф ![]() |
Лекс, на какую строку существа ставить энтот скрипт?
|
![]()
Сообщение
#2856
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
это всего лишь функция. У себя я ее использую, когда игрок трогает чужие вещи (ящики, двери). Проверяю этой функцией, видит ли игрока кто-нить или не видит, чтобы потом уже реакцию запускать.
|
![]()
Сообщение
#2857
|
|
Level 1 Класс: Волшебник Характер: Chaotic Evil Раса: Эльф ![]() |
Что нужно сделать чтоб можно было садиться на стул?
Если есть такая тема или кто то задавл такой вопрос дайте пожалуйста ссылку на ответ. |
![]()
Сообщение
#2858
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
РАЗ, ДВА.
З.Ы. Поиск великая вещь. (IMG:style_emoticons/kolobok_light/wink3.gif) Сообщение отредактировал -fenix- - Sep 12 2006, 09:16 |
![]()
Сообщение
#2859
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
QUOTE Ellioth DarkMaider Что нужно сделать чтоб можно было садиться на стул? У меня выглядит так. Делаешь стул юзабельным, и вот это OnUsed: NSS void main() { object oChair = OBJECT_SELF; if(!GetIsObjectValid(GetSittingCreature(oChair))) { AssignCommand(GetLastUsedBy(), ActionSit(oChair)); } } Только места перед стулом побольше оставь для маневра. |
![]()
Сообщение
#2860
|
|
Level 1 Класс: Волшебник Характер: Chaotic Evil Раса: Эльф ![]() |
Пасибо... Теперь объясните куда это все писать (IMG:style_emoticons/kolobok_light/crazy.gif)
Сообщение отредактировал Ellioth DarkMaider - Sep 13 2006, 06:39 |
![]()
Сообщение
#2861
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(Ellioth DarkMaider @ Sep 13 2006, 07:30) [snapback]91579[/snapback] Пасибо... Теперь объясните куда это все писать Ты читай, что тебе пишут: QUOTE(shadowdweller @ Sep 13 2006, 07:30) [snapback]91578[/snapback] Делаешь стул юзабельным, и вот это OnUsed: скрипт ставить на onUsed стула. Куда уж подробнее? (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2862
|
|
Level 1 Класс: Волшебник Характер: Chaotic Evil Раса: Эльф ![]() |
Ну я как бы первый раз и пока что еще толком разобраться немогу... Но пытаюсь (IMG:style_emoticons/kolobok_light/biggrin.gif)
А вот если я делаю скамейку на... допустим на 5 мест как это зделать? Сообщение отредактировал Ellioth DarkMaider - Sep 13 2006, 10:51 |
![]()
Сообщение
#2863
|
|
Level 19 ![]() Класс: Обыватель Характер: True Neutral Раса: Дварф NWN: Контент ![]() |
QUOTE(Ellioth DarkMaider @ Sep 13 2006, 11:48) [snapback]91597[/snapback] А вот если я делаю скамейку на... допустим на 5 мест как это зделать? Один плейс - одно посадочное место. Как вариант - неюзабельная скамейка и 5 Invisible Object. |
![]()
Сообщение
#2864
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Ellioth DarkMaider @ Sep 13 2006, 11:48) [snapback]91597[/snapback] А вот если я делаю скамейку на... допустим на 5 мест как это зделать? Кажись в базе был такой скрипт и темка где-то кажись тоже была. |
![]()
Сообщение
#2865
|
|
Level 1 Класс: Волшебник Характер: Chaotic Evil Раса: Эльф ![]() |
QUOTE(-fenix- @ Sep 13 2006, 11:08) [snapback]91607[/snapback] Кажись в базе был такой скрипт и темка где-то кажись тоже была. Хорошо. Поищу... |
![]()
Сообщение
#2866
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
А вообще-то, что нужно - чтобы игрок сидел или НПС?
Если НПС - делается скамейка. Потом на эту скамейку ставится 5 (или сколько их у тебя там) Invisible Objects. Им присваиваются теги (допустим, "SEAT_01", "SEAT_02" и далее по порядку). Скамейка - неюзабельная, а Invisible objects - как раз юзабельные. С скамейкой все. Теперь у всех НПС, которые должн сидеть на ней, на OnSpawn ставится такой скрипт (Обрати внимание на последнюю строчку): (IMG:style_emoticons/kolobok_light/shout.gif) / NSS :://///////////////////////////////////////////// //:: Name x2_def_spawn //:: Copyright © 2001 Bioware Corp. //::////////////////////////////////////////////// /* Default On Spawn script 2003-07-28: Georg Zoeller: If you set a ninteger on the creature named "X2_USERDEFINED_ONSPAWN_EVENTS" The creature will fire a pre and a post-spawn event on itself, depending on the value of that variable 1 - Fire Userdefined Event 1510 (pre spawn) 2 - Fire Userdefined Event 1511 (post spawn) 3 - Fire both events */ //::////////////////////////////////////////////// //:: Created By: Keith Warner, Georg Zoeller //:: Created On: June 11/03 //::////////////////////////////////////////////// const int EVENT_USER_DEFINED_PRESPAWN = 1510; const int EVENT_USER_DEFINED_POSTSPAWN = 1511; #include "x2_inc_switches" void main() { // User defined OnSpawn event requested? int nSpecEvent = GetLocalInt(OBJECT_SELF,"X2_USERDEFINED_ONSPAWN_EVENTS"); // Pre Spawn Event requested if (nSpecEvent == 1 || nSpecEvent == 3 ) { SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN )); } /* Fix for the new golems to reduce their number of attacks */ int nNumber = GetLocalInt(OBJECT_SELF,CREATURE_VAR_NUMBER_OF_ATTACKS); if (nNumber >0 ) { SetBaseAttackBonus(nNumber); } // Execute default OnSpawn script. ExecuteScript("nw_c2_default9", OBJECT_SELF); //Post Spawn event requeste if (nSpecEvent == 2 || nSpecEvent == 3) { SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN)); } ActionSit (GetNearestObjectByTag("ЗДЕСЬ_ТЭГ_ТВОЕГО_СТУЛА", OBJECT_SELF)); } Это, кстати, родной скрипт из оригинальной кампании. Enjoy! (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]() ![]()
Сообщение
#2867
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Для непися
NSS void main() { object oNPC = GetObjectByTag("тег непися") object oChair = GetObjectByTag("Тег стула") ActionMoveToObject(oChair); ActionSit(oChair); } А для игрока этот NSS void main() { object oPC = GetLastUsedBy(); object oChair = OBJECT_SELF; if (GetIsPC(oPC)) { if (GetIsObjectValid(oChair) && !GetIsObjectValid(GetSittingCreature(oChair))) { AssignCommand(oPC, ActionSit(oChair)); } else if (GetIsObjectValid(GetSittingCreature(oChair))) { AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, SpeakString("А куда садитьсЯ? На руки, что ли?")); } } } Добавь на скамью пару невидимых объектов. Сообщение отредактировал Артём - Sep 21 2006, 08:35 |
![]()
Сообщение
#2868
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
У меня вопрос?
Вот скрипт на заморозку непися NSS #include "x0_i0_anims" //#include "x0_i0_walkway" #include "x0_i0_treasure" void main() { SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); SetListeningPatterns(); effect eVis = EffectVisualEffect(VFX_DUR_FREEZE_ANIMATION); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, OBJECT_SELF); SetLocalInt(OBJECT_SELF, "X2_L_NUMBER_OF_ATTACKS", 2); } Кто даст скрипт на снятие этого эффекта? (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#2869
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Функция:
NSS // Remove eEffect from oCreature. // * No return value void RemoveEffect(object oCreature, effect eEffect) Удаляет эффекты. |
![]()
Сообщение
#2870
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
А как это выглядит в скрипте мне надо чтобы при наступлении на триггер эффект снимался.
|
![]()
Сообщение
#2871
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Артем, вот тебе ссылка с уже готовой функцией, читать.
PS: думаю разберешся что к чему. (IMG:style_emoticons/kolobok_light/wink3.gif) |
![]() ![]()
Сообщение
#2872
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
QUOTE(Dik Morris @ Sep 21 2006, 11:35) [snapback]92300[/snapback] Уже целый час (IMG:style_emoticons/kolobok_light/sad.gif) пытаюсь может кто выложит сам скрипт? (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
![]()
Сообщение
#2873
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE мне надо чтобы при наступлении на триггер эффект снимался. При наступании кого ? NPC или игрока ? Т.к телепатией не владею, будем считать что игрока. NSS // onEnter;
void RemoveTypeEffect(object oCreature, int iType) { effect eEffect = GetFirstEffect(oCreature); while(GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == iType) { RemoveEffect(oCreature, eEffect); } eEffect = GetNextEffect(oCreature); } } void main() { object oNPC; // Наш NPC, иницилизируй; if (GetIsPC(GetEnteringObject()) == FALSE || GetIsObjectValid(oNPC) == FALSE) return; RemoveTypeEffect(oNPC, EFFECT_TYPE_VISUALEFFECT); DestroyObject(OBJECT_SELF, 1.0f); return; } Сообщение отредактировал Dik Morris - Sep 21 2006, 12:11 |
![]()
Сообщение
#2874
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Всё работает (IMG:style_emoticons/kolobok_light/biggrin.gif)
Спасибо. |
![]()
Сообщение
#2875
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Дик, ты так все визуальные эффекты снимешь с него, а не тока замедление. Если прочитать после поста Айвана пост Лекса, то можно увидеть несколько полезных функций, среди которых: E_DeleteSpecificEffect. С помощью нее можно удалить именно нужный эффект.
Вот пример: QUOTE(Lex @ May 16 2006, 22:23) [snapback]81993[/snapback] чтобы снять именно имун к слоу, юзай последнюю функцию.. примерно так: NSS E_DeleteSpecificEffect(GetFirstPC(),OBJECT_INVALID,EFFECT_TYPE_IMMUNITY,IMMUNITY_TYPE_SLOW,-1,TRUE); Вот ПОСТ, все должно стать понятным. Кстати, если эффект есть возможность снять в том же скрипте где он накладывается, то лучше вообще так: NSS RemoveEffect(OBJECT_SELF, eVis);
Сообщение отредактировал -fenix- - Sep 21 2006, 17:23 |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 04:27 |