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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 109 110 111 112 113 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Esidor
сообщение Jun 18 2007, 10:08
Сообщение #2736


Level 1


Класс: Маг
Характер: Neutral Good
Раса: Чудовище



Где можно узнать функции команд и принципы составления скриптов?
Может вопрос и не в тему.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jun 18 2007, 12:59
Сообщение #2737


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Все функции, имеют описание в самом тулсете. Так же есть Лексикон. Перевод, тоже имеется (смотри сайт).

Принципы построения, разжеваны в мануалах, это опять сайт/Лексикон.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Mandrake
сообщение Jun 26 2007, 19:23
Сообщение #2738


Level 3
*

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



Neverwinter Script Source
void RemoveXPFromParty(int nXP, object oPC, int bAllParty=TRUE)
{

if (!bAllParty)
  {
  nXP=(GetXP(oPC)-nXP)>=0 ? GetXP(oPC)-nXP : 0;
  SetXP(oPC, nXP);
  }
else
  {
  object oMember=GetFirstFactionMember(oPC, TRUE);

  while (GetIsObjectValid(oMember))
      {
      nXP=(GetXP(oMember)-nXP)>=0 ? GetXP(oMember)-nXP : 0;
      SetXP(oMember, nXP);
      oMember=GetNextFactionMember(oPC, TRUE);
      }
  }
}
void ApplyPenalty(object oDead)
{
    int nXP = GetXP(oDead);
    int nPenalty = 250 * GetHitDice(oDead);
    int nHD = GetHitDice(oDead);
    // * You can not lose a level with this respawning
    int nMin = ((nHD * (nHD - 1)) / 2) * 1000;

    int nNewXP = nXP - nPenalty;
    if (nNewXP < nMin)
      nNewXP = nMin;
    SetXP(oDead, nNewXP);
    int nGoldToTake = FloatToInt(0.20 * GetGold(oDead));
    // * a cap of 10 000gp taken from you
    if (nGoldToTake > 50000)
    {
        nGoldToTake = 50000;
    }
    AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
    DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
    DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));

}
#include "nw_i0_plot"
/*  Script generated by
Lilac Soul's NWN Script Generator, v. 2.0

For download info, please visit:
http://nwvault.ign.com/View.php?view=Other...4683&id=625    */


//Goes OnPlayerRespawn of the module properties
void main()
{

object oPC = GetLastRespawnButtonPresser();
object oDead = oPC;
string sArea = GetTag(GetArea(oPC));
if (!GetIsPC(oPC)) return;

ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPC);

ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), oPC);

RemoveEffects(oPC);

object oTarget;
oTarget = oPC;

//Visual effects can't be applied to waypoints, so if it is a WP
//apply to the WP's location instead

int nInt;
nInt = GetObjectType(oTarget);

if((sArea == "AREA1") ||
  ( sArea == "AREA2") == FALSE )
{

  //Для Всех
  location lHALFELFTarget;
  oTarget = GetWaypointByTag("TN_SPAWN");
  lHALFELFTarget = GetLocation(oTarget);
  if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_TIME_STOP), oTarget);
  else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_TIME_STOP), GetLocation(oTarget));

  if (GetAreaFromLocation(lHALFELFTarget)==OBJECT_INVALID) return;

  AssignCommand(oPC, ClearAllActions());

  AssignCommand(oPC, ActionJumpToLocation(lHALFELFTarget));



ApplyPenalty(oDead);


}

}



Задача скрипта: Ставиться в онреспавн, и должен кидать игрока после смерти в опр. точку. Тут все нормально, проблема в исключениях, когда игрок должен респавниться на месте. Есть 2 локации AREA1 & AREA2, когда игрок в этих локациях, после смерти при нажатии респавна он появляется на том же месте где и умер, без потери опыта\золота, с этим и проблема, в AREA2 все нормально, а первой не правильно работает, когда прописываю только одну локацию, то опять же все правильно работает. Может я использовал не тот символ " || " ? Помогите пожалуйста (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 26 2007, 21:48
Сообщение #2739


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

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



Neverwinter Script Source
if(sArea != "AREA1" || sArea != "AREA2")

Попробуй так.

Ты в своем выражинии описал ситуацию так: Если стринг арены 1 равен AREA1 или стринг арены2 не равен AREA2. Поэтому и косяк.
Можно и так записать. Придет Лекс скажет как грамотней (IMG:style_emoticons/kolobok_light/smile.gif) Но я бы так написал.
Neverwinter Script Source
if(sArea == "AREA1" || sArea == "AREA2")
{
  return;
}
else
       {
         // ТУТ ТВОЙ СКРИПТ
        }
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Mandrake
сообщение Jun 26 2007, 22:11
Сообщение #2740


Level 3
*

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



Aiwan, спасибо большое. Первый вариант не сработал, но второй работает как часы (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jun 27 2007, 00:42
Сообщение #2741


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



QUOTE(Aiwan @ Jun 26 2007, 22:48) [snapback]109930[/snapback]
Neverwinter Script Source
if(sArea != "AREA1" || sArea != "AREA2")

Попробуй так.
Не ||, а &&.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 27 2007, 08:54
Сообщение #2742


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

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



Цитата(virusman @ Jun 27 2007, 03:42) [snapback]109938[/snapback]
Не ||, а &&.

Тогда не будет работать никогда, ведь будет поиск двух лок одновременно, а это всегда будет FALSE.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 27 2007, 09:48
Сообщение #2743


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

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



Цитата(Aiwan @ Jun 27 2007, 09:54) [snapback]109953[/snapback]
Тогда не будет работать никогда, ведь будет поиск двух лок одновременно, а это всегда будет FALSE.

нет.
Neverwinter Script Source
if(sArea != "AREA1" && sArea != "AREA2")

будет выдавать TRUE для всех локаций, тэг который не АРЕНА1 И не АРЕНА2. (те будет делать как раз то, что нужно)

ps: легко заметить, что условия, данные тобой и Вирусманом эквивалентны. Достаточно применить базовые принципы дискретной математики (ну или логики)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jun 27 2007, 12:21
Сообщение #2744


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



QUOTE(Lex @ Jun 27 2007, 10:48) [snapback]109956[/snapback]
ps: легко заметить, что условия, данные тобой и Вирусманом эквивалентны. Достаточно применить базовые принципы дискретной математики (ну или логики)
То, что у Айвана, всегда возвращает TRUE.
Я просто применил закон Де Моргана:
QUOTE
not (P and Q) = (not P) or (not Q)
not (P or Q) = (not P) and (not Q)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 27 2007, 14:11
Сообщение #2745


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

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



Да, я пропустил то что там два &&. Законы никакие не применял извините (IMG:style_emoticons/kolobok_light/pardon.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 27 2007, 14:14
Сообщение #2746


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

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



Цитата(virusman @ Jun 27 2007, 13:21) [snapback]109957[/snapback]
Я просто применил закон Де Моргана:

ага, я именно про него и говорил (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Leon PRO
сообщение Aug 19 2007, 16:56
Сообщение #2747


Ушедший на войну
Иконки Групп

Класс: Маг
Характер: Chaotic Good
Раса: Человек
NWN: Контент



Задача такая. НПС бежит к цели по "коридору", и в конце атакует ее (это его единственная цель для атаки, и он направлен на нее через скрипт).
По обоим сторонам коридора стоят "орудия" которые непрерывно атакуют НПС. Это могут быть плейсы или кричи. Что и как необходимо изменить, чтобы бегущий НПС ни при каких случаях не стал бы атаковать или отвлекаться на стреляющих, даже если конечная цель будет недоступна (например заблокирован проход).

Не знаю даже с чего начать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 19 2007, 17:53
Сообщение #2748


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

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



хм.. как вариант - переписать этому НПС скрипт onAttack и onDamage, чтобы НПС не атаковал в ответ тех, кто бьет его, если это не игрок или кто-то из партии игрока.
другой вариант - эти по краям корридора атакуют через FakeSpell, а дамаг кладется скриптом отдельно - тут нужно прописать для этих НПС ХБ скрипт свой.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
r1Stranger
сообщение Aug 26 2007, 12:18
Сообщение #2749


Level 4
**

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



а можно я ляпну? (IMG:style_emoticons/kolobok_light/ph34r.gif) (IMG:style_emoticons/kolobok_light/unsure.gif) (IMG:style_emoticons/kolobok_light/unsure.gif)
Цитата(Lex @ Aug 19 2007, 17:53) *
хм.. как вариант - переписать этому НПС скрипт onAttack и onDamage, чтобы НПС не атаковал в ответ тех, кто бьет его, если это не игрок или кто-то из партии игрока.

я бы наверно в этих скриптах делал проверку на текущее действие (бой) и если игрок в бою (GetIsInCombat (что то такое (IMG:style_emoticons/kolobok_light/unsure.gif) )) и последняя цель живая и/или действительная, чтоб он вообще ни на какие атаки и ущерб не реагировал (return) а добивал бы это до упора (если не надо делать проверку на собственные хп если не камикадзе), если нет списка приоритетов. Ну и в On perception поставил бы на дверь больший проиритет...

сори если че..

Сообщение отредактировал r1Stranger - Aug 26 2007, 12:20
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
drago
сообщение Sep 8 2007, 21:03
Сообщение #2750


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

Класс: Маг
Характер: Lawful Evil
Раса: Дракон
NWN: Скриптинг [PW]



делал спел, вроде все работает нормально, однако дамажит криво - то 3 раза, то 1.


Neverwinter Script Source
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"


void DoArmageddon()
{
vector vSelf = GetPosition(OBJECT_SELF);
vector v1 = Vector(vSelf.x+10.0f, vSelf.y+10.0f, 0.0f);
vector v2 = Vector(vSelf.x-10.0f, vSelf.y+10.0f, 0.0f);
vector v3 = Vector(vSelf.x+10.0f, vSelf.y-10.0f, 0.0f);
vector v4 = Vector(vSelf.x-10.0f, vSelf.y-10.0f, 0.0f);
//вокруг чара 4 точки создаются, куда эффекты налагаются
object oArea = GetArea(OBJECT_SELF);

location Loc1 = Location(oArea, v1, GetFacing(OBJECT_SELF));
location Loc2 = Location(oArea, v2, GetFacing(OBJECT_SELF));
location Loc3 = Location(oArea, v3, GetFacing(OBJECT_SELF));
location Loc4 = Location(oArea, v4, GetFacing(OBJECT_SELF));


ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc1);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc2);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc3);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_METEOR_SWARM), Loc4);

}

void main()
{
int nDam1, nDam2;
effect eDam, eDam2;
DoArmageddon();
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 20.0f, GetLocation(OBJECT_SELF), OBJECT_TYPE_CREATURE || OBJECT_TYPE_PLACEABLE);
while (GetIsObjectValid(oTarget))
    {
    if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
        {
            nDam1 = d10(20);
            nDam2 = d10(5);
            eDam = EffectDamage(nDam1, DAMAGE_TYPE_FIRE);
            eDam2 = EffectDamage(nDam2, DAMAGE_TYPE_MAGICAL);
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget);
        }
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, 20.0f, GetLocation(OBJECT_SELF), OBJECT_TYPE_CREATURE || OBJECT_TYPE_PLACEABLE);
    }


}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
sKaa
сообщение Sep 8 2007, 22:00
Сообщение #2751


Level 4
**

Класс: Пьяный Мастер
Характер: True Neutral
Раса: Человек



попробуй так
Neverwinter Script Source
float fDelay;
nDam1 = d10(20);
nDam2 = d10(5);
fDelay = IntToFloat(Random(2+1));
eDam = EffectDamage(nDam1, DAMAGE_TYPE_FIRE);
eDam2 = EffectDamage(nDam2, DAMAGE_TYPE_MAGICAL);
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
fDelay = IntToFloat(Random(2+1));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam2, oTarget));


Сообщение отредактировал Lex - Sep 10 2007, 08:26
Причины изменения: Neo: нет, ну я предупреждал? устное последнее китайское
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Rowan
сообщение Sep 11 2007, 00:26
Сообщение #2752


Level 1


Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Человек



Здравствуйте! Я в скриптинге совсем новичок, поэтому, возможно, спрошу глупость, но я пытаюсь разобраться с этим уже второй день и ничего не получается (IMG:style_emoticons/kolobok_light/crazy.gif) Гугл перерыла, туториалы перебрала, уже сил нет... короче, мне надо заставить непися (НВН1) спавниться с EffectKnockdown -

Код
effect eEffect;
eEffect = EffectKnockdown();

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oTarget);


- как-то так.
Это вроде как-то можно сделать через опцию Variables (правой кнопкой по имени непися)? В конце дефолтного скрипта onSpawn я этот код пробовала дописывать, не срабатывает, непись появляется стоя. Надо user defined писать? Или как-то еще?..

То же самое и с сидением, кстати. Не могу заставить непися появиться сидя (IMG:style_emoticons/kolobok_light/sad.gif) У меня есть вот такой user defined скрипт

Код
//::///////////////////////////////////////////////
//:: Name x2_def_userdef
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Default On User Defined Event script
*/
//:://////////////////////////////////////////////
//:: Created By: Keith Warner
//:: Created On: June 11/03
//:://////////////////////////////////////////////
const int EVENT_USER_DEFINED_PRESPAWN = 1510;
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
void main()
{
    int nUser = GetUserDefinedEventNumber();
    if(nUser == EVENT_HEARTBEAT ) //HEARTBEAT
    {
    }
    else if(nUser == EVENT_PERCEIVE) // PERCEIVE
    {
    }
    else if(nUser == EVENT_END_COMBAT_ROUND) // END OF COMBAT
    {
    }
    else if(nUser == EVENT_DIALOGUE) // ON DIALOGUE
    {
    }
    else if(nUser == EVENT_ATTACKED) // ATTACKED
    {
    }
    else if(nUser == EVENT_DAMAGED) // DAMAGED
    {
    }
    else if(nUser == 1007) // DEATH  - do not use for critical code, does not fire reliably all the time
    {
    }
    else if(nUser == EVENT_DISTURBED) // DISTURBED
    {
    }
    else if (nUser == EVENT_USER_DEFINED_PRESPAWN)
    {
    ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 99999.9);
    }
    else if (nUser == EVENT_USER_DEFINED_POSTSPAWN)
    {
    ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0, 99999.9);
    }

}

Но один он тоже не срабатывает, неписи стоя спавнятся. Где-то что-то еще надо прописать?..
Спасибо большое!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Sep 11 2007, 07:09
Сообщение #2753


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

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



Rowan, попробуй вот это на OnSpawn
Neverwinter Script Source
#include "x0_i0_corpses"

void main()
{
    effect eKnock = EffectKnockdown();
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eKnock, OBJECT_SELF);
}

Если при этом бухается на колени, а тебе нужно, чтобы лежал, просто поверни под другим углом.
Что касается спавна сидя, можно на OnPerception попробовать так:
Neverwinter Script Source
//Goes OnPerceived of a creature

void main()
{

object oPC = GetLastPerceived();

if (!GetIsPC(oPC)) return;

if (!GetLastPerceptionSeen()) return;
ClearAllActions();

ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0f, 9000.0f);

}

Он все равно спавнится стоя, потом сразу садится. Но чтобы этого в игре не было видно, выстави ему в свойствах - вкладка Advanced - Perception Range - Long.

Сообщение отредактировал shadowdweller - Sep 11 2007, 07:19
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Rowan
сообщение Sep 11 2007, 21:45
Сообщение #2754


Level 1


Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Человек



Все протестила.
EffectKnockdown опять не отработал, непись спавнится стоя. Я подумала - это не может быть потому, что где-то еще у него прописан скрипт, который заставляет его стоять? На OnPerception у него, к примеру, стоит дефолтное x2_def_percept
Код
void main()
{
    ExecuteScript("nw_c2_default2", OBJECT_SELF);
}

Этот nw_c2_default2 не может перебивать те команды (лежать в данном случае), который пытаюсь назначить неписю я?

Кстати, #include "x0_i0_corpses" - это он не мертвым появиться должен? Мне нужен живым ))

И насчет сидячего нпс. Задумка такая, что при желании его можно выбрать в спутники. Perception Range - Long в таком случае будет ему лишним, нет?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Sep 11 2007, 22:27
Сообщение #2755


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

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



Вот комплекс скриптов, которые стоят у меня на неписе, у которого эффект Knockdown прекрасно работает:
Код
OnBlocked - x2_def_onblocked
OnCombatRoundEnd - x2_def_endcombat
OnConversation - x2_def_onconv
OnDamaged - x2_def_ondamage
OnDeath - x2_def_ondeath
OnDisturbed - x2_def_ondisturb
OnHeartbeat - x2_def_heartbeat
OnPerception - x2_def_percept
OnPhysicalAttacked - x2_def_attacked
OnRested - x2_def_rested
OnSpawn - тот скрипт, который я тебе кинула
OnSpellcast - x2_def_spellcast
OnUserdefined - x2_def_userdef

При таком комплекте скриптов работает прекрасно. Попробуй те скрипты, которые стоят у непися, поменять на эти.
Код
#include "x0_i0_corpses"
- не будет он мертвым. У меня, во всяком случае, живехонек. (IMG:style_emoticons/kolobok_light/smile.gif)
Если НПС хенчмен в перспективе - попробуй усадить его на триггере. У хенчмена совершенно другой комплект скриптов, называется "set_xp1_henchmen", и менять дефолтный скрипт OnSpawn на другой не стоит, равно как и OnPerception.

Сообщение отредактировал shadowdweller - Sep 11 2007, 22:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Rowan
сообщение Sep 12 2007, 02:20
Сообщение #2756


Level 1


Класс: Пьяный Мастер
Характер: Chaotic Neutral
Раса: Человек



Цитата
Попробуй те скрипты, которые стоят у непися, поменять на эти.

Ничего не понимаю. У меня все тоже самое, но непись, зар-раза, спавнится стоя ((((

А почему неписю нельзя менять дефолтные скрипты, пока он не хенчмэн? Если я правильно тебя поняла, весь набор все равно заменится, когда непись перейдет в разряд спутников, нет?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Sep 12 2007, 08:01
Сообщение #2757


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

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



Цитата
А почему неписю нельзя менять дефолтные скрипты, пока он не хенчмэн? Если я правильно тебя поняла, весь набор все равно заменится, когда непись перейдет в разряд спутников, нет?

Набор скриптов не заменится, нужно хенчу все сразу ставить, + если хотите в дальнейшем поднимать уровни, то у хенча должен стоять только первый… И вообще что за дилемма со скриптами на загрузку? Зачем туда переть эффекты? При первом клике сидячий НПС поднимется и будет стоять все время… Кому это надо? Такие скрипты нужно ставить на ХБ, примеров было уже море. К тому же скрипты на загрузку имеют тенденцию не сработать при загрузке мода. Их лучше непосредственно использовать при вызове существа из палитре уже во время игры…

См. скрипты в этой теме по поиску, или откройте базу скриптов, или эту тему Монстры

Сообщение отредактировал gennady - Sep 4 2010, 16:51
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Sep 12 2007, 08:16
Сообщение #2758


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

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



Спавнится стоя и потом так и стоит?? (IMG:style_emoticons/kolobok_light/shok.gif) Ничччего не понимаю. Он у меня спавнится стоя, признаюсь, но стоит какую-то долю секунды, потом падает, в принципе, даже не успеваешь ничего заметить.
Насчет хенча - это один из самых серьезных моментов игры. Хенча надо долго и тщательно настраивать. Комплект скриптов, необходимых для хенча, выставляется ему сразу же, вручную. Так что если ты хочешь, чтобы потенциальный хенч у тебя сидел, лучше сделай это как триггер. Попробуй так
Neverwinter Script Source
//Put this script OnEnter
void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

int DoOnce = GetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF));
if (DoOnce==TRUE) return;

SetLocalInt(OBJECT_SELF, GetTag(OBJECT_SELF), TRUE);
object oTarget;
oTarget = GetObjectByTag("HENCH");

AssignCommand(oTarget, ClearAllActions());
AssignCommand(oTarget, ActionPlayAnimation(ANIMATION_LOOPING_SIT_CROSS, 1.0f, 6000.0f));

}

По идее, как только игрок будет входить на триггер, НПС будет садиться. А триггер тем и хорош, что его можно разместить в локации где угодно (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Sep 12 2007, 13:58
Сообщение #2759


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

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



пара подводных камней:

-- если на персонаже Plot флаг, то на него не действуют негативные эффекты, в т.ч Knockdown
-- onPerception черт его знает как работает при спавне и когда точка старта модуля около монстра.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Sep 13 2007, 15:32
Сообщение #2760


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Стоит наложить эффект невидимости на НПС в момент его создания, и пока он будет невидим, успеет сесть на стул или свалиться на пол из-за эффекта "Сбивание с ног". Игроку такой персонаж предстанет уже в том действии, какого вы от него хотите. Эффект лучше брать из серии Кутсцен. Т.е. нужно использовать "VFX_DUR_CUTSCENE_INVISIBILITY", чтобы не сработало заклинание Истинное зрение или Видеть невидимое.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 109 110 111 112 113 > » 
Ответить в эту темуОткрыть новую тему
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30th April 2025 - 08:38