rsfghd, можно просто рандомить координаты и при этом, если X выпадает в ненужный промежуток - рандомить Y немного иначе, вот и всё.
Такой вариант, с примером:
Допустим область B имеет размер 6000x6000, а область C в её центре имеет размер 2000x2000. Ищем случайный X для B - это случайное число от 0 до 6000, т.е. мин/макс. координата X для B.
Если случайно полученная координата X выпадает на область C (т.е. между 2000 и 4000), то нужно указать для следующих расчётов что мы будем мнимо сдвигать диапазон в меньшую сторону, поэтому запишем set Y0 = 2000 (иначе оно должно быть равно 0, т.к. проще всегда считать его, но с разным результатом).
Теперь мы ищем координату Y, которая будет равна случайному числу от 0 до 6000 - Y0, т.е. для случаев когда нет наложения - это от 0 до 6000, а когда есть наложение - от 0 до 4000.
Далее, если наше случайно найденное значение для Y удовлетворяет условие Y > 2000 то можно докинуть к нему Y0 (т.е. обратно увеличить на мнимый сдвиг set Y = Y + Y0), который будет равен 0 или 2000 (в случае если диапазон был уменьшен).
На выходе мы получим Y от 0 до 6000 при Y0 = 0 без сдвига.
А со сдвигом - от 0 до 4000 при Y0 = 2000, что даст нам от 0 до 2000 если Y меньше 2000, или от 2000+2000 до 4000+2000 со сдвигом (т.е. от 4000 до 6000).
примерно такой набросочек, может что запамятовал...
rect B = ... // зона спавна
rect C = ... // чистая зона
local real xC_min = GetRectMinX(C)
local real xC_max = GetRectMaxX(C)
local real xR = GetRandomReal(GetRectMinX(B),GetRectMaxX(B))
local real yR
local real y0 = 0.
if xR > xC_min and xR < xC_max then
set y0 = xC_max - xC_min
endif
set yR = GetRandomReal(GetRectMinY(B),GetRectMaxY(B)-y0)
if yR < GetRectMinX then
set yR = yR + y0
endif
Zeix, зачем так цикл раздувать? сразу пиши в закрывашку
loop
set x = GetRandomReal(GetRectMinX(spawnRect),GetRectMaxX(spawnRect))
set y = GetRandomReal(GetRectMinY(spawnRect),GetRectMaxY(spawnRect))
exitwhen RectContainsCoords(gg_rct_rectC,x,y)
endloop
Монета и вязанка - это предметы. У предметов есть встроенные способности. В самих способностях можно настроить необходимые параметры, т.е. сколько будет выдаваться золота/древесины.
Аганим всегда имел несколько копий самого себя (как предмета), что было очевидно по текстовой приписке к самому названию предмета (хотя можно было бы сделать один и тот же, а саму технику/эффект - выдавать отдельно). Просто при подборе любого их Аганимов происходила проверка, которая выдавала конкретную версия предмета под героя, либо базовую (если этому герою он не подходит вообще). Каждая из версий имела схожий ассортимент бонусных абилок (на статы),одну специальную (аттач спецэффектов), и ещё одну которая являлась вариантом Техники, что давало возможность динамически изменять скилл и его описание на заранее подготовленную альтернативу.
При подборе Аганима срабатывает механизм улучшения абилки за счёт Техники, который сам производит необходимую замену (в обе стороны). А простое удаление/добавление абилок просто вызовет потерю их текущей перезарядки, что вполне можно абузить...
SсRealm, есть конкретные области (как юниты), а есть их массивы (как отряды). Так вот события вешаются на сам "отряды областей", а сколько в нем "юнитов-областе" - это уже совсем другой вопрос.
Просто убрать всем юнитам с атакой возможность атаковать "прочие" объекты?
Герои так и продолжат их бить, а НЕгерои - потеряют такую возможность.
Как альтернатива - можно попробовать посмотреть что выдаёт событие юнит атакует (не путать с юнит атакован), и если там есть вариант выудить деструктейбл - то можно стопать и/или докидывать другие проверки/действия.
Не-не, ты писал где-то про числа 1 и -11, было такое, оно работало, я тогда ещё спрашивал крашит ли оно
На XGMе где-то
Листаю, не могу найти пока-что, думал ты по памяти ответишь быстрее
Что в памяти -11 укажет на существующую область и потому не свалится с ошибкой доступа
Что будет в той области, затрется, но кого волнует
А buttonpos=-2147483648,-2147483648 указывает на 0,0 всегда, ломая алгоритм
И кнопка 100% отрисуется в 0,0
Т.е. за пределы памяти писать точно не будет
Он самый, но он почти 100% закрыт кнопкой мува
На юните без мува там будет отрисовываться скрытый такой скилл
Поэтому еще и используется иконка черная, чтобы не отсвечивало если что buttonpos=-2147483648,-2147483648 art=ReplaceableTextures\PassiveButtons\BTNNothing
Кастомная офк
Ну я имею ввиду, в других ты смотрел крашрепорты когда было подозрение на эту штуку?
Я просто хочу везде отныне это использовать... и будут ли краши, надо иметь ввиду
» WarCraft 3 / Конкатенация переменной и строки vjass, для получения нового имени переменной
» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.
Ред. Extremator
» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.
Ред. Extremator
» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.
Ред. Extremator
» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.
А со сдвигом - от 0 до 4000 при Y0 = 2000, что даст нам от 0 до 2000 если Y меньше 2000, или от 2000+2000 до 4000+2000 со сдвигом (т.е. от 4000 до 6000).
Ред. Extremator
» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.
Ред. Extremator
» WarCraft 3 / Панда-Ребёнок
Ред. Extremator
» WarCraft 3 / Количество получаемого золота и древа при взятии предметов
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Вопрос про Endloop
» WarCraft 3 / Вопрос про Endloop
Ред. Extremator
» WarCraft 3 / Вопрос про Endloop
И так же при капе в 100.00 он способен выдавать ровно 100.00
» WarCraft 3 / Вопрос про Endloop
» WarCraft 3 / Вопрос про Endloop
» WarCraft 3 / Вопрос про Endloop
» WarCraft 3 / Вопрос про Endloop
Ред. Extremator
» WarCraft 3 / Выдача скила при подборе предмета
» WarCraft 3 / Удаление области
» WarCraft 3 / Атаковать определённый юнит или предмет только героем!
Герои так и продолжат их бить, а НЕгерои - потеряют такую возможность.
» WarCraft 3 / Нужен профи по jass
» WarCraft 3 / Как узнать будущее на карте? World Editor.
Ред. Extremator
» WarCraft 3 / Вылет в самом начале игры
» WarCraft 3 / Вылет в самом начале игры
» WarCraft 3 / Вылет в самом начале игры
» WarCraft 3 / Вылет в самом начале игры