Алгоритм
Чё-то у меня алгоритмическая затупа. Второй день сообразить не могу. Вроде бы не тупой, но алгоритм не создаётся. Что я хочу сделать: прибавка хп герою в зависимости от его интеллекта. Проблема в том, что интеллект меняется на протяжении всей игры, поэтому на это нужно динамическое условие. Моя мысль: каждую 1.00 прибавлять нужное количество здоровья и создавать таймер, который через секунду это всё удалит. Но в таком случае здоровье остаётся неизменным, что довольно-таки логично. Есть идеи?

Лучший ответ:
N раз в секунду смотреть текущий интеллект и сравнивать со старым. Если есть разница, то уменьшить или увеличить здоровье. После этого записать текущий интеллект в переменную для "старого".
Моя мысль: каждую 1.00 прибавлять нужное количество здоровья и создавать таймер, который через секунду это всё удалит. Но в таком случае здоровье остаётся неизменным, что довольно-таки логично.
Не уловил, звучит как ерунда.



Просмотров: 187

» Лучшие комментарии


XGM Bot #1 - 1 месяц назад 5
Похожие вопросы:

» ответ
Daniil18, если не знаеш не пиши не по тему!
Нашел буду мучать его в варик делать digspt.ru/topics/32
» ответ
Причину нашел что раньше было "xe_RAWCODE_FOOD *-* count" поэтому давали не правильно, но путем поиска нашел причину и исправил на *+*
» ответ
Я бы определял принадлежность центров квадрата некой окружности. Не так интуитивно-однозначно как проверка принадлежности всех точек квадрата окружности, но гораздо удобнее с точки зрения реализации. Далее для каждой строки поочередно прогоняем алгоритм заливки(в случае, если заливка подразумевает заливку текстурой почвы - стоит учитывать что каждый квадрат почвы имеет размеры 32/32 и центры мелких квадратиков имеют смещение в 16.), закрашивая почву в пределах новоопределенных ректов. Поочередно построчно, т.к. возможно у вас возникнет ситуация черное-белое-черное-белое и вторая строка (если весь массив прогонять подряд, а не построчно) начнется с черного квадрата. Не вижу каких-либо вытекающих неудобств при разработке..
» ответ
Да как хочешь, главное, чтобы тебе и игрокам удобно было. Можно все коэфициенты складывать (то есть броня снижает на 40%, от огня защита 10%, итого урон от огня снижается на 50%), а можно перемножением (в этом случае будет снижение будет 46%).
Результат, сами понимаете, может быть разный.
От перестановки множителей произведение не меняется. Ведь это будет так.
damage * (1 - common armor %) * (1 - fire armor %)

PT153 #2 - 1 месяц назад 2

N раз в секунду смотреть текущий интеллект и сравнивать со старым. Если есть разница, то уменьшить или увеличить здоровье. После этого записать текущий интеллект в переменную для "старого".
Моя мысль: каждую 1.00 прибавлять нужное количество здоровья и создавать таймер, который через секунду это всё удалит. Но в таком случае здоровье остаётся неизменным, что довольно-таки логично.
Не уловил, звучит как ерунда.
quq_CCCP #3 - 1 месяц назад 2
Эмм, баг спредметами на хп и банальное добавление хп по ходу игры, т.к интелект у стандартных героев будет только расти, для достаточно события на повышение уровня и подбор \ потерю предметов, чтобы пересчитывать хп.
Naadir #4 - 1 месяц назад (отредактировано ) 0
quq_CCCP, ну вот, крч, он будет не только расти. :D
PT153, да, я думал над твоей идеей, но реализовывать её не было большой охоты, т.к. нужно каким-то образом ещё и начальный скачок отловить, а не только дельту думал, мб что-то проще будет. Ладушки, сделаю так.

Осуществил, всё работает.
PT153 #5 - 1 месяц назад 0
достаточно события на повышение уровня и подбор \ потерю предметов, чтобы пересчитывать хп
Вот кстати да, если интеллект модифицируется только предметами, то можно сделать всего 2 события, и в них пересчитывать.
Naadir #6 - 1 месяц назад 0
PT153, нет, у меня не только предметами, но и перераспределением статов может модифицироваться.
quq_CCCP #7 - 1 месяц назад 0
Naadir:
PT153, нет, у меня не только предметами, но и перераспределением статов может модифицироваться.
При перераспределении статов, вызывать триггер который следит за бонусом хп, передавая в него юнита через глобальную переменную, ну или вручать руну пустышку чтобы инициировать событие - юнит получил предмет.
Naadir #8 - 4 недели назад 0
quq_CCCP, тоже вариант.
pro100master #9 - 4 недели назад 2
Я же кидал наработки чтобы ловили (Если герой апнул уровень чекаем его статы и старого статы если разницу есть то вычесляем от 0 до нового и прибавку нужного или отнять...
То есть чтобы следить состояние ловим событие это тех
(Получает уровень, Получает/Теряет предмет, Кастомный вызов если такого события нет)
К примеру абилку события сработал и я вызываю кастомный слепка героя прошлого и настояшего.
PS Скучно вот и ответил чтобы понять алгоритм!
Вот пример 1.26 с мемхак (Можно не брат а узнать алгоритм)
А если не ясно то пример:
Со старта карты сохранаем слепки юнита.
То есть хп,мп,сила,атака все сохраняем в базу
Игрок получил 100 хп за апнутый уровень или предметный как удобно это чистый варкрафт.
Ловим события что игрок апнул или получил или любой способ.
Узнать есть ли у юнита слепки фотографии то есть старый состояние.
Если да то сравниваем у кого новые
if(MaxHP(Текуший герой) != старый слепки с типом здоровья
вычесляем и результат прибавка или отрицание и делаете по своему...
А потом удаляете слепки и создаете новый слепка фотографии (Или обновить слепки)
прикреплены файлы