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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 84 85 86 87 88 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Zirrex
сообщение Apr 4 2006, 00:44
Сообщение #2126


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

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



-fenix-, как ты себе это представляешь? Игра основана на спасбросках и т.п. вещах, и поэтому все действия, которые осуществляются с персонажем, отображаются в логах. Не совсем понимаю, зачем тебе это нужно?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 4 2006, 02:52
Сообщение #2127


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



QUOTE(-fenix- @ Apr 3 2006, 18:22) [snapback]76076[/snapback]

Иными словами - НЕТ! А жаль.
QUOTE
можно временные хиты добавлять еще..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Apr 4 2006, 15:05
Сообщение #2128


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Подмогите со скриптом, чтобы в модуль можно было играть к примеру только мужским полом...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 4 2006, 16:15
Сообщение #2129


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



а поиск на что?

О_о
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Apr 5 2006, 15:09
Сообщение #2130


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Благодарствую...

Но также, знаете, не получилось заставить непися, к примеру подбегать к двери и бежать в другую локацию или просто исчезать, помогитеее...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 5 2006, 17:51
Сообщение #2131


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

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



Слушай, это есть в разделе новичков. Давай ка ты читай что есть. Нечего спрашивать что спрашивали сто раз.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Apr 6 2006, 00:57
Сообщение #2132


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



Привет,
Возникла идея, или лутше назвать "потребность", что бы когда ПС садился то у него с рук снимались перчатки (IMG:style_emoticons/kolobok_light/smile.gif) , с головы шлем, убирался меч и щит. А когда он вставал, ето под красивую анимацию надевалось все обратно.

ПС: Может я и написал бы, но я не сталкивался с тем, как снимать или надевать что-то...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Apr 6 2006, 02:28
Сообщение #2133


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



NSS
// Unequip oItem from whatever slot it is currently in.
void ActionUnequipItem(object oItem)

NSS
// Equip oItem into nInventorySlot.
// - nInventorySlot: INVENTORY_SLOT_*
// * No return value, but if an error occurs the log file will contain
//  "ActionEquipItem failed."
//
// Note:
//      If the creature already has an item equipped in the slot specified, it will be
//      unequipped automatically by the call to ActionEquipItem.
//
//      In order for ActionEquipItem to succeed the creature must be able to equip the
//      item oItem normally. This means that:
//      1) The item is in the creature's inventory.
//      2) The item must already be identified (if magical).
//      3) The creature has the level required to equip the item (if magical and ILR is on).
//      4) The creature possesses the required feats to equip the item (such as weapon proficiencies).
void ActionEquipItem(object oItem, int nInventorySlot)
NSS
// Get the object which is in oCreature's specified inventory slot
// - nInventorySlot: INVENTORY_SLOT_*
// - oCreature
// * Returns OBJECT_INVALID if oCreature is not a valid creature or there is no
//  item in nInventorySlot.
object GetItemInSlot(int nInventorySlot, object oCreature=OBJECT_SELF)


В скрипте, сажающим на стул добавь действия снятия вещей до того, как усаживать персонажа. Снятые вещи запомни в локальных переменных и пусти цикл, проверяющий, допустим, каждые 3 сек. сидит ли еще персонаж на стуле или нет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Apr 7 2006, 00:00
Сообщение #2134


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

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



Проверять через цикл не самая лучшая идея. Гонять циклы для всех сидящих персонажей, причем постоянно, только лишняя нагрузка на процессор. Лучше рядом посадить невидимое существо, которое будет слушать команды игрока или же составить список команд, которые можно будет запускать с быстрой панели. Например, решил он выполнить команду, сесть на стул, нажимаем на определенное действие в быстрой панели, решил встать, нажимаем другое действие. А там и соответствующие действия по раздеванию (IMG:style_emoticons/kolobok_light/smile.gif)

Кстати, интересная идея, надо поэкспериментировать. Есть что-то подобное у скриптов DMFI, но там вроде бы все команды видны в чате.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Apr 7 2006, 02:49
Сообщение #2135


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

Класс: Вор
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]



хертбиты у мобов на АИ работают и нормально..
процессор спалили пока только один (IMG:style_emoticons/kolobok_light/crazy.gif)
ни какая микро проверялка с АИ не сравнится

(IMG:style_emoticons/kolobok_light/offtopic.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lanilor
сообщение Apr 7 2006, 05:26
Сообщение #2136


Level 1


Класс: Волшебник
Характер: Chaotic Neutral
Раса: Полуэльф



Привет,
У PC есть пиво "ss_pivo" (n бутылочек). Как сделать, чтобы в диалоге отдать пиво НПС. Нужно отдать заявленное количество бутылочек. И как определить, сколько бутылочек есть у PC?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Apr 7 2006, 07:28
Сообщение #2137


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

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



С помощью фун-ций:
NSS
// Sets stack size of an item.
// - oItem: item to change
// - nSize: new size of stack.  Will be restricted to be between 1 and the
//  maximum stack size for the item type.  If a value less than 1 is passed it
//  will set the stack to 1.  If a value greater than the max is passed
//  then it will set the stack to the maximum size
void SetItemStackSize(object oItem, int nSize)

NSS
// Returns stack size of an item
// - oItem: item to query
int GetItemStackSize(object oItem)

NSS
// Destroy oObject (irrevocably).
// This will not work on modules and areas.
void DestroyObject(object oDestroy, float fDelay=0.0f)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Apr 7 2006, 12:10
Сообщение #2138


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



QUOTE(Lanilor @ Apr 7 2006, 06:26) [snapback]76679[/snapback]
И как определить, сколько бутылочек есть у PC?
к примеру вот скрипт, показывающий строку в диалоге, если у персонажа игрока есть больше, чем N бутылочек:
NSS
int Match(string s1, string s2)
{
    return (s1 == s2);
}

int GetNumItemsInInventory(object oInventory = OBJECT_SELF, string sTag = "*")
{
    int nNum = 0;
    object oItem = GetFirstItemInInventory(oInventory);
    while (GetIsObjectValid(oItem))
    {
        if (Match(GetTag(oItem), sTag))
        {
            nNum += GetItemStackSize(oItem);
        }

        oItem = GetNextItemInInventory(oInventory);
    }

    return nNum;
}

int StartingConditional()
{
    return (GetNumItemsInInventory(GetPCSpeaker(), "ss_pivo") >= 3);
}
забирающий N бутылочек (тоже в диалоге):
NSS
int Match(string s1, string s2)
{
    return (s1 == s2);
}

int RemoveItemsFromInventory(object oInventory = OBJECT_SELF, string sTag = "*", int nNum = -1)
{
    int nStack;
    object oItem = GetFirstItemInInventory(oInventory);
    while (GetIsObjectValid(oItem) && (nNum != 0))
    {
        if (Match(GetTag(oItem), sTag))
        {
                if (nNum < 0) DestroyObject(oItem);
            else if ((nStack = GetItemStackSize(oItem)) > nNum)
            {
                SetItemStackSize(oItem, nStack - nNum);
                return 0;
            }
            else
            {
                DestroyObject(oItem);
                nNum -= nStack;
            }
        }

        oItem = GetNextItemInInventory(oInventory);
    }

    return nNum;
}

void main()
{
    RemoveItemsFromInventory(GetPCSpeaker(), "ss_pivo", N);
}
только не забудь залепить такую дыру в диалогах NWN: во время разговора можно положить предметы на землю, а при этом скрипт может уже постчитать, что предметы в инвентаре. Лечится легко:
-- Непись: Ну и где ж пиво-то?
---- Игрок: Вот тебе твое пиво, как заказывал, все *N* штук! (провека на наличие предметов)
------ Непись: О-о-о... давай-давай, теперь в кружку лей... (проверка на наличие предметов)
------ Непить: Ну-ну молодец, молодец. А теперь подними с пола и поставь на стол. Я сказал подними и поставь!
---- Игрок: Сейчас принесу...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Apr 7 2006, 22:56
Сообщение #2139


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

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



А можно еще так:

NSS
void DestroyItem(object oOwner, string sComponent, int nNumItems)
{
    int nStackSize;

    object oItem = GetFirstItemInInventory(oOwner);

    while (GetIsObjectValid(oItem) == TRUE)
    {
        if (GetTag(oItem) == sComponent)
        {
            nStackSize = GetItemStackSize(oItem);

            if (nStackSize > nNumItems)
            {
                SetItemStackSize(oItem, nStackSize - nNumItems);
                return;
            }
            else if (nStackSize == nNumItems)
            {
                DestroyObject(oItem, 0.1);
                return;
            }
            else if (nStackSize < nNumItems)
            {
                nNumItems = nNumItems - nStackSize;
                DestroyObject(oItem, 0.1);
            }
        }
        oItem = GetNextItemInInventory(oOwner);
    }
}

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

    string sGhead = "am_it_goblinhead";

    if (IsInInventory(oPC, sGhead))
    {
        int nFound = 0;

        object oItem = GetFirstItemInInventory(oPC);

        while (GetIsObjectValid(oItem) == TRUE)
        {
            if (GetTag(oItem) == sGhead)
            {
                nFound = nFound + GetNumStackedItems(oItem);
            }
            oItem = GetNextItemInInventory(oPC);
        }

        GiveGoldToCreature(oPC, 100 * nFound);
        DestroyItem(oPC, sGhead, nFound);
    }
    else
    {
        SpeakString("Не понял, а где же трофеи? Вы решили меня надуть?");
        ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectKnockdown(), oPC, 15.0f);
    }
}

Взял скрипт из своего модуля. НПС отдаются головы гоблинов. Если их нет, но игрок желает на халяву получить деньги (а проверка на деньги уже была), ставится на второе условие сей мелкий скриптик.

Сообщение отредактировал Zirrex - Apr 8 2006, 02:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 8 2006, 07:45
Сообщение #2140


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

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



А чего в базу не кинуть код? Я вот на днях тоже писал сам, а мог бы не париться... (IMG:style_emoticons/kolobok_light/pardon.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Apr 8 2006, 15:56
Сообщение #2141


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



А база закрыта =)

Lex: открыл
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Apr 8 2006, 16:35
Сообщение #2142


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

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



Я тогда подберу коллекцию разнообразных скриптов, которые будут полезны каждому, кто занимается разработкой модулей. Только вначале их нужно соответствующе оформить (IMG:style_emoticons/kolobok_light/smile.gif)

Lex: от это будет отлично
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lanilor
сообщение Apr 9 2006, 03:02
Сообщение #2143


Level 1


Класс: Волшебник
Характер: Chaotic Neutral
Раса: Полуэльф



2azathoth: сенькс, очень удобный код.
2Zirrex: а зачем в DestroyObject() указан fDelay?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Apr 9 2006, 20:15
Сообщение #2144


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

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



Lanilor, а, это я делал для одного скрипта своего, чтобы вначале выводилось сообщение, а потом удалялась сама вещь. Можешь задержку убрать, она не принципиальна.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Fortesso
сообщение Apr 11 2006, 00:59
Сообщение #2145


Level 1


Класс: Рейнджер
Характер: Lawful Neutral
Раса: Эльф



Уважаемые мастера, очень сомневаюсь, что это возможно, но вопрос всё же задам:
Допустим PC и два хенчмена доходят до финала какой-нить локации, а дальше их, по сценарию, разбрасывает по разным локациям. Появляется какая-нить фея и говорит - "А теперь выбираем сценарий!" (помните FF6?) И после прохождения одного, сразу же переходить к прохождению второго и т.д. Короче - Отдельно за хенчей, без PC, можно играть? И как энто буит выглядеть в скриптах???
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Apr 11 2006, 03:12
Сообщение #2146


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

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



Люди, ни кто не сталкивался с ситуацией, когда нужно снять эффект яда?
Сам-то эффект снимается, но с каждым эффектом яда накладывается еще и эффект понижения статов, для каждого яда понижается свой стат и для каждого кидается свой кубик.
Так вот, как отличить эффект понижающий статы, который был наложен вместе с ядом, от того, который был просто когда-то наложен?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 11 2006, 09:02
Сообщение #2147


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

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



QUOTE(-fenix- @ Apr 11 2006, 06:12) [snapback]77271[/snapback]
Так вот, как отличить эффект понижающий статы, который был наложен вместе с ядом, от того, который был просто когда-то наложен?

Поиск эффекта от имени того, кто его наложил не выхоит?
NSS
void RemoveEffectCreator(object oCreature, object oCreator = OBJECT_SELF)
{
    effect eEffect = GetFirstEffect(oCreature);
    while(GetIsEffectValid(eEffect))
    {
    if (GetEffectCreator(eEffect) == oCreator)
      {
        RemoveEffect(oCreature, eEffect);
      }
        eEffect = GetNextEffect(oCreature);
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Apr 11 2006, 10:24
Сообщение #2148


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

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



QUOTE(Aiwan @ Apr 11 2006, 10:02) [snapback]77290[/snapback]
Поиск эффекта от имени того, кто его наложил не выхоит?

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

Сенькс. (IMG:style_emoticons/kolobok_light/yes3.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 11 2006, 12:29
Сообщение #2149


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

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



Fortesso, я так и не понял, что тебе нужно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Apr 11 2006, 13:14
Сообщение #2150


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



-fenix-, а если просто кинуть спел лечения от яда?
NSS
void main()
{
  object oPC = GetFirstPC();
  AssignCommand(oPC,ActionCastSpellAtObject(SPELL_LESSER_RESTORATION,oPC,METAMAGIC_QUICKEN,TRUE));
}

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

147 страниц V  « < 84 85 86 87 88 > » 
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29th April 2025 - 23:19