Сейчас 00:44:39 Четверг, 9 мая, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как сделать возрождение (revival) Нейтрально-враждебных?
Как сделать возрождение (revival) Нейтрально-враждебных?
ZagarДата: Четверг, 02 Июля 2009, 22:32:20 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
Мне надо сделать возрождение крипов с учетом того, чтобы они появлялись на том месте,где они стоят при загрузке карты....

Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай


Сообщение отредактировал Zagar - Пятница, 03 Июля 2009, 00:21:03
 

MeckДата: Четверг, 02 Июля 2009, 22:39:26 | Сообщение # 2
8 уровень
Группа: Проверенные
Сообщений: 645
Награды: 0
Репутация: 35
Блокировки:
Zagar, ну можеш добавить им магию возрождения убрав перезарядку ману и ....
Либо занося в переменную и после создание на месте позиции юнита (твой юнит)

Добавлено (02-07-2009, 22:39)
---------------------------------------------
Meck, впринципе вопрос немного непонятно написан

 

ZagarДата: Четверг, 02 Июля 2009, 22:45:10 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
Quote (Meck)
после создание на месте позиции юнита

мне не надо чтобы он появился в том месте где его завалили, мне надо чтобы он появился, где ему положено стоять,т.е. когда карта загрузилась волк стоит в лесу,потом на него напали и он побежал за нападавшим....тот его потом убил на тропе какой-нить, прошло 20 секунд волк появился не в лесу , а на тропе, а он мне там не нужен


Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
 

MalfattoДата: Четверг, 02 Июля 2009, 22:45:30 | Сообщение # 4
Группа: Модераторы
Сообщений: 3806
Награды: 7
Репутация: 2425
Блокировки:
Zagar, При загрузке карты нужно каждого из них (можно через массив) записать - где они находятся. А потом, когда это нужно, воскрешать и давать им положение, записанное в переменную.
 

ZagarДата: Четверг, 02 Июля 2009, 22:46:34 | Сообщение # 5
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
Zak, а расписать? :)

Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
 

MeckДата: Четверг, 02 Июля 2009, 22:47:41 | Сообщение # 6
8 уровень
Группа: Проверенные
Сообщений: 645
Награды: 0
Репутация: 35
Блокировки:
Zagar, без понятия, так там нечего ненашол в тригере скорей всего только через переменную, ну а через переменную я думаю ты зделаеш.
 

ZagarДата: Четверг, 02 Июля 2009, 22:50:34 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
Quote (Meck)
ну а через переменную я думаю ты зделаеш.
Quote (Zak)
записать - где они находятся.давать им положение, записанное в переменную.

это мне надо область для каждого создать?


Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
 

БАМДата: Четверг, 02 Июля 2009, 23:15:11 | Сообщение # 8
10 уровень
Группа: КоМодераторы
Сообщений: 2490
Награды: 5
Репутация: 1223
Блокировки:
Zagar, нет, сохранить им в качестве переменной их стартовое местоположение, в ручную области создавать необязательно.
 

MeckДата: Четверг, 02 Июля 2009, 23:31:30 | Сообщение # 9
8 уровень
Группа: Проверенные
Сообщений: 645
Награды: 0
Репутация: 35
Блокировки:
Zagar, сделал только для одного нейтрального, для других нужно вписывать переменные, но у меня сейчас бошка неварит, на надеюсь поможет ЖМИ.
 

ZagarДата: Четверг, 02 Июля 2009, 23:43:24 | Сообщение # 10
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
Meck, спасибо. Zak, БАМ, так?

вопрос снят с повестки дня.

Прикрепления: 4209216.jpg (47.9 Kb) · 4858257.jpg (60.5 Kb)


Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
 

-Castro-Дата: Пятница, 03 Июля 2009, 00:54:35 | Сообщение # 11
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
Zagar, если у тя мапа 256х256 и куча крипов ты их также в переменную заносить собираешься?

Аффтар, делай такой вот триггер

Получается каждые 30 сек создаются юниты в определенной области, если в ней юнитов нет

Сообщение отредактировал -Castro- - Пятница, 03 Июля 2009, 00:55:54
 

MalfattoДата: Пятница, 03 Июля 2009, 01:47:12 | Сообщение # 12
Группа: Модераторы
Сообщений: 3806
Награды: 7
Репутация: 2425
Блокировки:
Моя задумка как раз по требованиям. Да и в русских триггерах не шарю.
 

EnforcerДата: Пятница, 03 Июля 2009, 01:53:16 | Сообщение # 13
Энф
Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
Я бы как Кастро сделал, через области) Вроде когда то так и делал.

 

lZanozalДата: Пятница, 03 Июля 2009, 01:55:26 | Сообщение # 14
2 уровень
Группа: Пользователи
Сообщений: 27
Награды: 0
Репутация: 24
Блокировки:
Можно создать 2 массива (жалко нет динамических массивов)
1: Точка - Для сохранения позиции юнита
2: Боевая единица - для сохранения юнита
и 1 целочисленную переменную для нумерации юнита с начальным числом 1.

Создаем действие при инициализации
Одряд юниты такого игрока 1
__цикл
____Точка[число] = Позиция юнита репик юнит
____юнит[число] = репик юнит
____Число = число + 1;

далее в процессе смерти юнита проверяем зациклино его позицию в массиве
Событие: юнит умирает
Условие: юнит = принадлежит игрок 1
Действие:
for 1 to размер массива do {
__if ( Если юнит[А] )
подождать время (Wait) появление после смерти
создать боевая единица (Тип репик юнит) в точке (Точка[A])...
Юнит[А] = соданный юнит
else
нет действий
}

Вот идея но есть недостаток надо знать сколько юнитов у игрока и если добавил то и увелич размер массива

Добавлено (03-07-2009, 01:55)
---------------------------------------------
а и добавлю в методе ненужны области


Garena: ~|CFF010101bl
Проект: Затеряный остров - В поисках снежного человека = 48%
 

MaSerДата: Пятница, 03 Июля 2009, 02:37:43 | Сообщение # 15
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Code
/Globals
globals
     gamecache cache = InitGameCache("map")
     real timeout = 30//Timeout for ressurect
     real array UXS
     real array UYS
endglobals
//RB
function U2I takes unit u returns integer
     return u
     return 0
endfunction

function I2U takes integer i returns unit
     return i
     return null
endfunction
//Resurrect system
function OnDie takes nothing returns nothing
     local unit u = GetDyingUnit()
     local integer id = GetUnitTypeId(u)
     local integer i = U2I(u)
     local integer nmb = GetStoredInteger(cache, "nmbs", I2S(i))
     call FlushStoredInteger(cache, "nmbs", I2S(i))
     call TriggerSleepAction(timeout)
     call RemoveUnit(u)
     set u = CreateUnit(Player(12), id, UXS[nmb], UYS[nmb], 0)
     call StoreInteger(cache, "nmbs", I2S(U2I(u)), nmb)
     set u = null
endfunction

function Res_Init takes nothing returns nothing
     local group g = CreateGroup()
     local unit u
     local integer i = 1
     local trigger t = CreateTrigger()
     call GroupEnumUnitsOfPlayer(g, Player(12), null)
     loop
         set u = FirstOfGroup(g)
         exitwhen u == null or i >= 8000
         set UXS[i] = GetUnitX(u)
         set UYS[i] = GetUnitY(u)
         call StoreInteger(cache, "nmbs", I2S(U2I(u)), i)
         call GroupRemoveUnit(g, u)
         set i = i + 1
     endloop
     call DestroyGroup(g)
     call TriggerRegisterPlayerUnitEvent(t, Player(12), EVENT_PLAYER_UNIT_DEATH, null)
     call TriggerAddAction(t, function OnDie)
     set t = null
endfunction

Должно работать. Не тестил, ибо все равно никто не воспользуется. Последнюю функцию запустить на нулевой секунде.




Сообщение отредактировал MaSer - Пятница, 03 Июля 2009, 02:43:30
 

-Castro-Дата: Пятница, 03 Июля 2009, 09:24:14 | Сообщение # 16
УГ продюсер
Группа: Ветераны
Сообщений: 2099
Награды: 3
Репутация: 1213
Блокировки:
Quote (MaSer)
Должно работать. Не тестил, ибо все равно никто не воспользуется. Последнюю функцию запустить на нулевой секунде.

Глупо писать пример на Jass для человека который на триггерах не может сделать возрождение крипов :D

Добавлено (03-07-2009, 09:24)
---------------------------------------------

Quote (Enforcer)
Я бы как Кастро сделал, через области) Вроде когда то так и делал.

в доте так же сделано :D
 

ZagarДата: Пятница, 03 Июля 2009, 11:41:40 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
Quote (-Castro-)
тя мапа 256х256 и куча крипов

нет карта маленькая,если честно когда много областей это тоже вариант, что лучше выбирать область или переменную?
Quote (-Castro-)
пример на Jass

Jass я конечно не знаю, но:
Quote (-Castro-)
не может сделать возрождение крипов :D

сделать я могу,вот мой окончательный вариант(ибо тот создает только один раз),но только спецэффект надо подобрать нужный:



Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай


Сообщение отредактировал Zagar - Пятница, 03 Июля 2009, 11:58:54
 

nekron_013Дата: Пятница, 03 Июля 2009, 12:25:05 | Сообщение # 18
3 уровень
Группа: Проверенные
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
Событие: юнит игрока нейтрально враждебный погиб.
Условие: (сам поставиш если надо)
Действие:создать юнита тип умерающий юнит 1шт поворот на сколько то градусов...
 

БАМДата: Пятница, 03 Июля 2009, 12:43:26 | Сообщение # 19
10 уровень
Группа: КоМодераторы
Сообщений: 2490
Награды: 5
Репутация: 1223
Блокировки:
nekron_013, и ты будешь на каждого юнита отдельный триггер делать?
 

MaSerДата: Пятница, 03 Июля 2009, 13:05:04 | Сообщение # 20
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (-Castro-)
в доте так же сделано

В доте не также сделано
Quote (-Castro-)
Глупо писать пример на Jass для человека который на триггерах не может сделать возрождение крипов

То, что я написал, можно сделать почти в таком же виде и без джасса.


 

DragoNДата: Пятница, 03 Июля 2009, 13:39:01 | Сообщение # 21
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (MaSer)
То, что я написал, можно сделать почти в таком же виде и без джасса.

угу,правда за исключением рб и стора интегеров(и ещё нескольких действий(создание локального трига к примеру))
ЗЫ: MaSer, а разве не нужно уничтожать триг t,для избежания утечек?(правда нужно будет ещё ждать,пока не закончит выполнение функция OnDie иначе эффекта вообще не буит...)


El Psy Congroo


Сообщение отредактировал Dragon93 - Пятница, 03 Июля 2009, 13:39:27
 

MaSerДата: Пятница, 03 Июля 2009, 17:16:17 | Сообщение # 22
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (Dragon93)
ЗЫ: MaSer, а разве не нужно уничтожать триг t,для избежания утечек?(правда нужно будет ещё ждать,пока не закончит выполнение функция OnDie иначе эффекта вообще не буит.

Попробуй, уничтожь. Работать перестанет.
Quote (Dragon93)
угу,правда за исключением рб и стора интегеров(и ещё нескольких действий(создание локального трига к примеру))

Они заменяются на нелокальные триггеры, и кастом велью.


 

DragoNДата: Пятница, 03 Июля 2009, 17:54:28 | Сообщение # 23
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
Quote (MaSer)
Попробуй, уничтожь. Работать перестанет

но ведь локальный триг останеться в памяти?


El Psy Congroo
 

MaSerДата: Пятница, 03 Июля 2009, 17:55:48 | Сообщение # 24
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (Dragon93)
но ведь локальный триг останеться в памяти?

Quote (MaSer)
set t = null


 

DragoNДата: Пятница, 03 Июля 2009, 18:06:46 | Сообщение # 25
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
MaSer, переменная = ссылка
ты таким образом теряешь ссылку на объект...


El Psy Congroo
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как сделать возрождение (revival) Нейтрально-враждебных?
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

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