|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.10.2012, 21:11 | #1 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
Параметр "Опыт" в игре
Здравствуйте Уважаемые!
Есть опыт у игрока, и есть заготовка чисел наперёд! [50,90,180 ... и.т.д.] За определенный бой с противником дают случайный опыт. Так вот дохожу до числа пример 50 дается (+1) стат к силе! а у меня получается если я провожу еще один бой то еще раз (+1) к силе! А мне нужно что бы только раз давалось до 90 набранных очков!!! Надеюсь кто-то понял... Или посоветуйте по своему на счет создания в игре опыта!
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни Последний раз редактировалось Serg-Grin; 16.10.2012 в 21:15. |
16.10.2012, 21:16 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
16.10.2012, 21:34 | #3 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
Пепел Феникса, Извините но я изучаю только delphi, вообщем то немного с кода разобрал .. хотелось бы перевести в delphi!
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни |
16.10.2012, 22:15 | #4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Serg-Grin, начни с основы. У тебя должен быть блок записей pakced record и как минимум 3 записи, отвечающие за опыт:
Код:
Задача: составить уравнение, в котором участвует переменная уровня персонажа. Подсказка: в одной из них будет (ULevel + 1). Это несложно, ...напрягай извилины
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
17.10.2012, 07:01 | #5 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
При такой организации нужна разбивка на уровни. Набрал опыта, если уровень маленький повышаем его и даём +1 к силе.
|
17.10.2012, 14:28 | #6 | |
CAE Engineer
Пользователь
Регистрация: 10.03.2011
Сообщений: 75
|
Цитата:
Я бы это организовал так. У вас есть текущий параметр силы, например StrResult. Варианты прибавления силы могут быть совершенно различны. Если речь идет об элементах рпг, то сила может добавляться от одежды, оружия, артефактов, от принадлежности к расе, классу. Это может быть какой-то бонус или магия. Поэтому я бы создал функцию для расчета параметра силы со всеми входными параметрами. Чтобы не усложнять для вас ограничимся только уровнем. Пусть у вас будет какое-то базовое значение силы StrBasic. LvlResult - текущий уровень StrResult:=StrBasic+LvlResult; Если у вас дается только на каком-то одном уровне или через уровень, то можете, для более удобного восприятия создать пременную, которая будет учитывать этот бонус к силе. Назовем ее StrLvlBonus и тогда StrResult:=StrBasic+StrLvlBonus; Исходя из моего опыта составлять какой либо параметр из отдельных бонусов гораздо удобнее, особенно когда у вас этих бонусов в проекте очень много. Так же будет удобно их отделять, менять или убирать. А ошибка у вас по всей видимости из-за того, что в какой-то момент, при каком-то условии вы начинаете накапливать переменную StrResult (то есть ваш параметр силы). У вас наверняка в коде есть что-то вроде этого: StrResult:=StrResult+1;. Так вот чтобы не возникало таких ошибок, рекомендую никогда не накапливать такие переменные. А делать их составными. |
|
17.10.2012, 15:08 | #7 |
Дивиджей
Пользователь
Регистрация: 05.01.2009
Сообщений: 84
|
EridorBlade, спасибо Вам за такую информацию, с Вашими всеми ответами я понял, что не ожидал на сколько это просто!!! ...Спасибо Всем!)
Впишите в google:
DVJ Serg-Grin И вы услышите мои песни |
17.10.2012, 17:18 | #8 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Serg-Grin, простое накопление не дает возможности корректировать баланс в последствии. Нужны формулы, на которые намекнули еще более явно. Можно уже показать пример. У меня в проекте работают примерно вот такие:
UXPMin = ULevel^2 * k UXPMax = (ULevel + 1)^2 * k k - коэффициент прироста опыта. В любой момент можно знать шкалу опыта из данных об уровне персонажа. А далее условия простые. Если текущий опыт от боя UXP >= UXPMax, в переменную хранения пошло очко опыта, им распорядиться можно по усмотрению, т.е. кинуть на стат по выбору. При этом ULevel возрастает на 1, остаток опыта свыше UXPMax пошел в переменную UXP и шкала опыта пересчитывается, т.е. по формулам, показанным выше, определяются новые UXPMin и UXPMax. Вопрос на засыпку: ...а как узнать ULevel из соотношения скилов и возможно не потраченных баллов опыта? ...я-то знаю, но хочу чтобы ты подумал сам.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 17.10.2012 в 17:20. |
18.10.2012, 01:32 | #9 |
CAE Engineer
Пользователь
Регистрация: 10.03.2011
Сообщений: 75
|
А я пошел немного иным путем.
Чтобы не возникало путаницы, постараюсь привести пример в виде аналога для варианта который предлагает Beermonza Минимальное значение опыта на каждом уровне я не учитываю. LvlResult - текущий уровень. Coeff_Inc - коэффициент прироста опыта. ExpResult - текущее значение опыта, которое накапливается за победы над врагом , квесты, использованные предметы и т.д. В общем все что угодно и на ваше усмотрение . ExpMax - максимальное значение опыта на текущем уровне. ( то количество опыта которое персонажу нужно набрать, чтобы перейти на следующий уровень) ExpBasic - базовое значение опыта. ( то количество опыта которое необходимо набрать для получения второго уровня) ExpMax:=ExpBasic; //первое значение максимального опыта это базовое значение. Условие изменения ExpMax такое же как и у Beermonza Если ExpResult>= ExpMax то ExpMax:=ExpMax*Coeff_Inc ; здесь же вы можете изменить все необходимые бонусы (прибавить силу и т.д.) Текущий уровень определяется из максимального значения опыта ExpMax. При этом LvlResult не нужно менять руками в условии. А вот как при такой схеме определить LvlResult я расскажу подробно, но только при условии, что будет решена задачка от Beermonza |
18.10.2012, 15:58 | #10 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
EridorBlade, я думаю автор темы не скоро появится, тем более, что уже всех поблагодарил. Мы можем остаться и помочь тем, кто будет еще читать эту тему.
Не вдаваясь в подробности кода, скажи ка, какие именно данные персонажа в твоей модели идут под сохранение в файл? ...те, что касаются опыта.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Опыт Штерна и Герлаха | апрол | Помощь студентам | 0 | 23.02.2012 23:13 |
подредактировать античит к игре игре Nhl 09 (античит написан на дельфи) | Viper18 | Фриланс | 3 | 03.08.2011 17:37 |
C++ первый опыт [продолжение] | kin63camapa | Софт | 0 | 26.03.2010 23:19 |
C++ первый опыт | kin63camapa | Софт | 9 | 13.03.2010 16:31 |
Как высчитать опыт? | [Smarik] | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 22.02.2008 22:34 |