Расположение предметов в области
|
|
RTx | Дата: Вторник, 23 Февраля 2010, 22:28:35 | Сообщение # 1 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| Суть загвоздки: у меня есть Х кол-во предметов одного типа, мне нужно рандомно раскидать их в нужной зоне, НО в этой зоне есть много декораций (деревья, камни и т.д.) в которых могут быть пространства до которых юнитом не дойти, а вот предмет создаться там может Вопрос: как можно создать эти предметы, но с проверкой, что допустим в районе 150 от рандомной точки куда хочет создасться предмет, никаких декораций нет. Я пробовал, чтобы сначала рандомно определить точку в области, после выбрать все декорации от этой точке в радиусе 150, но вот тут загвозка как посчитать сколько декораций находиться у меня в выборе? Уф, вроде все предельно ясно расписал
|
|
|
|
[DUОS] | Дата: Вторник, 23 Февраля 2010, 22:49:49 | Сообщение # 2 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (RTx) как посчитать сколько декораций находиться у меня в выборе? RTx, Ну, ты же можешь использовать целочисленную для их подсчёта
|
|
|
|
RTx | Дата: Вторник, 23 Февраля 2010, 23:17:52 | Сообщение # 3 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| Эм, что целочисленый это да, но вот какая функция может их посчитать? Что-то типа условия "Кол-во выбраных декораций меньше/равно..... " Добавлено (23-02-2010, 23:17) --------------------------------------------- Неправильно написал, если точнее: как можно занести в эту целочисленную переменую кол-во выбраных юнитов? Ведь там нет такой функции...
|
|
|
|
Kаrat | Дата: Среда, 24 Февраля 2010, 01:59:27 | Сообщение # 4 |
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Quote (RTx) Неправильно написал, если точнее: как можно занести в эту целочисленную переменую кол-во выбраных юнитов? Ведь там нет такой функции... Как я понял, имелось ввиду, выбирать декорацию и с каждой выбранной добавлять к целочисленной переменной единицу,а потом просто проверять чему она равна. Вот простой пример: http://s57.radikal.ru/i158/1002/e1/f6f69d58f78c.jpg
|
|
|
|
RTx | Дата: Среда, 24 Февраля 2010, 07:48:03 | Сообщение # 5 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| Смогу проверить это только вечером, но разве тут не будет такого, что сначала просто выделяются все декорации в радиусе 500, и после добавляеться +1 к переменной независимо сколько декораций выделено.
|
|
|
|
Svyaga | Дата: Четверг, 25 Февраля 2010, 00:34:57 | Сообщение # 6 |
7 уровень
Группа: Проверенные
Сообщений: 472
Награды: 0
Репутация: 65
Блокировки:
| Вот кусок кода, который может помочь, просто используй там где требуется, указывая тип предмета и область. Эта система уже и подсчитывает декорации, и создаёт предмет, и создаёт в другом месте если декораций слишком много. Code globals integer Destructables endglobals
function Trig_Is_Destructables takes nothing returns nothing set Destructables = Destructables + 1 endfunction
function Trig_Destructibles_Actions takes itemtype i, rect r returns nothing local location L = Location(GetRandomReal(GetRectMinX(r), GetRectMaxX(r)), GetRandomReal(GetRectMinY(r), GetRectMaxY(r))) //создаём локацию local rect R = Rect(GetLocationX(L) - 150.00, GetLocationY(L) - 150.00, GetLocationX(L) + 150.00, GetLocationY(L) + 150.00) //создаём область set Destructables = 0 call EnumDestructablesInRect( R, null, function Trig_Is_Destructables ) //проверка количества локаций if Destructables < ... then //если локаций небольшое кол-во, то: call CreateItem(i, GetLocationX(L), GetLocationY(L)) //создаётся предмет else //если же декораций много call Trig_Destructibles_Actions(i, r) //то действия повторяются, таким образом будут повторяться пока предмет не создастся в нужной точке endif call RemoveLocation (L) call RemoveRect(R) set L = null set R = null endfunction
Сообщение отредактировал Svyaga - Четверг, 25 Февраля 2010, 07:53:43 |
|
|
|
Kаrat | Дата: Четверг, 25 Февраля 2010, 01:14:24 | Сообщение # 7 |
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Quote (RTx) Смогу проверить это только вечером, но разве тут не будет такого, что сначала просто выделяются все декорации в радиусе 500, и после добавляеться +1 к переменной независимо сколько декораций выделено. Не будет, 100 процентов. Это действие выполняется при выборе каждой декорации, т.е. сколько декораций, столько раз оно и выполнится.
|
|
|
|
RTx | Дата: Четверг, 25 Февраля 2010, 20:44:26 | Сообщение # 8 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| Kаrat, хм а я даже не подозревал что это действие так работает, теперь буду знать =) спасибо Svyaga, большое спасибо, что избавил меня от головной боли=) И видя как всетаки кратко можно написать на jass, и как у меня выходит на gui геморойно из за отсутствия цикла с условием всетаки решился начать осваивать jass, большое спасибо =) 2Dragon93 Темку можно закрывать
|
|
|
|