Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
3 страниц V   1 2 3 >  
Ответить в эту темуОткрыть новую тему
> Скрипты: Просьбы о написании, Все просьбы по написанию скриптов
Aiwan
сообщение Apr 2 2006, 18:46
Сообщение #1


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Если вам нужен скрипт, который вы не наши на форуме и не в состоянии написать сами, то тут можете попросить других форумчан о помощи. Таким образом в теме только запрос и скрипт под него, ничего более. Если вам нужно оптимизировать скрипт или понять, почему он плохо работает, то вам сюда.

___
База скриптов (NWN)
Скрипты для новичков (NWN)
Вопросы по скриптам (NWN)
Построение скриптовых сцен (NWN)
Вопросы по скриптам (NWN2)

Так как скриптинг не сильно изменился, то большая часть вещей, написаная под НВН1 нормально работает и в НВН2. Посмотрите в этих темах, вполне возможно вы найдете интересующую вас информацию.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Feb 9 2007, 15:48
Сообщение #2


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



разговоры об архиве статей тудысь: http://www.city-of-masters.ru/forums/index...=2580&st=50
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение May 2 2007, 20:07
Сообщение #3


Level 3
*

Класс: Монах
Характер: Lawful Good
Раса: Эльф



Привет всем мне требуются 2 скрипта:первый на респ монстров и нпс, через какоето время
и второй на смену фракции ну то есть подхожу к какомуто предмету тыкаю на него и стаю враждебен (хостаил) другому игроку автоматически(как намногих пвп шардах).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Sep 21 2007, 22:04
Сообщение #4


Level 9
Иконки Групп

Класс: Вор
Характер: Chaotic Good
Раса: Эльф
МАСТЕР Переводов



Пробую написать скрипт на дверь, которая должна открываться при проверке на две переменные. В 13 строке (это вторая снизу фигурная скобка) выдает ERROR: INCORRECT VARIABLE STATE LEFT ON STACK. Не подскажут ли мне, где ошибка?

Neverwinter Script Source
int StartingConditional()
{
    object oPC = GetPCSpeaker();

    if(GetIsPC(oPC))
    {
        if((GetLocalInt(oPC, "ПЕРЕМЕННАЯ_1") == 1) & (GetLocalInt(oPC, "ПЕРЕМЕННАЯ_2") == 1))

        object oDr1 = GetObjectByTag("DOOR_KEP_ENT");

        SetLocked(oDr1,FALSE);
        AssignCommand(oDr1, ActionOpenDoor(oDr1));
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Jadent
сообщение Sep 22 2007, 00:18
Сообщение #5


Level 4
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN2: Маппинг



1. int StartingConditional() — это для условия в диалоге. Т.е. появится данная фраза или нет. А в данном случае нужно использовать void main()
2. Во втором условии (где проверяются переменные) лучше использовать оператор &&, а не & (мелочь, правда, но все-таки).
3. После этого же условия не хватает операторных скобок: "{" на 8 строке, "}" после 12 строки (из-за этого не компилируется).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 22 2007, 00:30
Сообщение #6


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



4. object oDr1 = GetObjectByTag("DOOR_KEP_ENT"); лучше вынести из-под условия, разделив на 2 части
Neverwinter Script Source
object oDr1;
...
if ()
  {
  oDr1 = GetObjectByTag("DOOR_KEP_ENT");
  }

в данном скрипте не критично, но в более сложных может сыграть плохую шутку.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Sep 22 2007, 14:11
Сообщение #7


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Цитата
Пробую написать скрипт на дверь, которая должна открываться при проверке на две переменные. В 13 строке (это вторая снизу фигурная скобка) выдает ERROR: INCORRECT VARIABLE STATE LEFT ON STACK. Не подскажут ли мне, где ошибка?

shadowdweller, если используете int StartingConditional(), то нужно обязательно использовать return… (поэтому скрипт и не компилится)

Второе, после проверки условия, если нужно выполнить несколько операций, то нужно записать все действия в скобочках. Иначе выполнится только одна нижняя строка под проверкой…

Neverwinter Script Source
if((GetLocalInt(oPC, "ПЕРЕМЕННАЯ_1") == 1) & (GetLocalInt(oPC, "ПЕРЕМЕННАЯ_2") == 1))
object oDr1 = GetObjectByTag("DOOR_KEP_ENT");

Проверку на ГГ делать не надо, ведь на нем должно висеть две локалки – этого более чем достаточно… (IMG:style_emoticons/kolobok_light/biggrin.gif)

Ваш скрипт можно записать примерно так:

Neverwinter Script Source
int StartingConditional()
{
object oPC = GetPCSpeaker();
object oDr1 = GetObjectByTag("DOOR_KEP_ENT");

if(GetLocalInt(oPC, "ПЕРЕМЕННАЯ_1") == 1 & GetLocalInt(oPC, "ПЕРЕМЕННАЯ_2") == 1)
{
  SetLocked(oDr1,FALSE);
  AssignCommand(oDr1, ActionOpenDoor(oDr1));
  SpeakString("Проходите!");
  return TRUE;
}
else
{SpeakString("Вы не можете пройти!"); return FALSE;}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Sep 22 2007, 20:11
Сообщение #8


Level 9
Иконки Групп

Класс: Вор
Характер: Chaotic Good
Раса: Эльф
МАСТЕР Переводов



Спасибо, господа! Пойду ковырять. (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Oct 2 2007, 20:52
Сообщение #9


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



вопросы про ГУИ и интерфейсные моды перенесены сюда: http://www.city-of-masters.ru/forums/index...?showtopic=2580
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Валеско
сообщение Oct 20 2007, 23:15
Сообщение #10


Epic Level
Иконки Групп

Класс: Бард
Характер: Chaotic Neutral
Раса: Животное
МАСТЕР Пера



Решил переписать скрипт:

Neverwinter Script Source
void main( )
{
object oWeapon = GetItemInSlot
( INVENTORY_SLOT_RIGHTHAND,
GetLastUsedBy( ) );

if ( !GetIsObjectValid( oWeapon )) return;
AddItemProperty( DURATION_TYPE_TEMPORARY,
ItemPropertyDamageBonus
( IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEBONUS_1d6
)
, oWeapon, 40.0 );
}



который на жаровне. Нужно чтобы распространялся только на оружие с определенным тегом и это оружие по истечении времени исчезало (расплавлялось). Можно, чтобы в конце еще кидало сообщение что "оружие расплавилось".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Jadent
сообщение Oct 21 2007, 01:47
Сообщение #11


Level 4
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN2: Маппинг



Я еще добавил сообщения-напоминания и спецэффект:

Neverwinter Script Source
//------------------------------ конфиг ------------------------------------------------------------------------------------------------------------
float fTime = 120.0; //время, через которое оружие расплавится
string sTag = "fire_weapon"; //тег оружия, которое игрок может здесь использовать
effect eEffect = EffectNWN2SpecialEffectFile( "sp_fire_cast" ); //спецэффект при наложении эффекта и уничтожении оружия
string sMesError = "Только особенное оружие может выдержать пламя этой жаровни."; //сообщение, выдаваемое когда у игрока нет оружия или оно имеет другой тег
string sMessage1 = "Оружие в ваших руках сильно нагревается от магического пламени."; //сообщение, выдаваемое через 1/4 времени до уничтожения оружия
string sMessage2 = "Оружие в ваших руках раскалено добела и понемногу начинает терять форму."; //сообщение, выдаваемое через 1/2 времени до уничтожения оружия
string sMessage3 = "Оружие в ваших руках плавится и скоро станет непригодным к использованию."; //сообщение, выдаваемое через 3/4 времени до уничтожения оружия
string sMessage4 = "Оружие в ваших руках окончательно расплавилось."; //сообщение, выдаваемое во время уничтожения оружия
//--------------------------------------------------------------------------------------------------------------------------------------------------

object oPlayer = GetLastUsedBy( );
object oWeapon = GetItemInSlot( INVENTORY_SLOT_RIGHTHAND, oPlayer );
void Melting( int iLevel );

void main( )
{
    if ( GetTag( oWeapon )!=sTag )
    {
        SendMessageToPC( oPlayer, "<color=red><b>"+sMesError+"</b></color>" );
        return;
    }
    if ( GetLocalInt( oWeapon, "Melting" ) ) return;
   
    SetLocalInt( oWeapon, "Melting", 1 );
    AddItemProperty( DURATION_TYPE_TEMPORARY, ItemPropertyDamageBonus( IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGEBONUS_1d6 ), oWeapon, fTime );
    ApplyEffectToObject( DURATION_TYPE_INSTANT, eEffect, oPlayer );
    DelayCommand( 0.25*fTime, Melting( 1 ) );
}

void Melting( int iLevel )
{
    if ( GetItemInSlot( INVENTORY_SLOT_RIGHTHAND, oPlayer )==oWeapon )
    {
        switch ( iLevel )
        {
        case 1:
            SendMessageToPC( oPlayer, "<color=red><b>"+sMessage1+"</b></color>" );
        break;
        case 2:
            SendMessageToPC( oPlayer, "<color=red><b>"+sMessage2+"</b></color>" );
        break;
        case 3:
            SendMessageToPC( oPlayer, "<color=red><b>"+sMessage3+"</b></color>" );
        break;
        case 4:
            SendMessageToPC( oPlayer, "<color=red><b>"+sMessage4+"</b></color>" );
            ApplyEffectToObject( DURATION_TYPE_INSTANT, eEffect, oPlayer );
        break;
        }
    }
    if ( iLevel<4 ) DelayCommand( 0.25*fTime, Melting( iLevel+1 ) );
    else DestroyObject( oWeapon );
}

Хотелось бы увидеть комментарии мастеров по оптимизации.

Сообщение отредактировал Aiwan - Oct 21 2007, 10:03
Причины изменения: Нормальное общение, зачем прятать в оффтоп тег?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Валеско
сообщение Oct 21 2007, 08:06
Сообщение #12


Epic Level
Иконки Групп

Класс: Бард
Характер: Chaotic Neutral
Раса: Животное
МАСТЕР Пера



Заработало. Jadent, молоток, - отличный скрипт!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Oct 21 2007, 11:43
Сообщение #13


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Jadent, хорошо прибумал запустить функцию из самой функции! Молодец! Одно но, если присвоил предмету локалку, то и проверяй ее в функции Melting... Зачем проверять любое оружие в руке?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Jadent
сообщение Oct 21 2007, 13:36
Сообщение #14


Level 4
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN2: Маппинг



Цитата(gennady @ Oct 21 2007, 12:43) *
Одно но, если присвоил предмету локалку, то и проверяй ее в функции Melting... Зачем проверять любое оружие в руке?
Вообще, это проверка на тот случай, когда игрок уже снял или выбросил "плавящееся" оружие. Чтобы не посылать ему ненужных сообщений.

А по локалке там проверять нельзя, иначе игроку будет идти сразу по несколько сообщений, если он сделает несколько таких "плавящихся" клинков.
Локалка-то на все оружия ставится одна и та же.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 23 2008, 23:02
Сообщение #15


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Переместил вопросы по скриптам сюда: Скрипты
Переместил одиночные вопросы сюда: Одиночные вопросы
и не нужно в следующий раз сразу в двух темах постить одно и то же. Одного раза более чем достаточно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Celestial
сообщение May 17 2008, 14:27
Сообщение #16


Level 14
****

Класс: Обыватель
Характер: Lawful Neutral
Раса: Эльф



Нужен скрипт, чтобы адамантиновое оружие рассыпалось при выносе его из Андердарка.

Технически вижу это так: если (условия для применения пенальти дроу/дургарам) = True, и если предмет из адамантина - то изъять у PC предмет и сделать надпись в лог-бокс PC.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kirald
сообщение May 28 2008, 22:38
Сообщение #17


Level 2
*

Класс: Клерик
Характер: Lawful Evil
Раса: Человек



Маленькая просьба.
Нашел скрипт на проверку в диалогах спасброска на волю вот он

Код
// Will tests as used i the cinderella convo
int StartingConditional(int nDC)
{
    SetLocalInt(GetFirstPC(),"WILSAVE",nDC);
    
    int nSAVE = d20(1) + GetWillSavingThrow(GetFirstPC());
    
    SetCustomToken(100,GetStringByStrRef(16777844) +IntToString(nDC) +GetStringByStrRef(16777845) +IntToString(nSAVE) +GetStringByStrRef(16777808));
    
    // test line
    //return TRUE;
    
    if ( nSAVE >= nDC)
        return TRUE;
        
        return FALSE;
}


суваеться в диалог к остальным проверка, но просьба в другом.

1. Прошу добавить (для удобства) такую функцию чтобы можно было не возиться в скрипте ,ну чтобы поменять с проверки на волю на проверку на реакцию скажем, а простым добавлением цифр скажем суёш диалог в условия (conditions) и вместо одной графы (где надо задать число для проверки) две,во второй нужно ввести номер который приравниваеться к спасброску скажем 1- воля 2-реакция 3-внимательности и т.д. и т. п.

Заранее спасибо всем откликнувшимся (даже ругающимся админам (если они не ругаються конечно)))) а так же создателю или просто человеку который положил этот скрипт в свой модул (Крик волка) чуваку (в русском смысле)))) который создал модуль Крик волка, а так же его переводчикам журналу игромания или точнее формату С фуу-у-ух.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение May 29 2008, 14:15
Сообщение #18


Level 12
Иконки Групп

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



а какая разница, писать "check_will/fort" или "check [1] [2]" - ? первое всё же нагляднее

Neverwinter Script
int StartingConditional(int nDC, int nType)
{
    object oPC = GetPCSpeaker();

    if (nType == 1)
    {
        return WillSave(oPC, nDC) != 0;
    }
    else if (nType == 2)
    {
        return ReflexSave(oPC, nDC) != 0;
    }
    return FortitudeSave(oPC, nDC) != 0;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melshin
сообщение Oct 17 2008, 03:45
Сообщение #19


Level 2
*

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек



Есть серьезная идея, над которой нужно подумать. В свое время создавал парсер локаций для системы телепортационных кругов. Круги менялись объектами, всякими.

Теперь возник другой вопрос. Существуют АОЕ заклинания. Возьмем 3 заклинания - масло, паутина и клауд килл.

Что нужно сделать по маслу - первоначальная простая версия - 1 лужа на кастера. Вторая, версия средней сложности - масло не стыкуется на 1 квадрате, т.е. 2 спаса кинуть в принципе невозможно, если АОЕ эффекты соприкасаются, то последний скастованный уничтожается.

С паутиной - в принципе то же самое, не должна стыковаться с маслом (т.е. тоже об него убивается). А также при соприкосновении паутина - паутина последний уничтожается, на первом увеличивается ДЦ.

Ну и клауд килл должен стыковать с остальными, при касте на 1 квадрат увеличивается ДЦ до определенного капа.

Это непросто, это сложно и требует полностью свои новые функции... Если вот эти 3 примера мне или кому-то или совместно удастся реализовать, то все остальное пойдет по шаблону...

ЗЫ: и еще по сабжу - делаю универсальные инклуд функции, к примеру void DoExplosion (int nDC, int nAllowReflexSave, int nAllowEvasion, int nDamage, int nDamageType, float fRadius, effect eExplVis, effect eHitVis, location locTarget) - пока только не магические взрывы, позже еще проверку спелл резистов сделаю и т.д. Делается с целью полного переделывания заклинаний НВН-а 2 под 1 строчку и создания многоцелевых функций... Как сделаю таковых побольше, выложу... Кстати, с такой функцией в применении к, допустим, файрболлу - возможны чеки на пространство и вообще возможность атакуемой цели двигаться, т.е. если увернуться некуда - эвэйжн и т.д. не сработает, ну или если цель не может двигаться - броска рефлекса вообще не будет (ну никак она не может увернуться). Ну и т.д.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Jadent
сообщение Oct 19 2008, 09:00
Сообщение #20


Level 4
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN2: Маппинг



Как сделать одну лужу на кастера. В скрипте nw_s0_grease есть такая строчка:
Neverwinter Script
//Declare major variables including Area of Effect Object
effect eAOE = EffectAreaOfEffect(AOE_PER_GREASE);
Меняем ее на следующее:
Neverwinter Script
string sAoeTag = GetFirstName(OBJECT_SELF)+GetLastName(OBJECT_SELF)+"_Grease";
object oAoe = GetObjectByTag(sAoeTag);
if (GetIsObjectValid(oAoe)) DestroyObject(oAoe);

//Declare major variables including Area of Effect Object
effect eAOE = EffectAreaOfEffect(AOE_PER_GREASE, "", "", "", sAoeTag);
Думаю, идея понятна.

В этом же примере можно организовать стыковку — для паутины проверять, нет ли рядом (в радиусе паутины) объекта с тегом, оканчивающимся на "_Grease".

Для стыковки DC — находить объект с тем же тегом ("_Web", например), удалять его и на его месте создавать новый АоЕ-эффект с бОльшим DC.
Тут еще придется дописать несколько мелочей — чтобы лишний раз не срабатывали OnExit и OnEnter при смене AoE-объекта и сохранялась длительность действия спелла (если нужно).
Это сведется к проверкам локалок, скорее всего, так что ничего трудного.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkPhoenix
сообщение Oct 19 2008, 13:24
Сообщение #21


Level 2
*

Класс: Рейнджер
Характер: True Neutral
Раса: Эльф



Есть ли какая-то возможность пркрепить фигурку нпц или хотя бы плейсебл к модели ГГ? Например зделать чтоб фигурка демилича парила над плечем ГГ и он мог так бегать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melshin
сообщение Oct 19 2008, 14:03
Сообщение #22


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.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Jadent
сообщение Oct 19 2008, 19:41
Сообщение #23


Level 4
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN2: Маппинг



Цитата(Melshin @ Oct 19 2008, 14:03) *
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);
    }


Цитата(Melshin @ Oct 19 2008, 14:03) *
Разрушать придется точно тот АОЕ, который уже был... Потому что создать АОЕ из воздуха не получается, xD.
???

Сообщение отредактировал Jadent - Oct 19 2008, 21:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melshin
сообщение Oct 20 2008, 00:30
Сообщение #24


Level 2
*

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек



Хороший скрипт... Ладно, вначале попытаюсь до конца все реализовать по вот такому виду, а после перейду к следующей стадии, немного усложню... Выше в принципе все описано.

Цитата
Разрушать придется точно тот АОЕ, который уже был... Потому что создать АОЕ из воздуха не получается, xD.
???


Не обращай внимания, у меня дурацкий тип мышления.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Oct 20 2008, 08:39
Сообщение #25


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



[offtop]
А чего лидер ДМов занялся скриптами?
[/offtop]
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

3 страниц V   1 2 3 >
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th March 2024 - 14:16