с лотереей не правильный пример
там выигрыш одному из пяти гарантирован
Хорошо. А тут что, удар не гарантирован? Если он тут как бы тоже гарантирован. У тебя есть критический удар. И есть шанс, что он сработает. Я не говорю, что каждые 5 ударов он должен сработать в любой иэ этих 5 ударов. Я говорю, что он может сработать например 1 раз за 6 ударов, но потом он сработает раз за 2 удара, потом за 4, потом там за 10, потом 2 раза подряд
Но не так, что он не срабатывает почти никогда или наоборот по 5 раз из 10
Я не знаю, как ты понял, что оно нормально работает при exitwhen i > 10000
Я сделал вот так
loop
exitwhen i > 10
if (GetRandomReal(1,100)<20) then
set n=n+1
endif
if (GetRandomReal(1,100)<20) then
set a=a+1
endif
if (GetRandomReal(1,100)<20) then
set b=b+1
endif
if (GetRandomReal(1,100)<20) then
set c=c+1
endif
if (GetRandomReal(1,100)<20) then
set d=d+1
endif
set i = i+1
endloop
call DisplayTextToForce( GetPlayersAll(), "n=" + I2S(n) )
call DisplayTextToForce( GetPlayersAll(), "a=" + I2S(a) )
call DisplayTextToForce( GetPlayersAll(), "b=" + I2S(b) )
call DisplayTextToForce( GetPlayersAll(), "c=" + I2S(c) )
call DisplayTextToForce( GetPlayersAll(), "d=" + I2S(d) )
В итоге, получаем значения
n=0
a=4
b=4
c=1
d=3
Что же это значит?
Как раз то, о чём я говорю
Допустим это 5 юнитов, одновременно дерущихся между собой с одинаковой скоростью атаки и имеют способность с 20% шансом
Все сделали по 10 ударов
И что же мы видим
За 10 ударов у юнита N ни разу не сработала способность, тогда как у юнита A и B она сработала аж по 4 раза, что в теории должно было быть только за 20 ударов
У юнита C она сработала только 1 раз, ну что ж, хоть что-то
У юнита D 2 раза, вот это уже норм.
В итоге мы снова возвращаемся сюда
Совсем куда смешнее ситуация была, когда были две разные абилки, у двух разных героев, и тот у кого была абилка с шансом 15%, срабатывала бывало чаще, чем например у того, у которого была абилка с шансом 30%. Напоминаю, всё та же ситуация, когда два героя одновременно бьют друг друга.
Ибо есть юнит, у которого за 10 ударов абилка не прокнула ни разу и есть даже 2, у кого она прокнула аж по 4 раза
А вот ещё интересный ряд
n=4
a=1
b=2
c=5
d=2
В этом случае аж 5 раз у одного юнита, ну это вообще кайф)
Это прям как видео про Войда, там где его бэктрэк срабатывает 6 раз подряд и потом через удар ещё 2 раза
Или про Морту, у которой уклонение прокнуло 13 раз подряд
Или Снайпер с 8 хедшотами подряд
Но его понять ещё можно, у него всё-таки 35 или 40% шанс, точно не помню
Лучше просто делать пассивки с перезарядками и/или каждый X удар/каждое X действие, это справедливее, точнее и лишних вопросов не создаст
И всё-таки, ты приведи конкретный пример с конкретными числами
ВОт я хочу сделать абилку на 20% шанс. Какое колво каких кулдаунов и кол-во ударов нужно брать и как это реализовывать
Proshel_Doty, то, что я тебе скинул. Я не знаю о каких тестах ты говоришь.
Да это понятно, я и сам хотел это попробовать с базой данных рандомов для юнитов или для чисел
Я тему то создал для того, чтобы найти нормальное решение и понять как работате рандом в Варике и Дота 2
Proshel_Doty, ты протестируй сначала. Потому что на данный момент, ты не понимаешь о чем говоришь.
Вот когда увидишь наглядно, что все работает как положено - тогда возвращайся с вопросами.
Протестировать что?))
Я как бы про результы тестов и говорю
Или о каких тестах ты говоришь?
Получается, что для каждого юнита на карте со способностью, имеющей вероятность срабатывания нужно сделать свою БД рандомов, так сказать сгенерировать ряд рандомных чисел? Или даже не для отдельного юнита, а для отдельной способности каждого юнита?
Proshel_Doty, ну так втули 20 циклов с рандомом. Будет тебе для 20 абилок.
Ну вот получается к этому и приходим, что нужно делать для каждого ClotPh:
Proshel_Doty, да вот хотя бы крутилка акса в доте 2 уже именно так работает, и заряды, и перезарядка, и фактически увеличивающийся шанс
другое дело, что не обязательно в базовой информации игрокам слишком много мозги компостировать, им достаточно условно знать про шанс там 15%, 20% или 30%, ну и мб перезарядку
По-моему про крутилку акса ты чего-то не знаешь)
А именно, то что он может прокрутиться 3 раза, когда его бьют 3 юнита всего
И не крутиться почти, когда его бьют 5 крипов
Если бы оно работало, как ты говоришь, то он бы крутился всегда идеально, но там по-моему как раз вот этот безумный рандом
Proshel_Doty, если ты хочешь не псевдо-рандом, а "рандом нормальный", то при каждом ударе обсчитывай шанс триггерно:
if (GetRandomReal(1,100)>=20) then
...
endif
Так вот я так и делаю и получается вот это
Совсем куда смешнее ситуация была, когда были две разные абилки, у двух разных героев, и тот у кого была абилка с шансом 15%, срабатывала бывало чаще, чем например у того, у которого была абилка с шансом 30%. Напоминаю, всё та же ситуация, когда два героя одновременно бьют друг друга.
Или может я просто не всё знаю, как работает рандом в варике?
Я не сказал, что эти две разные абилки обсчитываются в одном триггере или функции
Т.е. сначала идёт проверка первой абилки, там просчитывается шанс
Потом за ней вторая там тоже шанс
И так все существующие пассивные абилки
Т.е. в итоге получается, что шанс просчитывается одновременно не для одной абилки а для всех, которые сработали в заданный момент.
Например, у одного перса есть Способность на уклонение, и есть способность Баш, а у второго есть способность Критический удар
И для каждой получаем рандомный шанс
Та уже всё, закрыто)
Я в принципе тоже думал, что один триггер будет лучше, чем на каждую способность
Просто хотел побольше информации выудить по этому поводу
Всем спасибо
Потому что 20%, это как никак, но раз за 5 ударов должно пройти.
Не должно. Случайность в текущий удар не должна оказывать влияния на случайность в последующий. Случайность на то и случайность.
Хорошо, тут я немного перегнул в начале, с этими 5 ударами, но за 10-20 ударов 20%шанс должен сработать, ибо если реже это уже бред, а ни как там выше про 10000000 писали, да и 20 даже для 20% шанса это много уже, это как исключение можно уже рассматривать
Другой вопрос в том, что ты эту случайность хочешь контролировать, фактически, делая ее не случайной. Но почему-то не хочешь себе в этом признаваться.
Ну при чём тут контролировать) Я же описал ситуацию
Совсем куда смешнее ситуация была, когда были две разные абилки, у двух разных героев, и тот у кого была абилка с шансом 15%, срабатывала бывало чаще, чем например у того, у которого была абилка с шансом 30%. Напоминаю, всё та же ситуация, когда два героя одновременно бьют друг друга.
Я смотрю на этот вопрос с логической точки зрения
Вот допустим абилка срабатывающая со 100% шансом, он срабатывает каждый 1 раз
Чисто логически абилка с 50% шансом должна срабатывать каждый 2 раз. Но это рандом и мы понимаем, что она Либо сработает 2 раза подряд, потом 2 раза не сработает, либо сработает 1 раз, потом 1 не сработает, либо сработает 3 раза и 3 не сработает, и так будет повторяться. Но, то что абилка с 50% шансом не сработает на 5 удар, например, уже смотрится как-то подозрительно.
Дальше по этому рассуждения абилка с 33% шансом срабатывает каждый 3 удар
Абилка с 20% шансом срабатывает каждый 5 удар. Но опять же как в рассуждении про 50% шанс, тут может быть 10 ударов не сработавших, но потом например, сработают сразу 2 подряд, или сработает 1, потом второй нет и так, например 3 раза подряд. Тут уже достаточно большой разброс.
Хорошо, приведу пример с Лотереей
Допустим у нас 5 героев, ёпте
У каждого по 1 выигрышному билету, но только у одного
В итоге, получаем что? То что каждый из них имеет шанс 20% на победу в лотерее
Но победит только один, он будет либо 1, либо 2, либо 3, либо 4, либо 5
Вот примерно так я это вижу
Proshel_Doty, тебе говорят про кулдаун по кол-ву атак, а не по времени.
Если ты хочешь 20 срабатываний из 100 ударов - делай срабатывание на каждый 5й удар.
Раз уж ты все сравнения сводишь к DotA - то вспомни старого Storm Spirit, его пассивка именно так работала.
Нет, я хочу рандом, но рандом нормальный, а не безумный
Тут есть варианты
Убрать шанс вовсе, заменив его зарядом. Удары/применение способностей/движение/что-то еще накапливают заряды. При достижении максимума, пассивная способность срабатывает и обнуляет заряд.
Уже было оговорено. Это тогда уже не шанс, а счётчик ударов, а это мне не нужно. Мне нужен шанс, поэтому убирать его нельзя
Первый удар - 10%
Второй удар - 20%
Третий удар - 30%
Четвёртый удар - 40% и т.д.
Шанс срабатывания растёт с каждым ударом, а в случае прока возвращается обратно на свои изначальные значения.
Пока что-то мне псевдорандом не очеьн нравится, посмотреть бы как на него в действии, оставим его на попозже ScopteRectuS:
Proshel_Doty,
Jinada Bounty Hunter'a из Dota имеет перезарядку, хоть и является пассивной способностью.
Я как бы знаю, что у кого в Доте что делает, джинада тут совсем не к месту)
Потому что 20%, это как никак, но раз за 5 ударов должно пройти.
Не должно. Случайность в текущий удар не должна оказывать влияния на случайность в последующий. Случайность на то и случайность.
Хорошо, тут я немного перегнул в начале, с этими 5 ударами, но за 10-20 ударов 20%шанс должен сработать, ибо если реже это уже бред, а ни как там выше про 10000000 писали, да и 20 даже для 20% шанса это много уже, это как исключение можно уже рассматривать
Другой вопрос в том, что ты эту случайность хочешь контролировать, фактически, делая ее не случайной. Но почему-то не хочешь себе в этом признаваться.
Ну при чём тут контролировать) Я же описал ситуацию
Совсем куда смешнее ситуация была, когда были две разные абилки, у двух разных героев, и тот у кого была абилка с шансом 15%, срабатывала бывало чаще, чем например у того, у которого была абилка с шансом 30%. Напоминаю, всё та же ситуация, когда два героя одновременно бьют друг друга.
Я смотрю на этот вопрос с логической точки зрения
Вот допустим абилка срабатывающая со 100% шансом, он срабатывает каждый 1 раз
Чисто логически абилка с 50% шансом должна срабатывать каждый 2 раз. Но это рандом и мы понимаем, что она Либо сработает 2 раза подряд, потом 2 раза не сработает, либо сработает 1 раз, потом 1 не сработает, либо сработает 3 раза и 3 не сработает, и так будет повторяться. Но, то что абилка с 50% шансом не сработает на 5 удар, например, уже смотрится как-то подозрительно.
Дальше по этому рассуждения абилка с 33% шансом срабатывает каждый 3 удар
Абилка с 20% шансом срабатывает каждый 5 удар. Но опять же как в рассуждении про 50% шанс, тут может быть 10 ударов не сработавших, но потом например, сработают сразу 2 подряд, или сработает 1, потом второй нет и так, например 3 раза подряд. Тут уже достаточно большой разброс.
Лучше просто делать пассивки с перезарядками и/или каждый X удар/каждое X действие, это справедливее, точнее и лишних вопросов не создаст
Абсолютно не лучше)) сразу отпадает
Особенно с перезарядкой лол Это что получается, я подойду к юниту, ударю его, отойду потом ударю и так каждый раз будет срабатывать? Это уже похоже на абилку Брюмастера из доты, но там до каждого такого удара 10 сек, короч чёт вообще мутное по-моему.
Шанс срабатывания и срабатывание каждый удар это совсем разные вещи. Ибо так ты точно знаешь, что каждый 5 удар например у тебя будет какое-то действие, а так ты не знаешь, будет это 2 раза подряд или один раз за 10 ударов.
"Потому что 20%, это как никак, но раз за 5 ударов должно пройти" - с чего вдруг? Теоретически и за 20 может не пройти, и за миллион (хотя вероятность ничтожно мала).
Ну допустим может быть случай когда оно не пройдёт раз 10 или 20, как раз 20 это уже прям потолок, какой ещё нафиг миллион...
Но вот ситуация, когда два перса бьют друг друга, и абилка с шансом 15% срабатывает чаще абилки с 30% это уже цирк, который надо как-то исправлять по-моему
Proshel_Doty, нет 1 условие и экзекут функции из бд.
Да как одно то.
Вот у меня три абилки:
Первое условие, проверяю, что абилка = абилка1
Второе, что = абилка2
Третье, что абилка3
Вот уже 3 условия
А абилок штук 200
один триггер. потому что не надо будет 100 раз спрашивать, что за абилка
Ну почему, в этом одном триггере всё равно будет столько условий, сколько нестандартных абилок в карте?)
А вот событие будет всего одно, нежели столько сколько нестандартных абилок
Где же старая хгмовская традиция засирать АОС, даже если её делают трансексуалы?
Мб потому что это в блоге, а не на всеобщем обозрении, поэтому всем наплевать
Кстати, хорошо, что эта карта не в разделе WC3, а то вспоминается старый добрый форум с лютыми мапами xgm.guru/forum/showthread.php?t=45080
Ну инвиз делается таймером вроде как, гдето была наработка или статья про это непомню, вобщем когда твой рики атакует, запускаешь таймер, по истечению которого даешь постояный инвиз, таймер каждый раз используешь тотже, то есть если ты атаковал и через екунду снова атакуешь, время на нем обновится, как-то так
Можно дать юниту способность на оч большой реген, вот тебе и неуязвимость
Для мгновенного урона также есть два даммика, которые постоянно меняют владельца перед нанесением урона. Первый - для блокируемого урона, второй - для не блокируемого.
При чём тут владелец
Когда урон надо наносить от определённого юнита - кастера, т.е. героя в данном случае Proshel_Doty:
Я бы так не делал, хотя бы потому, что тогда такой предмет как Octarine Core как в доте2 (ну суть понятна - хилит от способностей) не будет просто хилить героя из-за того, что не он наносит урон.
Во-вторых, суть именно том, чтобы попав под бафф такого каста юнит старался избегать созданных даммиков до окончания времени действия мнимого баффа. Мнимого - поскольку реальный бафф будет перебиваться, например, таким же юнитом союзника. Если желаемого адекватного решения возникшей проблемы не возникнет - скорее всего прибегну к этому решению.
Честно, ничего не понял
Особенно сути этих даммиков, ты бы хоть способность описал, что она делает... Diaboliko:
наношу урон от даммиков
Я бы так не делал, хотя бы потому, что тогда такой предмет как Octarine Core как в доте2 (ну суть понятна - хилит от способностей) не будет просто хилить героя из-за того, что не он наносит урон.
Это на всякий, а пока ещё раз скажу, что вообще не понятно, что за способность ты делаешь и суть этих даммиков
Кинь описание
Если урон от одного игрока складывается при нескольких применениях скила, то:
КОгда кастуется эта способность, делам переменную типа integer cast count = cast count +1
Юнит кастер[cast count] = GetSpellAbilityUnit()
Группа юнитов[cast count] = юниты которых надо дамажить
И в триггере с переодиком через цикл перебираем от 1 до cast count
в нём перебираем юнитов в определённой группе и в каждой группе наносим урон от кастера всем юнитам в этой группе.
В итоге: способность можно кастовать любое количество раз, разными героями, а также складывается урон от 1 перса.
Если нужно, чтобы урон не складывался, то тогда для одного героя 1 группа, или проще для игрока, так как герой такой у игрока будет 1 скорее всего Hate:
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Но я тебе выше написал, как она наглядно работает в это же Доте
ClotPh:
ClotPh:
Но не так, что он не срабатывает почти никогда или наоборот по 5 раз из 10
Ред. PROSHELDOTU
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Я сделал вот так
n=0
a=4
b=4
c=1
d=3
Что же это значит?
Как раз то, о чём я говорю
Допустим это 5 юнитов, одновременно дерущихся между собой с одинаковой скоростью атаки и имеют способность с 20% шансом
Все сделали по 10 ударов
И что же мы видим
За 10 ударов у юнита N ни разу не сработала способность, тогда как у юнита A и B она сработала аж по 4 раза, что в теории должно было быть только за 20 ударов
У юнита C она сработала только 1 раз, ну что ж, хоть что-то
У юнита D 2 раза, вот это уже норм.
В итоге мы снова возвращаемся сюда
А вот ещё интересный ряд
n=4
a=1
b=2
c=5
d=2
В этом случае аж 5 раз у одного юнита, ну это вообще кайф)
Это прям как видео про Войда, там где его бэктрэк срабатывает 6 раз подряд и потом через удар ещё 2 раза
Или про Морту, у которой уклонение прокнуло 13 раз подряд
Или Снайпер с 8 хедшотами подряд
Но его понять ещё можно, у него всё-таки 35 или 40% шанс, точно не помню
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
ВОт я хочу сделать абилку на 20% шанс. Какое колво каких кулдаунов и кол-во ударов нужно брать и как это реализовывать
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Я тему то создал для того, чтобы найти нормальное решение и понять как работате рандом в Варике и Дота 2
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Я как бы про результы тестов и говорю
Или о каких тестах ты говоришь?
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
ClotPh: По-моему про крутилку акса ты чего-то не знаешь)
А именно, то что он может прокрутиться 3 раза, когда его бьют 3 юнита всего
И не крутиться почти, когда его бьют 5 крипов
Если бы оно работало, как ты говоришь, то он бы крутился всегда идеально, но там по-моему как раз вот этот безумный рандом
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Но я ж объясняю, что когда их срабатывает сразу несколько получается лажа
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Я не сказал, что эти две разные абилки обсчитываются в одном триггере или функции
Т.е. сначала идёт проверка первой абилки, там просчитывается шанс
Потом за ней вторая там тоже шанс
И так все существующие пассивные абилки
Т.е. в итоге получается, что шанс просчитывается одновременно не для одной абилки а для всех, которые сработали в заданный момент.
Например, у одного перса есть Способность на уклонение, и есть способность Баш, а у второго есть способность Критический удар
И для каждой получаем рандомный шанс
» WarCraft 3 / Триггеры и Нестандартные абилки
Я в принципе тоже думал, что один триггер будет лучше, чем на каждую способность
Просто хотел побольше информации выудить по этому поводу
Всем спасибо
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Proshel_Doty: Хорошо, приведу пример с Лотереей
Допустим у нас 5 героев, ёпте
У каждого по 1 выигрышному билету, но только у одного
В итоге, получаем что? То что каждый из них имеет шанс 20% на победу в лотерее
Но победит только один, он будет либо 1, либо 2, либо 3, либо 4, либо 5
Вот примерно так я это вижу
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
ScopteRectuS: Я как бы знаю, что у кого в Доте что делает, джинада тут совсем не к месту)
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Вот допустим абилка срабатывающая со 100% шансом, он срабатывает каждый 1 раз
Чисто логически абилка с 50% шансом должна срабатывать каждый 2 раз. Но это рандом и мы понимаем, что она Либо сработает 2 раза подряд, потом 2 раза не сработает, либо сработает 1 раз, потом 1 не сработает, либо сработает 3 раза и 3 не сработает, и так будет повторяться. Но, то что абилка с 50% шансом не сработает на 5 удар, например, уже смотрится как-то подозрительно.
Дальше по этому рассуждения абилка с 33% шансом срабатывает каждый 3 удар
Абилка с 20% шансом срабатывает каждый 5 удар. Но опять же как в рассуждении про 50% шанс, тут может быть 10 ударов не сработавших, но потом например, сработают сразу 2 подряд, или сработает 1, потом второй нет и так, например 3 раза подряд. Тут уже достаточно большой разброс.
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
» WarCraft 3 / Рандом Варкрафта и Абилки с шансом
Особенно с перезарядкой лол Это что получается, я подойду к юниту, ударю его, отойду потом ударю и так каждый раз будет срабатывать? Это уже похоже на абилку Брюмастера из доты, но там до каждого такого удара 10 сек, короч чёт вообще мутное по-моему.
Шанс срабатывания и срабатывание каждый удар это совсем разные вещи. Ибо так ты точно знаешь, что каждый 5 удар например у тебя будет какое-то действие, а так ты не знаешь, будет это 2 раза подряд или один раз за 10 ударов.
Но вот ситуация, когда два перса бьют друг друга, и абилка с шансом 15% срабатывает чаще абилки с 30% это уже цирк, который надо как-то исправлять по-моему
» WarCraft 3 / Триггеры и Нестандартные абилки
Вот у меня три абилки:
Первое условие, проверяю, что абилка = абилка1
Второе, что = абилка2
Третье, что абилка3
Вот уже 3 условия
А абилок штук 200
» WarCraft 3 / Триггеры и Нестандартные абилки
А вот событие будет всего одно, нежели столько сколько нестандартных абилок
» Монстрофилию в массы / Блудница возвращается ;D
Кстати, хорошо, что эта карта не в разделе WC3, а то вспоминается старый добрый форум с лютыми мапами xgm.guru/forum/showthread.php?t=45080
» WarCraft 3 / Как сделать два типа юнита?
ImbaStyle:
» WarCraft 3 / Альтернативы добавлению юнита в группу дважды(что невозможно)?
Когда урон надо наносить от определённого юнита - кастера, т.е. героя в данном случае
Proshel_Doty:
Ред. PROSHELDOTU
» WarCraft 3 / Альтернативы добавлению юнита в группу дважды(что невозможно)?
Особенно сути этих даммиков, ты бы хоть способность описал, что она делает...
Diaboliko:
Это на всякий, а пока ещё раз скажу, что вообще не понятно, что за способность ты делаешь и суть этих даммиков
Кинь описание
» WarCraft 3 / Альтернативы добавлению юнита в группу дважды(что невозможно)?
КОгда кастуется эта способность, делам переменную типа integer cast count = cast count +1
Юнит кастер[cast count] = GetSpellAbilityUnit()
Группа юнитов[cast count] = юниты которых надо дамажить
И в триггере с переодиком через цикл перебираем от 1 до cast count
в нём перебираем юнитов в определённой группе и в каждой группе наносим урон от кастера всем юнитам в этой группе.
В итоге: способность можно кастовать любое количество раз, разными героями, а также складывается урон от 1 перса.
Hate: