RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2425283 views

Уважаемый,СъЕшЬ_СаЛяМи!.
Изучайте документацию чуть внимательней.
http://wiki.qsp.su/help:sound

Можно конечно, и даже нужно.

Aleks Versus Moderator 18.05.2019 12:54 (6 years ago)

У меня одного тема поломалась?

Aleks Versus,
Не только у тебя. Вдруг какие-то старые сообщения полезли из-под лавок.

КЛЯНУСЬ, Я НИЧЕГО В ФОРУМЕ НЕ ТРОГАЛ!!! Все мои эксперименты с сайтом закончились только тем, что я убрал застаревший блок с игрой марта.

Последний из Гаяр Moderator 18.05.2019 14:12 (6 years ago)

Aleks Versus,,
Прошу прощения, это я крайне наглым и бесцеремонным образом вычистил все сходные темы и слил сюда :/

Последний из Гаяр Moderator 18.05.2019 14:14 (6 years ago)

Возможно стоило убрать совсем очевидные вещи, которые описаны в учебнике, но увы они тут

Последний из Гаяр Moderator 18.05.2019 14:16 (6 years ago)

Возможно стоит реорганизавать всё и создать нормальный FAQ на главной страничке

Aleks Versus Moderator 18.05.2019 16:28 (6 years ago)

Последний из Гаяр,
да нет, почистить от оффтопа можно бы. А так тема актуальная всегда. Присутствие в ней вопросов из других тем не помешает.

А я думал что-то поломалось, Нексу написал))

Здравствуйте, друзья! Я пытаюсь создать нелинейное РПГ с немалым миром и интересными квестами, которые чаще всего будут оборачиваться против самого игрока. Например, какой-нибудь простой квест на убийство скелета ВНЕЗАПНО закончится тем, что вы поймаете гангрену, а (развитие в игре на уровне средневековья) вылечить ее - дело, ох, не простое. Это пример, немного примитивный.
Дело в том, что я не очень-то программист, более писатель. И у меня проблема, которую, надеюсь, вы мне поможете разрешить - я не знаю, как сделать адекватную боевую систему, чтобы мне и самому было понятно. Я смотрел, что делали другие, но целиком и полностью мне это не подходило, либо я не понимал, что к чему. У меня уже есть наработки по этому поводу, которые вам выкладываю:

Во-первых, у персонажа есть 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:

А теперь мой к вам вопрос - как реализовать боевую систему, чтобы все это было адекватно? То есть, чтобы враги были не слабаками, но и игрок мог победить?

Ну, рандомный разброс урона, вероятность попадания, вероятность пробоя брони.

Aleks Versus Moderator 19.05.2019 06:30 (6 years ago)

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, Мир тьмы, Седьмое море, ужас Аркхема… По всему этому в сети есть чудесные книги, которые подробно расписывают каждую боевую систему. Рекомендую ознакомиться.

День добрый. Нужно выключить возможность сохраняться где угодно и сделать возможность сохраняться там где мне это нужно. По нажатию на кнопку или автоматически (лучше бы рассмотреть оба варианта).
Ну и сделать загрузку игры по нажатию на кнопку из “меню” тоже было бы крайне не плохо. Встречал такую возможность в паре игр раньше. Подскажите пожалуйста какие команды мне использовать для реализации подобного?

Aleks Versus Moderator 19.05.2019 07:11 (6 years ago)

NOSAVE - если её значение отлично от 0, то сохранение состояния игры пользователем невозможно.

http://wiki.qsp.su/help:modules

Фактически следует выключить возможность сохранения в начале игры и включать только там, где нужно.
Выключаем:

nosave = 1

включаем:

nosave = 0

При nosave = 1 команды savegame и opengame продолжают работать.

Log in or Register to post comments.