26

» WarCraft 3 / Конкатенация переменной и строки vjass, для получения нового имени переменной

Можно параллельным массивам задать строчные имена как значения, и уже по ним будешь получать прочие нужные данные. Или не вариант?
26

» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.

konvan5:
Идеальные универсальные решения мало кому нужны на практике
vJass пытался быть универсальным... и где он теперь?)
26

» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.

Zeix, все остальные области я бы просто добавил в exitwhen через and )) ну ладно, я думал про новичков тут уже давно не думают...
26

» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.

rsfghd, для решения своего вопроса можешь создать отдельный топик и указать там все исходные.
26

» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.

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
26

» WarCraft 3 / Спавн в зоне, исключая внутреннюю зону.

Zeix, зачем так цикл раздувать? сразу пиши в закрывашку
loop
	set x = GetRandomReal(GetRectMinX(spawnRect),GetRectMaxX(spawnRect))
	set y = GetRandomReal(GetRectMinY(spawnRect),GetRectMaxY(spawnRect))
	exitwhen RectContainsCoords(gg_rct_rectC,x,y)
endloop
26

» WarCraft 3 / Панда-Ребёнок

На спине какой-то кусок полу-прозрычный (тим-колором не меняется).
Загруженные файлы
26

» WarCraft 3 / Количество получаемого золота и древа при взятии предметов

Монета и вязанка - это предметы. У предметов есть встроенные способности. В самих способностях можно настроить необходимые параметры, т.е. сколько будет выдаваться золота/древесины.
26

» WarCraft 3 / Способности и алгоритмы на заказ

Без Футболочки, герои выбираемые из таверн как раз и должны записываться в соответствующие переменные.
26

» WarCraft 3 / Вопрос про Endloop

Makeba,
пишут, что верхняя граница не включается
Не включается? но при рандоме 0,10 он же выдаёт 10, не?
И так же при капе в 100.00 он способен выдавать ровно 100.00
Оо, и 15-ти лет не прошло, он смог 0 посчитать...
Makeba,
тупо срезается число 0, которое срезать не нужно
Ну будет у тебя не 10000 вариаций, а 10001... подумаешь...
26

» WarCraft 3 / Вопрос про Endloop

SсRealm, скорее экономия на спичках)) но с loop'ами разобраться однозначно стоит!
26

» WarCraft 3 / Вопрос про Endloop

nazarpunk, нет. Просто возьми и посчитай сам сколько у тебя условных частей и какой шанс выпадения каждой. Флуд окончен.
26

» WarCraft 3 / Вопрос про Endloop

nazarpunk:
Чёт я немного не догнал
Ну не догнал и ладно, зачем нам быть в курсе этого...
26

» WarCraft 3 / Вопрос про Endloop

  1. Делай рандом не между 0 и 100.00, а между 0.01 и 100.00, иначе ты немного смазываешь шанс... мелочь, а ведь так оно и есть.
  1. Пробуй уж тогда сразу в JASS'овом виде делать, чего уж этой фигнёй заниматься.
26

» WarCraft 3 / Выдача скила при подборе предмета

Аганим всегда имел несколько копий самого себя (как предмета), что было очевидно по текстовой приписке к самому названию предмета (хотя можно было бы сделать один и тот же, а саму технику/эффект - выдавать отдельно). Просто при подборе любого их Аганимов происходила проверка, которая выдавала конкретную версия предмета под героя, либо базовую (если этому герою он не подходит вообще). Каждая из версий имела схожий ассортимент бонусных абилок (на статы),одну специальную (аттач спецэффектов), и ещё одну которая являлась вариантом Техники, что давало возможность динамически изменять скилл и его описание на заранее подготовленную альтернативу.
При подборе Аганима срабатывает механизм улучшения абилки за счёт Техники, который сам производит необходимую замену (в обе стороны). А простое удаление/добавление абилок просто вызовет потерю их текущей перезарядки, что вполне можно абузить...
26

» WarCraft 3 / Удаление области

SсRealm, есть конкретные области (как юниты), а есть их массивы (как отряды). Так вот события вешаются на сам "отряды областей", а сколько в нем "юнитов-областе" - это уже совсем другой вопрос.
26

» WarCraft 3 / Атаковать определённый юнит или предмет только героем!

Просто убрать всем юнитам с атакой возможность атаковать "прочие" объекты?
Герои так и продолжат их бить, а НЕгерои - потеряют такую возможность.
Как альтернатива - можно попробовать посмотреть что выдаёт событие юнит атакует (не путать с юнит атакован), и если там есть вариант выудить деструктейбл - то можно стопать и/или докидывать другие проверки/действия.
26

» WarCraft 3 / Как узнать будущее на карте? World Editor.

Никак. То что ты будешь "прогнозировать" - это будет только лютый рандом основанный на ряде догадок.
26

» WarCraft 3 / Вылет в самом начале игры

Когда я у Лича лично спрашивал есть ли конкретный указатель на то что это происходит именно из-за положения 0;-11, он мне ответил что нет (или да?).
2k17
Extremator:
Слушай, не могу найти твой пост про координаты иконки для скрытия.
Там -1,11 или 1,-11 что-то такое... Не подскажешь?
DracoL1ch:
buttonpos=-2147483648,-2147483648
Extremator:
Не-не, ты писал где-то про числа 1 и -11, было такое, оно работало, я тогда ещё спрашивал крашит ли оно
На XGMе где-то
Листаю, не могу найти пока-что, думал ты по памяти ответишь быстрее
DracoL1ch:
-11 обычно, но это бабка надвое сказала, что не упадет
Extremator:
Поясни
DracoL1ch:
Вариант выше - 100% работает
-11 теоретически может грохнуться
Extremator:
По какой причине? в чём теория?
DracoL1ch:
Что в памяти -11 укажет на существующую область и потому не свалится с ошибкой доступа
Что будет в той области, затрется, но кого волнует
А buttonpos=-2147483648,-2147483648 указывает на 0,0 всегда, ломая алгоритм
И кнопка 100% отрисуется в 0,0
Т.е. за пределы памяти писать точно не будет
Extremator:
100% отрисуется в 0,0
а 0,0 это самый левый верхний слот, верно? или более "нулевой" ?
DracoL1ch:
Он самый, но он почти 100% закрыт кнопкой мува
На юните без мува там будет отрисовываться скрытый такой скилл
Поэтому еще и используется иконка черная, чтобы не отсвечивало если что
buttonpos=-2147483648,-2147483648
art=ReplaceableTextures\PassiveButtons\BTNNothing
Кастомная офк
Extremator:
Нашёл, 0 и -11
Ты её юзал и у тебя фаталило? или ты просто на всякий случай не используешь её, т.к. она может фаталить?
DracoL1ch:
На всякий
У меня не падало, иногда другие писали, что падает
Extremator:
А ты проверял из-за чего именно падало? и это просто как самое вероятное предположение?
DracoL1ch:
У меня не падало
Extremator:
Ну я имею ввиду, в других ты смотрел крашрепорты когда было подозрение на эту штуку?
Я просто хочу везде отныне это использовать... и будут ли краши, надо иметь ввиду
DracoL1ch:
Никто не кидал
Да и давно это было
Я просто использую указанные и не знаю про -11 деталей
Extremator:
Ок, спасибо за инфу
26

» WarCraft 3 / Вылет в самом начале игры

EugeAl, я более чем уверен что подобные фаталы у людей появляются как раз в сетевой игре. Но давай посмотрим что скажет ТС.
26

» WarCraft 3 / Вылет в самом начале игры

rsfghd, у меня в карте они везде используются, но никто никогда не отваливается на старте игры или при клике.