Рыцарская Сага

Главная Регистрация Вход
Четверг, 28.03.2024, 23:36

Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум Рыцарская Сага » Список форумов » Neverwinter Nights Aurora Toolset » Похоже, я у вас тут поселюсь... (гы)
Похоже, я у вас тут поселюсь...
AntttonДата: Четверг, 20.03.2014, 20:18 | Сообщение # 21
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, А так тебе нужно просто лечение без эффектов?)

Добавлено (20.03.2014, 20:13)
---------------------------------------------
void main()
{
effect eConPenalty = EffectHeal (APPEARANCE_TYPE_GHOUL_LORD);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eConPenalty, GetFirstPC());
}
Вот скрипт на лечение без визуальных эффектов)

Добавлено (20.03.2014, 20:18)
---------------------------------------------
Сейчас поищу еще скрипт для карты)

 
RevoleДата: Четверг, 20.03.2014, 20:20 | Сообщение # 22
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
О, спс. Прям то, что надо. Просто появилась необходимость излечить цель, но без всяких вздымающих над целью столбов супер света)
 
AntttonДата: Четверг, 20.03.2014, 20:26 | Сообщение # 23
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, // 28. Reveals player map of area when map item is acquired
        if (sItemTag == "M1_Map_M1Q2A") ExploreAreaForPlayer(GetObjectByTag("Map_M1Q2A"),oPC);
        if (sItemTag == "M1_Map_M1Q3A") ExploreAreaForPlayer(GetObjectByTag("Map_M1Q3A"),oPC);
        if (sItemTag == "M1_Map_M1Q4A") ExploreAreaForPlayer(GetObjectByTag("Map_M1Q4A"),oPC);
        if (sItemTag == "M1Q04IAUCTION") ExploreAreaForPlayer(GetObjectByTag("Map_M1Q4A"),oPC);
        if (sItemTag == "M1_Map_M1Q5A") ExploreAreaForPlayer(GetObjectByTag("Map_M1Q5A"),oPC);

это ставь на модуль онакьюреитем, "M1_Map_M1Q2A" тег карты, Map_M1Q2A тег арены)
 
RevoleДата: Четверг, 20.03.2014, 20:40 | Сообщение # 24
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
Цитата Anttton ()
это ставь на модуль онакьюреитем

В моем случае предметы вообще не нужны. 

ExploreAreaForPlayer(GetObjectByTag("Map_M1Q2A"),oPC) - а вот за этот кусочек спасибо, его-то мне и не хватало.
 
AntttonДата: Четверг, 20.03.2014, 20:43 | Сообщение # 25
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, )
 
RevoleДата: Пятница, 21.03.2014, 18:05 | Сообщение # 26
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
А как реализовать респ спутника после его смерти?

Добавлено (21.03.2014, 18:05)
---------------------------------------------
И еще 1 вопросик, пока я тута: как сделать проверку на то, видит ли определенный персонаж игрока (например игрок выпел зелье невидимости или заюзал навык)?


Сообщение отредактировал Revole - Пятница, 21.03.2014, 19:00
 
AntttonДата: Пятница, 21.03.2014, 20:11 | Сообщение # 27
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, сейчас кину скрипт)

Добавлено (21.03.2014, 20:09)
---------------------------------------------
Revole, void main()
{
object oSelf = OBJECT_SELF;
object oPC = GetFirstPC();
object oItem = GetFirstItemInInventory(oSelf);
int iHide = 20 + GetSkillRank(SKILL_HIDE, oPC);
int i, iUd = 20;
object oNPC = GetNearestObject(OBJECT_TYPE_CREATURE, oPC, i);

if (oItem == OBJECT_INVALID) return; // Åñëè óæå íåò ïðåäìåòîâ
 while (GetIsObjectValid(oNPC))
 {
  if (!GetObjectSeen(oPC, oNPC) || GetIsDead(oNPC)
      || GetLevelByClass(CLASS_TYPE_ANIMAL, oNPC) >= TRUE
      || GetLevelByClass(CLASS_TYPE_COMMONER, oNPC)== FALSE)
    {i++; oNPC = GetNearestObject(OBJECT_TYPE_CREATURE, oPC, i);}
  else break;
 }
float fFas = GetFacing(oNPC);
location Loc = GetLocation(oNPC);
float fTime = GetDistanceBetween(oNPC, oPC);
if (fTime < 8.0) fTime = 8.0;
if(oNPC==OBJECT_INVALID || fTime > 15.0)
 {
  AssignCommand(oPC, SpeakString("Íèêòî íå âèäèò... Ìîæíî áðàòü..."));
  return;
 }
if (GetStealthMode(oPC)==STEALTH_MODE_ACTIVATED)
{
  if(iHide > 20) iUd = 40;
  if(iHide > 24) iUd = 60;
  if(iHide > 28) iUd = 80;
  if(iHide > 30) iUd = 100;
if(Random(100) < iUd)
 {
  AssignCommand(oPC, SpeakString("Íèêòî íå âèäèò... Ìîæíî áðàòü..."));
  DelayCommand(0.5,FloatingTextStringOnCreature("<c ó >Ìàñêèðîâêà óäàëàñü!",oPC));
  return;
 }
else
DelayCommand(0.5,FloatingTextStringOnCreature("<cþa >Ìàñêèðîâêà íå óäàëàñü!",oPC));
}

AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionWait(fTime*2));
AssignCommand(oPC, ActionDoCommand(SetCommandable(TRUE, oPC))); // ðàçáëîêèðîâàòü
DelayCommand(0.1, SetCommandable(FALSE, oPC)); // çàáëîêèðîâàòü
AssignCommand(oNPC, ClearAllActions());
AssignCommand(oNPC, SetFacingPoint(GetPosition(oPC)));
AssignCommand(oNPC, ActionDoCommand(PlayVoiceChat(VOICE_CHAT_NO, oNPC)));
AssignCommand(oNPC, ActionSpeakString("Ýé, íå òðîãàé ýòî!"));
AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0, 2.0));
AssignCommand(oNPC, ActionForceMoveToObject(oPC, TRUE, 1.0, fTime/4));
AssignCommand(oNPC, ActionDoCommand(AssignCommand(oSelf,
ActionStartConversation(oPC, "konteyner"))));
AssignCommand(oNPC, ActionSpeakString("Ýòî íå òâîå... Óõîäè!"));
AssignCommand(oNPC, ActionWait(2.0));
AssignCommand(oNPC, ActionForceMoveToLocation(Loc, FALSE, fTime/2));
AssignCommand(oNPC, ActionDoCommand(DelayCommand(0.3, SetFacing(fFas))));
AssignCommand(oNPC, ActionDoCommand(SetCommandable(TRUE, oNPC))); // ðàçáëîêèðîâàòü
AssignCommand(oNPC, ActionDoCommand(SetCommandable(TRUE, oPC))); // ðàçáëîêèðîâàòü
DelayCommand(0.1, SetCommandable(FALSE, oNPC)); // çàáëîêèðîâàòü
}
Вот тут где-то есть проверка видит ли ближайщий нпс, ставится на онюзед и оноупен, при воровстве из ящика нпс прогоняет героя

Добавлено (21.03.2014, 20:11)
---------------------------------------------
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////////
//:: Modified By: Deva Winblood
//:: Modified On: April 9th, 2008
//:: Added Support for Dying Wile Mounted
//:://///////////////////////////////////////////////

#include "nw_i0_generic"
#include "nw_i0_plot"
#include "x3_inc_horse"

// -----------------------------------------------------------------------------
// Georg, 2003-10-08
// Rewrote that jump part to get rid of the DelayCommand Code that was prone to
// timing problems. If want to see a really back hack, this function is just that.
// -----------------------------------------------------------------------------
void WrapJump(string sTarget)
{
    if (GetIsDead(OBJECT_SELF))
    {
        // * Resurrect and heal again, just in case
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectResurrection(), OBJECT_SELF);
        ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectHeal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF);

        // * recursively call self until we are alive again
        DelayCommand(1.0f,WrapJump( sTarget));
        return;
    }
    // * since the henchmen are teleporting very fast now, we leave a bloodstain on the ground
    object oBlood = CreateObject(OBJECT_TYPE_PLACEABLE,"plc_bloodstain", GetLocation(OBJECT_SELF));

    // * Remove blood after a while
    DestroyObject(oBlood,30.0f);

    // * Ensure the action queue is open to modification again
    SetCommandable(TRUE,OBJECT_SELF);

    // * Jump to Target
    JumpToObject(GetObjectByTag(sTarget), FALSE);

    // * Unset busy state
    ActionDoCommand(SetAssociateState(NW_ASC_IS_BUSY, FALSE));

    // * Make self vulnerable
    SetPlotFlag(OBJECT_SELF, FALSE);

    // * Set destroyable flag to leave corpse
    DelayCommand(6.0f, SetIsDestroyable(TRUE, TRUE, TRUE));

    // * if mounted make sure dismounted
    if (HorseGetIsMounted(OBJECT_SELF))
    { // dismount
        DelayCommand(3.0,AssignCommand(OBJECT_SELF,HorseDismountWrapper()));
    } // dismount

}

// -----------------------------------------------------------------------------
// Georg, 2003-10-08
// Changed to run the bad recursive function above.
// -----------------------------------------------------------------------------
void BringBack()
{
    object oSelf = OBJECT_SELF;

    SetLocalObject(oSelf,"NW_L_FORMERMASTER", GetMaster());
    RemoveEffects(oSelf);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectResurrection(), OBJECT_SELF);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectHeal(GetMaxHitPoints(OBJECT_SELF)), OBJECT_SELF);

    object oWay = GetObjectByTag("NW_DEATH_TEMPLE");

    if (GetIsObjectValid(oWay) == TRUE)
    {
        // * if in Source stone area, respawn at opening to area
        if (GetTag(GetArea(oSelf)) == "M4Q1D2")
        {
            DelayCommand(1.0, WrapJump("M4QD07_ENTER"));
        }
        else
        {
            DelayCommand(1.0, WrapJump(GetTag(oWay)));
        }
    }
    else
    {
        WriteTimestampedLogEntry("UT: No place to go");
    }

}

void main()
{
    SetLocalString(OBJECT_SELF,"sX3_DEATH_SCRIPT","nw_ch_ac7");
    if (HorseHandleDeath()) return;
    DeleteLocalString(OBJECT_SELF,"sX3_DEATH_SCRIPT");

    // * This is used by the advanced henchmen
    // * Let Brent know if it interferes with animal
    // * companions et cetera
    if (GetIsObjectValid(GetMaster()) == TRUE)
    {
        object oMe = OBJECT_SELF;
        if (GetAssociateType(oMe) == ASSOCIATE_TYPE_HENCHMAN
            // * this is to prevent 'double hits' from stopping
            // * the henchmen from moving to the temple of tyr
            // * I.e., henchmen dies 'twice', once after leaving  your party
            || GetLocalInt(oMe, "NW_L_HEN_I_DIED") == TRUE)
        {
            // -----------------------------------------------------------------------------
            // Georg, 2003-10-08
            // Rewrote code from here.
            // -----------------------------------------------------------------------------

           SetPlotFlag(oMe, TRUE);
           SetAssociateState(NW_ASC_IS_BUSY, TRUE);
           AddJournalQuestEntry("Henchman", 99, GetMaster(), FALSE, FALSE, FALSE);
           SetIsDestroyable(FALSE, TRUE, TRUE);
           SetLocalInt(OBJECT_SELF, "NW_L_HEN_I_DIED", TRUE);
           BringBack();

           // -----------------------------------------------------------------------------
           // End of rewrite
           // -----------------------------------------------------------------------------

        }
        else
        // * I am a familiar, give 1d6 damage to my master
        if (GetAssociate(ASSOCIATE_TYPE_FAMILIAR, GetMaster()) == OBJECT_SELF)
        {
            // April 2002: Made it so that familiar death can never kill the player
            // only wound them.
            int nDam =d6();
            if (nDam >= GetCurrentHitPoints(GetMaster()))
            {
                nDam = GetCurrentHitPoints(GetMaster()) - 1;
            }
            effect eDam = EffectDamage(nDam);
            FloatingTextStrRefOnCreature(63489, GetMaster(), FALSE);
            ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDam, GetMaster());
        }
    }
}
ПРи смерти спутник появляется в определенном месте

 
RevoleДата: Пятница, 21.03.2014, 20:45 | Сообщение # 28
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
Цитата Anttton ()
ПРи смерти спутник появляется в определенном месте

Я интересуюсь как это реализовано в Рыцарской Саге (там после смерти спутник дохлый валяется на земле, пока не воскреснешь саморучно) А вот за первый скрипт спасибо, я, кажется, нашел то, что надо.
 
AntttonДата: Суббота, 22.03.2014, 12:05 | Сообщение # 29
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, А, так это легко) Потом скрипт кину) Сейчас спать ушел)

Добавлено (22.03.2014, 12:05)
---------------------------------------------
Revole, void main()
{
 string sDeath = "ß óìèðàþ... <c ó >Âîñêðåñèòå ñêîðåé!</c> A-a-a!";
    if (Random(2) == 0)
        PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT);
    else
        PlayAnimation(ANIMATION_LOOPING_DEAD_BACK);
        SetIsDestroyable(FALSE, TRUE, TRUE);
        PlayVoiceChat(VOICE_CHAT_DEATH);
  if (GetTag(OBJECT_SELF) == "TUZIK")
  {
   sDeath = "Óóóóó.....";
   SendMessageToPC(GetFirstPC(), "Âîé óìèðàþùåãî Òóçèêà ïðîñòî íåâûíîñèì... <c ó >Ìîæåò ñòîèò åãî âîñêðåñèòü?</c>");
  }
  DelayCommand(0.1, SpeakString(sDeath));
}
Скрипт на "Тузике" в саге)

 
RevoleДата: Суббота, 22.03.2014, 12:34 | Сообщение # 30
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
Цитата Anttton ()
Скрипт на "Тузике" в саге)

Это случаем не скрипт смерти? Ну, который называется "rs_death"?
 
AntttonДата: Суббота, 22.03.2014, 13:11 | Сообщение # 31
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, да)
 
RevoleДата: Суббота, 22.03.2014, 15:14 | Сообщение # 32
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
Это не то( 

Похоже, без Геннадия не обойтись  head
 
AntttonДата: Суббота, 22.03.2014, 17:20 | Сообщение # 33
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, ВКЛЮЧИ ТУЛСЕТ, НАЖМИ НПС, ТАМ ПОСТАВЬ "тОМИ" У НЕГО ЕСТЬ СКРИПТ
 
RevoleДата: Суббота, 22.03.2014, 17:34 | Сообщение # 34
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
Ты меня не понял. В общем, проехали, я нашел способ сделать по своему.
 
AntttonДата: Суббота, 22.03.2014, 20:28 | Сообщение # 35
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Revole, Ясно)
 
alyonalakshmiДата: Понедельник, 24.03.2014, 13:46 | Сообщение # 36
Кавалерист
Группа: Пользователи
Сообщений: 98
Репутация: 7
Статус: Offline
Привет всем :)
 
RemmДата: Понедельник, 24.03.2014, 13:50 | Сообщение # 37
Капитан
Группа: Администраторы
Сообщений: 258
Репутация: 10
Статус: Offline
Чтобы труп не исчезал и был юзабельным нужна функция
SetIsDestroyable(FALSE, TRUE, TRUE);
А уж в каком скрипте она применяется к существу, так это вам решать... :)


Модмейкер
Рыцарская Сага
 
RevoleДата: Вторник, 01.04.2014, 18:19 | Сообщение # 38
Алебардщик
Группа: Пользователи
Сообщений: 31
Репутация: 1
Статус: Offline
Цитата alyonalakshmi ()
Привет всем

И тебе не хворать, коли не шутишь.

Добавлено (01.04.2014, 18:19)
---------------------------------------------
Уф! Помоги пожалуйста, не знаю как записать проверку: эм, я даже не знаю как кратко записать на словах, придется подробно: игрок юзает предмет на цель, идет проверка на определенный тег этой цели...

 
RemmДата: Суббота, 05.04.2014, 08:33 | Сообщение # 39
Капитан
Группа: Администраторы
Сообщений: 258
Репутация: 10
Статус: Offline
Цитата Revole ()
игрок юзает предмет на цель

Типа навел курсор и определил тег? Я не знаю такой проверки... unknow


Модмейкер
Рыцарская Сага
 
AntttonДата: Суббота, 05.04.2014, 14:38 | Сообщение # 40
Алебардщик
Группа: Пользователи
Сообщений: 28
Репутация: 1
Статус: Offline
Мне кажется можно сделать так на тригере) Я вроде гдето видел на тригере)
 
Форум Рыцарская Сага » Список форумов » Neverwinter Nights Aurora Toolset » Похоже, я у вас тут поселюсь... (гы)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:


Сайт создан: 24.04.2007 Бесплатный конструктор сайтов - uCoz