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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 31 32 33 34 35 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
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 Большое спасибо. Делаю это под вдохновлением системы на Геме. Насколько я помню там для того чтобы кастовать клирикам нужен как раз такой символ.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 13:14
Сообщение #801


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

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



Сейчас посмотрю как у нас на Геме это было написано.

Neverwinter Script Source
int TestDivineFocus( object oTarget, int nClass )
{
    int bResult = TRUE; // Bard also affected, and some classes too
    if (nClass == CLASS_TYPE_CLERIC )
  {
        // Используем стандартный символ до установки полной поддержки системы Diety
        object oSymbol = GetItemInSlot( INVENTORY_SLOT_LEFTHAND, oTarget );
        bResult = GetTag(oSymbol) == "cleric_symbol";
    }
    else if( nClass == CLASS_TYPE_DRUID )
    {
        // Символ друида может просто лежать в рюкзаке чара
        object oSymbol = GetItemPossessedBy( oTarget, "druid_symbol" );
        bResult = GetIsObjectValid( oSymbol );
    }
    else if( nClass == CLASS_TYPE_PALADIN )
    {
        // Используем стандартный символ до установки полной поддержки системы Diety
        object oSymbol = GetItemInSlot( INVENTORY_SLOT_LEFTHAND, oTarget );
        bResult = GetTag(oSymbol) == "cleric_symbol";
    }
    else if( nClass == CLASS_TYPE_RANGER )
  {
        object oSymbol = GetItemPossessedBy( oTarget, "druid_symbol" );
        bResult = GetIsObjectValid( oSymbol );
    }

    return bResult;
}


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


Level 9
***

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



Жутко ступил :D спасибо Lexey

Сообщение отредактировал Лито - Mar 2 2005, 13:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bloodwheel
сообщение Mar 2 2005, 13:38
Сообщение #803


Level 2
*

Класс: Ниндзя
Характер: Neutral Evil
Раса: Человек



Народ, хелпните, проблема такая:
Ставлю скрип, чтоб нпс после квеста выдал кастомную шмотку - неработает. (CreateItemOnObject)
ставлю в тот же скрипт стандартную шмотку - работает.
ставлю кастомную шмотку, взятую из другого модуля -работает.
ставлю свой кастом - опять не работает.
В чем может быть дело?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 13:41
Сообщение #804


Level 9
***

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



Напиши скрипт. Напомню что в CreateItemOnObject указывается не тэг предмета, а ResRef
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 2 2005, 15:43
Сообщение #805


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

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



QUOTE (bloodwheel @ Mar 2 2005, 16:38)
Ставлю скрип, чтоб нпс после квеста выдал кастомную шмотку - неработает. (CreateItemOnObject)

Во первых, CreateItemOnObject СОЗДАТЬ итем в инвентаре объекта. Ясно? Ты его создаешь. Он должен быть в твоей палитре. Следовательно ...
QUOTE (bloodwheel @ Mar 2 2005, 16:38)
ставлю свой кастом - опять не работает.

Твой кастом в синьку вбит? Или он валяется в чулане? К тому же, покапайся, скриптов на создание шмотки тут тонна уже приводилась.
Neverwinter Script Source
void main()
{   
  object oPC = GetEnteringObject();
            CreateItemOnObject("ResRef", oPC, 1);
            // Создаем предметы. ResRef, у кого,
            // количкство в стеке (например стрел 30)
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Mar 2 2005, 17:58
Сообщение #806


Level 9
***

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



Решил я сделать компонентную магию, подредактировал скриптик файрболла. Все работает отлично, за одним исключением...Когда файрболл кастует ДМ, от него тоже требуют наличие компонента! :D Как сделать так, чтобы от ДМ не требовали этого самого компонента.
Вот собственно скрипт:
Neverwinter Script Source
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }
    object oCaster = OBJECT_SELF;
    if (HasItem(oCaster,"bottle_fire")==FALSE)
    {
    ActionSpeakString("У вас нет необходимых компонентов!", TALKVOLUME_SHOUT);
    return;
    }


// End of Spell Cast Hook


    //Declare major variables

    int nCasterLvl = GetCasterLevel(oCaster);
    int nMetaMagic = GetMetaMagicFeat();
    int nDamage;
    float fDelay;
    effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
    effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
    effect eDam;
    //Get the spell target location as opposed to the spell target.
    location lTarget = GetSpellTargetLocation();
    //Limit Caster level for the purposes of damage
    if (nCasterLvl > 10)
    {
        nCasterLvl = 10;
    }
    //Apply the fireball explosion at the location captured above.
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
    //Declare the spell shape, size and the location.  Capture the first target object in the shape.
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    //Cycle through the targets within the spell shape until an invalid object is captured.
    while (GetIsObjectValid(oTarget))
    {
        if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
        {
            if((GetSpellId() == 341) || GetSpellId() == 58)
            {
                //Fire cast spell at event for the specified target
                SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FIREBALL));
                //Get the distance between the explosion and the target to calculate delay
                fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
                if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
                {
                    //Roll damage for each target
                    nDamage = d6(nCasterLvl);
                    //Resolve metamagic
                    if (nMetaMagic == METAMAGIC_MAXIMIZE)
                    {
                        nDamage = 6 * nCasterLvl;
                    }
                    else if (nMetaMagic == METAMAGIC_EMPOWER)
                    {
                      nDamage = nDamage + nDamage / 2;
                    }
                    //Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
                    nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE);
                    //Set the damage effect
                    eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
                    if(nDamage > 0)
                    {
                        // Apply effects to the currently selected target.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
                        //This visual effect is applied to the target object not the location as above.  This visual effect
                        //represents the flame that erupts on the target not on the ground.
                        DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
                    }
                }
            }
        }
      //Select the next target within the spell shape.
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
    }
}

Наверное весь скрипт целиком не нужен, однако выложил весь на всякий случай.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 18:06
Сообщение #807


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

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



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

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }
    object oCaster = OBJECT_SELF;
    if ((HasItem(oCaster,"bottle_fire") == FALSE) && (GetIsDM(oCaster) == FALSE))
    {
        ActionSpeakString("У вас нет необходимых компонентов!", TALKVOLUME_SHOUT);
        return;
    }


// End of Spell Cast Hook

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


Level 9
***

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



Еще раз спасибо ;)

Я щас заплачу :cray:
Решил сделать такой же компонент для огненного шара замедленного действия. Просто скопировал всю проверку в другой скрипт

Neverwinter Script Source
#include "x2_inc_spellhook"

void main()
{

/*
  Spellcast Hook Code
  Added 2003-06-20 by Georg
  If you want to make changes to all spells,
  check x2_inc_spellhook.nss to find out more

*/


    if (!X2PreSpellCastCode())
    {
    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }
    object oCaster = OBJECT_SELF;
     if((HasItem(oCaster,"bottle_fire") == FALSE) && (GetIsDM(oCaster) == FALSE)) //вот тут выдает ошибку"непонятное условие компилятора"
    {
    ActionSpeakString("У вас нет необходимых компонентов!", TALKVOLUME_SHOUT);
    return;
    }
// End of Spell Cast Hook

    //Declare major variables including Area of Effect Object
    effect eAOE = EffectAreaOfEffect(AOE_PER_DELAY_BLAST_FIREBALL);
    location lTarget = GetSpellTargetLocation();
    int nDuration = GetCasterLevel(OBJECT_SELF) / 2;
    //Make sure the duration is at least one round
    if (nDuration == 0)
    {
        nDuration = 1;
    }
    int nMetaMagic = GetMetaMagicFeat();
    //Check Extend metamagic feat.
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
       nDuration = nDuration *2;//Duration is +100%
    }
    //Create an instance of the AOE Object using the Apply Effect function

    ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(nDuration));
}


Lexey aka Hawk, хотелось бы узнать, если это не секрет, на Геме исправлен каждый спелл? или создана какая то другая система?
На предыдущей странице ты привел кусок скрипта, с использованием системы святых символов для дивайновых кастеров. Можно было бы получить полную систему?

Сообщение отредактировал Лито - Mar 2 2005, 18:58
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lexey aka Hawk
сообщение Mar 2 2005, 20:51
Сообщение #809


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

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



Да главное не в скрипте, а чтобы ты сам понимал как это работает. Если предположить даже, что я дам тебе всю систему Гемовской компонетной магии, то даже с моими подробными интсрукциями на форуме, ты вряд ли сможешь ее установить так, чтобы она корректно работала. У нас переписан ряд стандартных скриптов, использован хак-пак, а в данный момент мы фактически заново все переписываем.
Добавлено в [mergetime]1109786155[/mergetime]
По поводу скрипта. Вставь наверху строчку:
Neverwinter Script Source
#include "nw_i0_plot"


А то у тебя функция HasItem не отрабатывает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
bloodwheel
сообщение Mar 3 2005, 14:30
Сообщение #810


Level 2
*

Класс: Ниндзя
Характер: Neutral Evil
Раса: Человек



Да, так и есть, я туда тэг вписывал вместо RasRef. Нюб ептить :D

Сообщение отредактировал bloodwheel - Mar 3 2005, 14:33
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 11th May 2025 - 15:21