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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 30 31 32 33 34 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Friedrich
сообщение Feb 22 2005, 18:46
Сообщение #776


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



QUOTE (DBColl)
Копия объекта-креатора не будет являться креатором эффекта. Это не выход.

QUOTE (Grazzt @ Dark Prince, Feb 22 2005, 15:42)
Например:
DestroyObject(bla-bla-bla);
DelayCommand(0.1,CreateObject(bla-bla-bla)); То почему с точки зрения функционирования системы он не будет являтся креатором эффекта? Ведь фактически он в конкретный момент вемени уникален -т.е. никаких других обьектов с такими тэгом и ресцефом на локации (да и во всем модуле) не присутствует.

Рес-реф и тэг тут не причем.
А что такое object?
object - это 32 битное целое, которое указывает на определенный объект в модуле (что это - адрес в памяти или просто абсолютный номер объекта, точно не знаю, скорее второе). Имеется функция
string ObjectToString(object), возвращающая (как строку) значение идентификатора объекта в виде шестнадцатиричного числа.

Соответственно, GetEffectCreater() вернет значение указателя на объект-креатор, предположительно, просто достав его из соответствующего поля эффекта (effect - это, кажется, по сути struct такой). Проверки на существование объекта с таким идентификатором при этом, происходить не должно (хотя ХЗ, чего там на самом деле происходит :xz: ). Видимо для подобных ситуаций, когда значение объекта не равно OBJECT_INVALID но самого объекта в модуле уже нет, и написана функция GetIsObjectValid(..).

Когда же ты создаешь новый объект, он получает новый идентификатор, который, естественно, не будет соответствовать идентификатору объекта, созданного когда-то по тому же рес-рефу и имевшему тот же тэг (а жив он сейчас или нет - не важно).

Исходя из вышесказанного можно предложить следующие.
Накладывая эффект мы одновременно сохраняем в локалке идентификатор объекта-креатора:
SetLocalObject(oTarget, "effect_creator", OBJECT_SELF);
А потом, будем проверять соответствие креатора эффекта этой локалке, а не вновь найденному по тэгу объекту.
Правда, нет никакой уверенности в том, что это будет работать, но можно попробовать. Заодно проверить истинность моих домыслов.

Сообщение отредактировал Friedrich - Feb 22 2005, 20:47
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Feb 23 2005, 01:36
Сообщение #777


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Да. Усе работает. :yahoo:
Если сохранить креатора эффекта в локалку, то потом можно использывать это значение, независимо от бытия самого креатора.
Фрагмент лога:
CODE
[Wed Feb 23 01:08:03] Loading Module: TEST_Lair_02
.*** Effect creator is :OID: 0x4, Name: Altar, Tag: TL_ALTAR, ResRef: plc_altrneutral ***
..*** -= xx_altar_ouexe run =- ***
.*** -= removeEffectByStoredCreator(7fffffff, effector) called =- ***
*** Effect creator was: OID: 0x4, Name: n/a, Tag: n/a, ResRef: n/a ***
*** GetIsObjectValid(oCreator) return: 0 ***
*** 1 effects was removed. ***
***  -------------  ***
..................................[Wed Feb 23 01:14:33] Server Shutting Down

Объекта с oСreator == 0x04 уже не существует (причем oCreator != OBJECT_INVALID), но созданный им эфект удаляется.
0x7FFFFFFF - это первый игрок.
OBJECT_INVALID, кажется, равен 0x7F000000 (хотя это и не важно)
Neverwinter Script Source
void removeEffectByStoredCreator(object oTarget, string sVarName)
{
  object oCreator = GetLocalObject(oTarget, sVarName);
  effect eRemove = GetFirstEffect(oTarget);
  while (GetIsEffectValid(eRemove))
  {
    if (GetEffectCreator(eRemove) == oCreator)
    {
      RemoveEffect(oTarget, eRemove);
    }
    eRemove = GetNextEffect(oTarget);
  }
}

вот функция - в общем виде.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Grazzt, Dark Pri...
сообщение Feb 24 2005, 10:40
Сообщение #778


Level 5
**

Класс: Маг
Характер: Chaotic Evil
Раса: Танар'ри



>Friedrich
Thanks :D :D :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Feb 25 2005, 13:09
Сообщение #779


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

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



Дайте плизз ктонибудь скрипт, чтобы любой Непись сделался статуей, я видел такой скрипт в 1 Аддоне.
Но ево у меня уже нет!
Стереть все эктион у Непися и Наложить Камень в Плоть! тоюеж чтобы он недвигался и покрылся камнем!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tarre Talliorne
сообщение Feb 25 2005, 17:13
Сообщение #780


Level 8
***

Класс: Псионик
Характер: Chaotic Good
Раса: Человек
NWN: Скриптинг [Sn]



Тут надо юзать эффекты катсцен: CutsceneParalyse и еще что-нибудь (я б кинул для верности все, кроме инвизбла)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Feb 25 2005, 18:25
Сообщение #781


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



QUOTE (Nokoll @ Feb 25 2005, 13:09)
Дайте плизз ктонибудь скрипт, чтобы любой Непись сделался статуей

Окаменение - это, вроде EffectPetrify()
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Feb 25 2005, 18:52
Сообщение #782


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

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



Вставить в скрипт OnSpawn Creature.

// * If Statue, apply statue visual effect
if (GetCreatureFlag(OBJECT_SELF, "STATUE") == TRUE)
{
effect eStatue = EffectPetrify();
eStatue = ExtraordinaryEffect(eStatue);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStatue, OBJECT_SELF);
SetPlotFlag(OBJECT_SELF, TRUE);
}

В Тулсете на монстер-статуе прописать переменную тип int, имя STATUE, значение TRUE.

В теории надо еще спелл Stone to Flesh слегка отредактировать, чтобы такую статую нельзя было раскаменить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Feb 26 2005, 01:23
Сообщение #783


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

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



Lexey aka Hawk
Спасибо Сделаю!

QUOTE
В теории надо еще спелл Stone to Flesh слегка отредактировать, чтобы такую статую нельзя было раскаменить
.
Можно чуть по подробнее как сделать!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Feb 28 2005, 03:02
Сообщение #784


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

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



В SoU это было сделано так. На событии OnSpellCastAt моба-статуи стоит такой скрипт
Neverwinter Script Source
//reapply stone effect

void Stone()
{
    SetPlotFlag(OBJECT_SELF, FALSE);
    effect eStone = EffectPetrify();
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eStone, OBJECT_SELF);
    SetPlotFlag(OBJECT_SELF, TRUE);
}

void main()
{
    int nSpell = GetLastSpell();
    if(nSpell == SPELL_DISPEL_MAGIC || nSpell == SPELL_GREATER_DISPELLING || nSpell ==SPELL_MORDENKAINENS_DISJUNCTION)
    {
        DelayCommand(2.1, Stone());
    }
}


Я бы в соответствующие спеллы просто вставил такую строчку.
Neverwinter Script Source
if (GetCreatureFlag(GetSpellTargetObject(), "STATUE") == TRUE) return;


В любом случае это лишь один из многочисленных вариантов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Proydoha
сообщение Feb 28 2005, 18:47
Сообщение #785


Level 4
**

Класс: Маг
Характер: Chaotic Good
Раса: Эльф



Как выглядит скрипт из начала компании ХоТУ, который обдирал игрока как липку и переносил все его вещи в отдаленный сундук в Андердарке. Я искал, но не нашел.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Feb 28 2005, 20:09
Сообщение #786


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

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



1-я глава XP1
Локация Waterdeep - Yawning Portal - Second Floor
Событие OnEnter локации. Скрипт q2a_enter_rooms.
Neverwinter Script Source
object oContainer = GetObjectByTag("x2_chapter1pcequip"); //NEW CONTAINER -
        // This container is in the final area of Chapter 1!

        // * pick up any equipment lying on the ground
        // * Thanks Mr. Cheater!
        object oArea = OBJECT_INVALID;
        object oItem = GetFirstObjectInArea(oArea);
        while (GetIsObjectValid(oItem) == TRUE)
        {
            if (GetObjectType(oItem) == OBJECT_TYPE_ITEM)
            {
                CopyItem(oItem, oContainer);
                SetPlotFlag(oItem, FALSE);
                DestroyObject(oItem, 0.1);
            }
            oItem = GetNextObjectInArea(oArea);
        }

        //if this is the main PC - who has had the dream
        if (GetLocalInt(oPC, "nPCNumber") == 1)
        {

            //if this is the case, strip PC of all equipment, place
            //it on the weapons rack ("q2a_pc_equip" and
            //spawn in the assassin ("q2adrowassassin")
            // Removing PC's equipment.
            object oGear = GetItemInSlot(INVENTORY_SLOT_ARMS, oPC);
            object oGear2;
            //object oContainer = GetObjectByTag("q2a_pc_equip");//OLD CONTAINER - IN PC START ROOM
            int nGold = 0;

            if(GetIsObjectValid(oGear))
            {
                nGold = nGold + GetGoldPieceValue(oGear);
                oGear2 = CopyItem(oGear, oContainer);
                SetPlotFlag(oGear, FALSE);
                DestroyObject(oGear);
            }
            oGear = GetItemInSlot(INVENTORY_SLOT_BELT, oPC);
            if(GetIsObjectValid(oGear))
            {
                nGold = nGold + GetGoldPieceValue(oGear);
                oGear2 = CopyItem(oGear, oContainer);
                SetPlotFlag(oGear, FALSE);
                DestroyObject(oGear);
            }
            oGear = GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC);
            if(GetIsObjectValid(oGear))
            {
                nGold = nGold + GetGoldPieceValue(oGear);
                oGear2 = CopyItem(oGear, oContainer);
                SetPlotFlag(oGear, FALSE);
                DestroyObject(oGear);
            }

... и т.д. Весь скрипт приводить не буду, т.к. найти его теперь не составит проблем, а форум не резиновый.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Feb 28 2005, 20:24
Сообщение #787


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Прошу помочь скриптом. Чтобы при воскрешении и райз дэде снимался опыт -50 за уровень(как при респауне). Я понимаю что я задавал этот вопрос, но тогда мне сказали как просто снять с игрока определенное кол-во опыта.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Feb 28 2005, 20:28
Сообщение #788


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

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



Народ помогайте вот сделал скрипт просто не могу сёйчас с катушек съеду
Вот скрипт.
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Name: PIVI_ATTAC
//:: Copyright © 2001 WRG Corp.
//:://////////////////////////////////////////////
/*
    Piviga Attacuet? CutScena Nachalo Bitva/
*/

//:://////////////////////////////////////////////
//:: Created By: Nokoll
//:: Created On: Feb 25, 2005
//:://////////////////////////////////////////////

#include "x2_inc_cutscene"
//Include dobovlaet plavnost camere i novie deistvia!
void main()
{
object oPC = GetEnteringObject();
object oPIVI = GetObjectByTag("PIVI_GIVI");//BIG BOSS....
object oNpc1 = GetObjectByTag("NPC1");
object oNpc2 = GetObjectByTag("NPC2");
object oNpc3 = GetObjectByTag("NPC3");
object oNpc4 = GetObjectByTag("NPC4");
object oNpc5 = GetObjectByTag("NPC5");
object oNpc6 = GetObjectByTag("NPC6");
object oNpc7 = GetObjectByTag("NPC7");
object oNpc8 = GetObjectByTag("NPC8");
object oNpc9 = GetObjectByTag("NPC9");
object oNpc10 = GetObjectByTag("NPC10");
//------------------------------------------------------------------|
effect eCutIn = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY);//|:CutSchene:
//------------------------------------------------------------------|
effect on = EffectDazed();
effect eVis = EffectAreaOfEffect(VFX_DUR_DARKNESS);
object oNpc11 = GetObjectByTag("NPC11");
object oNpc12 = GetObjectByTag("NPC12");
object oNpc13 = GetObjectByTag("NPC13");
object oNpc14 = GetObjectByTag("NPC14");
object oNpc15 = GetObjectByTag("NPC15");
object oNpc16 = GetObjectByTag("NPC16");
object oNpc17 = GetObjectByTag("NPC17");
object oNpc18 = GetObjectByTag("NPC18");
object oNpc19 = GetObjectByTag("NPC19");
object oNpc20 = GetObjectByTag("NPC20");
//======================================================================
//Get Waypoint by teg!--------------------------------------------------
object oPIVIWP = GetWaypointByTag("PIVIWP");//BIG BOSS WP!
object oWP1 = GetWaypointByTag("WP1");
object oWP2 = GetWaypointByTag("WP2");
object oWP3 = GetWaypointByTag("WP3");
object oWP4 = GetWaypointByTag("WP4");
object oWP5 = GetWaypointByTag("WP5");
object oWP6 = GetWaypointByTag("WP6");
object oWP7 = GetWaypointByTag("WP7");
object oWP8 = GetWaypointByTag("WP8");
object oWP9 = GetWaypointByTag("WP9");
object oWP10 = GetWaypointByTag("WP10");
object oWP11 = GetWaypointByTag("WP11");
object oWP12 = GetWaypointByTag("WP12");
object oWP13 = GetWaypointByTag("WP13");
object oWP14 = GetWaypointByTag("WP14");
object oWP15 = GetWaypointByTag("WP15");
object oWP16 = GetWaypointByTag("WP16");
object oWP17 = GetWaypointByTag("WP17");
object oWP18 = GetWaypointByTag("WP18");
object oWP19 = GetWaypointByTag("WP19");
object oWP20 = GetWaypointByTag("WP20");
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
object oDrc1 = GetWaypointByTag("DARC1");
object oDrc2 = GetWaypointByTag("DARC2");
object oDrc3 = GetWaypointByTag("DARC3");
object oDrc4 = GetWaypointByTag("DARC4");
//.......................................................................
object oCm1 = GetWaypointByTag("Camera1");
object oCm2 = GetWaypointByTag("Camera2");
object oCm3 = GetWaypointByTag("Camera3");
    AssignCommand(oNpc1, ClearAllActions());
    AssignCommand(oNpc2, ClearAllActions());
    AssignCommand(oNpc3, ClearAllActions());
    AssignCommand(oNpc4, ClearAllActions());
    AssignCommand(oNpc5, ClearAllActions());
    AssignCommand(oNpc6, ClearAllActions());
    AssignCommand(oNpc7, ClearAllActions());
    AssignCommand(oNpc8, ClearAllActions());
    AssignCommand(oNpc9, ClearAllActions());
    AssignCommand(oNpc10, ClearAllActions());
    AssignCommand(oNpc11, ClearAllActions());
    AssignCommand(oNpc12, ClearAllActions());
    AssignCommand(oNpc13, ClearAllActions());
    AssignCommand(oNpc14, ClearAllActions());
    AssignCommand(oNpc15, ClearAllActions());
    AssignCommand(oNpc16, ClearAllActions());
    AssignCommand(oNpc17, ClearAllActions());
    AssignCommand(oNpc18, ClearAllActions());
    AssignCommand(oNpc19, ClearAllActions());
    AssignCommand(oNpc20, ClearAllActions());
//=============================***SCRIPT***==============================
DelayCommand(0.5, FadeToBlack(oPC, FADE_SPEED_FASTEST));
SetCutsceneMode(oPC);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCutIn, oPC, 20.0);
DelayCommand(2.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
DelayCommand(3.0, AssignCommand(oPC, SetCameraFacing(90.0, 5.0, 79.0, CAMERA_TRANSITION_TYPE_SNAP)));
//.......................................................................
DelayCommand(6.7, AssignCommand(oPC, SetCameraFacing(90.0, 5.0, 79.0, CAMERA_TRANSITION_TYPE_SNAP)));
DelayCommand(8.5, AssignCommand(oPIVI, ActionMoveToObject(oPIVIWP)));
DelayCommand(14.0, AssignCommand(oPIVI, PlayVoiceChat(VOICE_CHAT_GOODBYE)));
DelayCommand(15.0, AssignCommand(oPIVI, ActionCastSpellAtObject(SPELL_HEALING_STING,oPC, METAMAGIC_ANY, 1)));
DelayCommand(16.5, AssignCommand(oPC, ActionJumpToObject(oCm1)));
DelayCommand(17.7, AssignCommand(oPC, SetCameraFacing(90.0, 5.0, 79.0, CAMERA_TRANSITION_TYPE_SNAP)));
//=======================Go Go Go========================================
DelayCommand(20.5, AssignCommand(oNpc1, ActionMoveToObject(oWP1)));
DelayCommand(21.5, AssignCommand(oNpc2, ActionMoveToObject(oWP2)));
DelayCommand(23.5, AssignCommand(oNpc3, ActionMoveToObject(oWP3)));
DelayCommand(24.5, AssignCommand(oNpc4, ActionMoveToObject(oWP4)));
DelayCommand(25.5, AssignCommand(oNpc5, ActionMoveToObject(oWP5)));
DelayCommand(27.5, AssignCommand(oNpc6, ActionMoveToObject(oWP6)));
DelayCommand(28.5, AssignCommand(oNpc7, ActionMoveToObject(oWP7)));
DelayCommand(29.5, AssignCommand(oNpc8, ActionMoveToObject(oWP8)));
DelayCommand(31.5, AssignCommand(oNpc9, ActionMoveToObject(oWP9)));
DelayCommand(33.5, AssignCommand(oNpc10,ActionMoveToObject(oWP10)));
//________________________________________________________________________
DelayCommand(36.5, AssignCommand(oNpc11, ActionMoveToObject(oWP11)));
DelayCommand(37.5, AssignCommand(oNpc12, ActionMoveToObject(oWP12)));
DelayCommand(38.5, AssignCommand(oNpc13, ActionMoveToObject(oWP13)));
DelayCommand(39.5, AssignCommand(oNpc14, ActionMoveToObject(oWP14)));
DelayCommand(40.5, AssignCommand(oNpc15, ActionMoveToObject(oWP15)));
DelayCommand(41.5, AssignCommand(oNpc16, ActionMoveToObject(oWP16)));
DelayCommand(43.5, AssignCommand(oNpc17, ActionMoveToObject(oWP17)));
DelayCommand(45.5, AssignCommand(oNpc18, ActionMoveToObject(oWP18)));
DelayCommand(47.5, AssignCommand(oNpc19, ActionMoveToObject(oWP19)));
DelayCommand(49.5, AssignCommand(oNpc20, ActionMoveToObject(oWP20)));
//,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
DelayCommand(50.0, AssignCommand(oNpc10, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 13.2, 2.0)));
DelayCommand(52.0, AssignCommand(oNpc20, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 15.4, 2.0)));
DelayCommand(56.0, AssignCommand(oPIVI, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHING, 12.1, 3.0)));
DelayCommand(57.0, AssignCommand(oPIVI, PlayVoiceChat(VOICE_CHAT_LAUGH)));
DelayCommand(59.5, AssignCommand(oPC, ActionJumpToObject(oCm2)));
DelayCommand(62.6, AssignCommand(oPC, SetCameraFacing(180.0, 5.0, 180.0, CAMERA_TRANSITION_TYPE_SNAP)));
DelayCommand(63.0, SetCutsceneMode(oPC, FALSE));
DelayCommand(64.5, AssignCommand(oPC, ActionJumpToObject(oCm3)));
DelayCommand(65.5,RemoveEffect(oPC,eCutIn));
}

Дело в том что я хотел показать прибытие армии..
Сделал локу с трамплином завышением..
И задумал что первый пойдёт босс, а потом он засмеётся и с обоих сторон армия наваливает..
Но бос не идёт а мигом телепортируется армия вабще в премешку Пк раньше времени появляется, жуть одним словом помогите народ!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Feb 28 2005, 21:28
Сообщение #789


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



QUOTE (Лито @ Feb 28 2005, 20:24)
Прошу помочь скриптом. Чтобы при воскрешении и райз дэде снимался опыт -50 за уровень(как при респауне). Я понимаю что я задавал этот вопрос, но тогда мне сказали как просто снять с игрока определенное кол-во опыта.

Об этом уже говорили где-то...
В общем, самый постой способ, снимать экспу сразу при смерти героя, но онПлеерДес, а не на онРеспавн.

Ноколл,
если скрипт на триггере, то он будет срабатывать многократно, как только на него наступит какой-нибудь НПС.

Добавь
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;

И вешай локалку (или стирай триггер), чтобы скрипт запускался только один раз.
Глубже копать твои скрипты вряд ли кто-нибудь отважится. :)


Сообщение отредактировал Friedrich - Feb 28 2005, 21:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Feb 28 2005, 21:37
Сообщение #790


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Friedrich Я вообще не о том...Вот например: игрок и умер и ждет пока его товарищ не реснет его. И вот когда этот товарищ скастует на труп райз или воскрешение, должно пройти пенальти
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Feb 28 2005, 21:41
Сообщение #791


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



А какя разница, когда накладывается пеналти, когда игрок умер, или когда его воскресили? Резултат ведь одинаковый - игрок воскресает получив штраф.

Иначе, нужно переписывать скрипты спелов райз дед (и чего там еще).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Feb 28 2005, 21:50
Сообщение #792


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



QUOTE
Иначе, нужно переписывать скрипты спелов райз дед

Вот мне ето как раз и нужно!
Кстати вот ты говоришь про то что лучше снять экспу при смерти игрока, но дело упирается в том что у меня нет этого куска скрипта! не просто -300 хр а 300 за 10 левелов = 3к.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Feb 28 2005, 22:11
Сообщение #793


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



Скрипты спеллов, если кто не знает (сам долго не знал) называются nw_s0_* или x*_s0_*. По их названию, в общем, понятно, что за спел.

Кроме-того, биоварами во втором аддоне реализована некая Spell Hook System, позволяющая изменть действия спелов, не переписывая исходные скрипты. Об этом есть инфа в последих релизах "Лексикона":
Home > Lyceum > Tutorial > Advanced Scripting > Lilac Soul - Spell-Hooking
(Как этим пользоваться не знаю - не копался).

QUOTE
Кстати вот ты говоришь про то что лучше снять экспу при смерти игрока, но дело упирается в том что у меня нет этого куска скрипта! не просто -300 хр а 300 за 10 левелов = 3к.

Ага, говорю.
Не понял про какой кусок какого скрипта идет речь. Ичто значит "300 за 10 левелов = 3к", т.е. 300 ХП за каждый левел.
Neverwinter Script Source
//...
int nPenalty = GetHitDice(oPC)*300;
SetXP(GetXP(oPC)-nPenalty);
//...

Еще посмотри, как это дефолтном в onRespawn сделано (там еще добавлена проверка, чтобы игрок не мог потерять уровень).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
BIK-M@K
сообщение Mar 1 2005, 06:43
Сообщение #794


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



дайте скрипт на уничтожение пк
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Mar 1 2005, 06:47
Сообщение #795


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

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



BIK-M@K
Привет :D
У новичок какойто вопрос непонятный уничтожение 8( 8( ПК как так ну как Хочеш
набери DestoriObject!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
BIK-M@K
сообщение Mar 1 2005, 06:47
Сообщение #796


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



спасибо
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nokoll
сообщение Mar 1 2005, 06:49
Сообщение #797


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

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



У да ты сдесь прям ну сразу знай болтать сдесь нельзя! :nono:
Добавлено в [mergetime]1109649177[/mergetime]
QUOTE
Ноколл,
если скрипт на триггере, то он будет срабатывать многократно, как только на него наступит какой-нибудь НПС.

Добавь
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;

И вешай локалку (или стирай триггер), чтобы скрипт запускался только один раз.
Глубже копать твои скрипты вряд ли кто-нибудь отважится.


Скрипт Мой Ставится на онЭнтер Локацыи!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 11:54
Сообщение #798


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



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

Neverwinter Script Source
object oPC = GetLastSpellCaster();
    object oHoly = GetObjectByTag("cleric_symbol");
    if (!GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))
    {

     return;

    }

Я конечно понимаю, что вот то, что вверху, все неправильно, но хотелось представить все хоть какие то результаты моей деятельности...
Помогите довести проверку до ума :shout:

Сообщение отредактировал Лито - Mar 2 2005, 11:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 12:42
Сообщение #799


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

Класс: Фея
Характер: Chaotic Good
Раса: Элементаль
NWN: Маппинг
Gem of the North



QUOTE (Лито @ Mar 2 2005, 11:54)
Требуется сделать проверку, есть ли предмет oHoly в левой руке игрока. Если предмета в руке нет, то скрипт не выполняется.

Neverwinter Script Source
object oPC = GetLastSpellCaster();
    object oHoly = GetObjectByTag("cleric_symbol");
    if (!GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC))
    {

     return;

    }

Я конечно понимаю, что вот то, что вверху, все неправильно, но хотелось представить все хоть какие то результаты моей деятельности...
Помогите довести проверку до ума :shout:

Ну попробуем.

Neverwinter Script Source
void main()
{
    object oPC = GetLastSpellCaster();
    object oHoly = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);

    if (GetTag(oHoly) != "cleric_symbol") return;

}

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 12:52
Сообщение #800


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Lexey aka Hawk Большое спасибо. Делаю это под вдохновлением системы на Геме. Насколько я помню там для того чтобы кастовать клирикам нужен как раз такой символ.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 30 31 32 33 34 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19th April 2024 - 20:08