Вот есть переменная, в неё хочу поместить значение количество полученного золота при убийстве.
Что-то типа такого:
Событие - Юнит умирает
Условия - Нет
Действия - Установить Gold = кол-во золота полученного при убийстве
Вот только такой строчки "Установить Gold = кол-во золота полученного при убийстве" нет. Я делал "преобразование реального в целочисленное" и там тоже похожей строчки нет. Единственное что похоже на то, что я хочу - это "Свойство игрока - золото добыто".

Принятый ответ

Простым способом это не сделаешь, т.к нельзя отловить кол-во полученного золото с убийства (патч 1.26). Но, если игрок не получает больше неоткуда золото, кроме убийства крипов, то можно ловить изменения голды игрока.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
4
5 лет назад
0
Смысл моего триггера в том, чтоб когда Игрок 12(бот) убивал кого-то, золото распредилялось между игроками. В моей карте идут волны мобов и в начале золото вообще мало, а если бот ещё забирать будет (так еще у воинов бота скорость атаки большая), то не будет золота и игроков. Возможна моя карта инвалид с двумя костылями. А нет другого способа устроить такое распределение?
0
19
5 лет назад
0
Если подходит, то берём эту систему, если нет, то пишем свою, ручонками.
Например, при убийстве для каждого типа юнита настраиваем кол-во полученной голды и делим на кол-во игроков.
0
26
5 лет назад
0
Можешь сделать ежесекундный триггер, чтобы золото Игрока 12 распределялось между игроками.
Ой, повторился! Извини, Kane, немножко другое сначала представил.
Только нужно придумать грамотную формулу распределения золота между игроками, чтобы без округлений.
Округление в игре просто отбрасывает дробную часть, если, например, играют шестеро, а бот получил за убийство 11 золота, то каждый из шести получит 1 золото, а 5 пропадёт.
Таким образом сначала тебе нужно раздать игрокам золото по формуле:
переменная = (Текущее золото Игрока 11) / (Количество играющих человек)
потом вычесть у Игрока 11 разданное золото:
(Текущее золото Игрока 11) - ( переменная Х (Количество играющих человек) )
0
19
5 лет назад
0
8gabriel8, можно просто добавлять 0,5 вот и округление.
0
26
5 лет назад
0
Ну вот добавишь 0.5, игроки получат по 2, то есть в сумме 12, а не 11.
Как бы не критично в ситуации с 11, но если, например, будет награда 9, то игроки получат всего 12, что в целом для команды выгоднее, если ластхитить будут не они, а Игрок 11.
0
15
5 лет назад
Отредактирован exAres
0
per_player = R2I( current_gold / players_count )
diff = current_gold - ( current_gold / players_count - per_player ) * players_count
как-то так. Я не могу вспомнить, есть ли modulo.
0
26
5 лет назад
0
Что это за странная формула у diff?
0
15
5 лет назад
Отредактирован exAres
0
8gabriel8:
Что это за странная формула у diff?
modulo, но без modulo) (остаток от деления)
0
26
5 лет назад
Отредактирован 8gabriel8
0
modulo вроде abs.

current_gold и players_count по умолчанию integer, то есть ты их как бы заранее перевёл в real.
( current_gold / players_count - per_player ) вычисляет остаток от деления количества золота, который игроку вернётся со следующей партией. Потом умножаешь остаток на количество игроков и вычитаешь из текущего золота, чтобы вычислить всё золото, которое игроки должны получить, то есть
diff = players_count * per_player
0
15
5 лет назад
Отредактирован exAres
0
8gabriel8, O_o... abs это откидывание знака, а modulo это остаток от деления ( 8 mod 3 = 2, поскольку наибольшее число после 8, которое на 3 делится без остатка - 6, а 8 - 6 = 2 ). Но в целом да, я ошибся, там для diff не нужно отнимать от всего золота, т.к. у 11 игрока должен остаться именно остаток от деления.
diff = ( current_gold / players_count - I2R(per_player) ) * players_count
0
32
5 лет назад
0
Есть событие - кол-во золота изменилось, ну а далее просто, золота стало больеше - игрок получил откуда то золото, золота стало меньше - игрок потратил золото.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.