![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2346
|
|
Level 3 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
NSS //::////////////////////////////////////////////// //:: OnExit am_aex_random //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* Удаление лута на локации случайных боев. */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 24.05.2005 //::///////////////////////////////////////////// int GetIsAssociate(object oMaster, object oAssociate) { object oMaster = GetMaster(oAssociate); if(oMaster != OBJECT_INVALID) { return TRUE; } return FALSE; } void main() { object oPC = GetExitingObject(); object oDestr = GetFirstObjectInArea(OBJECT_SELF); if (!GetIsPC(oPC)) return; while (oDestr!=OBJECT_INVALID) { //------------------------------------------------------------------------------ if (GetHasInventory(oDestr) && GetTag(oDestr)=="BodyBag") // Лут - сумка стандартная { object oItem = GetFirstItemInInventory(oDestr); while (GetIsObjectValid(oItem)) { DestroyObject(oItem); oItem = GetNextItemInInventory(oDestr); } DestroyObject(oDestr); } //------------------------------------------------------------------------------ if (GetObjectType(oDestr) == OBJECT_TYPE_PLACEABLE // || GetObjectType(oDestr) == OBJECT_TYPE_CREATURE && !GetIsAssociate(oPC, oDestr)) { { CopyItem(oDestr, oPC, TRUE); } } //------------------------------------------------------------------------------*/ oDestr = GetNextObjectInArea(OBJECT_SELF); } } Aiwan! (IMG:style_emoticons/kolobok_light/good.gif) НЛО исчезло, после небольшой доработки твоего скрипта. (IMG:style_emoticons/kolobok_light/thank_you.gif) Но у меня вопрос теперь такого плана. Подставив QUOTE GetObjectType(oDestr) == OBJECT_TYPE_PLACEABLE я не подверг ли опасности какие нибудь другие объекты, носящие стратегически важную цель для модуля? (IMG:style_emoticons/kolobok_light/vava.gif)
|
![]()
Сообщение
#2347
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Слушай, я правил тот скрипт и конечно же накосячил в нем, так как вырезал куски для тебя. Ща убрал тока одину локалку вверху. Так что смотри мой скрипт выше, я там пометил что я лишнее удалил. Извини.
Перечитал свой пост, это ты там у себя накосячил что-то (IMG:style_emoticons/kolobok_light/wacko.gif) Короче этот блок либо поправь либол возьми мой я пометил что там он делает. NSS //:://////////////////////////////////////////////
//:: OnExit am_aex_random //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* Удаление лута на локации случайных боев. */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 24.05.2005 //::///////////////////////////////////////////// int GetIsAssociate(object oMaster, object oAssociate) { object oMaster = GetMaster(oAssociate); if(oMaster != OBJECT_INVALID) { return TRUE; } return FALSE; } void main() { object oPC = GetExitingObject(); object oDestr = GetFirstObjectInArea(OBJECT_SELF); if (!GetIsPC(oPC)) return; while (oDestr!=OBJECT_INVALID) { //------------------------------------------------------------------------------ if (GetHasInventory(oDestr) && GetTag(oDestr)=="BodyBag") { object oItem = GetFirstItemInInventory(oDestr); while (GetIsObjectValid(oItem)) { string sTag = GetTag(oItem); // Debag message SendMessageToPC(oPC, "Destroy Item - "+sTag); DestroyObject(oItem); oItem = GetNextItemInInventory(oDestr); } string sTag = GetTag(oDestr); // Debag message string sResRef = GetResRef(oDestr); SendMessageToPC(oPC, "Destroy Object - "+sTag+" Resref-"+sResRef); // Debag message DestroyObject(oDestr); } //------------------------------------------------------------------------------ if (GetObjectType(oDestr) == OBJECT_TYPE_ITEM // Если это предмет || GetIsEncounterCreature(oDestr) // или монстр из енкаучера && !GetIsAssociate(oPC, oDestr)) // но не наш помощник { // Если это предмет плотовый, якобы мы его уронили или не подняли случайно if (GetPlotFlag(oDestr) == TRUE && GetObjectType(oDestr) == OBJECT_TYPE_ITEM) { CopyItem(oDestr, oPC, TRUE); // копируем его в инвентарь РС SendMessageToPC(oPC, "Перед тем, как идти дальше, вы вернулись и побдобрали важный предмет."); } string sTag = GetTag(oDestr); // Debag message string sResRef = GetResRef(oDestr); SendMessageToPC(oPC, "Destroy Object - "+sTag+" Resref-"+sResRef); // Debag message DestroyObject(oDestr); // Удаляем то что валялось или бегало и пугало нас } //------------------------------------------------------------------------------*/ oDestr = GetNextObjectInArea(OBJECT_SELF); } } |
![]()
Сообщение
#2348
|
|
Level 3 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Все, нашел консенсус. От трупов отказался, вернулся к мешкам лута стандартным, пусть будет так, зато все работает.
Спасибо всем за помощь. Aiwan, вам отдельное спасибо за нахождение решения проблемы (IMG:style_emoticons/kolobok_light/thank_you.gif) P.S. Пытался выловить этот светящийся объект путем того, что через скрипт Aiwan'a удалял все плейсиблы с локи, потом заходил в нее еще раз и после убийства мобов опять выходил. Функция сообщения указывающего что удалялось показало 2 объекта с тэгом стандартного мешочка лута... Вот так. Неразрешенная загадка осталось таковой Сообщение отредактировал Mandrake - Jun 18 2006, 01:07 |
![]()
Сообщение
#2349
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Mandrake, это старый баг данного флажка. Удаляется этот светящийся объект только тогда, когда игрок полностью забирает все вещи с трупа, но если труп с вещами удаляется сам по истечение определенного времени, то точка остается. В свое время долго боролся с этой проблемой, но так и не получилось избавиться от этих точек. Похоже, что в месте смерти остается невидимый объект, который после удаления тела перестает быть активным, но сам не исчезает.
Кстати, ты написал QUOTE вернулся к мешкам лута стандартным Каким именно? В моем модуле создается на месте смерти невидимый объект из палитры, в который сразу же копируются все выпавшие вещи с монстра. Через 1 минуту все это добро, вместе с телом монстра, удаляется. Работает хорошо, и не вызывает каких-либо проблем. И главное, что смотрится отлично. Если интересует, могу поделиться скриптом.
|
![]()
Сообщение
#2350
|
|
Level 3 ![]() Класс: Волшебник Характер: Neutral Evil Раса: Человек ![]() |
Мешок который по умолчанию, с тэгом "BodyBag". Именно он удаляется скриптом Aiwan'a, после того, как с локи уходит игрок. Но если я понял правильно, то он действует в сингле, а в онлайн может доставить неудобство, ибо с локации может выйти кто то другой, а игрок который убил моба останется без законно выбитого добра.
Я конечно планированием сетевых шардов заниматься не думаю, но для просвещения, не отказался бы увидеть ваш скрипт, Zirrex (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#2351
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Не начинается диалог...
NSS void main() { object oPC = GetEnteringObject(); object oNPC1 = GetObjectByTag("NPC_01"); // Ãëàâàðü object oNPC2 = GetObjectByTag("NPC_02"); // Ëó÷íèöà object oNPC3 = GetObjectByTag("NPC_03"); object oNPC4 = GetObjectByTag("NPC_04"); object oWPpc1 = GetWaypointByTag("WP_PC_1"); object oWP1 = GetWaypointByTag("WP_NPC_01"); object oWP2 = GetWaypointByTag("WP_NPC_02"); object oWP3 = GetWaypointByTag("WP_NPC_03"); object oWP4 = GetWaypointByTag("WP_NPC_04"); object oDoor1 = GetObjectByTag("DOOR_01"); // Äâåðü Ãëàâàðÿ object oDoor2 = GetObjectByTag("DOOR_02"); // Äâåðü ëó÷íèöû object oDoor3 = GetObjectByTag("DOOR_03"); // Íàøà äâåðü object oDoor4 = GetObjectByTag("DOOR_04"); // Íàøà äâåðü if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1) return; { SetLocalInt(OBJECT_SELF, "TRIGGER", 1); SetCutsceneMode(oPC); AssignCommand(oPC, ClearAllActions()); AssignCommand(oNPC1, ClearAllActions()); AssignCommand(oNPC2, ClearAllActions()); AssignCommand(oNPC3, ClearAllActions()); AssignCommand(oNPC4, ClearAllActions()); ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWPpc1))); ActionDoCommand(AssignCommand(oPC, SetCameraFacing(280.0, 7.0, 45.0, CAMERA_TRANSITION_TYPE_SLOW))); ActionDoCommand(AssignCommand(oPC, SpeakString("Êàê-òî ñäåñü ìðà÷íî... è... ïîäîçðèòåëüíî òèõî..."))); ActionWait(9.5); ActionDoCommand(AssignCommand(oDoor1, ActionOpenDoor(OBJECT_SELF))); ActionDoCommand(AssignCommand(oDoor2, ActionOpenDoor(OBJECT_SELF))); ActionDoCommand(AssignCommand(oDoor3, ActionOpenDoor(OBJECT_SELF))); ActionDoCommand(AssignCommand(oDoor4, ActionOpenDoor(OBJECT_SELF))); ActionWait(1.0); ActionDoCommand(AssignCommand(oNPC1, ActionForceFollowObject(oWP1))); ActionDoCommand(AssignCommand(oNPC2, ActionForceFollowObject(oWP2))); ActionDoCommand(AssignCommand(oNPC3, ActionForceFollowObject(oWP3))); ActionDoCommand(AssignCommand(oNPC4, ActionForceFollowObject(oWP4))); ActionWait(4.5); ActionStartConversation(GetFirstPC(), "bandit1"); } } |
![]()
Сообщение
#2352
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Белатрис
Строка: NSS ActionStartConversation(GetFirstPC(), "bandit1"); Начинает диалог, с самим триггером. К тому же, зачем использовать функцию GetFirstPC() если игрок и так определен ? + Просто-напросто, может отсутствовать диалог. PS: на будущее, копируй код с элементами русс. речи (комментариями, текстом) на русской раскладке. |
![]() ![]()
Сообщение
#2353
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
Всем привет, Дамы и Господа.
Насколько я понимаю скрипты разбираются здесь. Дело в том, что на просторах инета я нашел один интересный скриптик. Этот скрипт меняет свойство навыка Animal Empathy у рэйнджэра и друида (вкратце, зверье не привлекается на сторону последних, но и не атакует их). Возникла одна проблема - скрипт идет только под HotU v. 1.66, а с учетом моего соединения скачать 76 Мб нереально. К тому же хотелось бы вставить подобное нововведение в кампанию, а не только в модули. Простой записи в Оверрайд не только основного файла (выложен файл *.erf), но даже его содержимого не достаточно. Если кого-то как и меня заинтересует подобное, то ниже ссылка. nwvault.ign.com Заранее спасибо за помощь... |
![]()
Сообщение
#2354
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Alaron
В HotU, и 1.66 есть новые фун-ции, и если они используются в скрипте, то тут уже ничего не поделаешь, остаеться только ставить аддон и патчить игру. QUOTE Простой записи в Оверрайд не только основного файла (выложен файл *.erf), но даже его содержимого не достаточно. еrf, не нужно записывать в ovveride, они просто импортируются в модуль. (File - Import - нужный *erf) |
![]()
Сообщение
#2355
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
QUOTE В HotU, и 1.66 есть новые фун-ции, и если они используются в скрипте, то тут уже ничего не поделаешь, остаеться только ставить аддон и патчить игру. Что это меняет? Даже если пропатчить игру, то вставить скрипты в кампанию не выйдет, т.к. Тулсет просто откажется компилировать содержимое, ссылаясь на пропасть ошибок... QUOTE еrf, не нужно записывать в ovveride, они просто импортируются в модуль. (File - Import - нужный *erf) Я понимаю, тем не менее должна быть возможность вставить скрипты не в модуль, а в саму кампанию... Сообщение отредактировал Alaron - Jun 24 2006, 20:54 |
![]()
Сообщение
#2356
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Alaron
QUOTE Я понимаю, тем не менее должна быть возможность вставить скрипты не в модуль, а в саму кампанию... Модули компании, лежат в папке nwn, и имеют расширение *NWN, для того чтобы открыть их в тулсете, просто смени расширение на *MOD, перезапиши в moduls, спокойно импортируй скрипт, сохраняй мод, а потом опять меняй расширение на *NWN, и записывай в прежнею папку. Сообщение отредактировал Dik Morris - Jun 25 2006, 12:39 |
![]()
Сообщение
#2357
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
QUOTE Модули компании, лежат в папке nwn, и имеют расширение *NWN, для того чтобы открыть их в тулсете, просто сменить расширение на *MOD, перезапиши в moduls, спокойно импортируй скрипт, сохраняй мод, а потом опять меняй расширение на *NWN, и записывай в прежнею папку. Как я уже писал выше, Тулсет сохраняет модули с пропастью ошибок в основном в скриптах. (IMG:style_emoticons/kolobok_light/sad.gif) К тому же придется прописывать скрипты ВО ВСЕХ МОДУЛЯХ, а это пи... в общем, крайне нежелательно. (IMG:style_emoticons/kolobok_light/suicide2.gif) В любом случае спасибо за совет... (IMG:style_emoticons/kolobok_light/declare.gif) Сообщение отредактировал Alaron - Jun 24 2006, 22:35 |
![]()
Сообщение
#2358
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Alaron, а что тебе мешает исправить эти ошибки? Ну если ты хочешь изменить что-то в модулях компании, то делать это лучше все же во всех модулях. Да, вот еще что, если ты обратил внимание, то все модули сделаны так, чтобы в них не было ничего от аддона, в котором компания не делалась.
|
![]()
Сообщение
#2359
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
QUOTE(Dik Morris @ Jun 24 2006, 17:27) [snapback]85785[/snapback] Белатрис Строка: NSS ActionStartConversation(GetFirstPC(), "bandit1"); Начинает диалог, с самим триггером. К тому же, зачем использовать функцию GetFirstPC() если игрок и так определен ? + Просто-напросто, может отсутствовать диалог. PS: на будущее, копируй код с элементами русс. речи (комментариями, текстом) на русской раскладке. А написать нельзя? (IMG:style_emoticons/kolobok_light/shout.gif) Айван: послушай меня, если тебе надо что бы КТО-ТО написал за тебя скрипт, то просить надо вежливо и низко кланяясь. ТУТ ТЕБЕ НИКТО НИЧЕГО НЕ ДОЛЖЕН. Если не умеешь, сразу и говори Я НЕ НИЧЕГО НЕ УМЕЮ. И люди не будут время тратить на объяснение и идеи. Я уже устал говорить, что мало что знаю, но народ этого не замечает! Вон, на предыдущей странице(кажется) я написал, что вообще все забыл. Этого не достаточно? Да и к тому же, я не приказываю, просто Дик первым увидел мой пост с 10 вопросами, почему же тогда он не вспомнил, что я ни-ни в скриптах, мне-то всего нужно было написать несколько строчек. Я могу лишь, что-то делать пользуясь чужими матерьялами ("вопросы и ответы" к примеру).. Дик, прошу прощения, если обидел, я не хотел, честно! Сообщение отредактировал Белатрис - Jun 25 2006, 10:19 |
![]()
Сообщение
#2360
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Alaron @ Jun 25 2006, 01:35) [snapback]85809[/snapback] Как я уже писал выше, Тулсет сохраняет модули с пропастью ошибок в основном в скриптах. (IMG:style_emoticons/kolobok_light/sad.gif) К тому же придется прописывать скрипты ВО ВСЕХ МОДУЛЯХ, а это пи... в общем, крайне нежелательно. (IMG:style_emoticons/kolobok_light/suicide2.gif) В любом случае спасибо за совет... (IMG:style_emoticons/kolobok_light/declare.gif) Я говорил в предыдущем посте, что в более новой версии игры есть новые функции, скрипт без них - работать не сможет, отсюда и ошибки. (Я про код, в erf) Белатрис Во первых, какой вопрос - такой и ответ. Во вторых, Aiwan уже написал, тебе тут никто ничего не должен. По вопросу, eсли я правильно понял, то диалог игрок должен начать с одним из NPC, для этого, используй функцию: AssignCommand. Т.е последняя строчка, будет выглядеть так: NSS ActionDoCommand(AssignCommand(Нужный NPC, ActionStartConversation(oPC, "bandit1")));
Сообщение отредактировал Dik Morris - Jun 25 2006, 10:34 |
![]()
Сообщение
#2361
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
QUOTE Да, вот еще что, если ты обратил внимание, то все модули сделаны так, чтобы в них не было ничего от аддона, в котором компания не делалась. Да уж. И первые проявления этого - отказы в компилляции... (IMG:style_emoticons/kolobok_light/sad.gif) Dik Morris, Zirrex, спасибо. Пойду искать пропатченную версию в продаже, т.к. скачать 76 мб нереально... (IMG:style_emoticons/kolobok_light/sad.gif) Сообщение отредактировал Alaron - Jun 25 2006, 09:02 |
![]()
Сообщение
#2362
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
Dik Morris, теперь мне понятно! СПАСИБО БОЛЬШОЕ!
|
![]()
Сообщение
#2363
|
|
Level 11 ![]() ![]() ![]() Класс: Воин Характер: Lawful Good Раса: Человек ![]() |
А как уничтожить скрипт, который, допустим запускается второй раз (это в диалоге)?
|
![]()
Сообщение
#2364
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
Белатрис, нужно просто делать проверку на локальные переменные.
По ним читай Здесь, либо в мануале от Aiwan'a. PS: т.е скрипт у тебя будет иметь такой вид: NSS void main()
{ if (GetLocalInt(OBJECT_SELF, "temp") == 0) { SetLocalInt(OBJECT_SELF, "temp",1); // Код ; } } |
![]()
Сообщение
#2365
|
|
Level 1 Класс: Друид Характер: Neutral Good Раса: Эльф ![]() |
Дамы и Господа, помогите, плиз, решить задачку.
Дано: Файл *.erf в нем *.uti, скрипты и информация для экспорта (кому интересно, ссылка выше на nwvault) Надо: Как можно удобнее вставить сие нововведение в кампании (NWN, SoU и HotU) Решение: Наиболее вероятным решением всех отозвавшихся является вставка через Аврору перепакованием модулей. Вопрос: Можно ли вставить содержимое файла ерф в Оверрайд и как? Если никак, то что еще можете предложить? Заранее much thanks... Сообщение отредактировал Alaron - Jun 26 2006, 12:34 |
![]()
Сообщение
#2366
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Alaron, без внедрения в модули, у тебя ничего не получится. Скрипты сделаны с таким учетом, что ты их будешь устанавливать именно в модуль, а не отдельно. Отдельно же они даже работать не будут, потому что не понятно к чему относятся.
|
![]()
Сообщение
#2367
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
ИМХО, можно, только ncs (скомпилированные).
|
![]() ![]()
Сообщение
#2368
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
QUOTE почему же тогда он не вспомнил, что я ни-ни в скриптах, ... а почему ОН( или кто-то другой) должен что-то о тебе вспоминать специально? я конечно понимаю, что каждый человек выдающиеся , уникальная ит итп личность, но , скриптеры , как правило , люди занятые своими собственными скриптами и в голове лишнюю информацию не держат..так что , если что-то надо конкретное, то и и писать надо соответственно ибо со чтением чужих мыслей у нас не очень получаеться пока (IMG:style_emoticons/kolobok_light/biggrin.gif) (IMG:style_emoticons/kolobok_light/mosking.gif) п.с. вышесказанное ,кстати, не только к конкретному случаю относиться (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#2369
|
|
Level 2 ![]() Класс: Маг Характер: Chaotic Evil Раса: Полуэльф ![]() |
Доброго времени суток.
Прошу не посылать читать мануалы. Те кто пользуются NWNX знаю, что припомощи NWNX можно связать NWN и MySQL. Я связал (все отлично работает), но теперь появились вопросы: как записать данный в таблицу и как их от туда причитать и записать в переменные. Записать оказалось очень легко, но как от туда их прочитать? Собственно трока для записи в таблицу NSS string sSQL="INSERT INTO nwn(playername, charname, pc_dm, ip_address) "+ "VALUES('"+sPlayer+"','"+sChar+"','"+sDM+"','"+ip+"')"; SQLExecDirect(sSQL); Тут мы записываем в таблицу "nwn" в соответсвующие поля переменные sPlayer, sChar, sDM, ip. А как, имея уже заполненную таблицу, записать значения каждого соответсв. поля в переменную sPlayer, sChar, sDM, ip? Поидее мы должны выбрать сделать "SELECT * FROM `nwn_stast` WHERE 'playername' = 'sPlayer'" и т.п., а потом из полученного результата прочитать для каждой переменной значения. Как это сделать? |
![]()
Сообщение
#2370
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
я очень давно занимался nwnx'ом и т.д.. по памяти, там есть функции:
QUOTE SQLFirstRow\SQLFetch <- для чеков SQLExecDirect <- запрос SQLGetData <- получение данных ^ помойму что-то типа string sResult = SQLGetData(1); после запроса SELECT помойму так.. посмотри подфорум - Шарды рунета.. там было про ето Сообщение отредактировал [MoF]Darth_Nick - Jul 2 2006, 14:16 |
![]() ![]() |
Текстовая версия | Сейчас: 23rd July 2025 - 06:10 |