Форум » » The D&D Game » Ответить

The D&D Game

Byte: Элвис прислал игру: http://qsp.su/files/files/TheD_DGame__0.2_.rar Из каталога она недоступна - игра очень сырая и недоделанная. Как только будет более или менее закончено - добавлю в каталог. Обсуждение здесь.

Ответов - 39, стр: 1 2 All

Ajenta: Ну ну... Byte, ты сам то что об этом думаешь?

Byte: Пока что страшновато :) Для начала бы всё это отформатировать, каким-то образом причесать и отключить ненужные окошки из кода (SHOWOBJS 0 ?)

Mioirel: А мне нравится. Наверное, потому что это вообще первая парсерная игра по d&d на моей памяти .) Обнаруженные баги: “Вы поправили сумку на плече” сообщение появилось до того как я начал приключение. После отбрасывание броска с меньшим результатом можно бесконечно нажимать “Бросить 3d6”. Ошибка? Возможность ставить любое значение стата. Недоработка? Не записываются отрицательные модификаторы статов. С мудростью в 7 у меня был +0. Желательно добавить цвет волос, глаз, вес, рост, при генерации персонажа, чтобы они генерировались случайно или по выбору. Впрочем, это необязательно. Команда “эк” не распознается с коротким мечом и двуручным топором. Броскок на попадание равный 20 автоматически должен считаться попаданием. Равный 1 – промаху. Моему CG персонажу сказали после убийства трактирщика, что мировоззрение пошатнулось. После выпитого пива ловкость не восстанавливается.


Ajenta: Как из кладовки вылезти?!

Элвис: чтобы выйти из кладовой: "ид трак"

Ajenta: ага, вышла, спасиб.

Byte: а что означает "ид трак"? с виду похоже на заклинание :)

Ajenta: "идти трактир", я полагаю

Элвис: Mioirel пишет: “Вы поправили сумку на плече” сообщение появилось до того как я начал приключение. сообщение появляется рэндомайзно, это частный случай, надо исправить Mioirel пишет: После отбрасывание броска с меньшим результатом можно бесконечно нажимать “Бросить 3d6”. Ошибка? Возможность ставить любое значение стата. Недоработка? это я знаю, оставил на потом, кто захочет - и так залезет и впишет себе любые статы Mioirel пишет: Не записываются отрицательные модификаторы статов. С мудростью в 7 у меня был +0. забыл, честно говоря, для Силы сделал - для теста, для остальных статов забыл Mioirel пишет: Команда “эк” не распознается с коротким мечом и двуручным топором. "эк двур топ" и "эк кор меч"? я сто раз пробовал, работает сначала писал "вз кор меч", чтобы он попал в инвентарь? Mioirel пишет: Броскок на попадание равный 20 автоматически должен считаться попаданием. Равный 1 – промаху. криты ещё не делал, это не будет забыто! Mioirel пишет: Моему CG персонажу сказали после убийства трактирщика, что мировоззрение пошатнулось. ну он же добрый, зачем доброму персонажу убивать бедного дядьку? даже если хаотичный, всё равно это не по-мировоззрению, тем более в таких вопросах мнение ДМа и есть правило)) Mioirel пишет: После выпитого пива ловкость не восстанавливается. команду делал одной из первых, для теста, это пока нерабочая команда

Mioirel: Да, сокращения подобраны интересно. Где-то две буквы, где-то три. Не очень интуитивно. Легче написать все слово целиком, чем пытаться найти работающее сокращение, не обращаясь к файлу помощи. У меня такой флуд из сообщений “Вы размяли шею”, можно подумать, что персонаж ее уже свернул. Стоит сделать подольше задержку между этими сообщениями.

Элвис: Byte пишет: а что означает "ид трак"? с виду похоже на заклинание :) в рид ми и предисловии написан список команд, что для чего вводить с примерами

Элвис: Mioirel пишет: Да, сокращения подобраны интересно. Где-то две буквы, где-то три. Не очень интуитивно. Легче написать все слово целиком, чем пытаться найти работающее сокращение, не обращаясь к файлу помощи. одни сокращения типа "чар", "инв" понятны как раз интуитивно для опытных игроков, а для неопытных будет всё равно (кстати, команда "ин" тоже работает"), а вместо "идт" или "взя" мне кажется удобнее писать "ид" и "вз" все команды имеют альтернативный полный вариант, если сомневаешься - можно написать целиком "взять" или "идти" и т.п.

Mioirel: "эк двур топ"? А я как дурак писал по десять раз "эк двуручный топор" .) С этим стоит разобраться в первую очередь. Парсер должен понимать как "эк топ", так и "эк топор".

Ajenta: Mioirel пишет: У меня такой флуд из сообщений “Вы размяли шею”, что можно подумать что персонаж ее уже свернул. +1

Элвис: Mioirel пишет: "эк двур топ"? А я как дурак писал по десять раз "эк двуручный топор" .) С этим стоит разобраться в первую очередь. Парсер должен понимать как "эк топ", так и "эк топор". я так стараюсь, возможно, не везде продумал обычны вот такие условия в коде: if $usrtxt='экип двуручный топор' or $usrtxt='эк двур топ' or $usrtxt='экип двур топ' or $usrtxt='эк дву топ' или if $usrtxt='идти улица' or $usrtxt='идти улиц' or $usrtxt='ид улица' or $usrtxt='ид улиц' or $usrtxt='ид ул' or $usrtxt='идти ул' значит, добавлю больше вариантов, т.к. какая-то одна жёсткая система команд, что ни говори, не удовлетворит ВСЕХ пользователей

Mioirel: Для облегчения кода, что-нибудь вроде: if STRCOMP($inp,'эк*')=-1 and STRCOMP($inp,'*топ*')=-1: *pl 'Вы взяли в руки топор.'

Элвис: Mioirel пишет: Для облегчения кода, что-нибудь вроде: if STRCOMP($inp,'эк')=-1 and STRCOMP($inp,'топ')=-1: *pl 'Вы взяли в руки топор.' ну я по-простецки писал собственно, спасибо за замечания, их-то я и ждал! т.к. по ходу дела исправлять проще, чем если бы выложил готовый вариант

Ajenta: Элвис, в куспе есть нормальный парс строки по шаблону - лучше его использовать. Гемороя меньше будет с сокращениями - потому как как бы игрок не сократил всё равно в нужное место попадёт.

Mioirel: Элвис, там кое-чего не хватало в примере. Обновил.

Byte: Если сравнивать по шаблону, тогда лучше [pre2]if strcomp($inp,'эк.* топ.*'):'Вы взяли в руки топор.'[/pre2]

Элвис: Mioirel я так понимаю, если игрок напишет "экипироваться топором" и "эксплуатировать утопленника", то результат будет один и тот же (с топором)? а если писать просто топ без звёздочек, то смысл в шаблоне... но всё равно код сокращает, попробую использовать, спасибо

Byte: Элвис пишет: "эксплуатировать утопленника" Не совсем. Вот "эксплуатировать топаз" - да. То есть, при "эк.* топ.*" второе слово должно начинаться с "топ". Если "эк.* .*топ.*" - тогда "эксплуатировать утопленника" тоже сработает.

Элвис: Byte в примере Mioirel так и было - *топ* ну не знаю, это конечно удобнее, меньше кода, но мне спокойнее делать с юзертхт, когда точно знаешь, какие команды у тебя в игре есть... за команду спасибо, не заметил и ещё наверное много чего делаю через не ругайте сильно на художественную ценность также не претендую, на тексты сильно не смотрите

Byte: Элвис, обрати внимание, что "*" здесь пишется с точкой - ".*" Точка означает "любой символ", символ умножения - "любое число раз".

Byte: Элвис пишет: мне спокойнее делать с юзертхт ну также можно написать [pre2]if strcomp($usrtxt,'эк.* топ.*'):'Вы взяли в руки топор.'[/pre2] либо я не понял о чём речь.

Элвис: ну с тем же топазом этот пример условия тогда будет работать неправильно это решается if $usrtxt='эк топаз':pl'Вы взяли в руку топаз' и if $usrtxt='эк топ' or $usrtxt='эк топор':pl'Вы взяли в руку топор' конечно, топаз останется без сокращения, придётся писать целиком, но зато не перепутается

Byte: Чтобы всё отрабатывалось правильно, нужно писать полноценный парсер :)

Элвис: Byte пишет: Чтобы всё отрабатывалось правильно, нужно писать полноценный парсер :) конструктивно =) кстати, там ещё с рыбой на базаре есть косяк... в общем, пожелания о командах доработаю

Ntropy: Думаю для начала можно и попроще чем полноценный парсер. Мой вариант отсортировать слова по алфавиту и проверить для каждого слова сколько букв гарантируют его уникальность при сравнении и подготовить список сокращений который использовать в игре, тогда не важно будет до скольки символов слово сократили. а*таковать взл*омать взя*ть вс*тать г*оворить з*ажечь ид*ти ин*вентарь к*весты об*ыскать ос*мотреться от*дохнуть п*оложить се*сть см*отреть сн*ять т*ушить уб*рать уд*арить ч*арлист экипирова*ться экипировк*а Где звёздочкой ограничены значащие символы.

Элвис: решал сделать со "стркомп", спасибо за подсказку сделал появляющимся/исчезающим окно действий (на время диалогов появляется) но вот ещё что думаю... может и диалоги сделать с командами? как было в Визардри 8 и Морровинде (больее древних примеров не знаю, хотя они точно есть) то есть, например, трактирщик говорит "привет, о чём поговорим?" и игрок вводит сам, пользуясь головой, а не набором действий, слова так, вместо "А что это за работа?" будет команда "раб*", а вместо фразы "расскажи, что со мной было" будет команда "я" это приведёт к разнообразию диалогов, но осложнит их, заставит придумывать, что бы такое ввести... что думаете?

Mioirel: Такие диалоги использовались в первых играх серии Ultima. Постоянно приходилось записывать каждое подозрительное слово и перебирать их на чуть ли не каждом нпс – это сильно утомляло. Позднее Ultima перешла на меню из выбора стандартных слов: имя, работа (нпс говорит, чем занимается), купить/продать (если нпс торговец), также были дополнительные ветки разговора. Систему с набором можно использовать, если присутствует тот самый заданный набор слов. Слова не относящиеся к стандарту должны выделятся в тексте и записываться в дневник. Плюс намеки с кем они могут пригодиться. Вариант два. Разговор через меню с пунктом “спросить о…”. Опять же. Слова необходимые для прохождения должны в обязательном порядке выделятся в тексте и попадать в дневник. Эта система может как прибавить ощущения свободы, так и испортить игру. Зависит от подхода.

Ajenta: Моё резюме такое - сие детище ещё допинывать и допинывать.

Элвис: За резюме спасибо,а то я думал,игра уже готова,буду дорабатывать Но больше помогли бы конкретные замечания или советы по улучшению)

ASBer: Byte пишет: Чтобы всё отрабатывалось правильно, нужно писать полноценный парсер :) Byte, а нет желания прикрутить к командной строке tom.dll?

Byte: В смысле, как отдельный интерпретатор?

ASBer: Как внешний парсер. Интерпретатор у вас свой есть. Правда чтобы парсер заработал в него нужно будет предварительно залить некоторый скрипт на языке ТОМа. Когда надо пропарсить строку qsp передает ее тому. Том прокручиват свой скрипт и выдает строку-результат в удобном для анализа формате ("1", "2", "3" например) или строку с ошибкой. Программа на qsp получив результат шпарит дальше или выводит ошибку парсинга и запрашивает повторный ввод.

Byte: Не, в таком варианте пока что нет :)

ASBer: Ок, других вариантов я не вижу Как отдельный интерпретатор вам это тем более не интересно...

Ajenta: Элвис пишет: За резюме спасибо,а то я думал,игра уже готова,буду дорабатывать Но больше помогли бы конкретные замечания или советы по улучшению) Всё слишком запущено, чтобы конкретно высказываться. А потом умные люди уже высказались, так что думаю, мои конкретные претензии пока погодят.



полная версия страницы