Доброго времени суток всем. Как обычно расписываю важные пункты заранее:
  1. Я не профессиональный коддер
  2. Я не профессиональный пользователь Редактора W3
  3. Я не понимаю Jass и прочие виды кода
  4. Я прошу помочь в самом глупом формате мира
Описание вопроса:
У меня есть Действие в триггере, которое мне подсказал пользователь rsfghd, для того чтобы сократить "утечки" (Код ниже вырванный из всего контекста, я просто хочу в нем разобраться полностью.)
call GroupEnumUnitsInRect( udg_PlayGroup, bj_mapInitialPlayableArea, udg_Temp)
Я понимаю его в таком виде: Он закидывает определенные объекты по логической переменной "Temp", в ранее созданную переменную отряда "PlayGroup", на территории игровой области "mapInitialPlayableArea". Возможно формулировка не до конца идеальна, но суть вроде работы я понимаю.
Я хочу более обширно понять следующее:
  1. Как можно ссылаться на ранее созданную область? Вместо "mapInitialPlayableArea"
  2. Как можно указать понятие "В диапазоне (RANGE ранее реальной переменной) от ранее созданной точки переменной". Вместо "mapInitialPlayableArea"
Дополнительная информация:
  1. Я изучал статьи, но я слишком глуп видимо, ибо не мог догнать какой код нужно туда вбить, дабы получить необходимый результат;
  2. Я пробовал засовывать разные методы Вместо "mapInitialPlayableArea" (методом тыка). Но результат был отрицательный
  3. Пожалуйста, можете дать ответ в формате "Это - делает это, Вместо "mapInitialPlayableArea""
Заранее всем спасибо за помощь!
Уважаемые Администраторы сайта - не блокируйте мой Вопрос из-за того что здесь может показаться что несколько вопросов. Но это одна тема вопроса, просто нелогично будет с моей стороны создавать каждый отдельно :(

Привет! Поковырялся чуток, прикладываю скрин, видео и карту. Буквально: скачиваешь редактор JNGP это продвинутый редактор позволяющий без вазелина с маслом вкатиться в жасс. Чтобы ссылаться на ранее созданную область вместо "mapInitialPlayableArea" необходимо создать область(кто бы мог подумать xd) , создать триггер гуишный, в нём создать например событие юнит входит в область, выбрать эту область, затем конвертировать в жасс и найти это событие, в нем найти параметр rect у функции(в скобочках между запятыми, в видосе подробнее), рекомендую для этого JNGP , он собственно показывает где какой параметр у функций, плюс в нем можно собсна посмотреть все функции чо они делают чо умеют и тогдалее, для оптимизации.
Чтобы выбрать всех в диапазоне нужно будет использовать другую нативку:
Вместо g мелкой вставляешь какую хочешь группу, если не то вставишь то JNGP тебе подскажет в чём ты ошибся и что надо исправить. вместо filter пишешь свой фильтр, ну там в видосе подробнее.
(Это для области)	call GroupEnumUnitsInRange(g,GetRectCenterX(gg_rct________________000),GetRectCenterY(gg_rct________________000),900,Condition(function filter) )
(Это для юнита)    	call GroupEnumUnitsInRange(g,GetUnitX(gg_unit_hfoo_0000),GetUnitY(gg_unit_hfoo_0000),900,Condition(function filter) )
Полный код, разбираемый в видео:
function filter takes nothing returns boolean
    call BJDebugMsg("сработало!"+GetUnitName(GetFilterUnit()))
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Flare\\FlareCaster.mdl",GetFilterUnit(),"origin"))
    return GetOwningPlayer(GetFilterUnit()) == Player(0)
endfunction

function Trig_____________________________________001_Actions takes nothing returns nothing
    local group g = CreateGroup()
    
    call GroupEnumUnitsInRect(g,gg_rct________________000,Condition(function filter) ) 
    call GroupEnumUnitsInRange(g,GetRectCenterX(gg_rct________________000),GetRectCenterY(gg_rct________________000),900,Condition(function filter) )
    call GroupEnumUnitsInRange(g,GetUnitX(gg_unit_hfoo_0000),GetUnitY(gg_unit_hfoo_0000),900,Condition(function filter) )
    
    call DestroyGroup(g)
    set g = null
    call BJDebugMsg("сработало!")
endfunction

//===========================================================================
function InitTrig_____________________________________001 takes nothing returns nothing
    set gg_trg_____________________________________001 = CreateTrigger(  )
    call TriggerAddAction( gg_trg_____________________________________001, function Trig_____________________________________001_Actions )
endfunction
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
Неуж-то так сложно посмотреть нотацию?
Всегда слышу только осуждение) Неужели никто не умеет общаться по-человечески, а не приравнивать всех к самому себе. :)
Я читал аннотацию, читал вики по JASS, но есть люди, которые не имеют такое прекрасное мышление как у Вас. Это я вам как Маркетолог говорю.
nazarpunk:
udg_Temp не логическая, а boolexpr. От использования которых лучше отказаться.
Если это просто придирка к фразе "логическая" - то считаю она неуместна. Ибо я заранее уже извинился за свое толкование.
nazarpunk:
От использования которых лучше отказаться.
Почему стоит отказаться?
nazarpunk:
Все области лежат в переменных. Проще всего на гуй сделать триггер с нужной областью, превратить в текст и скопировать переменную.
При том что я не великий пользователь редактора (повторяюсь уже 2/3 раз) - я попытался понять о чем вы с затруднением.
Я уже указывал область через гуи "gg_rct_...". Но область у меня записывается в переменную, а не ранее созданная на карте. И я также указывал "udg_newpoint" Вместо "mapInitialPlayableArea". Триггер не выполнял поиск по новой области.
nazarpunk:
Можно же просто открыть первое попавшееся заклинание и посмотреть, как там перебирают юнитов.
Посмотрел, ситуация в том что эта способность вообще не задействует "GroupEnumUnitsInRect". А задействует другие функции. Это если мы продолжаем придираться к мелочам.
Но, заранее вам дам ответ на ваше следующее сообщение "Сложно посмотреть нотацию по другим функциям?" - да как бы не сложно, просто я сюда пришел получить помощь от умных ребят. Дабы закрыть тот момент когда Я САМОСТОЯТЕЛЬНО не могу закрыть этот вопрос долгие часы. Или на данном сайте можно задавать вопросы только "гиппер сложные"?
Такое чувство будто я зарабатываю на хобби, в котором меня ругают что я глуповат -_-"
30
Всегда слышу только осуждение) Неужели никто не умеет общаться по-человечески, а не приравнивать всех к самому себе. :)
К сожелению, после сотого вопроса наподобие "как вычислить процент от числа на гуи без утечек" режим осуждения включается по умолчанию.
Если это просто придирка к фразе "логическая" - то считаю она неуместна.
А я считаю, что если не использовать общепринятую терминологию, то можно внести в беседу много путаницы. Кому оно нужно?
Почему стоит отказаться?
В большинстве случаев, и так будет перебор юнитов в группе. В нём и можно отсеять ненужных юнитов. А так, получается двойная работа - сначала вызываем функцию для каждого юнита, а потом вызываем функцию для кадого оставшегося юнита. Ну и не забываем, что булекспр это хендл со всеми вытекающими.
Но область у меня записывается в переменную, а не ранее созданная на карте.
Всем областям, из редактора областей будет присвоена переменная. Так что у всех области будут записаны в переменную.
Триггер не выполнял поиск по новой области.
Можно посмотреть на код для начала?
просто я сюда пришел получить помощь от умных ребят
Эх, умных ребят придётся долго ждать...
Или на данном сайте можно задавать вопросы только "гиппер сложные"?
Можно любые. Правда и ответы на них будут соответствующие.
Такое чувство будто я зарабатываю на хобби, в котором меня ругают что я глуповат -_-"
Здесь всех ругают, в ётом вы не одиноки.
2
Можно посмотреть на код для начала?
Вот тут я "видимо" неверно указываю область и далее триггер не закидывает юнитов в группу.
Хотя если я не использую call GroupEnumUnitsInRect и использую простое действие - то все работает.
Сильно не обращайте внимание зачем мне это нужно, это просто "вырванный" кусок из всего триггера.
Но даже этот вырванный не работает. (событие Каждые 10 сек)
Загруженные файлы
30
zpxo, гуй перемешанный с личным сценарием. Видимо всё-таки прийдётся подождать умных ребят.
10
Привет! Поковырялся чуток, прикладываю скрин, видео и карту. Буквально: скачиваешь редактор JNGP это продвинутый редактор позволяющий без вазелина с маслом вкатиться в жасс. Чтобы ссылаться на ранее созданную область вместо "mapInitialPlayableArea" необходимо создать область(кто бы мог подумать xd) , создать триггер гуишный, в нём создать например событие юнит входит в область, выбрать эту область, затем конвертировать в жасс и найти это событие, в нем найти параметр rect у функции(в скобочках между запятыми, в видосе подробнее), рекомендую для этого JNGP , он собственно показывает где какой параметр у функций, плюс в нем можно собсна посмотреть все функции чо они делают чо умеют и тогдалее, для оптимизации.
Чтобы выбрать всех в диапазоне нужно будет использовать другую нативку:
Вместо g мелкой вставляешь какую хочешь группу, если не то вставишь то JNGP тебе подскажет в чём ты ошибся и что надо исправить. вместо filter пишешь свой фильтр, ну там в видосе подробнее.
(Это для области)	call GroupEnumUnitsInRange(g,GetRectCenterX(gg_rct________________000),GetRectCenterY(gg_rct________________000),900,Condition(function filter) )
(Это для юнита)    	call GroupEnumUnitsInRange(g,GetUnitX(gg_unit_hfoo_0000),GetUnitY(gg_unit_hfoo_0000),900,Condition(function filter) )
Полный код, разбираемый в видео:
function filter takes nothing returns boolean
    call BJDebugMsg("сработало!"+GetUnitName(GetFilterUnit()))
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\Flare\\FlareCaster.mdl",GetFilterUnit(),"origin"))
    return GetOwningPlayer(GetFilterUnit()) == Player(0)
endfunction

function Trig_____________________________________001_Actions takes nothing returns nothing
    local group g = CreateGroup()
    
    call GroupEnumUnitsInRect(g,gg_rct________________000,Condition(function filter) ) 
    call GroupEnumUnitsInRange(g,GetRectCenterX(gg_rct________________000),GetRectCenterY(gg_rct________________000),900,Condition(function filter) )
    call GroupEnumUnitsInRange(g,GetUnitX(gg_unit_hfoo_0000),GetUnitY(gg_unit_hfoo_0000),900,Condition(function filter) )
    
    call DestroyGroup(g)
    set g = null
    call BJDebugMsg("сработало!")
endfunction

//===========================================================================
function InitTrig_____________________________________001 takes nothing returns nothing
    set gg_trg_____________________________________001 = CreateTrigger(  )
    call TriggerAddAction( gg_trg_____________________________________001, function Trig_____________________________________001_Actions )
endfunction
Загруженные файлы
Принятый ответ
2
Привет! Поковырялся чуток, прикладываю скрин, видео и карту.
Доброго времени суток!
Спасибо ОГРОМНОЕ за помощь! Все разжевали и показали. Как по мне проделана большая работа!
Не ожидал такой обратной связи) С утра встал и залип на час)
Был бы рад получить приглашение на Discord сервер, дабы присоединиться. А так еще раз спасибо!
30
А так еще раз спасибо!
Если помогло, то выберите лучший ответ.
Был бы рад получить приглашение на Discord сервер, дабы присоединиться.
Ссылка на дискорд есть в меню на главной.
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.