![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#4871
|
|
Level 5 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Модмейкер История дома Салливан ![]() |
Цитата вариант который предложил greye Это кусок скрипта или целый? Вы простите, я ж совсем дерево, я даже не поняла, тэг-то куда вписывать? -__- |
![]()
Сообщение
#4872
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Это кусок скрипта или целый? Вы простите, я ж совсем дерево, я даже не поняла, тэг-то куда вписывать? -__- Это функция, которую можно использовать. В предположении, что факелы в комнате зажигаются по триггеру, полный скрипт мог бы выглядеть следующим образом: Neverwinter Script void lightMarkedTiles(string tag, object area) {
int n = 0; object marker = GetObjectByTag(tag, n); while (GetIsObjectValid(marker)) { location lTile = GetLocation(marker); SetTileMainLightColor (lTile, TILE_MAIN_LIGHT_COLOR_BLACK, TILE_MAIN_LIGHT_COLOR_BLACK); SetTileSourceLightColor (lTile, TILE_MAIN_LIGHT_COLOR_WHITE, TILE_MAIN_LIGHT_COLOR_WHITE); marker = GetObjectByTag(tag, ++n); } RecomputeStaticLighting(area); } void main() { string tag = ...; // задать тег можно разными способами: вписать прямо в скрипт, считать из локальной переменной или вовсе поставить триггеру тот же тег и использовать его lightMarkedTiles(tag, GetArea(OBJECT_SELF)); } |
![]()
Сообщение
#4873
|
|
Level 5 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Модмейкер История дома Салливан ![]() |
В общем, пробовала я пробовала, ничего не выходило с этими факелами.
Либо зажигаются все, либо вообще ничего. Муж помог, в итоге вышло вот так: Neverwinter Script location GetTileLocation(location loc)
{ vector vec = GetPositionFromLocation( loc ); float fNewX = IntToFloat( FloatToInt( vec.x/10.0 ) ); float fNewY = IntToFloat( FloatToInt( vec.y/10.0 ) ); float fNewZ = IntToFloat( FloatToInt( vec.z/10.0 ) ); vector vNew = Vector( fNewX, fNewY, fNewZ ); location lNew = Location( GetAreaFromLocation( loc ), vNew, GetFacingFromLocation( loc ) ); return lNew; } |
![]()
Сообщение
#4874
|
|
Level 3 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Сиала ![]() |
В общем, пробовала я пробовала, ничего не выходило с этими факелами. Либо зажигаются все, либо вообще ничего. Муж помог, в итоге вышло вот так: Neverwinter Script location GetTileLocation(location loc) { vector vec = GetPositionFromLocation( loc ); float fNewX = IntToFloat( FloatToInt( vec.x/10.0 ) ); float fNewY = IntToFloat( FloatToInt( vec.y/10.0 ) ); float fNewZ = IntToFloat( FloatToInt( vec.z/10.0 ) ); vector vNew = Vector( fNewX, fNewY, fNewZ ); location lNew = Location( GetAreaFromLocation( loc ), vNew, GetFacingFromLocation( loc ) ); return lNew; } Хизер, у нас как-то была задача сделать атмосферное и эффективное освещение для логова наемников. Я не знаю точно для какого сценического элемента тебе надо, но если тебе нужен переход от тьмы к светы за счет зажигания факелов, то думаю это может подойти. Это пример, где наемник может зажечь в темном логове факела и осветить всю локацию. Вот так выглядит это (Видео на YouTube). Делается это через работу с туманом. Если у тебя подвал какой-то и его нужно осветить - думаю, что может подойти. CODE void FadeIn(int nIteration, object oArea) { int nAmount = GetFogAmount(FOG_TYPE_MOON, oArea); if(nAmount <= 0 || nIteration > 15) { SetFogAmount(FOG_TYPE_MOON, 0, oArea); SetFogAmount(FOG_TYPE_SUN, 0, oArea); SetFogColor(FOG_TYPE_MOON, FOG_COLOR_BLACK, oArea); return; } else { int nNew = GetFogAmount(FOG_TYPE_MOON, oArea) - 10; if(nNew < 0) nNew = 0; SetFogAmount(FOG_TYPE_MOON, nNew, oArea); SetFogAmount(FOG_TYPE_SUN, nNew, oArea); DelayCommand(0.2, FadeIn(++nIteration, oArea)); } } void FadeOut(int nIteration, object oArea) { int nAmount = GetFogAmount(FOG_TYPE_MOON, oArea); if(nAmount >= 100 || nIteration > 15) { SetFogAmount(FOG_TYPE_MOON, 100, oArea); return; } else { SetFogAmount(FOG_TYPE_MOON, GetFogAmount(FOG_TYPE_MOON, oArea) + 10, oArea); SetFogAmount(FOG_TYPE_SUN, GetFogAmount(FOG_TYPE_SUN, oArea) + 10, oArea); DelayCommand(0.2, FadeOut(++nIteration, oArea)); } } Если есть куда пристроить, я могу тебе маленькую локацию подвала с одним факелом прислать в котором рычажком сможшь включать выключать свет. Сообщение отредактировал Feron - Mar 10 2016, 15:06 |
![]()
Сообщение
#4875
|
|
Level 5 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Модмейкер История дома Салливан ![]() |
Цитата Я не знаю точно для какого сценического элемента тебе надо Мне надо, чтобы заходя в комнату, зажигались факелы на стенах. Не светильники-объекты, а часть тайла. Без рычагов, без кнопок и действий. По триггеру. Собственно, тот скрипт, что я выложила, работает ровно так, как надо. Но спасибо за предложение. =) Сообщение отредактировал Heather - Mar 10 2016, 21:00 |
![]()
Сообщение
#4876
|
|
Level 3 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Сиала ![]() |
Мне надо, чтобы заходя в комнату, зажигались факелы на стенах. Не светильники-объекты, а часть тайла. Без рычагов, без кнопок и действий. По триггеру. Собственно, тот скрипт, что я выложила, работает ровно так, как надо. Но спасибо за предложение. =) Я понял. Показал не ради загораемого факела плейсбла а на случай, если дополнительно к обновлению освещения тайла хочется добавить повышение освещения во всей локации. |
![]()
Сообщение
#4877
|
|
Level 3 ![]() Класс: Бард Характер: Neutral Evil Раса: Человек ![]() |
Подскажите, пожалуйста, скорее всего кто-либо сталкивался. Как отключить бартер в модуле?
|
![]()
Сообщение
#4878
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
|
![]()
Сообщение
#4879
|
|
Level 3 ![]() Класс: Бард Характер: Neutral Evil Раса: Человек ![]() |
|
![]()
Сообщение
#4880
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
На модульное событие потери вещи проверяй
1. Вещь существует (может удалилась) 2. Вещь не в инвентаре плэйса или существа 2. Вещь не выложена на пол 4. Вот и наш Бартер - отменяем действие 5. ???? 6. PROFIT! Сообщение отредактировал Melisse - Mar 22 2016, 09:33 |
![]()
Сообщение
#4881
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Я конечно не очень силён в дюпе... Но по логике нужно 2 события - передать итем второму игроку, дать ему сохраниться с ним и завалить сервер, пока не сохранился первый игрок. Передать можно через пол. А для завала сервера уже не важно - сработает ваш бартер или нет, если валить будут бартером. Уверен, есть и другие способы, не так давно был разговор про откат через полиморф.
|
![]()
Сообщение
#4882
|
|
Level 3 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Сиала ![]() |
Я конечно не очень силён в дюпе... Тебе везет, завидую. Помимо описанного способа дюпа в котором не важно, как передается, есть завязанный на бартере дюп. Основной лечится nwnx-ом. @Melisse - все верно, только отмена действия это не совсем то, что может помочь, ибо действие уже будет произведено и бартер не закроется, а это то, о чем попросили. Самый простой и железный способ отменить любую попытку бартера без танцев с бубном это сохранение чара через ExportSingleCharacter на потере вещи, по принципу, как описал Melisse для определения ситуации бартера. При этом вещь вернется в бекпак персонажу. Там есть побочных эффект, что вещь нельзя до рестарта будет выложить еще раз - но это не страшно. А вообще, как правильно написали - если стоит фикс антипрозрачности через nwnх, то бартер безобиден для дюпа. Можешь просто на каждой потере сохранять чара, по перфомансу это тебе не удари и поможет со случаеми, который описал denis0k. При этом у тебя могут быть ситуации потери вещи, а не дюпа. Полностью засинхронизировать сохранение персонажей, чтобы не было дюпа или потерь вещей невозможно. Есть всегда, что в момент записи будет рестарт и там будет глюк. Это редко, но может быть. Если нужна помощь в конкретных кусках кода - обращайся. Так же могу поделиться всеми защитами от Дюпа. От всех известных дюпов есть в наличии решения, включая полиморфы. Сообщение отредактировал Feron - Mar 28 2016, 10:11 |
![]()
Сообщение
#4883
|
|
Level 3 ![]() Класс: Воин Характер: True Neutral Раса: Эльф ![]() |
Я надеюсь, что здесь кто-то есть, потому что очень нужна ваша помощь.
Такой вопрос: при установлении int в начале скрипта может быть такое, что он не перезаписывается в дальнейшем под условием? Это на контейнере, если что. Пример Neverwinter Script int lut1; if (Type == "lut_sm") int lut1 = 35; if (lut1 >> 12) делается что-то; При этом если проверять в первом условии переменные, то int равен 35, а не 0. Почему после первой проверки и, соответственно, во второй проверке он равен 0? Что я не понимаю?(( Сообщение отредактировал Aiwan - Mar 5 2017, 13:39 |
![]()
Сообщение
#4884
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
А весь скрипт большой? Кусок мало что говорит.
Он может не перезаписываться под твоим же условием. |
![]()
Сообщение
#4885
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Neverwinter Script if (lut1 >> 12) Если это условие просто БОЛЬШЕ, то должно быть так:Neverwinter Script if (lut1 > 12)
|
![]()
Сообщение
#4886
|
|
Level 5 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Модмейкер История дома Салливан ![]() |
Привет! Всех с праздниками!
Помогите, пожалуйста, с очень простой штукой! Хочу, чтобы в катсцене говорили имя игрока (через SpeakString), но не могу найти, как его задать. Что-то типа<PCName>... В Лексиконе искала, не нашла, бикоз май инглиш из нот гуд (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#4887
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Привет! Всех с праздниками! Помогите, пожалуйста, с очень простой штукой! Хочу, чтобы в катсцене говорили имя игрока (через SpeakString), но не могу найти, как его задать. Что-то типа<PCName>... В Лексиконе искала, не нашла, бикоз май инглиш из нот гуд (IMG:style_emoticons/kolobok_light/smile.gif) Neverwinter Script string playerName = GetName(GetFirstPC());
|
![]()
Сообщение
#4888
|
|
Level 5 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Модмейкер История дома Салливан ![]() |
greye, спасибо!
|
![]()
Сообщение
#4889
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
Уважаемые господа, как сделать, чтобы нужных неписей нельзя было оттолкнуть в стороны движением игрока?
|
![]()
Сообщение
#4890
|
|
Level 11 ![]() Класс: Волшебник Характер: Neutral Good Раса: Фея NWN: Скриптинг [PW] Край Лесов ![]() |
Я знаю только такой вариант - нужно на ОнСпавн наложить "эффект духа" на НПЦ, чтобы через него можно было проходить и он не учитывался поиском пути.
|
![]()
Сообщение
#4891
|
|
Level 5 ![]() Класс: Маг Характер: Chaotic Good Раса: Человек NWN: Модмейкер История дома Салливан ![]() |
Вроде, если НПС нейтральный к игроку (т.е. подсвечивается синим, а не зеленым), то он не будет отскакивать.
|
![]()
Сообщение
#4892
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Какова цель?
Если чтобы непись стоял строго на месте, то можно попробовать пост. Чтобы возвращался, когда его таки спихнут. Ходьбой с клавиатуры можно даже застрявших "в текстурах" игроков выталкивать. Если чтобы игрок не мог куда-то пройти, то красиво - никак. При умении можно сквозь двери проходить. Если некрасиво - за неписём поставить триггер и телепортировать игрока назад. |
![]()
Сообщение
#4893
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
Спасибо за ответы выше. Появилась новая загвоздка х)
Мне нужно, чтобы игрок брал коробку, она клалась в инвентарь и он мог её снова выложить в виде той же коробки. Я реализовал то, чтобы на OnUse коробки она исчезала и давала предмет, но не знаю как её выложить в том же формате из инвентаря, получается просто мешочек. |
![]()
Сообщение
#4894
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [PW] Gem of the North Край Лесов ![]() |
Спасибо за ответы выше. Появилась новая загвоздка х) Обратная процедура - на событие потери итема (on item unacquired), итем удаляется, а по координатам итема создаётся плейсебл-коробка.Мне нужно, чтобы игрок брал коробку, она клалась в инвентарь и он мог её снова выложить в виде той же коробки. Я реализовал то, чтобы на OnUse коробки она исчезала и давала предмет, но не знаю как её выложить в том же формате из инвентаря, получается просто мешочек. Нашёл в старых скриптах: CODE object oItem = GetModuleItemLost();
location lLoc = GetLocation(oItem); string sTag = GetTag(oItem); if (sTag == "тег итема") { if (GetIsObjectValid(GetAreaFromLocation(lLoc))) // есть локация => выложили на пол, а не передали/продали { CreateObject(OBJECT_TYPE_PLACEABLE, "тег плейсебла", lLoc); DestroyObject(oItem); } return; } |
![]()
Сообщение
#4895
|
|
Level 3 ![]() Класс: Пьяный Мастер Характер: True Neutral Раса: Человек ![]() |
При создании скрипта выдает ошибку о том, что неправильный конец оператора.
|
![]() ![]() |
Текстовая версия | Сейчас: 20th August 2025 - 06:40 |