MAP01 предидущей версии была лучше, в этой версии побережье хорошо сделано и водопад понравился)
Надеюсь добавиш прокачку lvl персонажа, хотя бы простенькую через декорейт(если не знаеш как могу помочь) и больше итемов, бродить по такой земле не имея цели или только квесты скучно
Глянул последнюю версию. Сразу спрошу - каков правильный порядок подключения файлов из архива, т.к. если просто кинуть архив в зипе, то будут глюки с предметами. Какая версия гоззы требуется? у меня вылетело с ошибкой после встречи с первым разбойником в городке при попытке атаковать.
Сам городок симпатичный, хотя дома на мой взгляд требуют некоторой доработки (или нужно повысить viewheight у героя). Предполагаются ли диалоги с гражданами? Магазин неплох, хотя надо двигаться дальше, чем было в Инквизиторе 2 и делать полноценный магазин с выбором нужного предмета
Еще 3д модельки иногда исчезают из виду, что заметно, особенно когда моделями сделаны скалы (со спрайтами было бы менее заметно). Горожане пассивно реагируют на попытки ограбить их дома - стоят себе и ничего не предпринимают хоть бы стражу звали )
Понравились волны прибоя в начале. А вот секторные бочки (или что там это такое цилиндрическое наставлено) не очень, лучше бочки и т.п. мелкие детали модельками делать.
В целом потенциал есть, главное, его реализовать.
Для блуждающих граждан советую делать специальный стат для разговоров (в ресурсах даггерфола картинка для него есть), чтобы чел поворачивался лицом к гг.
Примерно, так:
Скрытый текст:
BigMemka :
Не много видел магазинов на движке дума, поэтому понять какой ты хочешь не могу.
А ты по 2му и 3му уровням гулял? Пока туда не попасть без кода.
Да, посмотрел немного. Вам следует убрать флаг shootable на траве, т.к. игрок автоматически нацеливается на нее и это мешает, когда кругом бегают злобные собаки, прицел все время сбивается. Еще не понравилось, что стрелы могут застревать в воздухе - реализм реализмом, но такие вещи тоже не стоит делать. В остальном же геометрия порадовала, надеюсь, в ваде будет достаточно места для раздолья, а также разнообразных противников (пока что видел собак, растение, скелетов с мечом, скелетов с луком, харвестеров в пустыне) Оружие № 4 - топор - очень медленное, лук и арбалет эффективнее.
Также не могу привыкнуть, что вы используете везде сайлент телепорты за дверь вместо того, чтобы сделать нормальную открываемую дверь специальным типом полиобъекта (все равно никто не будет смотреть на потолок этой двери, если что).
Вот, например, так:
В одном из MOP-ов X-версии код был, но потом я его удалил. Впрочем, там ничего сложного (у меня там ситуация была хуже, поскольку должно было легко и непринуждённо работать в онлайне).
Принцип построения магазина такой:
1. Делается скрипт, который будет выводить картинку фона магазина и объекты в нём. Объекты тоже просто спрайтики, компактный способ хранения данных по объектам можно глянуть и в нынешнем репозитории мопа, эти функции я не удалял.
2. Замораживается игрок (наглухо)
3. в цикле опрашивается GetPlayerInput и на перемещения влевовправовверхвниз соответственным образом изменяется положение курсора. Сам курсор можно просто картинкой с рамочкой сделать или текст другим цветом выводить.
4. когда будет нажата атака - посмотреть где курсор. Если он на пункте "выход" то убрать картинки и отпустить игрока с миром. Если под курсором предмет то нужно попробовать его дать игроку и снять с него деньги за это.
Если у кого более старые версии есть то там он имеется. Ещё Cybermind делал на ACS интерфейсы, тоже на форуме лежит. В его версии ещё и мышка есть.
Если кому-то интересно, вот мой старый код из какого-то недопиленного мода с выбором классов на месте. Система пока не предусматривает хранения цен, описаний и страниц, но допилить можно без особых усилий. За моменты типа if (MenuItems[cursor]=="Bottle") 9000 раз не бейте, они временно, для тестов
Скрытый текст:
#define NUM_MENU_ITEMS 4
// SHOP MENU
// Data -------------------
int MenuItems[NUM_MENU_ITEMS] =
{
"Bottle",
"Medikit",
"Shotgun",
"BFG9000"
};
int cursor = 0;
int buttons = 0;
while (!(buttons & BT_ATTACK))
{
buttons = GetPlayerInput(0, INPUT_BUTTONS);
if (buttons & BT_BACK)
cursor++;
if (buttons & BT_FORWARD)
cursor--;
if (buttons & BT_ATTACK)
{
if (MenuItems[cursor]=="Bottle") Print(s:"You have bought health bonus!");
if (MenuItems[cursor]=="Medikit") Print(s:"Pills here!");
if (MenuItems[cursor]=="Shotgun") Print(s:"Kill ''em all!");
if (MenuItems[cursor]=="BFG9000") Print(s:"Zdes tozhe chto-nibud dofiga ostroumnoe");
}
if (cursor <0>= NUM_MENU_ITEMS)
cursor = 0;
DrawMenu(cursor);
Delay(3);
}
ClearMenu();
while (CheckInventory("PlayerIsInMenu"))
{
TakeInventory("PlayerIsInMenu", 1); // Take flag.
SetPlayerProperty(0, false, PROP_TOTALLYFROZEN); // Unfreeze.
Delay(1);
}
}
Тут небольшое замечание по коду, но оно особо важно если потом в задронуме попытаетесь запускать. Лучше действовать по такому принципу:
while ( p_cmd != exit_cmd ) {
DrawMenu();
while (!(p_cmd = MakeCMD(GetPlayerInput()))) Wait(1);
ExecuteCMD(p_cmd);
ClearMenu()
}
суть в том, что сначала нужно один раз нарисовать менюшку магазина и ждать поступления команд. А когда поступает команда, которая действительно требует перерисовки менюшки - обновить её. Отправка кучи команд рисования может вызывать довольно жестокие лаги.