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

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

15 страниц V   1 2 3 > » 

Zirrex
Отправлено: Sep 30 2010, 14:49


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Цитата(StasMokos @ Sep 30 2010, 08:04) *
Здравствуйте.
Мы с другом создаем модуль, но не слишком в этом разбираемся, поэтому потребовалась консультация специалистов.
Будем счастливы, если вы уделите нам минутку и ответите на наши глупые вопросы.

1. У нас с другом абсолютно идентичные игры. У него все CEP-овские настройки отлично работают, а у меня все объекты белого цвета. С чем это может быть связано и как с этим бороться?
2. Требуется добавить 5 хэнчмэнов. Делаем все по вашей инструкции. Получается их только 2, а остальные не присоединяются, а просто заменяют предыдущих.
3. Нужно сделать так, чтобы после разговора алтарь выдавал предмет. Пользуемся стандартным CreateItemOnObject или ActionGiveItem. Ничего не получается.
4. Можно ли добавить свои портреты не в стандартный хак, а в CEP-овский? Мы опять же делали по инструкции, но ничего не вышло.

1. Связано это может быть со старой видеокартой, которая не умеет правильно работать с высокополигональными текстурами.
3. Добавлю к вышеописанному. Чтобы не путать тэг и резреф при использовании данной функции, рекомендуется тэг с резрефом делать идентичными. Причем, желательно иметь определенный шаблон составления тэгов.
4. Убедись, что портреты нужного типа указаны в portraits.2da правильно. Там из главных всего три параметра: резреф (BaseResRef), пол (Sex), категория (Race).
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #137133 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Sep 29 2010, 17:18


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Мм... ожидания всегда томительны, особенно, когда не знаешь, чего именно можно дождаться. Лучше уж не ждать, а играть там, где можно, и потом зайти на огонек, дабы узреть появившейся на свет проект.
  Форум: Шарды рунета · Просмотр сообщения: #137113 · Ответов: 617 · Просмотров: 138,687

Важно! Dragon Age
Zirrex
Отправлено: Sep 8 2008, 18:52


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Пока что игра радует своими красками и масштабами территорий. Надеюсь, она сможет заменить старичка НВН, который устарел движком, но не устарел морально, потому что пока есть фантазия, в этой игре можно сделать многое. То что в редакторе нельзя будет делать локации, я не удивлен. Если посмотреть НВН2, то в нем, чтобы сделать хорошую локацию, приходилось работать над ней не несколько часов, а несколько дней. В этой игре локации стали гораздо сложнее. Мало вероятно, что будут готовые тайлы для всего. Если разрешать делать новые локации, то их редактор напомнит чем-то НВН2 редактор, только, надеюсь, все же не настолько неудобный и тормозящий.
  Форум: Dragon Age · Просмотр сообщения: #121132 · Ответов: 293 · Просмотров: 75,190

Zirrex
Отправлено: Aug 12 2008, 20:55


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Hedeen, я могу позавидовать твоему рвению создать такой мир. Пробуй, но я тебе уже сказал выше, что это вначале кажется, что все можно сделать, а потом наступаешь на одни грабли, на другие, и вдруг понимаешь, что вот это лишнее, то лишнее, и вообще идея оказалась непосильной ношей. Хотя, если ты уверен в том, что вам удастся это реализовать, то пробуйте. Но, поверь мне, вдвоем, за такие проекты не берутся. Срок в 1,5-2 месяца, это очень мало. На подобные проекты уходят годы (срок реализации зависит от численности команды, и ее желания данный проект довести до финала), если все прорабатывать досконально. Сделать быстро сырой проект, который окажется бесполезной поделкой, можно быстро, только удовлетворения от этого явно не будет.

Диалоги важны, только в первую очередь важна сама основа. Т.е., что можно в этом мире, а что нельзя, кто его населяет, а кто там вообще никогда не бывает. Документ, если его полностью проработать, может занять не одну сотню страниц. Причем, его нужно делать как в художественном исполнении (для ознакомления), так и в техническом (для создания модуля), чтобы точно знать, с чего начать, что делать сразу, а что потом.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120889 · Ответов: 3355 · Просмотров: 281,298

Zirrex
Отправлено: Aug 12 2008, 20:46


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Ogneslav, опять же, нужны проверки. Достаточно одной переменной, которая, если равна 1, то посылать все скрипты нафиг, и, конечно же, скидывать перед превращением персонажа с лошади (IMG:style_emoticons/kolobok_light/smile.gif)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120888 · Ответов: 82 · Просмотров: 47,029

Zirrex
Отправлено: Aug 12 2008, 20:44


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


У меня есть стимул всегда, одна загвоздка, очень уж много дел по шарду. Если буду разрываться, боюсь, нервный срыв будет (IMG:style_emoticons/kolobok_light/smile.gif) А так бы помог. Если это не так срочно, то можно скинуть материал на почту, а я постепенно подготовлю несколько статей. И, если уж будешь скидывать, хорошо бы знать правила структуирования (IMG:style_emoticons/kolobok_light/smile.gif)
  Форум: Техническая поддержка · Просмотр сообщения: #120887 · Ответов: 6 · Просмотров: 7,851

Zirrex
Отправлено: Aug 12 2008, 09:48


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Насколько удобна форма добавления статей? Конечно, можно текст оформить и в Word, но иногда нужно что-то выделять по тексту, и соответственно, это становится довольно трудоемкой задачей, когда подобного инструментария (те же bb коды) нет под рукой.
  Форум: Техническая поддержка · Просмотр сообщения: #120875 · Ответов: 6 · Просмотров: 7,851

Zirrex
Отправлено: Aug 12 2008, 09:45


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Hedeen, в первую очередь, чтобы браться за такие огромные миры, нужно составить диздок, а уж потом начинать что-то мастерить, иначе ты застрянешь в самом начале. Естественно, для реализации подобных идей необходима большая команда. Вдвоем, и тем более в одиночку, непосильная задача. Ты просто закрой глаза, и представь, сколько нужно всего реализовать, чтобы это хоть примерно напоминало мир Ника Перумова. Потом, не забывай, что в его книгах участвует не один мир, а несколько. Хотя, ты хочешь описать только Хъервард, но и все равно, мир не такой уж и маленький. К тому же, ты какой период его хочешь реализовывать? До войны, или после войны, или же во время нашествия армии Неназываемого?
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120874 · Ответов: 3355 · Просмотров: 281,298

Важно! Ссылки
Zirrex
Отправлено: Aug 12 2008, 09:40


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


посмотри этот хак и этот.

Чтобы быстро найти тот или иной хак, достаточно в поиск ввести нужное слово. На Ваулте, на который я тебе дал ссылки, очень много интересных ресурсов.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120873 · Ответов: 118 · Просмотров: 100,195

Zirrex
Отправлено: Aug 12 2008, 09:34


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Lamonde, не надо завязывать "Заражение : Ликантропия" на предмет, который выдается персонажу в инвентарь. Достаточно забить под завязку весь инвентарь, как сей "Лунный камень" упадет на землю рядом с персонажем (старые баги игры). Лучше сделать какой-нибудь стартовый предмет, который всегда будет с персонажем, и который нельзя по игре выкинуть из инвентаря, и на него писать в виде переменной статус персонажа. Т.е., если он(она) заразился Ликантропией, то прописать соответствующую переменную на предмет.

Цитата
Тогда надо, как-то править все полиморфные возможности классов (друид, сорс/виз, рейнджер, шифтер и т.д.).

Чтобы этого избежать, нужно во всех полиморф скриптах запретить использовать заклинание превращения в ту или иную тварь, если персонаж имеет облик волка (проверка по id облика).
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120871 · Ответов: 82 · Просмотров: 47,029

Важно! Ссылки
Zirrex
Отправлено: Aug 12 2008, 09:18


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


А зачем перевод НВН? Если уж так нужен перевод, берем перевод версии 1.68, берем диалог версии 1.69 и сравниваем последние несколько сотен строк. На большее они и не изменились. Добавляем эти строки к переводу для версии 1.69 и получаем нормальный переведенный диалог для версии 1.69.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120869 · Ответов: 118 · Просмотров: 100,195

Zirrex
Отправлено: Aug 12 2008, 09:16


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Hedeen, в версии 1.64 их никогда и не было, и даже в версии 1.68. Хотя, если вытащить лошадей из версии 1.69, то их можно внедрить даже в простой НВН (IMG:style_emoticons/kolobok_light/smile.gif)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120868 · Ответов: 3355 · Просмотров: 281,298

Zirrex
Отправлено: Aug 6 2008, 17:53


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


shadowdweller, я в свое время делал различные эффекты, которые нельзя было бы снять простым действием, и вот что получилось. Можешь отсюда использовать скрипт танца:
Neverwinter Script
// Персонаж танцует
void ChatDance(object oPC, int n, float fTime);

void main()
{
    object oPC = GetPCSpeaker();
    object oTarget = GetItemActivatedTarget();
    int nDialogLine = GetLocalInt(oPC, "DIALOGSTMLINE");
    int nAnimation;
    float fTime = 999999.0;

    SetCommandable(TRUE, oTarget);
    AssignCommand(oTarget, ClearAllActions());

    SetLocalInt(oTarget, "DIALOGSTMLINE", nDialogLine);

    switch (nDialogLine)
    {
        case 1: nAnimation = ANIMATION_LOOPING_SIT_CROSS;  break; // Сесть
        case 2: nAnimation = ANIMATION_LOOPING_MEDITATE;    break; // Медитация
        case 3: nAnimation = ANIMATION_LOOPING_WORSHIP;    break; // Молитва
        case 4: nAnimation = ANIMATION_LOOPING_DEAD_BACK;  break; // Упасть назад
        case 5: nAnimation = ANIMATION_LOOPING_DEAD_FRONT;  break; // Упасть вперед
        case 6: nAnimation = ANIMATION_LOOPING_SPASM;      break; // Спазм
        case 7: ChatDance(oTarget, 1, fTime);              break; // Танец
    }
    DeleteLocalInt(oPC, "DIALOGSTMLINE");
    DelayCommand(0.2, SetCommandable(FALSE, oTarget)); // убери эту строчку, если нужно, чтобы эффект был снимаемым

    if (nDialogLine < 7)
    {
        DelayCommand(0.1, AssignCommand(oTarget, ActionPlayAnimation(nAnimation, 1.0, fTime)));
    }
    else if (nDialogLine == 8) // Парализация
    {
        effect eDur = EffectVisualEffect(VFX_DUR_PARALYZED);
        effect eLink = EffectLinkEffects(eDur, EffectCutsceneParalyze());
        DelayCommand(0.1, AssignCommand(oTarget, ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(eLink), oTarget)));
    }
    else if (nDialogLine == 9) // Ошеломление
    {
        effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DOMINATE
D);
        effect eLink = EffectLinkEffects(eMind, EffectStunned());
        DelayCommand(0.1, AssignCommand(oTarget, ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(eLink), oTarget)));
    }
    else if (nDialogLine == 10) // Окаменение
    {
        DelayCommand(0.1, AssignCommand(oTarget, ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(EffectPetrify()), oTarget)));
    }
    DelayCommand(fTime, SetCommandable(TRUE, oTarget)); // убери эту строчку, если нужно, чтобы эффект был снимаемым
}


void ChatDance(object oPC, int n, float fTime)
{
    int nDialogLine = GetLocalInt(oPC, "DIALOGSTMLINE");

    if (IntToFloat(n) < fTime && nDialogLine == 7)
    {
        object oRightHand = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
        object oLeftHand =  GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);

        AssignCommand(oPC, ActionUnequipItem(oRightHand));
        AssignCommand(oPC, ActionUnequipItem(oLeftHand));

        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY2,1.0));
        AssignCommand(oPC, ActionDoCommand(PlayVoiceChat(VOICE_CHAT_LAUGH,oPC
)));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHIN
G, 2.0, 2.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY1,1.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY3,2.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 3.0, 1.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFU
L,1.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY2,1.0));
        AssignCommand(oPC, ActionDoCommand(PlayVoiceChat(VOICE_CHAT_LAUGH,oPC
)));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHIN
G, 2.0, 2.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY1,1.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY3,2.0));
        AssignCommand(oPC, ActionDoCommand(PlayVoiceChat(VOICE_CHAT_LAUGH,oPC
)));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 3.0, 1.0));
        AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY2,1.0));

        AssignCommand(oPC, ActionDoCommand(ActionEquipItem(oLeftHand,INVENTOR
Y_SLOT_LEFTHAND)));
        AssignCommand(oPC, ActionDoCommand(ActionEquipItem(oRightHand,INVENTO
RY_SLOT_RIGHTHAND)));
        n++;
        DelayCommand(20.0, ChatDance(oPC, n, fTime));
    }
}

Чтобы скрипт заработал, необходимо вначале на использующего диалог, предмет и т.п. наложить переменную:
Neverwinter Script
void main()
{
    SetLocalInt(GetPCSpeaker(), "DIALOGSTMLINE", 1);
}

Так как у меня эффектов 10, то я использовал 10 мелких скриптов. Можно сделать иначе, но я не стал возиться, чтобы укоротить количество скриптов.
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #120800 · Ответов: 336 · Просмотров: 117,746

Zirrex
Отправлено: Aug 6 2008, 17:46


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


priest, если уж скрипт висит на НПС, то какой смысл запрашивать его тэг таким способом?
Neverwinter Script
object oNpc = GetObjectByTag("npc1");

Достаточно сделать так:
Neverwinter Script
object oNpc = OBJECT_SELF;

Попробуй использовать такой скрипт:
Neverwinter Script
void main()
{
// AI скрипт
...
// скрипт посадки НПС на стул
    object oChair = GetObjectByTag("chair1");
    float fDistance = GetDistanceToObject(oChair);

    AssignCommand(oPC, ClearAllActions(TRUE));

    if (fDistance > 0.0)
        AssignCommand(oPC, ActionMoveToObject(oChair, FALSE, fDistance));
    DelayCommand(fDistance, AssignCommand(oPC, ActionSit(oChair)));
}

Только есть одна мелкая деталь. НПС не сидят снова на стул, если с ним поговорить. Лучше подобный скрипт вешать на хартбит существа, и делать проверку с помощью переменной или проверки действия НПС, сидит ли НПС или нет.
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #120799 · Ответов: 829 · Просмотров: 172,853

Zirrex
Отправлено: Jul 29 2008, 09:53


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


shadowdweller, а причем тут одиночная игра? Там еще проще. Можно всегда сохранить статус игры. Потом, именно в одиночной игре подобные скрипты вешаются на события модуля, а не локации, чтобы, как ты описала выше, не было подобных эксцессов.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120749 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Jul 29 2008, 09:10


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


shadowdweller, а это еще почему? Такая система работает уже несколько лет, и ничего с бедного игрока не сдирали. Переменная стирается рестартом, а игрок входит на шард всегда через стартовую локацию, поэтому твоя правка бесполезна. Достаточно двух строк:

Neverwinter Script
void main()
{
...
    if (GetXP(oPC) == FALSE)
    {
        SetXP(oPC, TRUE);
    }
}

Даже если игрок и не покинет эту локацию сразу, а перезайдет на ней, то он останется ровно с тем, что ему дали.

Если уж говорить о полной надежности, то персонажу игрока нужно выдавать вещь, на которую сохранять стартовую переменную и потом ее проверять вместе со значением опыта. Одно условие может быть FALSE, оба - сомневаюсь.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120747 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Jul 28 2008, 22:57


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


priest, в смысле стоял? Если точка одна, то он на ней станет так, куда указывает стрелка. А если НПС ходит по точкам, то на каждой новой точке он будет поворачиваться в том направлении, куда она смотрит. Попробуй разместить точки так, чтобы перемещение по ним не выглядело слишком резко. Можно также попробовать увеличить паузу между перемещениями от точки к точке. Для этого нужно добавить задержку в функцию ходьбы. Находится она, если ничего не изменилось в файле nw_c2_default9
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #120743 · Ответов: 829 · Просмотров: 172,853

Zirrex
Отправлено: Jul 28 2008, 22:50


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Артём, поправил твой скрипт. Проверяй. Только не забудь его повесить на событие входа в локацию. Сделай для стартовой локации отдельный скрипт.

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

    if (GetIsPC(oPC) == FALSEreturn;
    if (oArea == OBJECT_INVALID)    return;

    if (GetXP(oPC) == FALSE)
    {
        // Удаление вещей с персонажа
        int s;
        object oSlot;

        for (s = 0; s < 18; s++)
        {
            oSlot = GetItemInSlot(s, oPC);
            if (GetIsObjectValid(oSlot)) DestroyObject(oSlot);
        }

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

        if (oItem != OBJECT_INVALID)
        {
            while (GetIsObjectValid(oItem))
            {
                DestroyObject(oItem);
                oItem = GetNextItemInInventory(oPC);
            }
        }
        // выдачи вещи
        object oClother = CreateItemOnObject("NW_CLOTH027", oPC, 1);
        // установка флага для всех вещей в рюкзаке "Определенные"
        object oItemCr = GetFirstItemInInventory(oPC);

        while(GetIsObjectValid(oItemCr))
        {
            SetIdentified(oItemCr, TRUE);
            oItemCr = GetNextItemInInventory(oPC);
        }
        // не проще сразу выдавать определенные вещи? Лишний цикл

        SetXP(oPC, TRUE);
        // на персонажа одевается выданная вещь
        DelayCommand(0.1, AssignCommand(oPC, ActionEquipItem(oClother, INVENTORY_SLOT_CHEST)));
        // сохранение персонажа
        DelayCommand(2.0, ExportSingleCharacter(oPC));
    }
}

Переменная не нужна. Дело все том, что если эта система предназначена для шарда, то после рестарта у твоего персонажа снова заберут вещи, выдадут заново вещь, определят ее и дадут персонажу 15 опыта, затерев то значение, которое будет. Простая проверка на 0. Если опыт равен 0, то выполнить условие, если нет, то пропустить. Потом нужно следить, чтобы опыт никогда не был 0.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120742 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Jul 28 2008, 09:10


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Артём, эта функция создает вещи не по тэгу, а по резрефу вещи. Поэтому по стандарту во всех вещах и объектах Биовари тэг = резрефу, чтобы не было путаницы. Чтобы твоя вещь создалась, сделай тэг и резреф одинаковыми. Например: тэг = ait_item_armor, резреф = ait_item_armor (резреф ограничен 16 символами). И не делай такие тэги, иначе быстро запутаешься, что у тебя за вещь, если будешь их просматривать по резрефам.

Так ты не указал, какую именно вещь нужно одеть. Потом, необходима мелкая задержка между созданием и одеванием вещи, потому что функция "CreateItemOnObject" более медленная, чем функция "ActionEquipItem" или "ActionEquipMostEffectiveArmor". Да, вот еще что. Вещи не одеваются на эвенте входа. Они хорошо одеваются на эвенте локации. Сам уже не раз наступал на эти грабли. Попробуй свой скрипт повесить на эвент локации входа. Вот как я одеваю вещи на нового персонажа:

Neverwinter Script
void ClientGiveClothers(object oPC, float fDelay)
{
    string sClass, sItem;
    object oClother;

    // Выдача одежды игроку
    switch (GetClassByPosition(1, oPC))
    {
        case CLASS_TYPE_BARBARIAN:  sClass = "barbarian"break;
        case CLASS_TYPE_FIGHTER:    sClass = "fighter";    break;
        case CLASS_TYPE_MONK:      sClass = "monk";        break;
        case CLASS_TYPE_PALADIN:    sClass = "paladin";    break;
        case CLASS_TYPE_RANGER:    sClass = "ranger";      break;
        case CLASS_TYPE_ROGUE:      sClass = "rogue";      break;
        case CLASS_TYPE_BARD:      sClass = "bard";        break;
        case CLASS_TYPE_CLERIC:    sClass = "cleric";      break;
        case CLASS_TYPE_DRUID:      sClass = "druid";      break;
        case CLASS_TYPE_SORCERER:  sClass = "sorcerer";    break;
        case CLASS_TYPE_WIZARD:    sClass = "wizard";      break;
    }

    if (GetGender(oPC) == GENDER_FEMALE)    sItem = "ac_" + sClass + "_f";
    else                                    sItem = "ac_" + sClass + "_m";

    if (GetItemPossessedBy(oPC, sItem) == OBJECT_INVALID)  oClother = CreateItemOnObject(sItem, oPC);
    if (oClother == OBJECT_INVALID) oClother = GetItemPossessedBy(oPC, sItem);
    DelayCommand(fDelay, AssignCommand(oPC, ActionEquipItem(oClother, INVENTORY_SLOT_CHEST)));
}

Задержка fDelay=0.1 секунда.

Функция вызывается из общего тела скрипта в конце твоего условия:
Neverwinter Script
object oPC = GetEnteringObject();
...
ClientGiveClothers(oPC, 0.1);
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120735 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Jul 28 2008, 09:02


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


priest, а тэг НПС может быть абсолютно любым. В твоем случае рекомендуется его обозначить так: c_tiefling_01 (01 для того, если ты решишь делать еще одного Тифлинга, которому уже назначишь номер 02). Кстати, чтобы не было путаницы в тэгах, рекомендуется давать монстрам и НПС разные префиксы в тэге. Т.е., если у тебя НПС мирный, то обозначать его так: npc_tiefling_01, а если нет, то: bst_tiefling_01. Вместо tiefling можно вписывать имя НПС, тогда их будет проще отличать среди массы тэгов. Это удобно, когда нужно создать 100 и более существ. Я их еще привязывал к локации, добавляя в тэг существа сокращенное название тэга локации.

Что касается твоего первого вопроса, то значение PvP влияет лишь на то, сможешь ты атаковать дружественные существа или не сможешь. Иконка атаки будет доступна всегда. Чтобы ее убрать, посмотри оригинальный модуль компании игры. Я с НВН2 работал мало, поэтому не знаю точно, как это сделать.
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #120734 · Ответов: 829 · Просмотров: 172,853

Zirrex
Отправлено: Jul 27 2008, 22:54


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Если АИ скрипты у НПС работают, то он(она) должен(на) сам(а) по ним ходить. Так же у точек должны быть разные номера. Т.е., если НПС имеет имя Test, то будет так:

WP_Test_01
WP_Test_02
WP_Test_03

где номера означают точки, куда НПС пойдет дальше.

Триггеры же тут вообще не причем.

Griffon, так он и пишет
Цитата
Далее "ПКМ по NPC -> Create waypoint".
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #120729 · Ответов: 829 · Просмотров: 172,853

Zirrex
Отправлено: Jul 27 2008, 18:00


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Для разработки шарда Амен требуются разработчики, которые умеют работать в команде и хорошо разбираются во всех аспектах игры. Необходимы рисовальщики карт, скриптеры, квестеры, составители историй и диалогов, создатели монстрятника, предметов, а также в помощь ДМ Астреи необходимы ДМ квестеры, которые имеют опыт ДМ-ава.

Прежде чем влиться в команду, необходимо на деле доказать, что вы умеете хорошо работать с редактором игры и с ДМ клиентом (требование для ДМ квестеров), создавать простенькие локации, скриптовать (не обязательно, но приветствуется), писать диалоги, создавать различные объекты (монстров, вещи, размещаемые объекты и т.п.), придумывать интересные названия вещам и другое.

Так как Амен покинули два хороших разработчика, то дальнейшее расширение и развитие шарда остается под вопросом. Оно будет продолжаться, но, к сожалению, очень медленно, потому что моих сил явно не хватит добавлять новые системы, а также править и обновлять существующие системы шарда.
  Форум: Главный Зал · Просмотр сообщения: #120725 · Ответов: 301 · Просмотров: 111,739

Zirrex
Отправлено: Jun 29 2008, 22:11


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


gennady, скрипт, который ты привел выше, будет тормозить, и к тому же не стоит вкладывать в цикл такие вещи:
Neverwinter Script
object oPlaceNew = CreateObject(OBJECT_TYPE_PLACEABLE, sResRef, Loc, FALSE, "NEW_"+sTag);

без хотя бы маленькой задержки. Функция CreateObject довольно медленная, и точно также, как и DestroyObject, срабатывает не сразу, поэтому может привести к тормозу. Если бы так создавались живые объекты (НПС), то скрипт завершился бы ошибкой "Слишком много инструкций".

Да, переменная nNth у тебя равна FALSE, хотя, если посмотреть саму функцию, то она по умолчанию равна 1 (сомневаюсь, что цикл сработает правильно при первом лупе).

Потом, а зачем в теле цикла ты при каждом новом лупе определяешь переменные? Все это должно описываться перед циклом в самом начале кода.

Lirulin, под флагами подразумеваются "переменные". Вешаются они на тот объект, с которым производится операция.

Скрипт, который привел Ilerien выше, включает все нужные тебе объекты. Чтобы скрипт изменил им статус с "Use" на "Not Use", необходимо у каждого объекта сделать одинаковый тэг, в котором в самом конце изменить номер, начиная от 01 и заканчивая номером последнего объекта. Скрипт вешается на событие OnUsed каждогообъекта.

Ilerien,
Цитата
Хы, <nss> не признаёт слово continue
оно довольно редко используется в скриптах. А вообще, недочет (IMG:style_emoticons/kolobok_light/smile.gif) Кстати, скриптик прикольный. Я такими вещами часто пользуюсь, когда нужно составить из мелких символов, раскиданных по объектам нужный тэг. Коротко и сердито, и главное, нужен всегда всего лишь один скрипт (IMG:style_emoticons/kolobok_light/smile.gif)

Xfans, а почему глюк? Плащ как бы закрывает крылья. Торчащие крылья через плащ, очень странное явление. То что они торчат через броню, еще страннее (IMG:style_emoticons/kolobok_light/smile.gif)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120459 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Jun 28 2008, 00:00


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Lirulin, на тех зеркалах, если не ошибаюсь, случайным образом накладывались различные эффекты. Чтобы зеркало считалось уже использованным, на него можно повесить "флаг" (переменную), которая не позволит сработать висящему на событии объекта OnUsed скрипту. Если объекты сделаны по маске (pl_mirror_01, pl_mirror_02, pl_mirror_03, pl_mirror_04 ...), то все остальные объекты можно сделать неиспользуемыми с помощью цикла, который прогонит данные объекты через себя и поставит на каждый флажок, запрещающий запускаться скрипту.

shadowdweller, только наоборот:

Neverwinter Script
GetTag(GetItemInSlot(INVENTORY_SLOT_NECK, GetFirstPC()))
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #120444 · Ответов: 5106 · Просмотров: 349,921

Zirrex
Отправлено: Apr 4 2008, 10:12


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

Группа: Master
Сообщений: 449
Регистрация: 13.09.2004
Из: г. Москва
Пользователь №: 245


Цитата
Причина - однозначна, нехватка вычислительных ресурсов

Я не знаю, как серверному модулю может не хватать данных ресурсов, если пиковая загрузка процессора не превышает 15%?

Цитата
Ну а если хост тянет, то и время не встанет.

Как раз таких проблем нету. Хост мощный. Из-за корявости самой игры (скорей всего из-за аддонов), даже слишком мощный сервер мало помогает. Не забывайте, сколько этой игре лет (а она умудряется тормозить даже сейчас). Без корректировки времени, описанной выше, думаю, подобное будет происходить на практически любом модуле, который насчитывает 150 и более локаций. Потом, я сие проверял на совершенно пустом модуле с одной локацией. Тормозов по времени не было совершенно (что не удивительно). Но стоило внедрить в модуль локации, которые были в нем изначально, так началось отставание времени. Замечу, что проверялось это без скриптов. Потом, игра не очень любит, когда делаются огромного размера локации. При построении локации лучше всего придерживаться размеров 16х16, и не более. То что Аврора позволяет сделать локации 32х32, еще не значит, что их нужно делать такого размера. Я проэксперементировал с такой локацией. Да, она грузится, но очень уж долго. У людей со слабыми компьютерами может даже подвесить игру.

Цитата
Не на серваке все отрабатывает на ура. Часы работают, как надо.

В том то и дело, что именно не на сервере часы идут, но не останавливаются, хотя происходит постоянное запаздывание модульного хартбита.
  Форум: Шарды рунета · Просмотр сообщения: #119411 · Ответов: 24 · Просмотров: 19,138

15 страниц V   1 2 3 > » 

Есть новые сообщения  Открытая тема (есть новые ответы)
Нет новых сообщений  Открытая тема (нет новых ответов)
Горячая тема (есть новые сообщения)  Горячая тема (есть новые ответы)
Горячая тема (нет новых сообщений)  Горячая тема (нет новых ответов)
Опрос (есть новые голоса)  Опрос (есть новые голоса)
Опрос (нет новых голосов)  Опрос (нет новых голосов)
Тема закрыта  Закрытая тема
Тема перемещена  Тема перемещена
 

Текстовая версия Сейчас: 10th December 2019 - 02:40