Вернуться   Raurin Forums > Raurin 3: The Silver Marches (NWN2 шард) > Скриптинг, маппинг и диалогинг :)

Ответ
 
Опции темы Опции просмотра
Старый 26.09.2007, 14:55   #31
Грок
Новичок
 
Аватар для Грок
 
Регистрация: 13.09.2007
Адрес: Москва
Сообщения: 78
Власть репутации: 611 Грок У него еще все впереди!
По умолчанию

Хе, нашел решение.. и почему нельзя редактировать и удалять свои посты.. Т_т
Грок is offline   Ответить с цитированием
Старый 07.10.2007, 20:20   #32
Necrosis
Зеленый Рауринец
 
Регистрация: 30.07.2007
Адрес: Зентил Кип
Сообщения: 160
Власть репутации: 621 Necrosis У него еще все впереди!
По умолчанию

#57 - тхахахаха
#58 - бу-го-га
Резюме: лол
__________________
Zhentarim
Necrosis is offline   Ответить с цитированием
Старый 08.11.2007, 05:43   #33
Tyz
Рауринец (Good)
 
Аватар для Tyz
 
Регистрация: 09.09.2005
Адрес: Ростов-на-Дону
Сообщения: 106
Власть репутации: 687 Tyz У него еще все впереди!
По умолчанию Как делать торговцев?

Если не трудно поделитесь опытом как в тулсете делать торговцев.
Tyz is offline   Ответить с цитированием
Старый 08.11.2007, 12:11   #34
Oranj
Бывалый Рауринец
 
Аватар для Oranj
 
Регистрация: 02.02.2007
Сообщения: 548
Власть репутации: 658 Oranj У него еще все впереди!
По умолчанию Re: Как делать торговцев?

1. Создаешь НПС
2. Создаешь Store, настраиваешь параметры, добавляешь шмот
3. Создаешь диалог, на ответ игрока ставь Action -> ga_openstore. В качестве тега прописываешь тег созданного Store.
4. Вешаешь на НПСа созданный диалог
Oranj is offline   Ответить с цитированием
Старый 08.11.2007, 12:36   #35
Tyz
Рауринец (Good)
 
Аватар для Tyz
 
Регистрация: 09.09.2005
Адрес: Ростов-на-Дону
Сообщения: 106
Власть репутации: 687 Tyz У него еще все впереди!
По умолчанию Re: Как делать торговцев?

ага спс все получилось
Tyz is offline   Ответить с цитированием
Старый 20.11.2007, 04:10   #36
Elisar Kronvell
Гость
 
Аватар для Elisar Kronvell
 
Регистрация: 11.11.2007
Адрес: Санкт-Петербург
Сообщения: 25
Власть репутации: 0 Elisar Kronvell У него еще все впереди!
Question Вопрос: OnPlayerDying

Когда и как работают скрипты в OnPlayerDying. Что нужно знать и чего бояться? Есть ли примеры по мимо дефолтных?
Вот мой вариант года, долженствующий уменьшать здоровье персонажа до -10, после чего убивать его. Однако он запускается лишь один раз - когда здоровье становится равным или меньшим 0. Где ошибка, если это ошибка. Если скрипт не проверяется каждый раунд, а срабатывает при нанесении урона - как сделать проверку по раундам? Вызывать из этого другой скрипт, следящий за умирающим персонажем?

Код:
void main()
{
    object oPC = GetLastPlayerDying(); //Берем последнего умирающего
    effect eDamage = EffectDamage(1, DAMAGE_TYPE_NEGATIVE, DAMAGE_POWER_NORMAL, TRUE); //1ед. повреждения от негативной энергии в обход разистов
    effect eDeath = EffectDeath(FALSE, FALSE, TRUE); //Смерть в обход резистов
    int iAlignmentGE = GetAlignmentGoodEvil(oPC);
    int iAlignmentLC = GetAlignmentLawChaos(oPC);
    string sDyingString = ""; //Фраза, произносимая персонажем при каждом запуске скрипта
    //Устанавливаем предсмертную фразу из расчета пола и алигнмента персонажа.
    if (GetGender(oPC) == GENDER_MALE)
    {
        if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_LAWFUL)
        {
            sDyingString = "Вот и все... я... ухожу. Прощайте, друзья, прощайте...";
        }
        if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_NEUTRAL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_CHAOTIC)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_LAWFUL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_NEUTRAL)
        {
            sDyingString = "Это конец.";
        }
        if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_CHAOTIC)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_LAWFUL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_NEUTRAL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_CHAOTIC)
        {
            sDyingString = "Аргх! Проклятые твари! *кашель* Ну давайте! Подходите! Я перегрызу вам глотки!";
        }
    }
    if (GetGender(oPC) == GENDER_FEMALE)
    {
        if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_LAWFUL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_NEUTRAL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_GOOD && iAlignmentLC == ALIGNMENT_CHAOTIC)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_LAWFUL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_NEUTRAL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_NEUTRAL && iAlignmentLC == ALIGNMENT_CHAOTIC)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_LAWFUL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_NEUTRAL)
        {
            sDyingString = "";
        }
        if (iAlignmentGE == ALIGNMENT_EVIL && iAlignmentLC == ALIGNMENT_CHAOTIC)
        {
            sDyingString = "";
        }
    }

    AssignCommand(oPC, ClearAllActions()); //Чистим действия
    AssignCommand(oPC, SpeakString(sDyingString)); //Говорим предсмертную фразу
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC); //Наносим умирающему урон
    //Если жизнь опускается до -10 или ниже - окончательно убиваем персонажа
    if (GetHitDice(oPC) <= -10)
    {
    PopUpGUIPanel(oPC,GUI_PANEL_PLAYER_DEATH);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC);
    }
}
__________________
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Elisar Kronvell is offline   Ответить с цитированием
Старый 20.11.2007, 05:53   #37
tox
Guest
 
Сообщения: n/a
По умолчанию Re: Вопрос: OnPlayerDying

xxx { delaycommand(0.5, xxx); }

assigncommand(pc, xxx);

в нвн1 делали так..
  Ответить с цитированием
Старый 20.11.2007, 06:13   #38
Elisar Kronvell
Гость
 
Аватар для Elisar Kronvell
 
Регистрация: 11.11.2007
Адрес: Санкт-Петербург
Сообщения: 25
Власть репутации: 0 Elisar Kronvell У него еще все впереди!
По умолчанию Re: Вопрос: OnPlayerDying

Кхм... я понимаю, что утро, учеба-работа... Можно вечером, но чуть поподробнее?
__________________
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Elisar Kronvell is offline   Ответить с цитированием
Старый 20.11.2007, 14:08   #39
Planetouched
Зеленый Рауринец
 
Регистрация: 05.05.2007
Сообщения: 94
Власть репутации: 626 Planetouched У него еще все впереди!
По умолчанию Re: Вопрос: OnPlayerDying

Ничего ценного ты из такой смерти выжать не сможешь. я делал смерть до -10 потом отказался от этой идеи так, как выбрать мертвого персонажа для использования скилла heal ты все равно не можешь.

OnPlayerDying вызывается только тогда когда здоровье стало < 0. Чтобы начать отсчет по раундам потом используешь Onheartbeat event.
__________________
Эх помните как в наше время было хорошо. И THAH0 был и AC в минус шел.
Planetouched is offline   Ответить с цитированием
Старый 20.11.2007, 14:19   #40
Elisar Kronvell
Гость
 
Аватар для Elisar Kronvell
 
Регистрация: 11.11.2007
Адрес: Санкт-Петербург
Сообщения: 25
Власть репутации: 0 Elisar Kronvell У него еще все впереди!
По умолчанию Re: Вопрос: OnPlayerDying

Ага, ясно, так и предполагал. Спасибо.
По поводу выжать - мне надо просто разобраться в системе, а дальше реализую отключабельную систему выживаемости.
P.S. А старого скрипта, от которого отказался, не осталось? Посмотреть?
__________________
Истина там, во тьме, и во тьме ты иди - мыслящий бродит во тьме.
В себя самого загляни, открой свою дорогу в Ничто.
В Ничто ты войди, во тьму, и пойми:
Пока ты во тьме, не может она быть Ничем - ведь там ты.
Elisar Kronvell is offline   Ответить с цитированием
Ответ


Ваши права в разделе
You may not post new threads
You may not post replies
You may not post attachments
You may edit your posts

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT, время: 21:59.

Powered by vBulletin Version R.I.P., Copyright ©2000-2024, Jelsoft Enterprises Ltd. | Оформление: raurin.ru