![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3746
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Установил я патч 1.68, и сразу же полезли вопросы! Почему на некоторых NPC плащи не отображаются совсем? Причем на PC той же расы отображаются... Может и на NPC'ей как-то можно "надеть" их, скриптами, или через 2da (что, подозреваю, более вероятно)?
|
![]()
Сообщение
#3747
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Так? И в начале скрипта его ставить, и потом выполнение? Neverwinter Script //:://///////////////////////////////////////////// //:: Name: Heartbeat Secret Door Script (Invisible Object) //:: FileName: il_scdoor_hb //:: Copyright © 2007 Gem of the North Team //::////////////////////////////////////////////// /* Creates, if object have found, 2 binded doors */ //::////////////////////////////////////////////// //:: Created By: Ilerien Phoenix //:: Created On: 20.10.2007 //::////////////////////////////////////////////// void main() { object oSelf = OBJECT_SELF; string sTag = GetTag(oSelf); string sLetter = GetStringRight(sTag, 1); if(sLetter == "a") sLetter = "b"; else sLetter = "a"; int bShown = GetLocalInt(oSelf, "Shown"); if(bShown) return; bShown = GetLocalInt(GetObjectByTag(GetStringLeft(sTag, GetStringLength(sTag) - 1) + sLetter), "Shown"); if(bShown) return; //declare major variables string sCreatedDoorTag = ""; float fSearchDist = IntToFloat(GetReflexSavingThrow(oSelf)); int nDifficulty = GetWillSavingThrow(oSelf); int nLockDC = GetFortitudeSavingThrow(oSelf); int nSkillSearch = -50; int nCounter = 1; int nSkill; object oNearestCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE); int bDoneSearch = 0; int bDone = 0; int bNeedDetectMode = GetLocalInt(oSelf, "IL_SCDOOR_DETECTION_NEED_ACTION_MODE"); int bNeedLock = GetLocalInt(oSelf, "IL_SCDOOR_LOCK_DOOR"); float fDist; object oDoor; object oSearcher; object oComp; location lLoc; string sFirstTag = "il_scdoor_c"; while (!bDone && !bDoneSearch && GetIsObjectValid(oNearestCreature)) { if(GetIsObjectValid(GetMaster(oNearestCreature)) || GetIsPC(oNearestCreature) || GetIsDMPossessed(oNearestCreature)) { // what is the distance of the PC to the door location fDist = GetDistanceBetween(oSelf, oNearestCreature); if (fDist <= fSearchDist) { if (LineOfSightObject(oSelf, oNearestCreature) && (!bNeedDetectMode || GetActionMode(oNearestCreature, ACTION_MODE_DETECT)) && GetTag(GetItemInSlot(oPC, INVENTORY_SLOT_NECK)) == "Branzuletko") { nSkill = GetSkillRank(SKILL_SEARCH, oNearestCreature); if((nSkill + 20 >= nDifficulty) && (nSkill + d20() >= nDifficulty)) { bDone = 1; oSearcher = oNearestCreature; } } } else // If there is no one in the search radius, don't continue to search // for the best skill. bDoneSearch = 1; } nCounter = nCounter + 1; oNearestCreature = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, TRUE, oSelf ,nCounter); }//the secret door is founded if(bDone) { sCreatedDoorTag = sFirstTag + GetStringRight(sTag, 4);//tag is, for example, "il_scdoor_c_1_a" lLoc = GetLocation(oSelf); oDoor = CreateObject(OBJECT_TYPE_PLACEABLE, sFirstTag, lLoc, TRUE, sCreatedDoorTag); SetLockUnlockDC(oDoor, nLockDC); if(bNeedLock) SetLocked(oDoor, TRUE); if(GetIsObjectValid(oDoor)) { PlayVoiceChat(VOICE_CHAT_LOOKHERE, oSearcher); sLetter = GetStringRight(sTag, 1); if(sLetter == "a") sLetter = "b"; else sLetter = "a"; sCreatedDoorTag = GetStringLeft(sFirstTag + GetStringRight(sTag, 4), GetStringLength(sFirstTag) + 3) + sLetter; oComp = GetObjectByTag(GetStringLeft(sTag, GetStringLength(sTag) - 1) + sLetter); lLoc = GetLocation(oComp); nLockDC = GetFortitudeSavingThrow(oComp); SetLockUnlockDC(oComp, nLockDC); bNeedLock = GetLocalInt(oSelf, "IL_SCDOOR_LOCK_DOOR"); if(bNeedLock) SetLocked(oComp, TRUE); oDoor = CreateObject(OBJECT_TYPE_PLACEABLE, sFirstTag, lLoc, TRUE, sCreatedDoorTag); SetLocalInt(oSelf, "Shown", 1); } } } Вчитался в скрипт - омг, там можно столько оптимизировать (IMG:style_emoticons/kolobok_light/smile.gif) Заодно нашёл одну кривость (IMG:style_emoticons/kolobok_light/wacko.gif) Новая версия: ![]() (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Ilerien - Jun 26 2008, 12:06 |
![]()
Сообщение
#3748
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
Почему на некоторых NPC плащи не отображаются совсем? Причем на PC той же расы отображаются... Может и на NPC'ей как-то можно "надеть" их, скриптами, или через 2da (что, подозреваю, более вероятно)? Ой! У нас тоже странная фигня с этими плащами - в тулсете эльфам они на уши надеваются! Мы даже испугались, что у них головы пропали! А на других, значит, вовсе не надеваются? |
![]()
Сообщение
#3749
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Это бага 1.68, в 1.69 пофиксили.
|
![]()
Сообщение
#3750
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
|
![]()
Сообщение
#3751
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
А еще такой вопрос - обязательно такой сложный скрипт писать на проверку надетого предмета у игрока или можно воспользоваться стандартным условием? Я просто скрипт у Айва посмотрела и жутко впечатлилась. Ключевое слово - жутко. Шад, я жеж делал УНИВЕРСАЛЬНЫЙ скрипт один на все. Плюс, я хотел что бы тебе было ПРОСТО его использовать. Если бы я знал, что ты буш его ковырять, то сделал бы вместо этого: Neverwinter Script // ------------- Проверка на уникальный предмет одетый ----------------- // находим одетое на игроке и определяем это object oItemNesk = GetItemInSlot(INVENTORY_SLOT_NECK, oPC); object oItemRingR = GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC); object oItemRingL = GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC); // Смотрим свойства триггера и ищем, помечен ли таг нужной вещи string sNesk = GetLocalString(oSelf, "INVENTORY_SLOT_NECK"); // Амулет string sItemRingR = GetLocalString(oSelf, "INVENTORY_SLOT_RIGHTRING"); // Кольцо string sItemRingL = GetLocalString(oSelf, "INVENTORY_SLOT_LEFTRING"); // Кольцо // Если у нас помечено, что таг амулета не пустой if (sNesk != "") { // таг надетого амулета не сходятся или он вообще не надет то возврат скрипта if (GetTag(oItemNesk)!= sNesk || oItemNesk == OBJECT_INVALID) { SendMessageToPC(oPC, "<cу >У ВАС ОТСУТСВУЕТ НУЖНЫЙ ПРЕДМЕТ</c>"); if (GetIsObjectValid(oHench)) // Хеньчман нас предупреждает, что тут что-то есть { if(!GetLocalInt(oSelf, "HENCHMAN_SPEAK")) { SetLocalInt(oSelf, "HENCHMAN_SPEAK", TRUE); DelayCommand(0.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_SEARCH))); DelayCommand(0.21, AssignCommand(oHench, SpeakString(sHench1))); } } return; } } if (sItemRingR != "") { if (GetTag(oItemRingR)!= sItemRingR || oItemRingR == OBJECT_INVALID) { SendMessageToPC(oPC, "<cу >У ВАС ОТСУТСВУЕТ НУЖНЫЙ ПРЕДМЕТ</c>"); if (GetIsObjectValid(oHench)) // Хеньчман нас предупреждает, что тут что-то есть { if(!GetLocalInt(oSelf, "HENCHMAN_SPEAK")) { SetLocalInt(oSelf, "HENCHMAN_SPEAK", TRUE); DelayCommand(0.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_SEARCH))); DelayCommand(0.21, AssignCommand(oHench, SpeakString(sHench1))); } } return; } } if (sItemRingL != "") { if (GetTag(oItemRingL)!= sItemRingL || oItemRingL == OBJECT_INVALID) { SendMessageToPC(oPC, "<cу >У ВАС ОТСУТСВУЕТ НУЖНЫЙ ПРЕДМЕТ</c>"); if (GetIsObjectValid(oHench)) // Хеньчман нас предупреждает, что тут что-то есть { if(!GetLocalInt(oSelf, "HENCHMAN_SPEAK")) { SetLocalInt(oSelf, "HENCHMAN_SPEAK", TRUE); DelayCommand(0.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_SEARCH))); DelayCommand(0.21, AssignCommand(oHench, SpeakString(sHench1))); } } return; } } // ------------- Проверка на уникальный предмет одетый ----------------- ВОТ ЭТО: Neverwinter Script if GetTag(GetItemInSlot(oPC, INVENTORY_SLOT_NECK)) != "Branzuletko")
return; |
![]()
Сообщение
#3752
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Ясно! А 1.69 вроде еще только на стадии проверки? Или уже все, можно качать и пользоваться? Ну пока он бетой зовётся, хз, когда сделают финалку (IMG:style_emoticons/kolobok_light/smile.gif) Был слух, что десятая бета и будет финалкой, на биоварях пока выложена 9я.
|
![]()
Сообщение
#3753
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Ilerien, огромное спасибо! (IMG:style_emoticons/kolobok_light/thank_you.gif)
Айв, и тебе тоже! Приятно, честное слово! Конечно, я буду ковырять! Я все скрипты ковыряю (IMG:style_emoticons/kolobok_light/smile.gif) Мне же хочется знать, как это делается! Мне просто нужна такая секретная дверь, появление которой зависело бы только от наличия амулета на слоте, и ни от чего другого. Вот и пытаюсь разобраться. Ilerien, только вот какая вещь. Вот в этой строке выдает ошибку "VARIABLE DEFINED WITHOUT TYPE" Neverwinter Script if (LineOfSightObject(oSelf, oNearestCreature) && (!bNeedDetectMode || GetActionMode(oNearestCreature, ACTION_MODE_DETECT)) && GetTag(GetItemInSlot(oPC, INVENTORY_SLOT_NECK)) == "Branzuletko") И еще. Ты говоришь - убрать хартбит с видимой двери. Если я правильно поняла, видимая - это та, которая присутствует в палитре и создается, если игрок приближается к невидимому объекту, так? То есть, видимая в игре, а не в тулсе? (IMG:style_emoticons/kolobok_light/slow.gif) Сообщение отредактировал shadowdweller - Jun 27 2008, 01:20 |
![]()
Сообщение
#3754
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Neverwinter Script if (LineOfSightObject(oSelf, oNearestCreature) && (!bNeedDetectMode || GetActionMode(oNearestCreature, ACTION_MODE_DETECT)) && GetTag(GetItemInSlot(oNearestCreature, INVENTORY_SLOT_NECK)) == "Branzuletko") Цитата И еще. Ты говоришь - убрать хартбит с видимой двери. Если я правильно поняла, видимая - это та, которая присутствует в палитре и создается, если игрок приближается к невидимому объекту, так? То есть, видимая в игре, а не в тулсе? Она самая (IMG:style_emoticons/kolobok_light/smile.gif) Обжект в палитре зовётся "Потайная дверь".
|
![]()
Сообщение
#3755
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Ну пока он бетой зовётся, хз, когда сделают финалку (IMG:style_emoticons/kolobok_light/smile.gif) Был слух, что десятая бета и будет финалкой, на биоварях пока выложена 9я. Десятая бета как раз выложена. Финалкой будет 11-я, которая отличается только одним фиксом.
|
![]()
Сообщение
#3756
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Десятая бета как раз выложена. Финалкой будет 11-я, которая отличается только одним фиксом. Спасибо! Значит, заморачиваться с попытками надеть эти плащи пока просто не стоит... И еще, безотносительно ко всему предыдущему вопрос: как сделать так, чтобы при юзании однго из нескольких юзабл прейсеблов, остальные делались бы неюзабл? Чтоб получалось, чо выбрал один раз - и все, больше не повыбираешь? (примерно как было в HotU в комнате зеркал, тока что там из инвентаря в зеркале выбирать, а тут плейсеблы) |
![]()
Сообщение
#3757
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Neverwinter Script if (LineOfSightObject(oSelf, oNearestCreature) && (!bNeedDetectMode || GetActionMode(oNearestCreature, ACTION_MODE_DETECT)) && GetTag(GetItemInSlot(oNearestCreature, INVENTORY_SLOT_NECK)) == "Branzuletko") 27.06.2008 13:28:35: Error. 'il_scdoor_hb_1' did not compile. il_scdoor_hb_1.nss(59): ERROR: DECLARATION DOES NOT MATCH PARAMETERS (IMG:style_emoticons/kolobok_light/cray.gif) |
![]()
Сообщение
#3758
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Десятая бета как раз выложена. Финалкой будет 11-я, которая отличается только одним фиксом Я отстал от жизни (IMG:style_emoticons/kolobok_light/sad.gif) Цитата ERROR: DECLARATION DOES NOT MATCH PARAMETERS Neverwinter Script GetItemInSlot(INVENTORY_SLOT_NECK, oNearestCreature) Н-да, ну не помню я порядок аргументов (IMG:style_emoticons/kolobok_light/blush.gif) А смотреть хелп в тулсе было влом (IMG:style_emoticons/kolobok_light/snoozer_17.gif)
|
![]()
Сообщение
#3759
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
shadowdweller, скриптинг для шардов совсем другой. Не парь мозги, поставь так и будет работать:
Neverwinter Script if (LineOfSightObject(oSelf, GetFirstPC()) && (!bNeedDetectMode || GetActionMode(GetFirstPC(), ACTION_MODE_DETECT)) && GetTag(GetItemInSlot(GetFirstPC(), INVENTORY_SLOT_NECK)) == "Branzuletko")
|
![]()
Сообщение
#3760
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Lirulin, на тех зеркалах, если не ошибаюсь, случайным образом накладывались различные эффекты. Чтобы зеркало считалось уже использованным, на него можно повесить "флаг" (переменную), которая не позволит сработать висящему на событии объекта OnUsed скрипту. Если объекты сделаны по маске (pl_mirror_01, pl_mirror_02, pl_mirror_03, pl_mirror_04 ...), то все остальные объекты можно сделать неиспользуемыми с помощью цикла, который прогонит данные объекты через себя и поставит на каждый флажок, запрещающий запускаться скрипту.
shadowdweller, только наоборот: Neverwinter Script GetTag(GetItemInSlot(INVENTORY_SLOT_NECK, GetFirstPC()))
|
![]()
Сообщение
#3761
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Цитата как сделать так, чтобы при юзании однго из нескольких юзабл прейсеблов, остальные делались бы неюзабл? Чтоб получалось, чо выбрал один раз - и все, больше не повыбираешь? Neverwinter Script // Set oPlaceable's useable object status. // Note: Only works on non-static placeables. void SetUseableFlag(object oPlaceable, int nUseableFlag) нэ? если не прокатит - всегда можно старые уничтожить и создать новые неюзабельные. |
![]()
Сообщение
#3762
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
shadowdweller, только наоборот: Neverwinter Script GetTag(GetItemInSlot(INVENTORY_SLOT_NECK, GetFirstPC())) Вот поэтому у тебя наверняка и не компелится твой скрипт. Я же правил твою строку без редактора. Ты наверное перепутала местами аргументы функции. Это я Шад... (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3763
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Н-да, ну не помню я порядок аргументов А смотреть хелп в тулсе было влом [только наоборот: Neverwinter Script GetTag(GetItemInSlot(INVENTORY_SLOT_NECK, GetFirstPC())) Вот поэтому у тебя наверняка и не компелится твой скрипт. Я же правил твою строку без редактора. Ты наверное перепутала местами аргументы функции. Это моя вина (IMG:style_emoticons/kolobok_light/smile.gif) Вот что мне стоило зайти в тулсет и самой посмотреть эти грешные аргументы! А я испугалась, что что-нибудь вообще насовсем испорчу... Да, в обратном порядке действительно компилится. Спасибо! ЗЫ: Урра! (IMG:style_emoticons/kolobok_light/yahoo.gif) Все работает! Ilerien, Aiwan, спасибо огромное, что мучаетесь со мной. ЗЗЫ: И еще такой вопрос - скрипты применимы только к одной паре дверей? То есть можно ли использовать одни и те же скрипты для каждой пары дверей на одной и той же локации? Или нужно каждый раз их перенастраивать для каждой конкретной пары? Сообщение отредактировал shadowdweller - Jun 28 2008, 13:51 |
![]()
Сообщение
#3764
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
Zirrex, azathoth, спасибо, я попробую!
azathoth, а куда вешать скрипт? Чтобы зеркало считалось уже использованным, на него можно повесить "флаг" (переменную), которая не позволит сработать висящему на событии объекта OnUsed скрипту. Если объекты сделаны по маске (pl_mirror_01, pl_mirror_02, pl_mirror_03, pl_mirror_04 ...), то все остальные объекты можно сделать неиспользуемыми с помощью цикла, который прогонит данные объекты через себя и поставит на каждый флажок, запрещающий запускаться скрипту. Куда и как вешать флаги? На OnUsed уже висит - к нему прибавить? А объекты имеют тэги примерно name1_statue, name2_statue... и .д. И по идее, когда поюзаешь, она сама пропадает. А вот другие должны оставаться... но не юзаться более. |
![]()
Сообщение
#3765
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата И еще такой вопрос - скрипты применимы только к одной паре дверей? То есть можно ли использовать одни и те же скрипты для каждой пары дверей на одной и той же локации? Или нужно каждый раз их перенастраивать для каждой конкретной пары? Все настраивается в самих дверях, я в мануале описывал (IMG:style_emoticons/kolobok_light/wink3.gif) Просто теги нужны разные для каждой двери.Цитата Куда и как вешать флаги? Поставить галочку "используемый" (IMG:style_emoticons/kolobok_light/smile.gif) Снимать юзабл флаг у остальных - тоже в onUse. Сообщение отредактировал Ilerien - Jun 28 2008, 22:48 |
![]()
Сообщение
#3766
|
|
Level 9 ![]() Класс: Вор Характер: Chaotic Good Раса: Эльф МАСТЕР Переводов ![]() |
Все настраивается в самих дверях, я в мануале описывал (IMG:style_emoticons/kolobok_light/wink3.gif) Просто теги нужны разные для каждой двери. Звиняюсь. Моя сегодня тупой тролль. (IMG:style_emoticons/kolobok_light/orc.gif) |
![]()
Сообщение
#3767
|
|
Level 3 ![]() Класс: Клерик Характер: Chaotic Good Раса: Эльф ![]() |
|
![]()
Сообщение
#3768
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
А можно поподробнее, как это сделать так, чтобы не получилось, как у Xfans - объект пропал, и скрипт, висящий на нем перестает выполняться? Поставить это действие ДО DestroyObject? Пожалуйста… Количество плейсов может быть любым, останется только один юзабельным, т.е. который мы откроем. Что с ним делать – это уж ваши проблемы. Другие, с такими же тегами в этой области, заменятся плейсами из палитры. Neverwinter Scriptnss1// Set oPlaceable's useable object status.// Note: Only works on non-static placeables.void SetUseableFlag(object oPlaceable, int nUseableFlag)nss2nss3нэ?если не прокатит - всегда можно старые уничтожить и создать новые неюзабельные. Что-то этой функции в моем тулсете нет… Neverwinter Script //:://////////////////////////////////////////////
//:: Слот: OnUsed //:: File name: us_place_destroy //::////////////////////////////////////////////// void main() { object oPC = GetLastUsedBy(); int nNth; // Номер плейса string sTag = GetTag(OBJECT_SELF); object oPlace = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nNth); // Ближайший плейс if(GetLocalInt(OBJECT_SELF, "DESTROY")==1) return; // Если скрипт сработал - выход while(GetIsObjectValid(oPlace)) { if(GetTag(oPlace) == sTag && GetLocalInt(oPlace, "DESTROY")==0) // Если совпали теги { SetLocalInt(oPlace,"DESTROY",1); // Вешаем локалку string sResRef = GetResRef(oPlace); // ResRef неюзабельного плейса в палитре location Loc = GetLocation(oPlace); //Заменим плейс на неюзабельный из палитры object oPlaceNew = CreateObject(OBJECT_TYPE_PLACEABLE, sResRef, Loc, FALSE, "NEW_"+sTag); AssignCommand(oPC, SpeakString(GetName(oPlaceNew)+" "+IntToString(nNth))); // Фраза-Контроль DestroyObject(oPlace); // Удалим юзабельный плейс } nNth++; oPlace = GetNearestObject(OBJECT_TYPE_PLACEABLE, OBJECT_SELF, nNth); } //ТУТ ПИШЕМ ЧТО ДОЛЖНО ПРОИЗОЙТИ С ЮЗАБЕЛЬНЫМ ПЛЕЙСОМ SetLocalInt(OBJECT_SELF,"DESTROY",1); // Вешаем локалку } /* Теги всех удаляемых плейсов должны быть одинаковые. РесРефы в палитре неюзабельных плейсов должны совпадать с юзабельными. */ |
![]()
Сообщение
#3769
|
|
Level 3 ![]() Класс: Обыватель Характер: Neutral Good Раса: Человек ![]() |
|
![]()
Сообщение
#3770
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата А не знаете, будет ли там поправлен еще один глючок, связанный с плащами - а именно то, что у существ с крыльями наличие плаща начисто убирает эти крылья? Это не глюк (IMG:style_emoticons/kolobok_light/smile.gif) Желаемый результат можно достичь редактированием cloakmodel.2da.Цитата Что-то этой функции в моем тулсете нет… (IMG:style_emoticons/kolobok_light/shok.gif) Как-то всё сложно о.ОNeverwinter Script const int PLACEABLE_QUANTITY = <количество обжектов>; Хы, <nss> не признаёт слово continue (IMG:style_emoticons/kolobok_light/whistle3.gif) void main() { object oPC = GetLastUsedBy(); //в приведённом ниже эта переменная не нужна, но, наверное, понадобится дальше object oSelf = OBJECT_SELF; string sTag = GetTag(oSelf); //теги что-то вроде "object_01", "object_02", etc. Bажен только двухсимвольный номер (IMG:style_emoticons/kolobok_light/smile.gif) int nNumberSelf = StringToInt(GetStringRight(sTag, 2)); string sBase = GetStringLeft(sTag, GetStringLength(sTag) - 2); int nNumber; string sNumber; for(nNumber = 1; nNumber <= PLACEABLE_QUANTITY; nNumber++) { if(nNumber == nNumberSelf) continue; sNumber = IntToString(nNumber); if(nNumber < 10) sNumber = "0" + sNumber; SetUseableFlag(GetObjectByTag(sBase + sNumber), FALSE); } <тут прописываем, что должно происходить при юзе плейса> } Цитата А можно поподробнее, как это сделать так, чтобы не получилось, как у Xfans - объект пропал, и скрипт, висящий на нем перестает выполняться? DestroyObject всё равно выполняется после того, как завершится вызвавший его скрипт. Если в скрипте ничего не заделеено, можно смело применять эту функцию на вызвавший скрипт обжект и не париться. Всё заделеенное нужно перекидывать на любой 100%-но валидный обжект - модуль/локу/игрока/...
Сообщение отредактировал Aiwan - Jun 30 2008, 23:13 |
![]() ![]() |
Текстовая версия | Сейчас: 9th August 2025 - 21:51 |