Romeno
offline
Опыт:
3,167Активность: |
Исследование порчи (Blight).
Делал тригерный спел с эффектом наведения порчи и... решил разобраться как она работает.
Казалось бы всё просто координаты, размер региона и готово. И тем не менее выкладываю результат сего изыска... Дисклеймер статья абсолютно уныла, тут ничего интересного кроме невидимой порчи. ОсновыВ первую очередь нужно сказать, что наведение порчи в WE отличается от наведения порчи с помощью скриптов.
Наводить порчу на землю можно или в WE или в игре с помощью
» Blight API
native SetBlight takes player whichPlayer, real x, real y, real radius, boolean addBlight returns nothing native SetBlightRect takes player whichPlayer, rect r, boolean addBlight returns nothing native SetBlightPoint takes player whichPlayer, real x, real y, boolean addBlight returns nothing native SetBlightLoc takes player whichPlayer, location whichLocation, real radius, boolean addBlight returns nothing native IsPointBlighted takes real x, real y returns boolean
» Триггерных действий
Как и в WE порча привязана к сетке. SetBlightPoint создаёт никакой не point, а регион размером 512 на 512.
Минимальный радиус региона наведённого с помощью SetBlight - 128. Значения меньшие 128 округляются до 128. Следующие радиусы кратны 128. При указании не кратного радиус округляется к ближайшему кратному, т.е. 150 к 128, 192 к 256 и т.д. Визуально минимальный порченый регион выглядит меньше,
» чем есть на самом деле
Круговые регионы порчи - достаточно
» квадратные
Здесь любопытный момент в том, что мелкие квадратики имеют сторону 128, а не 256. Значит минимальный радиус таки 64, а не 128, об этом ниже.
В WE они ещё более квадратные:
» без маленьких скругляющих квадратиков + размер "кистей" другой
Центр порченного региона, создаваемового с помощью SetBlight или SetBlightRect привязан к сетке. Квадрат сетки размером 256 на 256. Поэтому, если указать центром, скажем, (2200, 450), то регион будет создан с центром в (2176,512)
Параметр whichPlayer определяет собственника порчи. Учитывая, что порча снимается диспелом по местности, собственник порчи свою порчу снять не сможет. (Thanks to DioD)
При снятии порчи с местности текстура рельефа не восстанавливается, а заменяется однотипной.
Невидимая порчаПосле того как стало ясно, что минимальный размер квадратика с порчей 128 на 128, я решил поэкспериментировать и посмотреть что будет, если обрезать в-кавычках-минимальный регион 256/256 с помощью мелких квадратиков. Т.е. сначала создал круговую порчу радиуса 256, а затем удалил порчу тоже радиуса 256, сместив центр как
В итоге местность перестала отображаться порченной, но по факту порча на ней частично осталась (красная на рисунке). Типа не видимая порча.
» Пруфскрин:
Наверное это можно как-то использовать.
» Также т.о. можно создать порченный регион размера 256 на 384
Удаление кругового региона порчи радиуса 384 (может и не только для него) работает бажно. Верхняя часть региона не удаляется, оставляя небольшой клочок порчи.
SetBlightPoint тоже работает и странно, и бажно. При создании порчи создаётся регион 512 на 512. Центр расположен как показано
Как видно из рисунка "нарисованная" порча, смещена вверх и вправо на 128 от реальной (ахтунг!).
SetBlightRect также
» криво отображает порчу
При размерах региона меньше 65 не создаёт порчу. При размере больше, создаёт прямоугольный регион порчи размером равным ближайшему числу кратному 128. У меня не получилось добиться того, чтобы SetBlightRect нормально отображала наведённую порчу. Так что, наверное, её не стоит использовать.
ЗаключениеИмхо самое полезное из всего этого, это то что минимальный регион, который можно "испортить" это таки 128 на 128 (для круга) он и отображается не смещённо. Порча такого размера будет видна, если будет граничить с порченным регионом 256 на 256. Если такого региона не будет, то порченным он будет, но отображаться как таковой - нет.
В целом порча работает не очевидно, а кое-где и бажно.
Тестировалось с помощью IsPointBlighted. Отредактировано Romeno, 07.01.2013 в 17:37. |
06.01.2013, 00:11 | #1
+10/−2
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
WarSC
Silenced by WarSC
offline
Опыт:
3,473Активность: |
Вау, Клас, плюс-плюс, о чом тут речь знает только автор [я рисунков не видел]. А просто создать модель порчи? ет ведь модель:), ну а если строить здания хочеш после приминения какого либо строения [нежити], строим тупо здание без каких либо данных[чтобы роспространяло порчу];). Както так с дание могу быть не прав...! |
06.01.2013, 01:38 | #2
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Romeno
offline
Опыт:
3,167Активность: |
Все картинки в катах, они должны быть видны |
06.01.2013, 18:09 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Romeno
offline
Опыт:
3,167Активность: |
Мне вот что интересно: имеет ли смысл это оформлять в статью или такая тема слишком бесполезна и не дотягивает до статьи/подстатьи? |
07.01.2013, 04:17 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
И где тут наработка? Раздел для наработок. |
07.01.2013, 04:28 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Romeno
offline
Опыт:
3,167Активность: |
ScorpioT1000, ок, попробую создать статью. |
07.01.2013, 10:32 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
капитан очевидность решил рассказать как работает функция?
native SetBlightRect takes player whichPlayer, rect r, boolean addBlight returns nothing да я кстати и так расскажу что она берёт собственника порчи регион и флаг ставить или убирать порчу, без тестов, без исследований, просто потому что она так называется.... native IsPointBlighted takes real x, real y returns boolean внезапно вернёт тру если точка в ячейке с порчей, ВАУ!!!111, спасибо кеп!!! размер ячейки в 128 настолько очевиден что даже не знаю, зачем рассказывать то об этом, любой даже самый тупой нуб заметит это после первого же применения порчи. да и ваши совершенно бестолковые исследования не выяснили тот факт, что порча снимается диспелом и собственник порчи заданный в параметре свою порчу снимать не будет, а вот его враги будут, всё чертовски просто. вывод - вы опоздали со своими исследования на 6 лет, сами исследования не имеют никакой практической ценности и попахивают капитаном очевидностью |
07.01.2013, 11:07 | #7
+2/−3
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Romeno
offline
Опыт:
3,167Активность: |
Не факт, что размер 128. Пока не проверил было не очевидно. вот это было как раз очевидно О, а это круто, не знал. Добавил) Круто! Хорошо, что не на 7! Мне больше всего понравилось что порча бывает невидимой.
Romeno добавил:
Враки. Проверил. Всё прекрасно снимается и свою и порчу союзников. Пруф в студию! Отредактировано Romeno, 07.01.2013 в 17:50. |
07.01.2013, 17:43 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|