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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 61 62 63 64 65 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Мефистофель
сообщение Jul 1 2005, 04:23
Сообщение #1536


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



Зирекс Спасибо огромное пойду проверять.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мягкий Пушистик
сообщение Jul 1 2005, 06:28
Сообщение #1537


мягкий и пушистый
Иконки Групп

Класс: Обыватель
Характер: True Neutral
Раса: Человек
Фанат WRG!



не хватает там в нескольких местах { и }
(в блоке для нейтралов в первом и втором скрипте)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
GoingPro)
сообщение Jul 1 2005, 15:49
Сообщение #1538


Level 3
*

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



хочу зделать малюсенький сервер...
вопрос такой:
Как мне зделать так что бы на нем нельзя было инспользовать персонажей локалки, а создавать новых и что бы они сохранялись? :unsure:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jul 1 2005, 18:39
Сообщение #1539


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



QUOTE
и что бы они сохранялись? 

Любой созданный персонаж сохраняется в loalvault.
QUOTE
Как мне зделать так что бы на нем нельзя было инспользовать персонажей локалки

Ты боишся, что люди будут заходить прокачанными персонажами? Тогда этот скрипт на on enter начальной локации
Neverwinter Script Source
void main()
{

object oPC = GetEnteringObject();
object oEquip = GetFirstItemInInventory(oPC);
int nGold = GetGold(oPC);
object oCustoms = GetObjectByTag("customs");
location lEntry =GetLocation (GetObjectByTag("ENTRY_POINT"));
int nHasEntered=GetLocalInt(oPC, "entered");
effect eEffect;


f (GetIsPC(oPC) == TRUE && GetIsDM(oPC) == FALSE && GetIsObjectValid (oPC) == TRUE) // далее скрипт идет если персонаж не DM
{


  while(GetIsObjectValid(oEquip))
    {
      DestroyObject(oEquip);
      oEquip = GetNextItemInInventory(oPC);
    }

  DestroyObject(GetItemInSlot(INVENTORY_SLOT_ARMS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_ARROWS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BELT, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BOLTS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_BULLETS, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CHEST, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_HEAD, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_NECK, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CARMOUR, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_B, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_L, oPC));
  DestroyObject(GetItemInSlot(INVENTORY_SLOT_CWEAPON_R, oPC));
//забирает вещи

  SetXP(oPC, 0);


  AssignCommand ( oPC, TakeGoldFromCreature ( nGold, oPC, TRUE)); //забирает золото


}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 1 2005, 23:31
Сообщение #1540


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

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



Агрессинг эм... скрипт конечно хорошо, но на сервере достаточно убрать галку "Local Characters Allowed", тогда все входящие игроки будут создавать персонажей заново. Твой скрипт низводит персонажа до 1-го уровня, удаляет все вещи и золото, но он делает это при каждом входе. Можно сделать проще, с учетом вышеописанной опции:

Neverwinter Script Source
void main()
{
    object oPC = GetEnteringObject();

    if (GetIsDM(oPC)) return;

    if (!GetXP(oPC))
    {
        int StartGold = 0;
        int StripPlayer = TRUE;

        if (StartGold == 0)
        {
            if (GetLevelByClass(CLASS_TYPE_BARBARIAN,oPC))    StartGold = d4(5) * 100;
            else if (GetLevelByClass(CLASS_TYPE_BARD,oPC))    StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_CLERIC,oPC))  StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_DRUID,oPC))    StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_FIGHTER,oPC))  StartGold = d4(6) * 100;
            else if (GetLevelByClass(CLASS_TYPE_MONK,oPC))    StartGold = d4(4) * 100;
            else if (GetLevelByClass(CLASS_TYPE_PALADIN,oPC))  StartGold = d4(5) * 100;
            else if (GetLevelByClass(CLASS_TYPE_RANGER,oPC))  StartGold = d4(5) * 100;
            else if (GetLevelByClass(CLASS_TYPE_ROGUE,oPC))    StartGold = d4(6) * 100;
            else if (GetLevelByClass(CLASS_TYPE_SORCERER,oPC)) StartGold = d4(3) * 100;
            else if (GetLevelByClass(CLASS_TYPE_WIZARD,oPC))  StartGold = d4(3) * 100;
            else                                              StartGold = d4(4) * 100;
        }
        GiveGoldToCreature(oPC, StartGold - GetGold(oPC));

        // Удалить надетые на игроке вещи
        if (StripPlayer)
        {
            int i;

            for (i = 0; i < 15 ; i++)
            {
                object oEquip = GetItemInSlot(i,oPC);

                if (GetIsObjectValid(oEquip)) DestroyObject(oEquip);
            }
        }

        // Удаление вещей из рюкзака персонажа
        object oItem = GetFirstItemInInventory(oPC);

        while (GetIsObjectValid(oItem))
        {
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
        }
        SetXP(oPC, 1);
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 2 2005, 13:23
Сообщение #1541


Level 4
**

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



Здравствуйте, я чодержу небольшой шард в локальной сети, вроде полностью созданый модуль работает безглючно но появилась такая проблема, нет стимула пвп ибо с игроков ничего не падает, как я не старался, скрипт onDeath у меня вроде правильно составлен, но золото с игрока не падает, а только копируется в сумку, откуда отреспавнившийся игрок может забрать в 2 раза больше золота и такие же вещи. Почему у мертвого игрока нельзя забрать веши и как с этим бороться?
И вот еще вопрос: как заставить нипися слушать и как узнать что именно сказал игрок(янашел как узнать сказал ли он то, что задуманно, сказал ли он чтото вообще, но как узнать что именно игрок сказал понять не могу)?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jul 2 2005, 14:38
Сообщение #1542


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

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



QUOTE (Batkom @ Jul 2 2005, 14:23)
Почему у мертвого игрока нельзя забрать веши и как с этим бороться?

надо сделать, чтобы падали.
Самый простой вариант: на смерть игрока написать скрипт создания мешка, куда кидать деньги и вещи (какая часть денег и вещей - решать вам. Тут были варианты рандомно одетую вещь, рандомно вещь инвентаря...)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 2 2005, 16:21
Сообщение #1543


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

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



Batkom, скажи мне одну вещь, ты HCR используешь? Если да, то ответ прост, на скрипте умирания "dying" есть обработка создания сумки и копирования туда денег. Бывают моменты, когда скрипт на эвентах "dying и death" срабатывает одновременно, поэтому у тебя и получается дублирование денег. Есть такой вариант:

Neverwinter Script Source
object DropBag(location lDiedHere, object oPC)
{
    string sID = GetName(oPC) + GetPCPublicCDKey(oPC);
    location lLoc = GetLocation(oPC);

    vector vLootBag = GetPositionFromLocation(lLoc);

    float fFacing = GetFacing(oPC) + (Random(2) ? 90.0 : -90.0);

    vLootBag.x += cos(fFacing) * 0.45f;
    vLootBag.y += sin(fFacing) * 0.45f;

    location lDropBag = Location(GetArea(oPC), vLootBag, fFacing + 180.0);

    object oDropBag = CreateObject(OBJECT_TYPE_PLACEABLE, "DyingCorpse", lDropBag, FALSE, "DropBag" + sID);
    return oDropBag;
}

void StripThings(object oPC, object oDrop, object oEquip)
{
    if (GetIsObjectValid(oEquip))
    {
        CopyItem(oEquip, oDrop);
        DestroyObject(oEquip);
    }
}


void CheckBag(object oDropBag)
{
    object oItem = GetFirstItemInInventory(oDropBag);

    if (!GetIsObjectValid(oItem))
    {
        DelayCommand(2.0, DestroyObject(oDropBag));
    }
}

void main()
{
    object oPC = GetLastPlayerDied();
    object oMod = GetModule();

    if (GetTag(GetArea(oPC)) == "fugue_plane") return;

    object oHenchman = GetHenchman(oPC);

    if (GetIsObjectValid(oHenchman))
    {
        RemoveHenchman(oPC, oHenchman);
    }

    string sName = GetName(oPC);
    string sCDK = GetPCPublicCDKey(oPC);
    string sID = sName + sCDK;

    if (GetIsObjectValid(oPC))
    {
        location lDiedHere = GetLocation(oPC);
        object oDropBag = GetLocalObject(oMod, "DropBag" + sID);

        if (!GetIsObjectValid(oDropBag))
        {
            oDropBag = DropBag(lDiedHere, oPC);
        }

        int iGold = GetGold(oPC);

        if (iGold > 0)
        {
            object oBag = CreateItemOnObject("bagofgold", oDropBag);
            SetLocalInt(oBag, "Gold", iGold);
            SetLocalInt(oDropBag, "Gold", iGold);
            AssignCommand(oDropBag, TakeGoldFromCreature(iGold, oPC, TRUE));
        }

        float fProcent = 50.0;

        float fRoll = IntToFloat(d20());
        float fChance = (fRoll * fProcent) / 100.0;
        float fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_ARMS, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_BELT, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_BOOTS, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_CLOAK, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_HEAD, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_NECK, oPC));
        }

        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPC));
        }


        fRoll = IntToFloat(d20());
        fChance = (fRoll * fProcent) / 100.0;
        fCheck = IntToFloat(d20());

        if (fChance >= fCheck)
        {
            StripThings(oPC, oDropBag, GetItemInSlot(INVENTORY_SLOT_CHEST, oPC));
        }
        CheckBag(oDropBag);

        object oLimbo = GetObjectByTag("wp_enter_fugue");
        DelayCommand(5.0, AssignCommand(oPC, ActionJumpToObject(oLimbo)));
    }
}

Это лишь малая часть, чтобы описать тут весь процесс смерти, страницы не хватит. Если тебе нужна более серьезная обработка смерти, могу скинуть по почте скрипты. В данном случае я убрал создание трупа, с помощью которого можно воскресить, описав лишь создание мешка с деньгами, и выпадение случайным образом вещей.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 2 2005, 21:49
Сообщение #1544


Level 4
**

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



да, я знаю, при смерти игрока создается сумка, в которой создается золото и вешь, который у игрока должны изыматься
hcr не юзаю

Сообщение отредактировал Batkom - Jul 2 2005, 21:50
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Мефистофель
сообщение Jul 3 2005, 00:50
Сообщение #1545


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

Класс: Страж Тьмы
Характер: Lawful Good
Раса: Баатезу



ОГРОМНАЯ Посьба, дорогие форумчане помогите мне пожалуйста, очень нужен скрипт. :swoon:
если ПК с Хорактером Злой, то при смерти он отправляется в ад, если добрый то в рай. :this:
надеюсь на вашу помощь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 3 2005, 03:59
Сообщение #1546


Level 4
**

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



можно включить в скрипт onDeath вот это:
Neverwinter Script Source
object oPC = GetLastPlayerDied();
if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
{
ActionCastSpellAtObject(SPELL_RESURRECTION, oPC);
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("heven"))));
}

if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
{
ActionCastSpellAtObject(SPELL_RESURRECTION, oPC);
AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("hell"))));
}



В раю должен стоять флажок или невидимый обьект в тегом heven а в аду с тегом hell

можно также включить это в скрипт респавна , только тогда будет
Neverwinter Script Source
object oPC = GetLastRespawnButtonPresser();


Сообщение отредактировал Batkom - Jul 3 2005, 04:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 3 2005, 12:39
Сообщение #1547


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

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



Batkom, подобный скрипт:

Neverwinter Script Source
ActionCastSpellAtObject(SPELL_RESURRECTION, oPC);

не оживит игрока, потому что ты на него читаешь воскрешение, но не возвращаешь жизнь.

Писать нужно так, чтобы точно воскресить и перенести:

Neverwinter Script Source
void Resurrect(object oPlayer, object oTransfer)
{
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oPlayer);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer);
    AssignCommand(oPlayer, ActionJumpToObject(oTransfer));
}

void main()
{
    object oPC = GetLastPlayerDied();

    int iAligment = GetAlignmentGoodEvil(oPC);

    if (iAligment == ALIGNMENT_GOOD)
    {
        DelayCommand(2.0, Resurrect(oPC, GetObjectByTag("heven")));
    }
    else if (iAligment == ALIGNMENT_NEUTRAL)
    {
        DelayCommand(2.0, Resurrect(oPC, GetObjectByTag("heven")));
    }
    else
    {
        DelayCommand(2.0, Resurrect(oPC, GetObjectByTag("hell")));
    }
}


По поводу твоего скрипта, где создается сумка для вещей, ты смог разобраться?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 3 2005, 20:16
Сообщение #1548


Level 4
**

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



вот схематичный скрипт в ondeath
Neverwinter Script Source
object oDrop = CreateObject(OBJECT_TYPE_PLACEABLE, "тег  пласбл бекпека", GetLocation(oPC));
    int PGold = GetGold(oPC);
    TakeGoldFromCreature(PGold, oPC, TRUE);
    CreateItemOnObject("nw_it_gold001", oDrop, PGold);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
GoingPro)
сообщение Jul 3 2005, 21:15
Сообщение #1549


Level 3
*

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



А можно мне полный скрипт на смерть на почту выслать? плиззз
goingpro@ukr.net
что бы и труп оставался для рэса и сумка создавалась и все вещи с рюкзака выпадали кроме одетых, на одетые процент выпадания и все золото что бы выпадало, ну и на фугу естественно попадать плизззз
Очень прошу, очень нужно.... :sorry:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Агрессинг
сообщение Jul 4 2005, 00:35
Сообщение #1550


Level 5
**

Класс: Убийца
Характер: True Neutral
Раса: Чудовище



Мефистофель
Я тебе рассказывал ведь, что нужно делать проверки на характер, а потом джампать игрока к вейпоинту лагеря. Тут то же самое, в свойствах модуля на onplayerdeath ставь такой же скрипт, как и в начале с выбором лаеря, только замени теги вейпоинтов лагерей, на теги вейпоинтов рая и ада и PC обозначь как GetFirstPC();Zirrex
Я с шардами не знаком, так что...


LEX: тока не GetFirstPC() (это получится чисто сингловый скрипт. Да и не зря эти функции сделали.), а GetLastPlayerDied() или GetLastPlayerDying(). Смотре где стоит скрипт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 4 2005, 00:59
Сообщение #1551


Level 4
**

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



чтобы проверить весь список игроков можно сделать так:

Neverwinter Script Source
void main()
{
object oPC = GetFirstPC();
while (GetIsObjectValid(oPC) == TRUE)
{
/*

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

*/

oPC = GetNextPC();
}
}


Этот код хорошо вставлять в скрипт OnHeartbreath ибо он будет выполняться каждый ход, я так например реализовывал эффекты от выпивки, скрипты божеств(если рандом один из ста ляжет бог игрока может реснуть его, прибавить силы или сделать что нибудь другое полезное, эффекты различаются в отличие от выбраного божества), субрассы(например вампиры, которым днем если они не находятся в пещере или другом темном месте занижаются характеристики и наносится урон)
Сначала я думал будут лаги от кучи скриптов выполняемых каждый ход, но потомкак выяснилось все замечательно работает.


Вот еще вопрос, допустим у меня стоит нипись, которому можно дать денег на сохранность, игрок пишет сумму в чате, у него забирается голд и записывается в базу данных с помощью SetCampaignInt привязанок имени чара и сидикеям.
Проблема в том, что я не могу узнать что же такое написал игрок...просто не знаю как...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
GoingPro)
сообщение Jul 4 2005, 19:10
Сообщение #1552


Level 3
*

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



Помогите пожалуйсто разобраться в диологах.
Я хотел зделать так что бы НПС поговорив с игроком, дает ему задание, а после следующих кликов на НПС он говорит мол "иди выполни задание потом поговорим"...Ты идешь к следующему НПС и он начинает с тобой говорить только после того как ты поговрил с тем что дал задание, а иначе говорит например "отстань я занят", потом ты возвращаешься обратно к первому после выполнения задания и он тебя благодарит и дает вознаграждение, как это зделать? помогите пожалуйста.
Я делал через проверку на шмотку, но это очень примитивно когда НПС все время дает вещь....
Плиз помогите :this:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jul 4 2005, 19:55
Сообщение #1553


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

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



А зачем через проверку, на шмотку? :yes: Ты делай на проверку через локальные переменные.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jul 4 2005, 20:06
Сообщение #1554


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

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



GoingPro), прочитай монуал Айвана в файлах, составишь представление.
А на перввое время делай квесты через визорд - там все просто, разберешься.
В русской версии Волшебницы -> мастер сюжета.

Сообщение отредактировал -fenix- - Jul 4 2005, 20:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 4 2005, 22:28
Сообщение #1555


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

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



GoingPro), скрипт смерти с трупом, сумочкой с вещами и деньгами, посмотри в модуле HCR. Конечно, в нем скрипт написан очень бездарно, но хоть какое-то представление о создании подобной смерти ты получишь.

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

И еще, крайне советую анализировать существующие скрипты. Они могут здорово помочь в написании своих скриптов. Язык не сложный, к тому же созданы довольно понятные функции. Знай, создавай свои миры.

Batkom, чем меньше на Хертбите скриптов, тем лучше. Когда нет лагов с одним игроком, могут быть проблемы с большим количеством игроков. Поэтому скрипты, которые срабатывают в определенной момент, например при смерти, должны находиться только там.

Так ты заставь НПС слушать. Он услышит написанную цифру и преобразует ее в слова. А вообще банки на словах не самая лучшая вещь. Посмотри на Ваулте разные варианты банков, может быть один из них да приглянется.

Сообщение отредактировал Zirrex - Jul 4 2005, 22:31
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 4 2005, 23:33
Сообщение #1556


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

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



QUOTE (Zirrex @ Jul 5 2005, 01:28)
Хотя в одиночной игре они не удаляются, а переходят в завершенный вариант, т.е. переключаются на те числа, которые уже не смогут дать первоначальный вариант диалога.

Neverwinter Script Source
void DeleteLocalInt(object oObject, string sVarName)

Все удаляется. И вообще. Обычно проверка на 0 (ноль) есть понятие того, что локалки нет. Можно локалку удалить так как внизу.
Neverwinter Script Source
SetLocalInt(OBJECT_SELF, "MESSAGE", FALSE);
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 5 2005, 01:15
Сообщение #1557


Level 4
**

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



У меня он лайн мод, в принципе пока не лагает, хотя игроков не очень много, гдето около 20-25 одновременно

я функцию нужную найти не могу и систему выслушивания немного недопонимаю

если установка слушающего нипися пишется как SetListening(OBJECT_SELF, TRUE);
то как же узнать что же такое он наслушал? ну я понимаю типа string sFarse = а что дальше понятия не имею, я лексикон листал, чтот не понял ибо мои познания в английском невелики
из гетлистена я нашел GetListenPatternNumber(), но я так и не понял как это работает


а слушанье может понадобитьсяне только для банков, но допустим для реализации налогов на деревни(глава гильдии, если ему подчиняется деревня может установить налог, который собирается каждый игровой месяц) или для более эффективной торговли(игрок отдает ниписю вещь, устанавливает на нее цену а потом приходит и проверяет, купил ли ее кто другой из игроков)

Сообщение отредактировал Batkom - Jul 5 2005, 01:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jul 5 2005, 02:07
Сообщение #1558


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Batkom
поползай по форуму, пользуй поиск - много интересного узнаешь и большинство вопросов отпадут сами собой... ;)

пример "слушания" - http://www.wrg.ru/forums/index.php?showtop...st=0&#entry6707
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Jul 5 2005, 22:20
Сообщение #1559


Level 4
**

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



сенк пойду делать
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 5 2005, 22:56
Сообщение #1560


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

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



Aiwan, я несколько не это подразумевал, что они не удаляются. Дело в том, что если их удалять, то в момент диалога может выполниться снова уже один раз прозвучавший диалог, который проверяется у этой переменной на ноль. Лучше уж эту переменную приравнять 2, и проверить на 2 вторую ветку диалога, чем создавать еще одну переменную, при проверке которой не будет выполняться первая ветвь диалога.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 61 62 63 64 65 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



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