XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
их ты..ясно дело что нет..сейчас буду добивать..

Отредактировано Vampirrr, 30.12.2008 в 22:12.
Старый 30.12.2008, 22:07
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Код:
function my_function takes nothing returns nothing 
    local integer a=0
    loop
        exitwhen IsUnitInGroup(GetTriggerUnit(),GetUnitsInRectAll(udg_Square[a]))
        set a=a+1
    endloop
endfunction

Выйдет из цикла, когда триггер юнит будет в первом папвшемся ректе udg_Square
Старый 30.12.2008, 23:08
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Hellfim, так нам не триггер юнит нужно, а юнит в другом квадратике красного или синего игрока) ведь белый слон не может встать на одну и ту же клетку с другой белой фигурой). Было б шикарно, если б можно было поставить

exitwhen IsUnitInGroup(Player(1),GetUnitsInRectAll(udg_Square[a]))

J, проиндексировал как ты сказал, теперь наконец-то стрелочки создаются, но создаются во всех клетках по СТРОКЕ вправо, начиная с пикнутого юнита. По крайней мере уже что-то есть..
Старый 30.12.2008, 23:15
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Vampirrr, в чем проблема, тогда в цикле проверять на враждебность? Т.е. проиндексировав всех юнитов проверяешь, если стоящий там юнит и триггер юнит одного и того же игрока, то ничего не делать дальше?
Старый 30.12.2008, 23:24
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Hellfim, ну для начала у меня 1 и 2 игроки в друзьях, потом у меня 2 проверки должно быть - если в ректе А нет юнита игрока 1, то снова проверка если в ректе А нет юнита игрока 2, то создать пехотинца (например, у меян не пехотинцы а стрелочки). Если же в ректе А нет юнита игрока 1, но есть юнит игрока 2, то создаем черепок..
Старый 30.12.2008, 23:29
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Что ты вообще хочешь сделать? Думаю так будет гораздо проще.
Старый 30.12.2008, 23:42
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Hellfim, то что я хотел сделать -
» тут
http://xgm.ru/forum/showthread.php?t=21136


а вот то что я хотел:
Код:
exitwhen ( not (IsUnitGroupEmptyBJ(GetUnitsInRectOfPlayer(udg_Square[a+8*b], Player(0)))) )
exitwhen ( not (IsUnitGroupEmptyBJ(GetUnitsInRectOfPlayer(udg_Square[a+8*b], Player(1)))) )


В общем теперь такой вопрос - как мне реализовать правильно что бы в случае нахождения в ректе юнита синего игрока, там создавался юнит типа черепок, а до него создавался юнит типа стрелочка =) ну черепок и стрелочка это уже сделано, мне нужен принцип триггера)

Отредактировано Vampirrr, 30.12.2008 в 23:56.
Старый 30.12.2008, 23:50
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Vampirrr, ну если ты уверен в своих формулах, то
Код:
loop
    exitwhen i>64
    if ( not (IsUnitGroupEmptyBJ(GetUnitsInRectOfPlayer(udg_Square[a+8*b], Player(0)))) ) then
    call Create Unit//параметры задаешь сам
    endif
    set a=a+1
endloop

И так же для второго игрока. Должно работать.
Старый 31.12.2008, 00:02
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Hellfim, буду пробовать, спс)
Старый 31.12.2008, 00:11
J
expert
offline
Опыт: 48,447
Активность:
Hellfim не давай тупые советы
Vampirrrя тебе уж сказал, сделай массив юнитов, индекс юнита показывает что за юнит находится в ректе под темже индексом, кгда раставляеш юнитов, то вручную заполняй этот массив, когда триггерно передвигаеш, обнуляй ячейку где был юнит, и ставь в ту куда передвигается

J добавил:
Цитата:
но создаются во всех клетках по СТРОКЕ вправо, начиная с пикнутого юнита. По крайней мере уже что-то есть..
чтобы создавались не на всех клетках там в каждом цыкле стоит проверка на нахождение юнита в ректе, ты наверно ее убрал для теста или неправельно сделал, должна возвращаеь true если в ректе находится юнит
чтобы стрелки создавались во всхех направлениях поставь заного те 3 цыела что ты убрал для теста

J добавил:
кстате, если по хорошему то вообще никаких ректов быть не должно
Старый 31.12.2008, 06:01
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
J, по поводу массива - у меня 4 расы + в каждой расе по 6 фигур + выбирается одна из рас и создаются триггерно юниты + каждому типу фигуры свой рект - я таким макаром хз сколько буду писать переменные юнитам. А вот по поводу
Цитата:
кстате, если по хорошему то вообще никаких ректов быть не должно
- я с тобой согласен..Это вообще 2 карта подобного типа, которую я делаю, а 1 забросил из-за корявости интерфейса да и она чисто была идеей..Но там я юзал координаты и не создавал никаких ходов, а тупо шла проверка если в ректе созданном координатами есть юнит, то проверка на тип юнита и действие..
Старый 31.12.2008, 06:57
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
я таким макаром хз сколько буду писать переменные юнитам. А вот по поводу
я непонял в чем проблема... повторю, один массив в ячейке которого будет находится юнит что находится в такомто ректе, причем тут игрок, тип и прочее? их можно узнать из самого юнита...
Старый 31.12.2008, 07:02
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
J, проблема в том, что я не понял тебя) но вот, посмотри:

for loop (Integer A) from 1 to Y
actions
Create 1 Pig at position square[1] facing bla-bla-bla
set last created unit = unit[1]

и т.д..

Так?
Старый 31.12.2008, 07:10
J
expert
offline
Опыт: 48,447
Активность:
да
Старый 31.12.2008, 07:45
RazArt

offline
Опыт: 11,197
Активность:
Вот моя реализация, как просил на гуи
Прикрепленные файлы
Тип файла: w3x Chess.w3x (26.2 Кбайт, 15 просмотров )
Старый 31.12.2008, 11:00
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
RazArt, гут, молодец) - это тебе за все утро))

Темку уже пора closed =)
Старый 31.12.2008, 20:52
J
expert
offline
Опыт: 48,447
Активность:
RazArt, добро пожаловать в общество говнокодеров...
Vampirrr, кстате, просто имей виду что это необязательно на джасе делать, то что я сказал, именно сам принцып, можно реализовать нормально и на гуи, но на джасе просто удобнее, формулы пишутся легко, и пр. а на гуи прийдется с назойливыми виндовс окошечками трудицо... ах и да, на гуи это будет смотрется более трудно читаемо, и запутатся легче, когда на джасе компактнее, к этому просто надо привыкнуть=)

Отредактировано J, 31.12.2008 в 21:08.
Старый 31.12.2008, 21:03
RazArt

offline
Опыт: 11,197
Активность:
J, чё, энто ты к чему? О_О
Старый 31.12.2008, 21:05
J
expert
offline
Опыт: 48,447
Активность:
RazArt ты зделал так, как я уже пару страниц 2-ух тем говорю делать нельзя

J добавил:
Vampirrr кстате, если логическо подумать нужно нумеровать ячейки с нижнего левого угла, откуда счет цыфр и букв начинается, я чето сначало не подумал, если вдруг захочеш так сделать то при расчете строки, поменять координкату угла и юнита местами при вычитании, но тогда счет строк будет вестись естесна снизу а не сверху, и вызовет некоторые неудобства
Старый 31.12.2008, 21:11
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
J, вот по этому код и не работал как надо) я сначала проиндексировал криво, потом проиндексировав нормально, где-то нужно было меня координаты)) я только не пойму, почему нельзя?) просто потому что по-нубски или это действительно влияет на игру?)
Старый 01.01.2009, 00:41
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:51.