Искал-искал когда-то, не нашёл, может тоже кто-то будет искать, пусть найдёт
Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2
Функция сложения или вычитания шансов по Формуле убывающей полезности из Dota 2
phantom_miss_chance - текущий шанс уклонения
Чтобы "Добавить Фантомке Бабочку" нужно ввести RecalculateChance(phantom_miss_chance, 35)
Чтобы "Забрать у Фантомки Бабочку" нужно ввести RecalculateChance(phantom_miss_chance, -35)
Чтобы "Добавить Фантомке Бабочку" нужно ввести RecalculateChance(phantom_miss_chance, 35)
Чтобы "Забрать у Фантомки Бабочку" нужно ввести RecalculateChance(phantom_miss_chance, -35)
//changing_chance - Шанс который будем менять
//change - На сколько изменить
//Возвращает полученный шанс
function RecalculateChance takes real changing_chance, real change returns real
local real new_changing_chance = 0
if change >= 0 then
if changing_chance >= 0 and changing_chance >= change
new_changing_chance = changing_chance+((100 - changing_chance)/100*change)
elseif changing_chance >= 0 and changing_chance < change
new_changing_chance = changing_chance+((100 - changing_chance)/100*change)
elseif changing_chance < 0 and -changing_chance >= change
changing_chance = -changing_chance
new_changing_chance = -(100 - ((100 - changing_chance) / (1-(change/100))))
elseif changing_chance < 0 and -changing_chance < change
changing_chance = -changing_chance
new_changing_chance = 100 - (100 - change) / (1 - changing_chance/100)
endif
else
change = -change
if changing_chance >= 0 and changing_chance >= change
new_changing_chance = 100 - ((100 - changing_chance) / (1-(change/100)))
elseif changing_chance >= 0 and changing_chance < change
new_changing_chance = -(100 - (100 - change) / (1 - changing_chance/100))
elseif changing_chance < 0 and -changing_chance >= change
changing_chance = -changing_chance
new_changing_chance = -(changing_chance -((100-changing_chance) * (1/(1-(change/100))) - (100-changing_chance)))
elseif changing_chance < 0 and -changing_chance < change
changing_chance = -changing_chance
new_changing_chance = 100 - (100 - change) / (1 - changing_chance/100)
endif
endif
return new_changing_chance
endfunction
Ред. KaneThaumaturge
Просто в UJAPI и REFORGED нет поддержки cjass.
Скорп давал наводку, я пытался разобраться, но пока мозгов недостаточно осилить HEX редактор.
Так это вы тут топите за 1.26 и ужопу, позабыв мнение людей которые за Рефу. А так это всегда актуально, если абстрагироваться от говно выбросов
>Если внимательно посмотреть вопросы или посты где есть рефа, там обязательно, например, Назар напишет, что РЕФ ГОВНО, а УЖОПА БОЖЕСТВО.
Какой же реф плохой да? А что если сказать ужопа плохая, сразу 100500 пруфов вылетит
В приличном обществе упоминать это поделие не принято."
Ставишь changing_chance = 100.0 и ловишь NaN
change это насколько изменить шанс (например если у нас сейчас шанс уклонения 50% и change = 50%, то 50% + 50% = 75%)
Эти 75% и вернуться
Ред. Makeba
Ну типа блин
Вот там это всё и проверяется
Есть герой со способностью "Снижает шанс уклонения врага на 75% на 20 секунд", допустим он применил её на врага
У врага станет -75% Уклонения, если враг в течении этих 20 секунд решит, например закупить предмет, дающий ему 75% уклонения, то уклонение врага станет равно = 0 и враг всё ещё не сможет уклоняться
Ред. Tredor46
Я не понял о чём ты
У врага станет -75% Уклонения, если враг в течении этих 20 секунд решит, например закупить предмет, дающий ему 50% уклонения, то уклонение врага станет равно = -50% и враг всё ещё не сможет уклоняться
У врага станет -75% Уклонения, если враг в течении этих 20 секунд решит, например закупить предмет, дающий ему 90% уклонения, то уклонение врага станет равно = 60% и враг будет уклоняться гораздо меньше, чем должен
Tredor46, так это всё ты можешь складывать в этой функции, но вернуть в итоге нужно валидное значение, ибо куда ты приткнёшь потом свои отрицательные вероятности миссов? Но это точно можно сложить проще, а не так
что за функция F01( i ) == HeavensHalbertId может быть проверка инвентаря героя или чисто айдиник предмета GetItemTypeId(i) ?