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

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

Закрытая тема
 
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
Респ мобов
Плз помогите с респом мобов (БЕЗ ДЛЯ КАЖДОГО ОБЛАСТЬ) а то я что-то не то намутил:
События:
Боевая единица- Событие игрока Нейтрально-Враждебный Умирает
Условия:
Действия:
Ждать60.00 игровых секунд
Если (((Умирающий юнит) типа Наземная боевая единица) равно Да) то делать (Заменить ((Умирающий юнит) на (Тип бнита (Умирающий юнит)) используя Максимальные параметры боевой единицы жизнь и ману) иначе (Триггер - Запустить (Этот триггер)
Прошу вашей помощи
P.S В Jass новичек
[+] замечание от Inquisitor: название темы
Старый 28.12.2008, 12:43
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
А зачем делать такой респ.... если можно создавать на месте умирающего юнита нового юнита?
Старый 28.12.2008, 12:44
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
У меня на карте больше 500 мобов и для каждого область чтоли делать???
Старый 28.12.2008, 13:15
Gres
Кораэлестраз
offline
Опыт: 18,575
Активность:
Цитата:
Сообщение от Ranger21
А зачем делать такой респ.... если можно создавать на месте умирающего юнита нового юнита?

а затем что если крип погониться за героем и умрет в пути(далеко от своей зоны), то при следующем создании он появиться не в том месте где должен быть!

Автор! Изначально просто записывай позиции мобов и записывай самих мобов в переменные... после их смерти востанавливай новых в записанной позиции и в переменную с мобом записывай нового созданного юнита!
Старый 28.12.2008, 13:16
Scorched

offline
Опыт: 7,912
Активность:
к слову - то, что ты написал в действиях - бред =\ не заменить юнит, а создать; и запускать триггер не надо в иначе
Старый 28.12.2008, 13:28
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
Подскажите что можно сделать чтобы они появлялись в одном месте???(Чтобы без гемора)
Старый 28.12.2008, 13:52
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Цитата:
Сообщение от mrumbert
Подскажите что можно сделать чтобы они появлялись в одном месте???(Чтобы без гемора)


одно из двух
1)создание локаций
2) уже предложил Gres
Старый 28.12.2008, 14:11
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
Цитата:
Сообщение от Gres
а затем что если крип погониться за героем и умрет в пути(далеко от своей зоны), то при следующем создании он появиться не в том месте где должен быть!
Вот это у меня и происходит!!!

Цитата:
Сообщение от ELDAR
одно из двух
1)создание локаций
2) уже предложил Gres
я не очень понял...
Старый 28.12.2008, 14:16
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
mrumbert
1) для каждой кучки по области
2)
Цитата:
Сообщение от Gres
Автор! Изначально просто записывай позиции мобов и записывай самих мобов в переменные... после их смерти востанавливай новых в записанной позиции и в переменную с мобом записывай нового созданного юнита!
Старый 28.12.2008, 15:07
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
Гемор..
У меня 982 юнита на карте!!!
С этим я точно не справлюсь..........
Старый 28.12.2008, 15:49
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
Все делается элементарно через локальные переменные и хоть 10000000000 у тебя юнитов

Артте добавил:
Вообще загвоздка в 1-юнит возродится в том месте, где его убили. А если надо именно в том месте, где он был изначально...можно проверять нечто вроде "Unit within range", если подходящий юнит-враг, герой, запоминаешь позицию и все
Старый 28.12.2008, 16:13
Arikshtein

offline
Опыт: 429
Активность:
Цитата:
Сообщение от Артте
Вообще загвоздка в 1-юнит возродится в том месте, где его убили. А если надо именно в том месте, где он был изначально...можно проверять нечто вроде "Unit within range", если подходящий юнит-враг, герой, запоминаешь позицию и все

Что "все" ? И при чем тут враги и герои, которые находятся поблизости ?
Старый 28.12.2008, 16:33
RealInt

offline
Опыт: 151
Активность:
Данный способ основан на всеми давно известном методе использования UnitData.
1. Создай глобалки:
Код:
globals
    integer creep_index = 0
    real array creep_x
    real array creep_y
endglobals


2. Запусти эту функцию 1 раз, например после того как все твои 982 нейтрала уже есть на карте, т.е. их местоположение известно. Если же ты добавляешь крипов в ходе игры, динамически, то думаю без труда сможешь переделать эту функцию под вызов для 1 юнита.
Код:
function Set_CreepPos takes nothing returns nothing
    call SetUnitUserData(GetEnumUnit(), creep_index)
    set creep_x[creep_index] = GetUnitX(GetEnumUnit())
    set creep_y[creep_index] = GetUnitY(GetEnumUnit())
    set creep_index = creep_index + 1
endfunction

function Enum_Creeps_Filter takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false and GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0
endfunction

function Enum_Creeps takes nothing returns nothing
    local group g = CreateGroup()
    call GroupEnumUnitsOfPlayer(g, Player(PLAYER_NEUTRAL_AGGRESSIVE), Condition(function Enum_Creeps_Filter))
    call ForGroup(g, function Set_CreepPos)
    call DestroyGroup(g)
    set g = null
endfunction


3. В действиях триггера который отвечает за респаун вставь этот код.
Код:
function any_name_you_want takes nothing returns nothing
    local integer p = GetPlayerId(GetOwningPlayer(GetDyingUnit()))
    local integer typeId = GetUnitTypeId(GetDyingUnit())
    local integer i = GetUnitUserData(GetDyingUnit())
    call TriggerSleepAction(60.0)
    call SetUnitUserData(CreateUnit(Player(p), typeId, creep_x[i], creep_y[i], bj_UNIT_FACING), i)
endfunction

Отредактировано RealInt, 28.12.2008 в 18:53.
Старый 28.12.2008, 17:14
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
Arikshtein
Подумай.. Юнит начинает двигаться, если рядом враг-двигаться к нему. Вот мы и запоминаем его положение, когда враг только подходит. А радиус надо поставить такой же, как и радиус при котором юниты атакуют врага
Старый 28.12.2008, 18:55
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
Млин я шару в триггерах тока по тому что у меня стоит руссификатор триггеров Может ктонить сможет это в пустой карте выложить???
Там уж пойму...
Старый 30.12.2008, 11:24
RazArt

offline
Опыт: 11,197
Активность:
Так пойдёт?
Прикрепленные файлы
Тип файла: w3x RespSystem.w3x (14.0 Кбайт, 50 просмотров )
Старый 30.12.2008, 11:28
agentex

offline
Опыт: 34,834
Активность:
Цитата:
Гемор..
У меня 982 юнита на карте!!!

тогда советую использовать NCSS, если у тя не группы нейтралов, а по 1 они стоят, просто поставь значение [Creep Camp detection radius] на 10
Старый 30.12.2008, 11:50
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
[Integer_MobsCount] = GetUnitLoc(GetEnumUnit())
Отсутствует название(
КАРОЧЕ ЧТО-ТО НЕ ТАК
Старый 30.12.2008, 12:28
RazArt

offline
Опыт: 11,197
Активность:
mrumbert, так чем тебе моя наработка не понравилась, там все предельно понятно)
Старый 30.12.2008, 12:34
mrumbert
Пёсики...
offline
Опыт: 531
Активность:
Он пишет типа отсутствует название в какойкто табличке в выделенно там [Integer_MobsCount] = GetUnitLoc(GetEnumUnit()) В общем все норм только редактор не разрешил мне включить триггер у меня на карте вроде все переменные такиеже триггеры скопировал...
Старый 30.12.2008, 12:40
Закрытая тема

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

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

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

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



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