Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Город Мастеров _ Neverwinter Nights Aurora Toolset _ Ambient Animation

Автор: Лито Jun 18 2005, 12:21

Как известно эта фича(Ambient Animation - AA) придумана для того чтобы "оживить" NPC. Так сказать создать иллюзию жизнедеятельности.
Так вот прочитав лексикон, изучив кучу настроек AA и не добившись ровным счетом ничего(за небольшим исключением), обращаюсь к вам за помощью. Кто умеет этой БЯКОЙ пользоватся? this.gif
Немного данных(могут быть не верными): AA работает только с АИ ХоТУ - XP2. Так же имеется множество настроек, до которых мне как до Китая, типа работы в кузнице или прогулок по городу в дневное время и сном в дому в ночное.

Исключение: у меня получилось сделать так чтобы NPC ходили и разговаривали друг с дружкой, когда я спавнил их через триггер, но ведь не будешь для толпы городских NPC делать триггеры black eye.gif

По другому вообще никак не получилось - стоят как истуканы и все тут sad.gif

Автор: Dik Morris Jun 18 2005, 12:49

Советую прочитать статьи Лекса, "Aurora Toolset": Анимация NPC там много полезного, про анимацию, NPC.

Автор: Лито Jun 18 2005, 13:34

Насколько я помню, у него там не про ту анимацию, про которую говорю я.

Автор: Aiwan Jun 18 2005, 14:17

Стандартный скрипт на спавн посомтри.

Автор: DBColl Jun 19 2005, 04:25

Лито
Посмотри OnSpawn скрипты в Начале Пути. wink.gif Там в Прокампуре таких перцев отнастроенных, как грязи... А вообще, я переписал тут стандартный OnSpawn... Если не надоест смотреть, то я думаю, это будет полным ответом на твой вопрос. wink.gif

Neverwinter Script Source
//:://////////////////////////////////////////////////
//:: Copyright © 2002 Floodgate Entertainment
//:: Created By: Naomi Novik
//:: Created On: 12/11/2002
//:: Modified By: DBColl / WRG!Team 18.06.2005
//:://////////////////////////////////////////////////
//:: Updated 2003-08-20 Georg Zoeller: Added check for variables to active spawn in conditions without changing the spawnscript


#include "x0_i0_anims"
// #include "x0_i0_walkway" - in x0_i0_anims
#include "x0_i0_treasure"

#include "x2_inc_switches"

void main()
{
    // ***** Spawn-In Conditions ***** //

    // * REMOVE COMMENTS (// ) before the "Set..." functions to activate
    // * them. Do NOT touch lines commented out with // *, those are
    // * real comments for information.

    // * This causes the creature to say a one-line greeting in their
    // * conversation file upon perceiving the player. Put [NW_D2_GenCheck]
    // * in the "Text Seen When" field of the greeting in the conversation
    // * file. Don't attach any player responses.
    // *
    // SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION);

    // * Same as above, but for hostile creatures to make them say
    // * a line before attacking.
    // *
    // SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION);

    // * This NPC will attack when its allies call for help
    // *

    if (GetLocalInt(OBJECT_SELF, "ST_SHOUT_ATTACK") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET);
    }

    //--------------------------------------------------------------------------
    // Enable stealth mode by setting a variable on the creature
    // Great for ambushes
    // See x2_inc_switches for more information about this
    //--------------------------------------------------------------------------
    // * If the NPC has the Hide skill they will go into stealth mode
    // * while doing WalkWayPoints().
    // *
    if (GetLocalInt(OBJECT_SELF, "ST_STEALTH") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_STEALTH);
    }

    // * Same, but for Search mode
    //--------------------------------------------------------------------------
    // Make creature enter search mode after spawning by setting a variable
    // Great for guards, etc
    // See x2_inc_switches for more information about this
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "ST_SEARCH") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_SEARCH);
    }
    // * This will set the NPC to give a warning to non-enemies
    // * before attacking.
    // * NN -- no clue what this really does yet
    // *
    if (GetLocalInt(OBJECT_SELF, "ST_WARNINGS") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_SET_WARNINGS);
    }
    // * Separate the NPC's waypoints into day & night.
    // * See comment on WalkWayPoints() for use.
    // *
    if (GetLocalInt(OBJECT_SELF, "ST_DAY_NIGHT_POSTING") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING);
    }

    // * If this is set, the NPC will appear using the "EffectAppear"
    // * animation instead of fading in, *IF* SetListeningPatterns()
    // * is called below.
    // *
    if (GetLocalInt(OBJECT_SELF, "ST_APPEAR") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION);
    }
    // * This will cause an NPC to use common animations it possesses,
    // * and use social ones to any other nearby friendly NPCs.
    // *
    // SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);

    //--------------------------------------------------------------------------
    // Enable immobile ambient animations by setting a variable
    // See x2_inc_switches for more information about this
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "ST_IMMOBILE_AMBIENT") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS);
    }
    // * Same as above, except NPC will wander randomly around the
    // * area.
    // *
    // SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);


    //--------------------------------------------------------------------------
    // Enable mobile ambient animations by setting a variable
    // See x2_inc_switches for more information about this
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "ST_AMBIENT") == TRUE)
    {
        SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS);
    }
    // **** Animation Conditions **** //
    // * These are extra conditions you can put on creatures with ambient
    // * animations.

    // * Civilized creatures interact with placeables in
    // * their area that have the tag "NW_INTERACTIVE"
    // * and "talk" to each other.
    // *
    // * Humanoid races are civilized by default, so only
    // * set this flag for monster races that you want to
    // * behave the same way.

    if (GetLocalInt(OBJECT_SELF, "ST_ANIM_CIVILIZED") == TRUE)
    {
        SetAnimationCondition(NW_ANIM_FLAG_IS_CIVILIZED);
    }
    // * If this flag is set, this creature will constantly
    // * be acting. Otherwise, creatures will only start
    // * performing their ambient animations when they
    // * first perceive a player, and they will stop when
    // * the player moves away.
    if (GetLocalInt(OBJECT_SELF, "ST_ANIM_CONSTANT") == TRUE)
    {
        SetAnimationCondition(NW_ANIM_FLAG_CONSTANT);
    }
    // * Civilized creatures with this flag set will
    // * randomly use a few voicechats. It's a good
    // * idea to avoid putting this on multiple
    // * creatures using the same voiceset.
    // SetAnimationCondition(NW_ANIM_FLAG_CHATTER);

    // * Creatures with _immobile_ ambient animations
    // * can have this flag set to make them mobile in a
    // * close range. They will never leave their immediate
    // * area, but will move around in it, frequently
    // * returning to their starting point.
    // *
    // * Note that creatures spawned inside interior areas
    // * that contain a waypoint with one of the tags
    // * "NW_HOME", "NW_TAVERN", "NW_SHOP" will automatically
    // * have this condition set.
    if (GetLocalInt(OBJECT_SELF, "ST_ANIM_MOBILE_CLOSE_RANGE") == TRUE)
    {
        SetAnimationCondition(NW_ANIM_FLAG_IS_MOBILE_CLOSE_RANGE);
    }

    // **** Special Combat Tactics *****//
    // * These are special flags that can be set on creatures to
    // * make them follow certain specialized combat tactics.
    // * NOTE: ONLY ONE OF THESE SHOULD BE SET ON A SINGLE CREATURE.

    // * Ranged attacker
    // * Will attempt to stay at ranged distance from their
    // * target.
    if (GetLocalInt(OBJECT_SELF, "ST_COMBAT_RANGED") == TRUE)
    {
        SetCombatCondition(X0_COMBAT_FLAG_RANGED);
    }
    // * Defensive attacker
    // * Will use defensive combat feats and parry
    if (GetLocalInt(OBJECT_SELF, "ST_COMBAT_DEFENSIVE") == TRUE)
    {
        SetCombatCondition(X0_COMBAT_FLAG_DEFENSIVE);
    }
    // * Ambusher
    // * Will go stealthy/invisible and attack, then
    // * run away and try to go stealthy again before
    // * attacking anew.
    if (GetLocalInt(OBJECT_SELF, "ST_COMBAT_AMBUSHER") == TRUE)
    {
        SetCombatCondition(X0_COMBAT_FLAG_AMBUSHER);
    }
    // * Cowardly
    // * Cowardly creatures will attempt to flee
    // * attackers.
    if (GetLocalInt(OBJECT_SELF, "ST_COMBAT_COWARDLY") == TRUE)
    {
        SetCombatCondition(X0_COMBAT_FLAG_COWARDLY);
    }

    // **** Escape Commands ***** //
    // * NOTE: ONLY ONE OF THE FOLLOWING SHOULD EVER BE SET AT ONE TIME.
    // * NOTE2: Not clear that these actually work. -- NN

    // * Flee to a way point and return a short time later.
    // *
    // SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN);

    // * Flee to a way point and do not return.
    // *
    // SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE);

    // * Teleport to safety and do not return.
    // *
    // SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE);

    // * Teleport to safety and return a short time later.
    // *
    // SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN);



    // ***** CUSTOM USER DEFINED EVENTS ***** /


    /*
      If you uncomment any of these conditions, the creature will fire
      a specific user-defined event number on each event. That will then
      allow you to write custom code in the "OnUserDefinedEvent" handler
      script to go on top of the default NPC behaviors for that event.

      Example: I want to add some custom behavior to my NPC when they
      are damaged. I uncomment the "NW_FLAG_DAMAGED_EVENT", then create
      a new user-defined script that has something like this in it:

      if (GetUserDefinedEventNumber() == 1006) {
          // Custom code for my NPC to execute when it's damaged
      }

      These user-defined events are in the range 1001-1010.
    */


    // * Fire User Defined Event 1001 in the OnHeartbeat
    // *
    SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT);

    // * Fire User Defined Event 1002
    // *
    SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);

    // * Fire User Defined Event 1003
    // *
    SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT);

    // * Fire User Defined Event 1004
    // *
    SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT);

    // * Fire User Defined Event 1005
    // *
    SetSpawnInCondition(NW_FLAG_ATTACK_EVENT);

    // * Fire User Defined Event 1006
    // *
    SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT);

    // * Fire User Defined Event 1007
    // *
    SetSpawnInCondition(NW_FLAG_DEATH_EVENT);

    // * Fire User Defined Event 1008
    // *
    SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT);

    // * Fire User Defined Event 1009
    // *
    SetSpawnInCondition(NW_FLAG_SPELL_CAST_AT_EVENT);

    // * Fire User Defined Event 1010
    // *
    SetSpawnInCondition(NW_FLAG_RESTED_EVENT);


    // ***** DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) ***** //

    // * Goes through and sets up which shouts the NPC will listen to.
    // *
    SetListeningPatterns();

    // * Walk among a set of waypoints.
    // * 1. Find waypoints with the tag "WP_" + NPC TAG + "_##" and walk
    // *    among them in order.
    // * 2. If the tag of the Way Point is "POST_" + NPC TAG, stay there
    // *    and return to it after combat.
    //
    // * Optional Parameters:
    // * void WalkWayPoints(int nRun = FALSE, float fPause = 1.0)
    //
    // * If "NW_FLAG_DAY_NIGHT_POSTING" is set above, you can also
    // * create waypoints with the tags "WN_" + NPC Tag + "_##"
    // * and those will be walked at night. (The standard waypoints
    // * will be walked during the day.)
    // * The night "posting" waypoint tag is simply "NIGHT_" + NPC tag.
    WalkWayPoints();

    //* Create a small amount of treasure on the creature
    //if ((GetLocalInt(GetModule(), "X2_L_NOTREASURE") == FALSE)  &&
    //    (GetLocalInt(OBJECT_SELF, "X2_L_NOTREASURE") == FALSE)  )
    //{
    //    CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, OBJECT_SELF);
    //}


    // ***** ADD ANY SPECIAL ON-SPAWN CODE HERE ***** //

    // * If Incorporeal, apply changes
    if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) == TRUE)
    {
        effect eConceal = EffectConcealment(50, MISS_CHANCE_TYPE_NORMAL);
        eConceal = ExtraordinaryEffect(eConceal);
        effect eGhost = EffectCutsceneGhost();
        eGhost = ExtraordinaryEffect(eGhost);
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, eConceal, OBJECT_SELF);
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, OBJECT_SELF);

    }

/////// *************************** DBColl's customs... ***********************
/////// *************************** DBColl's customs... ***********************
/////// *************************** DBColl's customs... ***********************
/////// *************************** DBColl's customs... ***********************
/////// *************************** DBColl's customs... ***********************
//:: ************************************************************** Каспер smile.gif))
    if (GetLocalInt(OBJECT_SELF, "ST_GHOST") == TRUE)
    {
        effect eGhost = EffectCutsceneGhost();
        eGhost = ExtraordinaryEffect(eGhost);
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, OBJECT_SELF);
    }

//:: ******************************************************** Умертвляем непися

    if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == TRUE)
    {
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 1) // "Не поднимаемый" некросом труп
            SetIsDestroyable(FALSE, FALSE, FALSE);
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 2) // "Поднимаемый" некросом труп
            SetIsDestroyable(FALSE, TRUE, FALSE);
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 3) // "Не поднимаемый" некросом труп
        {                                            //        с кровью под пузом
            SetIsDestroyable(FALSE, FALSE, FALSE);
            CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", GetLocation(OBJECT_SELF));
        }
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 4) // "Поднимаемый" некросом труп
        {                                            //        с кровью под пузом
            SetIsDestroyable(FALSE, TRUE, FALSE);
            CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", GetLocation(OBJECT_SELF));
        }
        ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(TRUE), OBJECT_SELF);
    }

//:: ***************************************************************************
//:: ***************************************************** Садим непися на стул
    if (GetLocalInt(OBJECT_SELF, "ST_SIT_CHAIR") == TRUE)
        ActionSit(GetNearestObjectByTag("STOOL"));
    if (GetLocalInt(OBJECT_SELF, "ST_SIT_CHAIR") == 2) // примораживаем к стулу
        SetCommandable(FALSE);

//:: ***************************************************************************
//:: **************************************************** Садим непися на землю
    if (GetLocalInt(OBJECT_SELF, "ST_SIT_CROSS") == TRUE)
        ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 99999.9);

}






CODE
SPAWN-КОНСТАНТЫ.

Использование: инициализируем на неписе следующие переменные.

ST_DEAD – будет мертвый
1 – невоскрешаемый труп
2 – воскрешаемый
3 - невоскрешаемый труп с кровью
4 - воскрешаемый труп с кровью
ST_STEALTH – ходит скрытно, когда выполняется WalkWaypoints(). Хорошо для убийц.
ST_SEARCH – то же самое, только в режиме поиска. Хорошо для стражи.
ST_WARNING – поднимет тревогу.
ST_DAY_NIGHT_POSTING – дневные/ночные вейпоинты.
ST_SHOUT_ATTACK – прибежит на тревогу к союзникам, если позовут.
ST_APPEAR – «свалится с неба».
ST_IMMOBILE_AMBIENT – стоячая анимация.
ST_AMBIENT – бродячая анимация.
ST_ANIM_CIVILIZED - Civilized creatures interact with placeables in their area that have the tag "NW_INTERACTIVE" and "talk" to each other. Humanoid races are civilized by default, so only set this flag for monster races that you want to behave the same way.
ST_ANIM_CONSTANT - If this flag is set, this creature will constantly be acting. Otherwise, creatures will only start performing their ambient animations when they first perceive a player, and they will stop when the player moves away.
ST_ANIM_MOBILE_CLOSE_RANGE - Creatures with _immobile_ ambient animations can have this flag set to make them mobile in a close range. They will never leave their immediate area, but will move around in it, frequently returning to their starting point. Note that creatures spawned inside interior areas that contain a waypoint with one of the tags "NW_HOME", "NW_TAVERN", "NW_SHOP" will automatically have this condition set.
----------------------------------------------------------------------------------------------------------------------------------

These are special flags that can be set on creatures to make them follow certain specialized combat tactics.
NOTE: ONLY ONE OF THESE SHOULD BE SET ON A SINGLE CREATURE.

ST_COMBAT_RANGED – старается атаковать издалека
ST_COMBAT_DEFENSIVE – использует защитные фиты и Parry.
ST_COMBAT_AMBUSHER - Will go stealthy/invisible and attack, then run away and try to go stealthy again before attacking anew.
ST_COMBAT_COWARDLY – будет стараться убегать от нападающего.

ST_SIT_CHAIR – садится на ближайший стул с тэгом STOOL. (требуется поддержка в HEARTBEAT’е)
2 – «примораживаем» (SetCommandable(FALSE))
ST_SIT_CROSS – сажаем на пол (требуется поддержка в HEARTBEAT’е).
2 – «примораживаем» (SetCommandable(FALSE))


Кстати, вот эти константы ты должен будешь просто установить в Variables существа, в его свойствах. wink.gif Как поставишь, так и будет себя вести.
Вот и все... Читай, разбирайся wink.gif.
Добавлено в [mergetime]1119144609[/mergetime]
Да! Чуть не забыл! Скопируй этот мой спавн скрипт и запиши его себе в модуль под именем nw_c2_default9. Потом пробуй предустановленными переменными настраивать. wink.gif

Автор: Мефистофель Jun 19 2005, 04:58

DBCool, очень полезный скрипт. Я не могу понять, как заставить НПК делать например 1. или 2. немогли бы вы обьяснить. drag.gif

Автор: Лито Jun 19 2005, 10:16

DBColl, опа! Грейтс енк smile.gif

Автор: DBColl Jun 27 2005, 15:10

QUOTE (Мефистофель @ Jun 19 2005, 04:58)
DBCool, очень полезный скрипт. Я не могу понять, как заставить НПК делать например 1. или 2. немогли бы вы обьяснить.

Ты о чем это? dntknw.gif

Автор: -fenix- Jun 27 2005, 19:30

Он наверное имеет в виду, как сделать воскрешаемый труп, не воскрешаемый...
Тут ведь в коде все показано

Neverwinter Script Source
if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == TRUE)
    {
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 1) // "Не поднимаемый" некросом труп
            SetIsDestroyable(FALSE, FALSE, FALSE);
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 2) // "Поднимаемый" некросом труп
            SetIsDestroyable(FALSE, TRUE, FALSE);
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 3) // "Не поднимаемый" некросом труп
        {                                            //        с кровью под пузом
            SetIsDestroyable(FALSE, FALSE, FALSE);
            CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", GetLocation(OBJECT_SELF));
        }
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 4) // "Поднимаемый" некросом труп
        {                                            //        с кровью под пузом
            SetIsDestroyable(FALSE, TRUE, FALSE);
            CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", GetLocation(OBJECT_SELF));
        }
        ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(TRUE), OBJECT_SELF);
    }

Автор: Лито Jul 2 2005, 19:53

Мефистофель Если ставишь на НПС переменную "ST_DEAD" которая == 1, то получится

Neverwinter Script Source
// "Не поднимаемый" некросом труп
,а если == 2 то -
Neverwinter Script Source
// "Поднимаемый" некросом труп
.
Ну и так далее. Все не просто, а очень просто smile.gif

Автор: Сайрус Dec 11 2006, 03:50

может я чего не пойму scratch_one-s_head.gif , но мне кажется там в конце должно быть:


NSS
if (GetLocalInt(OBJECT_SELF, "ST_DEAD") >= TRUE) // иначе 2,3,4 не пройдут через условие
    {
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 1) // "Не поднимаемый" некросом труп
            SetIsDestroyable(FALSE, FALSE, FALSE);
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 2) // "Поднимаемый" некросом труп
            SetIsDestroyable(FALSE, TRUE, TRUE); // второе TRUE - чтобы можно было труп юзать (ресать)
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 3) // "Не поднимаемый" некросом труп
        {                                            //        с кровью под пузом
            SetIsDestroyable(FALSE, FALSE, FALSE);
            CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", GetLocation(OBJECT_SELF));
        }
        if (GetLocalInt(OBJECT_SELF, "ST_DEAD") == 4) // "Поднимаемый" некросом труп
        {                                            //        с кровью под пузом
            SetIsDestroyable(FALSE, TRUE, TRUE); // второе TRUE - чтобы можно было труп юзать (ресать)
            CreateObject(OBJECT_TYPE_PLACEABLE, "plc_bloodstain", GetLocation(OBJECT_SELF));
        }
        ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(TRUE), OBJECT_SELF);
    }


эффект приведения может раньше так работал, а нынче нет (по крайней мере у меня), у меня результат дает только:
NSS
if (GetLocalInt(OBJECT_SELF, "ST_GHOST") == TRUE)
       {
       effect eGhost = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE_NO_SOUND); // можно использовать со звуком, можно без
       eGhost = ExtraordinaryEffect(eGhost);
       ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, OBJECT_SELF);
       }

Автор: Aiwan Dec 11 2006, 18:14

Сай, твоя лошадь.. мм мягко скажем поздно скачет. Теме полтора года... smile.gif

Автор: Сайрус Dec 12 2006, 03:01

Ну фик его знает..
Кстати не пойму зачем в этом скрипте нужно подключение библиотеки

NSS
#include "x2_inc_switches"

и без нее вроде неплохо работает, поясните плизз для опоздавших rolleyes.gif
добавил:
Еще вопрос, это все будет работает в том виде в каком есть в НВН2?
То что в скрипте много закоментированных строк ни как не влияет на систему? а то я составил один большой скрипт на спавн, где все это собрано в кучу, и из него сделал несколько специально подогнанных под определенный тип НПС, под стражу, под мирного жителя, просто меня настораживает что этот скрипт дольше открывается, может лучше все лишние коментарии из готового специализированного файла убрать чтобы обработка шла быстрее? или по фик?

Автор: -fenix- Dec 12 2006, 11:21

QUOTE(Сайрус @ Dec 12 2006, 03:01) [snapback]100283[/snapback]
Еще вопрос, это все будет работает в том виде в каком есть в НВН2?

Ты на счет инклюдов? Ну раз обещали совместимость, по скриптам, значит инклюды такие долны быть.

QUOTE(Сайрус @ Dec 12 2006, 03:01) [snapback]100283[/snapback]
То что в скрипте много закоментированных строк ни как не влияет на систему? а то я составил один большой скрипт на спавн, где все это собрано в кучу, и из него сделал несколько специально подогнанных под определенный тип НПС, под стражу, под мирного жителя, просто меня настораживает что этот скрипт дольше открывается, может лучше все лишние коментарии из готового специализированного файла убрать чтобы обработка шла быстрее? или по фик?

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

Автор: Lex Dec 12 2006, 12:58

коменты не влияют ни на что, при компиляции они просто игнорируются и в nsc попадает только код, так что ты можешь войну и мир написать в заголовке, а скрипт РАБОТАТЬ дольше не станет. Открываться дольше - да, размер модуля увеличится - да. Но не работа.

Автор: -fenix- Dec 12 2006, 13:05

QUOTE(Lex @ Dec 12 2006, 12:58) [snapback]100301[/snapback]
можешь войну и мир написать в заголовке, а скрипт РАБОТАТЬ дольше не станет.

Но все же лучше так не делать, себе же дороже будет. smile.gif

QUOTE(Lex @ Dec 12 2006, 12:58) [snapback]100301[/snapback]
в nsc попадает только код

А из тулсы их удалить потом, чтобы место не занимали?

Автор: Epsilon Jun 11 2007, 03:21

Мне плевать на давность, для меня появилось новое понятие - константа. Обьясните как их использовать, а то этот скрипт не пашет без них.

Автор: Aiwan Jun 11 2007, 09:10

Лучше почитай тему скриптов новоичков. Там я настроил этот скрипт лучше и шире.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)