Как сделать?
…
Уважаемый,СъЕшЬ_СаЛяМи!.
Изучайте документацию чуть внимательней.
http://wiki.qsp.su/help:sound
Можно конечно, и даже нужно.
У меня одного тема поломалась?
Aleks Versus,
Не только у тебя. Вдруг какие-то старые сообщения полезли из-под лавок.
КЛЯНУСЬ, Я НИЧЕГО В ФОРУМЕ НЕ ТРОГАЛ!!! Все мои эксперименты с сайтом закончились только тем, что я убрал застаревший блок с игрой марта.
Aleks Versus,,
Прошу прощения, это я крайне наглым и бесцеремонным образом вычистил все сходные темы и слил сюда :/
Возможно стоило убрать совсем очевидные вещи, которые описаны в учебнике, но увы они тут
Возможно стоит реорганизавать всё и создать нормальный FAQ на главной страничке
Последний из Гаяр,
да нет, почистить от оффтопа можно бы. А так тема актуальная всегда. Присутствие в ней вопросов из других тем не помешает.
А я думал что-то поломалось, Нексу написал))
Здравствуйте, друзья! Я пытаюсь создать нелинейное РПГ с немалым миром и интересными квестами, которые чаще всего будут оборачиваться против самого игрока. Например, какой-нибудь простой квест на убийство скелета ВНЕЗАПНО закончится тем, что вы поймаете гангрену, а (развитие в игре на уровне средневековья) вылечить ее - дело, ох, не простое. Это пример, немного примитивный.
Дело в том, что я не очень-то программист, более писатель. И у меня проблема, которую, надеюсь, вы мне поможете разрешить - я не знаю, как сделать адекватную боевую систему, чтобы мне и самому было понятно. Я смотрел, что делали другие, но целиком и полностью мне это не подходило, либо я не понимал, что к чему. У меня уже есть наработки по этому поводу, которые вам выкладываю:
Во-первых, у персонажа есть 2 тратящиеся характеристики - здоровье и концентрация. Со здоровьем все понятно, а концентрация - это такой зверь, который нужен, чтобы произносить заклинания. Эти характеристики восстанавливаются во сне или со временем. Пример реализации заклинания:
Spoiler
! ammo - это и есть концентрация
$magica = input('Введите заклинание')
if $magica = 'киин' and intel > 1 and ammo > 1:
hhealth = hhealth + 4
ammo = ammo - 2
*PL 'Вы ощутили прилив сил. Восстановленно 4 пункта здоровья. Ваше здоровье <<hhealth>>.'
elseif $magica = 'ортос киин ровул' and intel > 7 and ammo > 14:
ammo = ammo - 15
hort = 25
'Между вами и врагом расстилается зримая желтая преграда, которая задерживает удар врага'
!... и много-много заклинаний
else
msg 'Заклинание не удалось'
end
Во-вторых, есть характеристики сила, ловкость, скорость, интеллект и другие (это можно поменять). Сила и ловкость, и скорость определяют урон врагу, кроме урона от оружия, а интеллект нужен для того, чтобы использовать заклинание, ну, ограничить игрока. К примеру, если игрок узнает заклинание замедления времени, он не сможет его применить, пока интеллект не достигнет нужного уровня развития. В моем маленьком демонстрационном коде переменная intel - это и есть интеллект.
А теперь мой к вам вопрос - как реализовать боевую систему, чтобы все это было адекватно? То есть, чтобы враги были не слабаками, но и игрок мог победить?
valera_anafema:
А теперь мой к вам вопрос - как реализовать боевую систему, чтобы все это было адекватно? То есть, чтобы враги были не слабаками, но и игрок мог победить?
Ну, рандомный разброс урона, вероятность попадания, вероятность пробоя брони.
valera_anafema,
не совсем ясно, что нужно. Дизайн боевой системы? Как организовать баланс? Какие формулы использовать для вычисления урона? Или что-то ещё?
Если боевая система с кликовым дизайном (т.е., допустим, игрок может выбрать из списка ударов и тыкнуть в один из них), то мне нравится вот такая формула для вычисления наносимого ущерба:
ИТОГОВЫЙ_УЩЕРБ = ЗАЯВЛЕННЫЙ_УЩЕРБ - (ЗАЯВЛЕННЫЙ_УЩЕРБ * ЗАЯВЛЕННАЯ_ЗАЩИТА)/(ЗАЯВЛЕННЫЙ_УЩЕРБ + ЗАЯВЛЕННАЯ_ЗАЩИТА)
, где ЗАЯВЛЕННЫЙ_УЩЕРБ - это суммарно: ущерб от оружия + бонусы от силы, ловкости и проч.; ЗАЯВЛЕННАЯ_ЗАЩИТА - суммарно: защита, которую дают доспехи, + бонусы от физических характеристик противника; ИТОГОВЫЙ_УЩЕРБ - непосредственно сколько отнимается из здоровья противника.
Реализовать это довольно просто, и особо можно не заморачиваться за баланс, корректируя характеристики NPC по ходу написания игры. Эта формула позволяет существам наносить ущерб, даже если защита существенно превышает заявленный ущерб, и наоборот, если заявленный ущерб будет в значительной степени превосходить защиту, защита всё равно будет немного снижать ущерб.
Для примера вот табличка, где подсчитаны, какой силы повреждения будут в тех или иных сочетаниях защиты/ущерба:
Spoiler
| заявленный ущерб | заявленная защита | итоговый ущерб |
|---|---|---|
| 100 | 3900 | 3 |
| 200 | 3800 | 10 |
| 300 | 3700 | 23 |
| 400 | 3600 | 40 |
| 500 | 3500 | 63 |
| 600 | 3400 | 90 |
| 700 | 3300 | 123 |
| 800 | 3200 | 160 |
| 900 | 3100 | 203 |
| 1000 | 3000 | 250 |
| 1100 | 2900 | 303 |
| 1200 | 2800 | 360 |
| 1300 | 2700 | 423 |
| 1400 | 2600 | 490 |
| 1500 | 2500 | 563 |
| 1600 | 2400 | 640 |
| 1700 | 2300 | 723 |
| 1800 | 2200 | 810 |
| 1900 | 2100 | 903 |
| 2000 | 2000 | 1000 |
| 2100 | 1900 | 1103 |
| 2200 | 1800 | 1210 |
| 2300 | 1700 | 1323 |
| 2400 | 1600 | 1440 |
| 2500 | 1500 | 1563 |
| 2600 | 1400 | 1690 |
| 2700 | 1300 | 1823 |
| 2800 | 1200 | 1960 |
| 2900 | 1100 | 2103 |
| 3000 | 1000 | 2250 |
| 3100 | 900 | 2403 |
| 3200 | 800 | 2560 |
| 3300 | 700 | 2723 |
| 3400 | 600 | 2890 |
| 3500 | 500 | 3063 |
| 3600 | 400 | 3240 |
| 3700 | 300 | 3423 |
| 3800 | 200 | 3610 |
| 3900 | 100 | 3803 |
Aleks Versus, ну ты объяснил :) Я вот ничего не поняла. А таблица только ещё больше всё запутала.
Хотя из первого поста действительно не совсем понятно, что нужно конукретно в боевой системе.
Есть несколько прекрасных ролевых боевых систем, которые можно использовать при создании РПГ, чтобы не изобретать велосипед. Навскидку я могу назвать D&D, Мир тьмы, Седьмое море, ужас Аркхема… По всему этому в сети есть чудесные книги, которые подробно расписывают каждую боевую систему. Рекомендую ознакомиться.
День добрый. Нужно выключить возможность сохраняться где угодно и сделать возможность сохраняться там где мне это нужно. По нажатию на кнопку или автоматически (лучше бы рассмотреть оба варианта).
Ну и сделать загрузку игры по нажатию на кнопку из “меню” тоже было бы крайне не плохо. Встречал такую возможность в паре игр раньше. Подскажите пожалуйста какие команды мне использовать для реализации подобного?
NOSAVE - если её значение отлично от 0, то сохранение состояния игры пользователем невозможно.
http://wiki.qsp.su/help:modules
Фактически следует выключить возможность сохранения в начале игры и включать только там, где нужно.
Выключаем:
nosave = 1
включаем:
nosave = 0
При nosave = 1 команды savegame и opengame продолжают работать.