Скрипты: Просьбы о написании, Все просьбы по написанию скриптов |
Здравствуйте, гость ( Вход | Регистрация )
Скрипты: Просьбы о написании, Все просьбы по написанию скриптов |
Apr 2 2006, 18:46
Сообщение
#1
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
Если вам нужен скрипт, который вы не наши на форуме и не в состоянии написать сами, то тут можете попросить других форумчан о помощи. Таким образом в теме только запрос и скрипт под него, ничего более. Если вам нужно оптимизировать скрипт или понять, почему он плохо работает, то вам сюда.
___ База скриптов (NWN) Скрипты для новичков (NWN) Вопросы по скриптам (NWN) Построение скриптовых сцен (NWN) Вопросы по скриптам (NWN2) Так как скриптинг не сильно изменился, то большая часть вещей, написаная под НВН1 нормально работает и в НВН2. Посмотрите в этих темах, вполне возможно вы найдете интересующую вас информацию. |
Oct 19 2008, 14:03
Сообщение
#2
|
|
Level 2 Класс: Клерик Характер: Lawful Neutral Раса: Человек |
Одну лужу на кастера и повышение ДЦ это в принципе ясно... И то и то уже сам реализовал, первое давно находится на шарде. Проблема в другом... Как быстро и вовремя уничтожить АОЕ эффект, складывающийся с другим и при этом не вносить в каждый закл сто проверок на каждый другой закл...
Ладно, пока что попробую создать несколько общих функций: 1) Создать АОЕ эффект и назначить ему тэг "тип спелла" (ака облако лужа) + "номер" с учетом 2 функции для задания номера. 2) Проверяет, существует ли на локации "тип спелла_1", потом "тип спелла_2" и т.д. 3) Проверяет, не находится ли цель закла/создающийся (важно, чтобы он не создался) АОЕ эффект в зоне нового АОЕ эффекта. Учитываются только теги от "тип спелла_х" до "тип спелла_0" по убыванию. Промодифицировать этими функциями создание АОЕ эффекта... Выглядит не сложно... Локалки стараюсь создавать в последнюю очередь, если нет другого выбора. Базу данных тоже лишний раз не трогаю... Мде, каждый обьект на локации тоже плохо проверять... 2 функция. Код void main () { string sNum = "1"; int nNum = 1; object oLastAoe = GetObjectByTag ("AOE_ID"+ тэг локи + sNum); while (GetIsObjectValid (eLastAoe)); { nNum = nNum+1; sNum = IntToString (nNum); object oLastAoe = GetObjectByTag ("AOE_"+ тэг локи+sNum); } //возвращаем номер АОЕ, там подумаю, как лучше и удобнее } 1 функция пропускаем, банально просто, а вот третья... Как дойду до тулсета, поэкспериментирую... Разрушать придется точно тот АОЕ, который уже был... Потому что создать АОЕ из воздуха не получается, xD. |
Oct 19 2008, 19:41
Сообщение
#3
|
|
Level 4 Класс: Обыватель Характер: True Neutral Раса: Человек NWN2: Маппинг |
1) Создать АОЕ эффект и назначить ему тэг "тип спелла" (ака облако лужа) + "номер" с учетом 2 функции для задания номера. Индексация ненадежна, потому что у спеллов может быть разное время действия. 2) Проверяет, существует ли на локации "тип спелла_1", потом "тип спелла_2" и т.д. Если "спелл_1" просто уничтожится после положенного количества раундов, то "спелл_2" и "спелл_3" циклы уже обрабатывать не смогут. Соприкасающиеся эффекты лучше удалять так: Neverwinter Script //В скрипте спелла: location lTarget = GetSpellTargetLocation(); int iSpellType = AOE_PER_WEB;//тип берем из функции EffectAreaOfEffect string sTagSuffix = "_Web"; float fRadius = StringToFloat(Get2DAString("vfx_persistent", "RADIUS", iSpellType));//нужен радиус чтобы узнать, соприкасаются ли AOE int i = 1; object oOld = GetNearestObjectToLocation( OBJECT_TYPE_AREA_OF_EFFECT, lTarget, i); while (GetIsObjectValid(oOld) && GetDistanceBetweenLocations(lTarget, GetLocation(oOld)) < fRadius*2)//берем каждый AOE в двойном радиусе { if (GetStringRight(GetTag(oOld), GetStringLength(sTagSuffix)) == sTagSuffix) DestroyObject(oOld);//если найденный AOE того же типа, удаляем его i++; oOld = GetNearestObjectToLocation( OBJECT_TYPE_AREA_OF_EFFECT, lTarget, i); } Разрушать придется точно тот АОЕ, который уже был... Потому что создать АОЕ из воздуха не получается, xD. ???
Сообщение отредактировал Jadent - Oct 19 2008, 21:33 |
Текстовая версия | Сейчас: 21st September 2024 - 14:58 |