Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74
Nokoll
QUOTE
раз они одинаковые, то можно не делать 2-х разных переменных


Действительно LEX ты прав, я ступил немного, но скрипт работает.
Lex
DelayCommand(5.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));

//------------------------------------------------------------------------------
DelayCommand(3.0, EffectDamage(oPC,DAMAGE_POWER_PLUS_SIX));
DelayCommand(3.0, EffectDamage(owp3,DAMAGE_POWER_PLUS_SIX));
DelayCommand(3.0, EffectDamage(owp5,DAMAGE_POWER_PLUS_SIX));
DelayCommand(3.0, EffectDamage(owp6,DAMAGE_POWER_PLUS_SIX));
//------------------------------------------------------------------------------
DelayCommand(4.0, EffectDarkness(owp1,DAMAGE_POWER_PLUS_TEN));
DelayCommand(4.0, EffectDarkness(owp2,DAMAGE_POWER_PLUS_TEN));
DelayCommand(4.0, EffectDarkness(owp3,DAMAGE_POWER_PLUS_TEN));
//------------------------------------------------------------------------------
DelayCommand(5.0, EffectDamage(owp4,DAMAGE_TYPE_FIRE));
DelayCommand(5.0, EffectDamage(owp7,DAMAGE_TYPE_FIRE));
DelayCommand(5.0, EffectDamage(owp8,DAMAGE_TYPE_FIRE));


ВОТ ЭТО КАК РАБОТАЕТ?!??!!
Добавлено в [mergetime]1106166314[/mergetime]
он даже компилиться не должен
Nokoll
QUOTE
он даже компилиться не должен


Почему не должен? ТА this.gif
Добавлено в [mergetime]1106166732[/mergetime]
Lex помоги плиз! Написал скрипт Тулсет пишет что все правильно
скрипт ставится на OnEnter тригера. проблема вот в чем пересупаеш триггер
Neverwinter Script Source
effect eVis = EffectVisualEffect(VFX_FNF_IMPLOSION);
    effect eVis2 = EffectVisualEffect(VFX_FNF_LOS_EVIL_20);

ети 2 эффекта сразу буз сценки проявляются на
Neverwinter Script Source
object oCasic = GetObjectByTag("CASIC");

далее камера не работает но разговор между
Neverwinter Script Source
object oNPC = GetObjectByTag("DRUG"); и object oCasic = GetObjectByTag("CASIC");
идет спустя немного времени object oNPC = GetObjectByTag("DRUG"); становится скелетом.
хотя фсе должно быть с камерами.

Вот скрипт


Neverwinter Script Source
#include "x2_inc_cutscene"

int CUTSCENE_NUMBER = 81; drag.gif

void CallSetStatus(int nCutscene, object oObject, int nVal)
{
    if(nCutscene == GetLocalInt(oObject, "nCutsceneNumber"))
    {
        SetLocalInt(oObject, "STATUS", nVal);
    }
}

void CutSetStatus(float fDelay, object oObject, int nVal)
{
    int nCutscene = GetActiveCutsceneNum();
    fDelay = CutCalculateCurrentDelay(fDelay, nCutscene);
    DelayCommand(fDelay, CallSetStatus(nCutscene, oObject, nVal));
}

void CallSetAppearance(int nCutscene, object oObject)
{
    if(nCutscene == GetLocalInt(oObject, "nCutsceneNumber"))
    {
        SetCreatureAppearanceType(oObject, APPEARANCE_TYPE_SKELETON_COMMON);
    }
}

void CutSetAppearance(float fDelay, object oObject)
{
    int nCutscene = GetActiveCutsceneNum();
    fDelay = CutCalculateCurrentDelay(fDelay, nCutscene);
    DelayCommand(fDelay, CallSetAppearance(nCutscene, oObject));
}
void main()
{
//Dalee IDUT OBJECTA+++++++++++WGR WRG WRG FOREVA+++++++++++++++++++++++++++++++
    object oWP = GetWaypointByTag("GARIC_SUDA");
    object oWP1 = GetWaypointByTag("1");
    object oWP2 = GetWaypointByTag("2");
    object oWP3 = GetWaypointByTag("3");
    object oGlvWP = GetWaypointByTag("Boss");
    object oPC = GetPCSpeaker();
    object oNPC = GetObjectByTag("DRUG");
    object oCasic = GetObjectByTag("CASIC");
    object oCamera1 = GetWaypointByTag("Camera_1");
    object oCamera2 = GetWaypointByTag("Camera_2");
    object oCamera3 = GetWaypointByTag("Camera_3");
//Effect visual effect=========================================================
    effect eVis = EffectVisualEffect(VFX_FNF_IMPLOSION);
    effect eVis2 = EffectVisualEffect(VFX_FNF_LOS_EVIL_20);
    effect eGlavWP = EffectVisualEffect(VFX_IMP_HARM);
    SetLocalInt(oCasic, "STATUS", 1);
    CutSetActiveCutscene(CUTSCENE_NUMBER, CUT_DELAY_TYPE_CUMULATIVE);
    CutSetActiveCutsceneForObject(oPC, CUTSCENE_NUMBER, TRUE);
    CutSetActiveCutsceneForObject(oNPC, CUTSCENE_NUMBER);
    CutSetActiveCutsceneForObject(oCasic, CUTSCENE_NUMBER);
    CutFadeOutAndIn(0.0, oPC, 2.5);
    CutSetCutsceneMode(1.0, oPC, TRUE, TRUE, TRUE, TRUE);
    CutSetLocation(0.0, oPC);
    CutSetCamera(0.0, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 100.0, CAMERA_TRANSITION_TYPE_SNAP);
    // Camera zooms on the scout
    CutJumpToObject(1.0, oPC, oCamera1);
    CutSetCamera(0.2, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 65.0, CAMERA_TRANSITION_TYPE_SLOW);
    // scout's first line...
    CutActionStartConversation(2.0, oCasic, oCasic, "soul");
    CutPlayAnimation(1.0, oCasic, ANIMATION_LOOPING_TALK_FORCEFUL, 3.0);
    CutActionMoveToObject(1.0, oNPC, oNPC, FALSE);
    CutSetStatus(2.5, oCasic, 2);
    // scout's second line...
    CutActionStartConversation(1.0, oCasic, oCasic, "soul");
    //CutPlayAnimation(1.0, oScout, ANIMATION_LOOPING_TALK_LAUGHING, 5.0);
    CutActionMoveToObject(0.0, oNPC, oNPC, FALSE);
    CutSetStatus(4.0, oCasic, 3);
    // scout hears the sound
    CutActionStartConversation(1.0, oCasic, oCasic, "soul");
    CutSetFacingPoint(3.0, oCasic, GetTag(oNPC));
    CutSetMusic(0.0, oPC, TRACK_BATTLE_ARIBETH);
    CutSetStatus(0.0, oCasic, 4);
    CutSetCamera(0.0, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 40.0, CAMERA_TRANSITION_TYPE_MEDIUM);
    // pray in elven...
    CutActionStartConversation(1.5, oCasic, oCasic, "soul");
    CutPlayAnimation(1.2, oNPC, ANIMATION_LOOPING_SPASM, 6.0);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oNPC);
    CutActionStartConversation(1.0, oNPC, oNPC, "oii");
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oNPC);
    CutActionStartConversation(1.0, oNPC, oNPC, "oii2");
    CutPlaySound(0.0, oPC, "vs_favhen4m_dead");
    CutSetCamera(0.0, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 16.0, 17.0, CAMERA_TRANSITION_TYPE_VERY_FAST);
    CutPlaySound(0.5, oPC, "vs_favhen5m_dead");
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 16.0, 20.0, CAMERA_TRANSITION_TYPE_VERY_FAST);
    CutPlaySound(0.5, oPC, "vs_favhen4m_dead");
    CutSetAppearance(0.0, oNPC);
    CutSetCamera(1.0, oPC, CAMERA_MODE_TOP_DOWN, 90.0, 6.0, 5.0, CAMERA_TRANSITION_TYPE_VERY_FAST);
    CutFadeOutAndIn(3.0, oPC, 2.5);
    CutAdjustReputation(0.0, oCasic, oPC, -50);
    CutAdjustReputation(0.0, oPC, oCasic, -50);
//Escho camera=================================================================
    CutJumpToObject(1.0, oPC, oCamera2);
    CutSetCamera(0.2, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 65.0, CAMERA_TRANSITION_TYPE_SLOW);
    CutDisableCutscene(CUTSCENE_NUMBER, 1.0, 1.0);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP1);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP2);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP3);
    CutSetCamera(0.3, oPC, CAMERA_MODE_TOP_DOWN, 12.0, 10.0, 65.0, CAMERA_TRANSITION_TYPE_SLOW);
    ActionWait(1.7);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP1);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP2);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP3);
    CutSetCamera(0.4, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 5.0, CAMERA_TRANSITION_TYPE_SLOW);
    ActionWait(2.7);
    CutActionStartConversation(1.0, oNPC, oNPC, "oii3");
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP1);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP2);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP3);
    CutActionStartConversation(1.0, oNPC, oNPC, "oii4");
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eGlavWP,oGlvWP);
//============================================================================== drag.gif

}


ПОМОГИТЕ!!!!!!!
Lex
DelayCommand(5.0, EffectDamage(owp8,DAMAGE_TYPE_FIRE));

effect EffectDamage(int nDamageAmount,int nDamageType = DAMAGE_TYPE_MAGICAL,int nDamagePower = DAMAGE_POWER_NORMAL);

а у тебя что?
EffectDamage(object owp8,int nDamageType = AMAGE_TYPE_FIRE,int nDamagePower = DAMAGE_POWER_NORMAL);

из-за этого и не будет компилистья. (несоотв типов параметров функции)

Далее, само действие. Ты на 5 секунд задерживаешь непонятно какую команду.
EffectDamage не накладывает эффект, а создает его, соотв возвращая effect. Конструкция DelayCommand(5.0, Effect***(..)); - БРЕД.
Nokoll
QUOTE
DelayCommand(5.0, Effect***(..)); - БРЕД.

Так понятно значит в этом ошибка хорошо. yes.gif
У меня вот вопрос почему невыходит музыка
Neverwinter Script Source
CutSetMusic(0.0, oPC, TRACK_BATTLE_ARIBETH);

И камеры не запускаются.
и если я исправлю эту тупость получится?
Neverwinter Script Source
EffectDamage(object owp8,int nDamageType = AMAGE_TYPE_FIRE,int nDamagePower = DAMAGE_POWER_NORMAL);
crazy.gif
Lex
если тебе нужно наложение эффекта повреждений, то схема такая:
Neverwinter Script Source
effect DMG = EffectDamage(20, DAMAGE_TYPE_FIRE,  DAMAGE_POWER_NORMAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT,DMG,oPC);


приспосабливай к твоим требованиям.

CutSetMusic() - я такой функции не знаю. В СоУ такой нет.

Может быть она из библы "x2_inc_cutscene". Надо там смотреть, что почем. И камера тоже оттуда скорее всего.
Nokoll
QUOTE
если тебе нужно наложение эффекта повреждений, то схема такая:

Neverwinter Script Source
effect DMG = EffectDamage(20, DAMAGE_TYPE_FIRE,  DAMAGE_POWER_NORMAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT,DMG,oPC);



приспосабливай к твоим требованиям.

CutSetMusic() - я такой функции не знаю. В СоУ такой нет.

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


ВОТ СПАСИБО LEX ПОМОГ ТАК ПОМОГ БУДУ ДОЛЖЕН!!!
Добавлено в [mergetime]1106168773[/mergetime]
Мне очень нравится этот скрипт оцените
разговариваеш с НПК вдрук рас появляется чувак. good.gif
Neverwinter Script Source
void main()
{


    effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
    location lLoc = GetLocation(GetNearestObjectByTag("WP_Mor"));
    object oMor = CreateObject(OBJECT_TYPE_CREATURE,"mor1",lLoc,TRUE);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2),lLoc);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMor);
    }
далее начинает разговаривать чувак который появился, mor1 это фракция в политре.И
и вдрук появляется второй
Neverwinter Script Source
{


    effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE);
    location lLoc = GetLocation(GetNearestObjectByTag("WP_Mor2"));
    object oMor = CreateObject(OBJECT_TYPE_CREATURE,"mor2",lLoc,TRUE);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2),lLoc);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMor);

    }

идет разговор и эти два злых чувака забирают бедного НПК с собой в Ад. ЗаконДиалог СовершДейств

Neverwinter Script Source
//::///////////////////////////////////////////////
//:: ZABRAT V AD
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

*/

//:://////////////////////////////////////////////
//:: Created By: JA
//:: Created On: December
//:://////////////////////////////////////////////

void main()
{
    object oNPC = OBJECT_SELF;
    object oNPC2 = GetObjectByTag("DEMON_2");
    object oNPC3 = GetObjectByTag("DEMON_3");
    effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL);
    effect eVis2 = EffectVisualEffect(VFX_IMP_HARM);
    effect eVis3 = EffectVisualEffect(VFX_IMP_HARM);
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(OBJECT_SELF));
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis2, GetLocation(oNPC2));
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis3, GetLocation(oNPC3));
    DestroyObject(OBJECT_SELF,3.0);
    DestroyObject(oNPC2,3.0);
    DestroyObject(oNPC3,3.0);
    SetCommandable(FALSE);
}

И все в троем телепортируются в Ад и идет задание спасти НПК!
Falcon
незнаю офтоп или нет но со скриптамисвязанно хоть и косвенно(заранее сори)
может кто видел готовые скрипт на ваулте связанныве спродажей недвиги, и наем нпц в качестве продавца ?? сам я не напишу такого еще долго sad.gif может ктоточтотопохожее встречал ?.
Лито
Если хочешь написать кому нибудь скрипт напиши мне несколько biggrin.gif

QUOTE
скрипт райз дэд с штрафом на опыт 150 и на резурект соответсвенно

QUOTE
ограничить каст Тайм Стопа одним разом за отдых

Сколько не мучался и не старался самаму написать не получилось this.gif
Lex
Лито.
1. По идее добавка к скрипты спелла штрафа на экспу. Это всего-то одна строка.
2. Можно через локалку сделать на ПС. И снимать ее в конце отдыха.



Nokoll, выдавать чужие скрипты за свои - как минимум дурной тон. На будущее..
MasterMage
Lex почему не компилируется???? По идее должны эффекты класться одновременно, если время одно и то же
Добавлено в [mergetime]1106242631[/mergetime]
ой, не посмотрел, что дальще есть посты.... hi.gif
Chimeric
Так... скриптописательство зашло в тупик. Помогите составить скриптик. Суть наглядно:

(Диалог с предметом, волшебной палочкой)

Попробовать выстрелить огненным шаром.

Щёлкаем на этом варианте. Изменяется показатель chargesleft на -1. Кроме того:

ИЛИ 20% шанс, что:

(Если chargesleft > 0, то

Палочка взрывается у вас в руках

Если chargesleft = 0, то

Палочка молчит, вы истратили все заряды)

ИЛИ 80% шанс, что:

Из набалдашника вылетает огненный колобок.

Как сделать?
Lex
так...поехали...куда что летит?

дальше.
сколько зарядов: GetItemCharges(тут твой айтем);
SetItemCharges(object, int) - через это можно сделать на Х меньше.
d100(1)<=20 - 20% вероятность
d100(1)>=20 - 80% вероятность

Тут я бы сдела так:

onActivate
Neverwinter Script Source
if (GetTag(oItem)=="ITM_ROD_CHIMERIC")
   {
   SetLocalObject(oActivator,"ACTIVITEM",oItem);
   AssignCommand(oActivator,ActionStartConversation(oActivator,"rod_chimeric"));
   }


в диалоге

Neverwinter Script Source
void main()
{
object oRod = GetLocalObject(GetPCSpeaker(),"ACTIVITEM");
int iCharges = GetItemCharges(oRod);
if (iCharges==0) return;
if (Random(100)<=20)
   {
   тут взрыв скриптуй
   }
else
   {
   тут все остальное
   }
SetItemCharges(oRod, iCharges-1);
}


Сделай Жезл:
- бесконечное кол-во использований раз / день



Для откскриптовки огненого удара можно использовать это:
Neverwinter Script Source
/// Get Random Location.
/// BAAL, -=WRG!=- Team
location RandomLocation(object oTarget, float fRadius, int iLine = TRUE)
{
if(!iLine)
fRadius=IntToFloat(Random(FloatToInt(fRadius)));
float iXO=VectorMagnitude(GetPosition(oTarget))*cos(VectorToAngle(GetPosition(oTarget)));
float iYO=VectorMagnitude(GetPosition(oTarget))*sin(VectorToAngle(GetPosition(oTarget)));
float fRndomAngle=IntToFloat(Random(360));
location lNewLoc=Location(GetArea(oTarget),Vector(iXO+fRadius*cos(fRndomAngle), iYO+fRadius*sin(fRndomAngle)), 360.0);
return lNewLoc;
}

и функцию
Neverwinter Script Source
ActionCastFakeSpellAtLocation(int, location, int)
Chimeric
Да, вот и конец задумке... black eye.gif До всего этого мне пилить ещё годы. Забудь ты, собственно, об огненном шаре, это так, пример, теоретически, простой... На самом деле нужно, чтобы в рюкзаке у персонажа появлялось зелье определённого типа. Это скрипт для алхимического агрегата с ограниченным числом зарядов. Всегда тратится один заряд, шанс успеха 80%, при провале, коли остались ещё заряды, то сообшение 1, а коли нет, то 2.
Лито
Lex За локалку спасибо, а вот со штрафом я не понимаю drag.gif если там одна строка может скажешь какая?
Aiwan
QUOTE (Chimeric @ Jan 21 2005, 11:23)
Да, вот и конец задумке...  До всего этого мне пилить ещё годы.

Не вешай нос wink.gif Научишься! Только не забрасывай а пробуй с маленького и тянись к большому biggrin.gif

то All: Господа, готовые скрипты выкладывайте в топик соответствующий. Не думайте что они не нужны и прочее. Их читают и ими пользуются новички. Мэтры сами пишут себе. Так что делитесь опытом со своими товарищами.
Лито
Поставил переменную на игрока, хочу сделать так чтобы перед тем как применить эффект ТС проверялась переменная, если она доступна то return и ТС не действуетъ, но как сделать проверку? И в скрипте отдыха сделать уничтожение int lNonCast-а.
Neverwinter Script Source
#include "x2_inc_spellhook"

void main()
{
  int lNonCast;
    object oPC = GetLastSpellCaster();
    if (!X2PreSpellCastCode())
    {
   
        return;
    }

 


    location lTarget = GetSpellTargetLocation();
    effect eVis = EffectVisualEffect(VFX_FNF_TIME_STOP);
    effect eTime = EffectTimeStop();
    int nRoll = 1 + d4();
    SetLocalInt(oPC, "lNonCast", lNonCast);


    SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_TIME_STOP, FALSE));

      DelayCommand(0.75, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, OBJECT_SELF, 9.0));
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget);
}


И еще добавил в скрипт резуректа и райза такую строку
Neverwinter Script Source
object oTarget = GetSpellTargetObject();
GiveXPToCreature(oTarget, -150 * GetHitDice(oTarget));
K.SpecTr
Neverwinter Script Source
void main()
{
// int lNonCast; - висит на игроке
    object oPC = GetLastSpellCaster();
    int iNonCast=GetLocalInt(oPC, sVarName);
    if (!X2PreSpellCastCode())
    {
          return;
    }
    if (iNonCast==1)
    {
      return FALSE;
    }
    SetLocalInt(oPC, sVarName, 1);
//....
// Дальше как и было.

Переменную надо обнулить при отдыхе
Neverwinter Script Source
SetLocalInt(oPC, sVarName, 0);

Вроде так.
Добавлено в [mergetime]1106294919[/mergetime]
P.S. Cтроку sVarName описать забыл.
Лито
Neverwinter Script Source
{
      return FALSE;
}

С False не компилировалось, убрал теперь работает как надо. Если честно я даже не понимаю зачем FALSE нужен dntknw.gif
А вообще спасибо, теперь я умею с локалками хоть чуть чуть работать good.gif
K.SpecTr
Не компилировалось, потому что функция
Neverwinter Script Source
void main()

void не имеет кода возврата sorry.gif.
Лито
Мне кажется надо поставить проверку на 0 или 1 раньше потому что игрок начинает кастовать ТС и тут же может сделать еще один беспрепятственно. То есть это проверка начинает как только заканчивается, даже не ТС, а визуальный эффект ТСа.
K.SpecTr
Как так может? В моем варианте переменная меняется сразу после проверки и до эффектов, как таковых.
QUOTE (Лито @ Jan 21 2005, 10:34)
Neverwinter Script Source
   SetLocalInt(oPC, "lNonCast", lNonCast);

А вот этой строки уже не надо, тем более что меняется переменная на чаре с 0 на 1, но iNonCast остается равной нулю.
Если строку не убрать, то она восстанавливает переменную обратно: с 1 на 0.
Lex
QUOTE (Лито @ Jan 21 2005, 09:59)
а вот со штрафом я не понимаюесли там одна строка может скажешь какая?


Neverwinter Script Source
SetXP(oPC,GetXP(oPC)-РАЗМЕР ШТРАФА);


<small>Добавлено в 20:59</small>
Chimeric, ты конкретную задачу напиши, я тебе конкретный скрипт дам. Чтобы разобрался что да как и дальше уже сам дописывал, что надо.
Csardas
Народ помогайте дайте скриптик, мне очень нужно чтобы НПК дерется с тобой и когда он будет присмерти начел разговор с РС помогите.
Добавлено в [mergetime]1106356461[/mergetime]
QUOTE
Nokoll, выдавать чужие скрипты за свои - как минимум дурной тон. На будущее..

Ты про кокой скрипт говориш все скрипты что сдесь я писал сам! dntknw.gif
Aiwan
QUOTE (Csardas @ Jan 22 2005, 07:07)
Народ помогайте дайте скриптик, мне очень нужно чтобы НПК дерется с тобой и когда он будет присмерти начел разговор с РС помогите.

Neverwinter Script Source
//:://////////////////////////////////////////////
//:: Copyright © 2004 WRG!  www.wrg.ru
//:: Name: oud_am_warrord
//:://////////////////////////////////////////////
/*
  UserDefined -
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan    Aiwan@e-mail.ru
//:: Created On: 26.02.2004
//:://////////////////////////////////////////////
void main()
{
int nEvent = GetUserDefinedEventNumber();
//======================= DAMAGED EVENT 1006 ===================================
if (nEvent == 1006)
  {
  object oPC = GetLastDamager();
  object oHench = GetHenchman(oPC);
  object oWord = OBJECT_SELF;
  int iCurHP = GetCurrentHitPoints(OBJECT_SELF); // в данный момент НР
  int iMaxHP = GetMaxHitPoints(OBJECT_SELF); // Макс. число НР
  int iD;
//==============================================================================
  if (!GetIsPC(oPC) || !GetLocalInt(oWord, "DO_IT"))
    {return;}
    int Class = GetClassByPosition(1, oPC);
//  В зависимости от класса будет нужно сделать сепуку НПС
//  чем больше "танк", тем больше НР ему надо забрать у НПС
    switch (Class)
      {
      case CLASS_TYPE_BARBARIAN:{iD = 200; break;}
      case CLASS_TYPE_BARD:{iD = 300; break;}
      case CLASS_TYPE_CLERIC:{iD = 250; break;}
      case CLASS_TYPE_DRUID:{iD = 300; break;}
      case CLASS_TYPE_FIGHTER:{iD = 200; break;}
      case CLASS_TYPE_MONK:{iD = 150; break;}
      case CLASS_TYPE_PALADIN:{iD = 200; break;}
      case CLASS_TYPE_RANGER:{iD = 250; break;}
      case CLASS_TYPE_ROGUE:{iD = 300; break;}
      case CLASS_TYPE_SORCERER:{iD = 300; break;}
      case CLASS_TYPE_WIZARD:{iD = 300; break;}
      }

  if (GetIsPC(oPC) && ((iMaxHP - iD) >= iCurHP))
  {
  SetLocalInt(oWord, "DO_IT", TRUE);
  AssignCommand(oPC, ClearAllActions());
  AssignCommand(oHench, ClearAllActions());
  AssignCommand(oWord, ClearAllActions());
//------------------------------------------------------------------------------
// Чистим персональную репу  друг другу
  location lClose = GetLocation(GetObjectByTag("CLOSE_ARENA")); //Скрыт.арена Aiwan'a
  object oNeutral = GetObjectByTag("AM_TRUE_NEUTRAL"); // НПС с нейтрал
  ChangeFaction(oWord, oNeutral);  // Смена фракции
  ClearPersonalReputation(oWord, oPC); // КТО СТАРОЕ ПОМЯНЕТ...!  pardon.gif
  ClearPersonalReputation(oPC, oWord); // КТО СТАРОЕ ПОМЯНЕТ...!  pardon.gif
  ClearPersonalReputation(oWord, oHench); // КТО СТАРОЕ ПОМЯНЕТ...!  pardon.gif
  ClearPersonalReputation(oHench, oWord); // КТО СТАРОЕ ПОМЯНЕТ...!  pardon.gif
//------------------------------------------------------------------------------
  AssignCommand(oWord, ActionDoCommand(SetFacingPoint(GetPosition(oPC))));
  AssignCommand(oWord, ActionStartConversation(oPC));
// DelayCommand(0.5, ExecuteScript("am_scen", oPC));
  }
  }
}
MasterMage
Aiwan подкинь ссылку на функции Base & While, просто нужно заполнить кое-какие пробелы blush.gif
MasterMage
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On: 22.01.05
//::///////////////////////////////////////////////
void main()
{
    //-----------------objects------------------------------------------------
    object oPC=GetEnteringObject();
    object oKalax=GetObjectByTag("Kalaxana");
    object oWp1=GetWaypointByTag("selo_kalaxana");
    object oWp2=GetWaypointByTag("selo_point_1");
    object oWp3=GetWaypointByTag("selo_point_2");
    object oWp4=GetWaypointByTag("selo_point_3");
    object oWp5=GetWaypointByTag("selo_point_4");
    object oWpNazad=GetWaypointByTag("kalaxana_point");
    //-----------------effects------------------------------------------------
    effect eEf1=EffectVisualEffect(VFX_IMP_TORNADO);
    effect eEf2=EffectVisualEffect(VFX_IMP_UNSUMMON);
    //-----------------locations----------------------------------------------
    location lLoc1=GetLocation(oWp1);
    location lLoc2=GetLocation(oWp2);
    location lLoc3=GetLocation(oWp3);
    location lLoc4=GetLocation(oWp4);
    location lLoc5=GetLocation(oWp5);
    location lLocNazad=GetLocation(oWpNazad);
    //-----------------script-------------------------------------------------
    if (!GetIsPC(oPC)||GetLocalInt(oPC,"selo_appear_kalax")==TRUE)
    return;
    {
    SetLocalInt(oPC,"selo_appear_kalax",TRUE);
    AssignCommand(oPC,ClearAllActions());
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectParalyze(),oPC,20.0);
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc1,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf2,lLoc1,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc2,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc3,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc4,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc5,3.0));
    DelayCommand(2.0,AssignCommand(oKalax,JumpToLocation(lLoc1)));
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc2,FALSE,"DarkSister1");
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc3,FALSE,"DarkSister2");
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc4,FALSE,"DarkSister3");
    CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc5,FALSE,"DarkSister4");
    object oNPC1=GetObjectByTag("DarkSister1");
    object oNPC2=GetObjectByTag("DarkSister2");
    object oNPC3=GetObjectByTag("DarkSister3");
    object oNPC4=GetObjectByTag("DarkSister4");
    DelayCommand(4.0,AssignCommand(oKalax,ActionSpeakString("Так, так, так... Кто это у нас?")));
    DelayCommand(6.0,AssignCommand(oKalax,ActionMoveToObject(oPC,FALSE,0.5)));
    DelayCommand(8.5,AssignCommand(oKalax,ActionSpeakString("Так вот какой ты... Впечатлйает...Что? Не можешь двигатьсйа? Ничего, пройдет...")));
    DelayCommand(10.5,AssignCommand(oKalax,ActionSpeakString("Уверена, ты уже прикончил того недотепу... Поэтому сама решила с тобой увидитьсйа!")));
    DelayCommand(12.5,AssignCommand(oKalax,ActionSpeakString("У менйа много дел, поэтому скажу сразу: УЙДИ С ДОРОГИ...")));
    DelayCommand(14.5,AssignCommand(oKalax,ActionSpeakString("Надеюсь, ты понйал, что йа сказала....Теперь мне пора.")));
    DelayCommand(16.5,AssignCommand(oKalax,ActionMoveToObject(oWp1,FALSE)));
    DelayCommand(17.0,AssignCommand(oKalax,JumpToLocation(lLocNazad)));
    DelayCommand(18.0,DestroyObject(oNPC1,0.5));
    DelayCommand(18.0,DestroyObject(oNPC2,0.5));
    DelayCommand(18.0,DestroyObject(oNPC3,0.5));
    DelayCommand(18.0,DestroyObject(oNPC4,0.5));
    }
}
скрипт парализует перса, затем появляется особа и ее приспешники....Потом особа тебе внушает, то что ты естесственно не выполнишь....(smile.gif) и исчезает....Исчезют приспешники, паралич проходит......
wink.gif
Csardas
Aiwan А куда вставлять тег разгавора если он нуажен конечно.
Aiwan
QUOTE (Csardas @ Jan 22 2005, 18:19)
Aiwan А куда вставлять тег разгавора если он нуажен конечно.

Neverwinter Script Source
AssignCommand(oWord, ActionStartConversation(oPC, "диалог"));

QUOTE (MasterMage @ Jan 22 2005, 16:26)
Aiwan подкинь ссылку на функции Base & While, просто нужно заполнить кое-какие пробелы

Почитай Валео перевод. Есть ссылка?
MasterMage
Aiwan нету....иначе бы не просил biggrin.gif
И вот вопрос...Мну попросил Csardas написсать скрипт, чтобы если у НПС не осталось HP он падает и просит пощады...
Neverwinter Script Source
void main()
{
//поставь на НПС бессмертие.........
    object oPC=GetLastAttacker();
    object oNPC=GetObjectByTag("Vunak");//запиши тег НПСа в ковычкиwink.gif

    if (GetCurrentHitPoints(oNPC)<5)
    {
    SurrenderToEnemies();
    AssignCommand(oPC,ClearAllActions());
    AssignCommand(oNPC,ClearAllActions());
    ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectKnockdown(),oNPC);
    ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER);
    AssignCommand(oNPC,ActionSpeakString("Пощади...."));

    }
}
, но фракция не хочет меняться и фраза не произносится....пытался через делай команд, но нарушается...
Добавлено в [mergetime]1106406115[/mergetime]
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Created By: MasterMage ©
//:: Created On:
//::///////////////////////////////////////////////
void main()
{
//поставь на НПС бессмертие.........
    object oPC=GetLastAttacker();
    object oNPC=GetObjectByTag("Vunak");//запиши тег НПСа в ковычкиwink.gif

    if (GetCurrentHitPoints(oNPC)<5 &&GetLocalInt(oPC,"bitva")==0)
    {
    SetLocalInt(oPC,"bitva",1);
    SurrenderToEnemies();
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectKnockdown(),oNPC,2.5);
    DelayCommand(3.0,AssignCommand(oNPC,ActionSpeakString("Пощади....")));

    }
}

ВОТ СКРИПТCsardas
Добавлено в [mergetime]1106406300[/mergetime]
Neverwinter Script Source
DelayCommand(3.0,AssignCommand(oNPC,ActionSpeakString("Пощади....")));
вместо этой строчки можешь поставить дилог
Neverwinter Script Source
ActionStartConversation(oPC)
? но дело в том, что PC после битвы будет не в состоянии поговорить какое-то время...
DBColl
Не юзай в этом случае ActionSpeakString. Здесь надо юзать SpeakString. Дело в том, что во время эффекта нокдауна акции "замораживаются", пока чувак не очухается.

И на какой слот ты планируешь ставить этот скрипт?
Nokoll
MasterMage За скрипт Большое спасибо, но у меня вопросик на какой слот ставить эти 2 скрипта в СвойПерсонаж? this.gif
Aiwan
QUOTE (MasterMage @ Jan 22 2005, 20:51)
Aiwan нету....иначе бы не просил

Кликай старый город мастеров. Там увидишь тему описане скриптов от Валео. Уже этот вопрос поднимали. wink.gif
Lex
ОПИСАНИЕ ФУНКЦИЙ СКРИПТОВ НА РУССКОМ
QUOTE
Ты про кокой скрипт говориш все скрипты что сдесь я писал сам!

и как ты в одном скрипте совместил правильно5е и совершенно неправильное наложение эффектов??


На своего перса (те PC) нельзя повесить скрипты в слоты. Их просто нет. Есть только ХБ.
Friedrich
ХБ чего? Модуля? Или у перса есть какой-то свой хб?

Добавлено:
Лекс, спасибо. biggrin.gif
Lex
QUOTE

Интересная фишка тут мне вечерком подвернулась, хотя может и старо, но пока нигде не видел.
Сначала маялся чтобы на "OnHeartbeat" в модуле на игрока выполнялся определенный скрипт. Можно конечно замутить GetFirstPC и GetNextPC, в таком случае сервер будет перебирать всех игроков.
Почитал Lексикон и вот что нашел в заметках:

...the PC doesn't have an OnHeartbeat event, if you create a script called "default", it will automatically trigger every PC heartbeat...

Первожу на русский. Дело в том, что у игрока нет эвента OnHearbeat, НО(!) если вы создадите скрипт и назовете его "default" он будет автоматически вписан в OnHeartBeat игрока.
Проверил - работает...
Чудеса да и только, товарищи... this.gif


АВАДОН
MasterMage
Lexссылка мне???? this.gif
Aiwan good.gif ШПАШИБО
Добавлено в [mergetime]1106470730[/mergetime]
Lex у меня две такие статьи...но там нет Base, только While, его-то я понял...Правда, пока не пригодилось..wink.gif
ЗЫ...так лень семь метров лексикона качать...Просто вы все по лексикон говорите, а у мну его нет dntknw.gif
MasterMage
Neverwinter Script Source
void main()
{

    object oPC=GetEnteringObject();
    object oNPC=OBJECT_SELF;
    object oItem=GetFirstItemInInventory(oNPC);
    if (GetHitDice(oNPC)<5)
    {
        while(GetTag(oItem)=="ss")
            {
            SurrenderToEnemies();
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC);
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDeath(),oNPC);
            oItem=GetNextItemInInventory(oNPC);
            }


        if(GetTag(oItem)!="ss")
        {
        SetImmortal(oNPC,FALSE);
        }

    }
    return;
}

вот
CODE
1) при убийстве игрока или нпс у них проверяется в инве наличие нужной шмотки
2) если шмотка есть - они не умирают, а парализуются, ложаться на землю и остаются с одним хп
3) их нельзя убить иначе чем командой дма Килл или юзанием игроком виджета на этот полутруп.

это надо сделать...вот мои попытки....Дело в том, что я не понимаю, как добиться от while, чтобы если не найдет итема выполняла действие ниже... dntknw.gif
Oksivarus
Подскажите как правильно сделать чтоб игрок после смерти !!!(не реса) выкидывал шмотки там где помер. Я сделал вот так (изменил вроде бы рабочий скрипт с раелмса) но ожидаемого не произошло. И еще к этому ж вопросу исправленный данный скрипт будет действовать например на друида когда тот формоизменился ??? Заранее благодарен

void main()
{
object oPlayer = GetLastPlayerDied();
int i=0;
while(i<14)
{
ActionPutDownItem(GetItemInSlot(i,oPlayer));
i++;
}
}
MasterMage
Oksivarus
а зачем...просто помечай выкидываемые предметы в инвентаре НПСа...и все...или ты для ДМ, чтобы ПС выкидывал лут?
Добавлено в [mergetime]1106487042[/mergetime]
QUOTE
i++;

а почему не i+1?? Просто по смыслу так...
и пиши
Neverwinter Script Source
ActionPutDownItem(GetItemInSlot(i,oPlayer));
не так
а так
Neverwinter Script Source
AssignCommand(oPlayer,ActionPutDownItem(GetItemInSlot(i,oPlayer)));
K.SpecTr
Тут у меня появилась пара вопросов.
1) Есть oNPC и несколько Вэйпоинтов. Нужно чтобы он пробежал по ним выполняя возле каждого действие и ожидая пока oPC подойдет. Реализовал, разместив под каждый Вэйпоинт триггеры - oPC подходит, наступает, oNPC бежит дальше, дело делать. В общем, сколько вэйпоинтов -> столько триггеров -> столько скриптов, а можно ли как-то это ожидание в одном скрипте забить? И убрать лишние триггеры?
2) Как повернуть oNPC лицом к объекту, SetFacing() - требует угол, который так просто не узнать, SetFacingPoint() - требует вектор, а как его получить я не понимаю, как координаты объекта получить?
Aiwan
1. Пошли оРС за НПС и что бы он был с забитым стеком команд. SetCommandable FALSE, как все выполнит НПС TRUE.
Neverwinter Script Source
AssignCommand(oPC, ActionForceFollowObject(object oNPC, 5.0f)); // Идти за НПС не дальше 5 метров


2.
Neverwinter Script Source
AssignCommand(oPC, SetFacingPoint(GetPosition(oDoor))); // Повернем лицом к двери

K.SpecTr
2) Про GetPosition() то я и забыл. black eye.gif Спасибо.
1) Не, не так. Мне oPC нужен как раз Commandable, просто NPC ждет пока расстояние между ними не станет <= fVarName. Я сперва думал Delay поставить, но тогда есть шанс, что oPC, о чем-то задумавшись, его из виду потеряет (хотя так даже интереснее). Просто, если я буду дистанцию loop'ом проверять, то загружу все что можно. Или нет?
DBColl
QUOTE (K.SpecTr @ Jan 23 2005, 16:42)
1) Есть oNPC и несколько Вэйпоинтов. Нужно чтобы он пробежал по ним выполняя возле каждого действие и ожидая пока oPC подойдет. Реализовал, разместив под каждый Вэйпоинт триггеры - oPC подходит, наступает, oNPC бежит дальше, дело делать. В общем, сколько вэйпоинтов -> столько триггеров -> столько скриптов, а можно ли как-то это ожидание в одном скрипте забить? И убрать лишние триггеры?

Лучше все-таки делать этот прикол с триггерами. Да, триггеров останется такое же количество, но избежать "пложения" скриптов можно, если дать триггерам разные тэги и в скрипте в зависимости от тэга OBJECT_SELF-объекта делать то или другое.
K.SpecTr
Пока повесил на oNPC локалку и сделал switch, но с тэгами тоже попробую поиграться.
Nokoll
Срочно нужна помощь я написал скрипт где много наворотов всяких но скрипт не доделан до конца потому что я не знаю что делать с этой проблемой
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur)

; здесь не нужно, но почему эта проблема всегда вылезает?
Neverwinter Script Source
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);

Поставлено.
Помогите коль кто может.
Маленькая просьба можно по подробнее.
ЗАРАНЕЕ СПАСИБО ВСЕМ!!!!!!!!!!!!

Neverwinter Script Source
#include "x2_inc_cutscene"
void CutSound(int nCutscene, object oSound);
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur);
void MultiJump(object oPC, string sWay);
void PlayMusic(int nCutscene, object oPC);
void SetShift(int nCutscene, object oPC, float fShift);

int nCutsceneNumber = 20;

void main()

{
    object oPC = GetEnteringObject();
    object oGlav = GetObjectByTag("PIVIGA");
    object oWP1 = GetObjectByTag("WP_1");
    object oWP3 = GetObjectByTag("WP_3");
    object oWP4 = GetObjectByTag("WP_4");
    object oWP5 = GetObjectByTag("WP_5");
    object oWP6 = GetObjectByTag("WP_6");
    object oWP7 = GetObjectByTag("WP_7");
    object oSound = GetObjectByTag("cut20_summ_sfx");
//Effect Vizual Effect==========================================================
    effect eZa1 = EffectVisualEffect(VFX_BEAM_BLACK);
    effect eZa2 = EffectVisualEffect(VFX_BEAM_EVIL);
    effect eZa3 = EffectVisualEffect(VFX_IMP_DEATH_WARD);
    effect eZa4 = EffectVisualEffect(VFX_IMP_FEAR_S);
//Localnoe======================================================================
    location lMes1=GetLocation(oWP1);
    location lLoc2=GetLocation(oWP7);
    location lMes3=GetLocation(oWP3);
    location lMes4=GetLocation(oWP4);
    location lMes5=GetLocation(oWP5);
//==============================================================================
    if (!GetIsPC(oPC)||GetLocalInt(oPC,"Proverochoi tur!")==TRUE)
    return;
    {
    SetLocalInt(oPC,"Proverochoi tur",TRUE);
    AssignCommand(oPC,ClearAllActions());
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectDarkness(),oPC,20.0);
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa1,lMes1,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa2,lLoc2,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa3,lMes3,3.0));
    DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa4,lMes4,3.0));
    DelayCommand(2.0,AssignCommand(oGlav,JumpToLocation(lMes1)));
    DelayCommand(2.0,AssignCommand(oGlav,ActionSpeakString("KO MHE MOI SLUGI")));
    DelayCommand(1.0,AssignCommand(oGlav,ActionMoveToObject(oPC,FALSE,0.5)));
//Camera mode===================================================================
    DelayCommand(1.5, DelayCommand(GetShift(oPC, TRUE), MyPentogramma(nCutsceneNumber, oPC, 482, 3.0)));
    DelayCommand(1.5, FadeFromBlack(oPC));
    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 10.0, 50.0, CAMERA_TRANSITION_TYPE_SNAP);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 9.0, 40.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE);
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 12.0, 60.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE);
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Vso dla camera
    object oCam1 = GetWaypointByTag("Camera1");
    object oCam2 = GetWaypointByTag("Camera2");
    object oCam3 = GetWaypointByTag("Camera3");
    object oCam4 = GetWaypointByTag("Camera4");
    object oCam5 = GetWaypointByTag("Camera5");
    object oCam6 = GetWaypointByTag("Camera6");
//+++++++++++++++++++++++++++++CAMERA+++++++++++++++++++++++++++++++++++++++++++
    CutPlayAnimation(1.5, oCam1, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(1.5, oCam2, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(0.5, oCam3, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(1.5, oCam4, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(0.5, oCam5, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
    CutPlayAnimation(18.0, oCam6, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE);
//Camera stroenie===============================================================
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 182.0, 111.0, 56.0,
                CAMERA_TRANSITION_TYPE_SLOW);
    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 5.0, 65.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_VERY_FAST);

    CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 155.0, 45.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(15.6, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 10.0, 4.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 90.0, 40.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0,
                CAMERA_TRANSITION_TYPE_SNAP);

    CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 105.0, 4.0, 82.0,
                CAMERA_TRANSITION_TYPE_SNAP);
}
//PENTAGRAMMA VOCRUG++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur)
{
  if(CutGetActiveCutsceneForObject(oPC) == nCutscene)
  {
    object oPen1 = GetObjectByTag("Pen1");
    object oPen2 = GetObjectByTag("Pen2");
    object oPen3 = GetObjectByTag("Pen3");
    object oPen4 = GetObjectByTag("Pen4");
    object oPen5 = GetObjectByTag("Pen5");

    int iBeam2 = 483;

//Rasstavlaem+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam, oPen1, BODY_NODE_CHEST, FALSE), oPen2, fDur);

    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen2, BODY_NODE_CHEST, FALSE), oPen3, fDur);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen3, BODY_NODE_CHEST, FALSE), oPen4, fDur);

    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen4, BODY_NODE_CHEST, FALSE), oPen5, fDur);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen5, BODY_NODE_CHEST, FALSE), oPen1, fDur);
    }
}

// Taime =======================================================================
void SetShift(int nCutscene, object oPC, float fShift) {
    if(CutGetActiveCutsceneForObject(oPC) == nCutscene)
      SetLocalFloat(GetArea(oPC), ".."fShift);
}

void CutSound(int nCutscene, object oSound)
{
    if(CutGetActiveCutsceneForObject(oSound) == nCutscene)
    {
        SoundObjectPlay(oSound);
    }
//===============================================================================

}
Oksivarus
Поправил скрипт с выпадением луте заменив соответствующюю сточку на
то что предложил MasterMage

AssignCommand(oPlayer,ActionPutDownItem(GetItemInSlot(i,oPlayer)));

после чего в самом шарде после смерит выдает ошибку, toolset же ошибок при компилировании не находит
ошибка -

скрипт _ondeath; OID; 80000000; TAG;
ошибка слишком много инструкций;

возможно есть други ворианты как быросить на землю из слотов 1-14 игрока присмерти предметы (применяется на шарде)

Oksivarus
убрал все свои действия и условия для проверки работоспособности самой строки, оказалось что работает но возникла 2 проблема - выдает сообщение что героя нельзя разоружать во время боя.
подскажите как это реализовать то, на многих шардах такое видел значить както всетаки можно выбросить предметы игрока.
Tiger Greyhawk
To Oksivarus.
QUOTE (Oksivarus @ Jan 24 2005, 00:48)
выдает сообщение что героя нельзя разоружать во время боя.

Попробуй ClearAllAction (TRUE). Значение TRUE очищает боевые команды. Хотя, не уверен, что в данном случае поможет.
То что тебе предложил MasterMage, ИМХО, очень даже правильно в том случае, если у тебя скрипт вызывается не с игрока. А, я думаю, у тебя так и есть. Ошибка не в AssignCommand. Здесь другая проблема. Команда ActionPutDownItem заставляет выполняющего положить шмотки. В твоем же случае он этого не может сделать, поскольку мертв. Нужна другая команда. Есть очень геморный и не презентабельный вариант через копирование шмоток в новосозданный (после смерти героя) лут, но я думаю, все проще. Попробуй спросить в разделе шардов.


To MasterMage.
QUOTE (MasterMage @ Jan 23 2005, 13:28)
Дело в том, что я не понимаю, как добиться от while, чтобы если не найдет итема выполняла действие ниже...

попробуй с помощью функции проверки наличия предмета, а не перебора всех предметов в инвентори: if (HasItem(oPc, "IMMORTAL_RING")). Необходимо подключить библиотеку "nw_i0_plot" (#include "nw_i0_plot"). Или посмотри как это сделано в самой библ.
А по-поводу while: Куда ты вешаешь скрипт? По идее должна спотыкаться на первом же предмете, у которого таг не "ss".
И вот еще: ссылка. Может с этим трабла.

Neverwinter Script Source
void main()
{

    object oPC=GetEnteringObject(); //Куда он входит? В непися. Ладно, опустим, все равно нигде не используется.
    object oNPC=OBJECT_SELF; //На чем/ком висит скрипт. Если Heartbeat, то не забывай, что каждые 6 сек берется опять первый предмет в инвентори.
    object oItem=GetFirstItemInInventory(oNPC); //первый предмет в инвентори
    if (GetHitDice(oNPC)<5) //если мы при смерти
    {
        while(GetTag(oItem)=="ss") // и, пока N-ый (конкретный, первый попавшийся, а не какой-нить) предмет в инвентори имеет таг "ss", что, согласись, маловероятно будет продолжаться долго.
            {
            SurrenderToEnemies(); // даем команду рядом стоящим быть нейтральными.
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC); // накладываем эфф
            ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDeath(),oNPC); // накладываем эфф
            oItem=GetNextItemInInventory(oNPC); // Берем следующий предмет
            }
// скорее всего первый же предмет не будет иметь таг "ss" и выполниться след строчка

        if(GetTag(oItem)!="ss") // если таг объекта не равен "ss"
        {
        SetImmortal(oNPC,FALSE); // поставить убиваемым (по идее вот это и будет всегда выполняться. Т.к. в противном случае игра выдаст тебе ош.: слишк. много инстр.)
        }

    }
    return;
}


Может я совсем и не прав, но меня поправят.
mamuc
biggrin.gif примечание :
QUOTE
if (HasItem(oPc, "IMMORTAL_RING")). Необходимо подключить библиотеку "nw_i0_plot" (#include "nw_i0_plot"). Или посмотри как это сделано в самой библ.

biggrin.gif функция HasItem состоит всего из одной строчки biggrin.gif ( нужность создания сией функции вообще не очень понятна yes.gif )
так что лучше изза этой функции не подключать инклюд, а сразу писать то самое что есть в HasItem :
GetItemPossessedBy(oPC,"<тэг твоего итема>");
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.