Raurin Forums

Raurin Forums (http://raurin.ru/forum/index.php)
-   Скриптинг, маппинг и диалогинг :) (http://raurin.ru/forum/forumdisplay.php?f=55)
-   -   Общие вопросы. (http://raurin.ru/forum/showthread.php?t=1381)

Грок 26.09.2007 14:55

Хе, нашел решение.. и почему нельзя редактировать и удалять свои посты.. Т_т

Necrosis 07.10.2007 20:20

#57 - тхахахаха :)
#58 - бу-го-га
Резюме: лол

Tyz 08.11.2007 05:43

Как делать торговцев?
 
Если не трудно поделитесь опытом как в тулсете делать торговцев.

Oranj 08.11.2007 12:11

Re: Как делать торговцев?
 
1. Создаешь НПС
2. Создаешь Store, настраиваешь параметры, добавляешь шмот
3. Создаешь диалог, на ответ игрока ставь Action -> ga_openstore. В качестве тега прописываешь тег созданного Store.
4. Вешаешь на НПСа созданный диалог

Tyz 08.11.2007 12:36

Re: Как делать торговцев?
 
ага спс все получилось

Elisar Kronvell 20.11.2007 04:10

Вопрос: 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);
    }
}


tox 20.11.2007 05:53

Re: Вопрос: OnPlayerDying
 
xxx { delaycommand(0.5, xxx); }

assigncommand(pc, xxx);

в нвн1 делали так..

Elisar Kronvell 20.11.2007 06:13

Re: Вопрос: OnPlayerDying
 
Кхм... я понимаю, что утро, учеба-работа... Можно вечером, но чуть поподробнее?

Planetouched 20.11.2007 14:08

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

OnPlayerDying вызывается только тогда когда здоровье стало < 0. Чтобы начать отсчет по раундам потом используешь Onheartbeat event.

Elisar Kronvell 20.11.2007 14:19

Re: Вопрос: OnPlayerDying
 
Ага, ясно, так и предполагал. Спасибо.
По поводу выжать - мне надо просто разобраться в системе, а дальше реализую отключабельную систему выживаемости.
P.S. А старого скрипта, от которого отказался, не осталось? Посмотреть?


Часовой пояс GMT, время: 11:47.

Powered by vBulletin Version R.I.P., Copyright ©2000-2024, Jelsoft Enterprises Ltd.