![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3126
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Полуэльф ![]() |
Lex, так я уже пытался, и почему-то не вышло.(
У менятакой вопрос, люди) можно ли скриптами поставить объект в место с определенными координатами? |
![]()
Сообщение
#3127
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
определяем локацию, куда создаём.
Neverwinter Script // Create a location. location Location(object oArea, vector vPosition, float fOrientation) vPosition - сюда и вписываем наши определённые координаты, например [0.0, 1.0, 0.0] oArea и fOrientation - соотвественно область и поворот предмета; а затем используем эту локацию в функции CreateObject. насчёт воскрешения вот информация к размышлению Neverwinter Script void main()
{ SetIsDestroyable(FALSE); effect eEffect = EffectResurrection(); object oNPC = OBJECT_SELF; object oArea = GetArea(oNPC); AssignCommand(oArea, DelayCommand(6.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oNPC))); } Сообщение отредактировал azathoth - May 15 2009, 13:14 |
![]()
Сообщение
#3128
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Полуэльф ![]() |
azathoth, спасибо) теперь мне, наконец, стало понятно, что такое Location и чем оно отличается от Area, а то я их вообще путал=) А на счет скрипта, спасибо за идею, я пытался повесить воскрешение на PC, но не вышло...И с Area почему-то не работает! Ничего не понимаю(
(Ого, я сделал прыгающую колонну!!))) Сообщение отредактировал Deirel - May 15 2009, 18:39 |
![]()
Сообщение
#3129
|
|
Level 1 Класс: Варвар Характер: Chaotic Evil Раса: Человек ![]() |
Уважаемые коллеги ,решил и я заняться скрипто0писанием(куда уж без него в хорошем модуле) и появилось очень много вопросов...если позволите я задам вам их.
1.Нужен скрипт простой телепортации ,в редакторе скриптов нашел образец но естественно не понял,скажем телепортация к waypoint. 2.По СВОИМ соображениям решил заблокировать класс варвар в своем модуле ,по шаблону сделал условие и если человек заходит играть barbarian следует end module,но опять же ничего не получилось при входе любым классом клиент просто повисает. Просьба расписать все по полочкам буду благодарен! |
![]()
Сообщение
#3130
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Итак, я НЕ ШАРЮ в скриптах. А еще, я запарился лазить в темах по скритах, что бы найти всего один скрипт - скрипт, позволяющий игроку отдыхать ТОЛЬКО на определенном триггере. Мне этот скрипт нужен позарез. Пожалуста, если кто может, выложите этот скрипт здесь или дайте ссылку.
Если я этим постом нарушил какие-нибудь правила - извиняйте, небыло времени с ними познакомиться. |
![]()
Сообщение
#3131
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Полуэльф ![]() |
Товарищи, я бы сделал так:
На OnEnter триггера: Neverwinter Script void main() { object oPC = GetEnteringObject(); if (GetIsPC(oPC)) { SetLocalInt(oPC, "IS_RESTING_ENABLE", 1); } } На OnExit триггера: Neverwinter Script void main() { object oPC = GetExitingObject(); if (GetIsPC(oPC)) { SetLocalInt(oPC, "IS_RESTING_ENABLE", 0); } } На OnPlayerRest (в свойствах модуля) добавил бы: в начале (после "object oPC = GetLastPCRested()"): Neverwinter Script if (GetLocalInt(oPC, "IS_RESTING_ENABLE") == 1) { а в конце, перед последней "}" Neverwinter Script } else { AssignCommand(oPC, SpeakString("Вы не можете отдыхать блаблабла")); } И в событии области OnEnter: Neverwinter Script void main() { oPC = GetEnteringObject(); SetLocalInt(oPC, "IS_RESTING_ENABLE", 0); } Я правильно мыслю, товарищи? ))) |
![]()
Сообщение
#3132
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
1.Нужен скрипт простой телепортации ,в редакторе скриптов нашел образец но естественно не понял,скажем телепортация к waypoint. я тоже не понял. Из того что ты написал совершенно не понятно какой скрипт тебе нужен. Во-первых потому что ничего не сказано про того, КТО перемещается. Во-вторых не уточнено, КОГДА это происходит. Ну и в-третьих, КАК/КУДА. если тебе это не принципиально и нужен скрипт с разбором, то собсна вот: Neverwinter Script void main() { object oCreature = GetEnteringObject(); // кто телепортируется. Входящий в триггер объект (игрок или НПС) object oTarget = GetObjectByTag("WP_TARGET"); // куда телепортируется. В конкретную точку с тэгом WP_TARGET AssignCommand(oCreature,ClearAllActions(TRUE)); // убираем текущий стек действий, чтобы не мешал AssignCommand(oCreature,JumpToObject(oTarget)); // телепортируем } 2.По СВОИМ соображениям решил заблокировать класс варвар в своем модуле ,по шаблону сделал условие и если человек заходит играть barbarian следует end module,но опять же ничего не получилось при входе любым классом клиент просто повисает. пиши, что за скрипт у тебя получился. Разбирать и исправлять свои ошибки эффективнее, чем вставлять чужое готовое решение. Если я этим постом нарушил какие-нибудь правила - извиняйте, небыло времени с ними познакомиться. тем не менее с правилами лучше ознакомиться. Во избежании. Я правильно мыслю, товарищи? ))) вроде да, а зачем перестраховка с последним скриптом? |
![]()
Сообщение
#3133
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Deirel, большое спасибо за скрипты. (IMG:style_emoticons/kolobok_light/clapping.gif)
... а зачем перестраховка с последним скриптом? Я, конечно, не разбираюсь в скриптах, но возможно дело в том, что для перехода в некоторые области игроку не нужно выходить за границы триггера-отдыха(?). Последний скрипт не компилируется. Что-то не так со строкой oPC = GetEnteringObject(); Как это исправлять? |
![]()
Сообщение
#3134
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Neverwinter Script object oPC = GetEnteringObject();
|
![]()
Сообщение
#3135
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Теперь все ясно.
Снова что-то не так. Неработает скрипт система. Вместо того, чтобы показывать "Это неподходящее место для отдыха" тогда, когда герой жмет REST не на триггере, оно показывает это сообщ. когда игрок сам прерывает отдых. Т.е. главная функция не работает. Не знаю как решить эту проблему. |
![]()
Сообщение
#3136
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
это уже косяк того, что ты внутри OnPlayerRest напихал. Без полного текста скрипта тебе никто не поможет.
А вообще советую начинать разбираться самому. Дело пойдет быстрее, чем с каждым вопросом сидеть на форуме и ждать. |
![]()
Сообщение
#3137
|
|
Level 1 Класс: Варвар Характер: Chaotic Evil Раса: Человек ![]() |
это уже косяк того, что ты внутри OnPlayerRest напихал. Без полного текста скрипта тебе никто не поможет. А вообще советую начинать разбираться самому. Дело пойдет быстрее, чем с каждым вопросом сидеть на форуме и ждать. спасибо за ответы на все вопросы,но пока ждал уже сам во всем разобрался. Оффтоп,теперь борюсь с глючностью самой игры=( intel core 2 duo e6750,radeon hd 2600xt,4gb ram 800mghz,vista sp1 x64. В игре что на минимальных что на максимальных одинаково глючит,производительность как в crysis на максимальных,тобишь играть невозможно! При чем на старом кампьютере тоже самое но в меньшей степени(картинку ощутимо поддергивает)-там стоит все с точностью на оборот winxp 32,amd athlon 3000+,geforse 6600. P.S версия diamond 1.69 eng. В самом редакторе тоже одни ошибки постоянно выскакивают Atioglxx.dll P.S.S не ужели придется перебираться на NWN2 там все идет ровно! |
![]()
Сообщение
#3138
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
В nwnplayer.ini поставить Client CPU Affinity=0
|
![]()
Сообщение
#3139
|
|
Level 1 Класс: Варвар Характер: Chaotic Evil Раса: Человек ![]() |
В nwnplayer.ini поставить Client CPU Affinity=0 я конечно извеняюсь но оно там и стоит=( скорее всего что то в видео карте ,у кого на radeon игра нормально ползет? P.S опросил пару друзей играющих в нвн,сказали что не совсем уж и глючит но подлагивает,это что такие особенности движка?! |
![]()
Сообщение
#3140
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Полуэльф ![]() |
Ну не знаю, на моем средненьком Radeon X1550 ничего не лагает) Хотя...блеск воды не работает))
|
![]()
Сообщение
#3141
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Ну, тогда могу могу посоветовать с дровами на видео пошаманить. Как вариант, поставить в advanced sound options другой кодек, например, miles fast 2D - у кого-то из-за этого были подобные глюки.
|
![]()
Сообщение
#3142
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
это уже косяк того, что ты внутри OnPlayerRest напихал. Без полного текста скрипта тебе никто не поможет. А вообще советую начинать разбираться самому. Дело пойдет быстрее, чем с каждым вопросом сидеть на форуме и ждать. Спасибо за совет. Это помогло. Как окозалось, перед последней вставленой строкой, нужна была еще всего-то одна строка: Neverwinter Script AssignCommand(oPC, ClearAllActions()); Теперь все работает. Огромное спасибо всем за помощь. |
![]()
Сообщение
#3143
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Еще вопрос:
Вот это (из городской базы скриптов) инклюд: Neverwinter Script const string TXT_COLOR_GRAY = "<c°°°>"; // Gray const string TXT_COLOR_WHITE = "<cууу>"; // White const string TXT_COLOR_CYAN = "<c уу>"; // Light Cyan const string TXT_COLOR_MAGENTA = "<cу у>"; // Magenta const string TXT_COLOR_YELLOW = "<cуу >"; // Yellow const string TXT_COLOR_RED = "<cу >"; // Red const string TXT_COLOR_GREEN = "<c у >"; // Green const string TXT_COLOR_BLUE = "<c у>"; // Blue const string TXT_COLOR_NONE = ""; // Default (no color) const string TXT_COLOR_END = "</c>"; // (color end TAG) const string TXT_COLOR_DEFAULT = TXT_COLOR_CYAN; // Function changes color of the string // * Param sText - text to color // * Param sColor - parse a color constant here // * Returns colored string string colorText(string sText, string sColor); string colorText(string sText, string sColor) { return sColor + sText + TXT_COLOR_END; } А это пример: Neverwinter Script #include "lib_colortext" void main() { object oPC = GetEnteringObject(); if (!GetIsPC(oPC)) return; AssignCommand(oPC, SpeakString(colorText("you are entering object", TXT_COLOR_RED))); } А вот, собственно, и сам вопрос (их вообще-то два): 1) Как построить скрипт, чтобы вместо SpeakString работало FloatingTextStringOnCreature; 2) Как построить скрипт, чтобы вместо SpeakString работало SendMessageToPC. Кто знает ответ (может об таком скрипте уже спрашивали, но мне лень 126 страниц читать)? |
![]()
Сообщение
#3144
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
а в чем проблема то?
Ничего принципиально не меняется. В месте вывода текста ставишь вместо "текст" конструкцию Neverwinter Script colorText("you are entering object", TXT_COLOR_RED) Работает со всеми функциями по выводу текста, и FloatingTextStringOnCreature с SendMessageToPC - не исключение.
|
![]()
Сообщение
#3145
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Забыл сказать. Мне нужно, что б это работало через object oPC = GetLastUsedBy.
Вот например: Neverwinter Script #include "lib_colortext" void main() { object oPC = GetLastUsedBy(); AssignCommand(oPC, FloatingTextStringOnCreature(colorText("You are using object", TXT_COLOR_RED))); } И вот последняя строка неработает. |
![]()
Сообщение
#3146
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
А так? (IMG:style_emoticons/kolobok_light/smile.gif)
Neverwinter Script AssignCommand(oPC, FloatingTextStringOnCreature(colorText("You are using object", TXT_COLOR_RED),oPC));
|
![]()
Сообщение
#3147
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Chaotic Evil Раса: Человек ![]() |
Спасибо. Теперь работает скрипт.
|
![]()
Сообщение
#3148
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Вот это (из городской базы скриптов) инклюд: Это устаревшая библа, юзай x3_inc_string.
|
![]()
Сообщение
#3149
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
Ребята, плз, посмотрите, что тут не так и не то. Скрипт работает, вроде бы, но только с пробелами.
Суть: Герой подходит к плейсу (возле которого стоит вебпоинт--на нео он идет), нагинается шарит руками, говорит что-то, поднимается и идет к следующему плейсу. после того как выполнена анимация плейс должен дестроится и перс продолжает движение к следующему вебпоинту. Есть но: 1) еффект замедления не работает. --пишет, что герой иммунен к замедлению. что за... ? 2) плейсы не дестроятся! Я так понял плейсы не могут дестроится. Для этого они создаются как НПС, только выглядят как плейсы. (как например "трон" в финальной баталии Воина орды в ПЛ_1 ). Тогда возникают вопросы: а) дестроятся ли плейсы? если да то как? у меня в скрипте написана эта функция, но ничего не происходит. б) как из таблицы 2да плейсов переписать это плейс в 2да монстров? Проблема в том, что это стандартная палитра НВН. Если конкретней этот плей-- кусок грязи. С таблицы я переписал. А вот где взять файл палитры этой модели?? Как тут быть? Вот сам скрипт: Neverwinter Script // СНЯТЬ ЭФФЕКТ
// int iOne - EFFECT_TYPE_... void DelOneEffectOnPC(object oObject, int iOne) { effect eEffect = GetFirstEffect(oObject); while (GetIsEffectValid(eEffect)) { if (GetEffectType(eEffect) == iOne) RemoveEffect(oObject, eEffect); eEffect = GetNextEffect(oObject); } } void main() { object oPC = GetEnteringObject(); object oTP_1 = GetObjectByTag("TP_01"); object oTP_2 = GetObjectByTag("TP_02"); object oTP_3 = GetObjectByTag("TP_03"); object oTP_4 = GetObjectByTag("TP_04"); object oTP_5 = GetObjectByTag("TP_05"); object oWP_1 = GetWaypointByTag("WP_p_01"); object oWP_2 = GetWaypointByTag("WP_p_02"); object oWP_3 = GetWaypointByTag("WP_p_03"); object oWP_4 = GetWaypointByTag("WP_p_04"); object oWP_5 = GetWaypointByTag("WP_p_05"); effect eSlow = EffectSlow(); if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1) return; { SetLocalInt(OBJECT_SELF, "TRIGGER", 1); AssignCommand(oPC, ClearAllActions()); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSlow, oPC, 354.0); AssignCommand(oPC, ClearAllActions()); SetCutsceneMode(oPC); DelayCommand(1.0, AssignCommand(oPC, SpeakString("бла-бла-бла..."))); DelayCommand(2.0, AssignCommand(oPC, ActionMoveToObject(oWP_1))); DelayCommand(3.5, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 3.0, 1.0))); DelayCommand(4.0, AssignCommand(oPC, SpeakString("бла-бла-бла..."))); DelayCommand(5.8, ActionDoCommand(DestroyObject(oTP_1))); DelayCommand(7.0, AssignCommand(oPC, ActionMoveToObject(oWP_2))); DelayCommand(8.5, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 3.0, 1.0))); DelayCommand(9.0, AssignCommand(oPC, SpeakString("бла-бла-бла..."))); DelayCommand(10.0, ActionDoCommand(DestroyObject(oTP_2))); DelayCommand(11.0, AssignCommand(oPC, ActionMoveToObject(oWP_3))); DelayCommand(12.0, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 3.0, 1.0))); DelayCommand(14.0, ActionDoCommand(DestroyObject(oTP_3))); DelayCommand(15.0, AssignCommand(oPC, ActionMoveToObject(oWP_4))); DelayCommand(16.5, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 3.0, 1.0))); DelayCommand(17.0, AssignCommand(oPC, SpeakString("бла-бла-бла..."))); DelayCommand(18.0, ActionDoCommand(DestroyObject(oTP_4))); DelayCommand(20.0, AssignCommand(oPC, ActionMoveToObject(oWP_5))); DelayCommand(21.5, AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 3.0, 1.0))); DelayCommand(22.0, AssignCommand(oPC, SpeakString("бла-бла-бла..."))); DelayCommand(23.0, ActionDoCommand(DestroyObject(oTP_5))); DelayCommand(25.0, AssignCommand(oPC, ClearAllActions())); DelayCommand(25.5, FadeToBlack(oPC, FADE_SPEED_FASTEST)); DelayCommand(26.0, AssignCommand(oPC, SetTime(GetTimeHour()+(Random(4)), GetTimeMinute()+(Random(60)), 0, 0); DelayCommand(26.0, AssignCommand(OBJECT_SELF, ActionResumeConversation()); DelayCommand(27.5, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(43.0, SetCutsceneMode(oPC, FALSE)); } } Сообщение отредактировал serafim - Jun 22 2009, 11:48 |
![]()
Сообщение
#3150
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата еффект замедления не работает. --пишет, что герой иммунен к замедлению. что за... ? Значит иммунен. Такое достигается, например, любой вещью со свойством "freedom".Цитата плейсы не дестроятся! Я так понял плейсы не могут дестроится Удаляются. Перед удалением нужно снять флажок:Neverwinter Script SetPlotFlag(oPlaceable, FALSE); Цитата как из таблицы 2да плейсов переписать это плейс в 2да монстров? Сам никогда таким извращением не занимался, но здесь главное - перенести из placeables.2da в appearance.2da название модельки (ModelName -> Race). Остальное уже дело техники.
|
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 02:17 |