Сейчас 19:39:14 Пятница, 22 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Расположение предметов в области
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 Темку можно закрывать :)

 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz