Как сделать возрождение (revival) Нейтрально-враждебных?
|
|
BuHHu-nyX | Дата: Пятница, 03 Июля 2009, 19:23:36 | Сообщение # 26 |
50 уровень Превед медвед
Группа: Ветераны
Сообщений: 1941
Награды: 2
Репутация: 437
Блокировки:
| Можно сделать очень просто. Создать один триггер, в котором: Событие: Юнит умирает Условие: Владелец(Умирающий юнит) равно Нейтрально-Враждебный Действие: Тут уже можно через локальные, а можно и через массивную переменную. Я напишу через массивную переменную. Понадобится еще одна переменная целочисленная. +Поинт. Установить Int = (Int + 1) Установить Unit[Int] = Умирающий юнит Установить Point[Int] = Позиция(Unit[Int]) Ждать 30 секунд Создать юнита в области <0000gen> тип юнита(Unit[Int]) и т.д. Установить Unit[Int] = Нет боевой еденицы CS: call RemoveLocation(udg_Point[udg_Int]) Установить Int = 0.00 По идее так. Писал сразу тут. -) Можно и на КС.
|
|
|
|
Snyppi-killer | Дата: Пятница, 03 Июля 2009, 19:29:51 | Сообщение # 27 |
7 уровень
Группа: Проверенные
Сообщений: 344
Награды: 0
Репутация: 42
Блокировки:
| Помогите! Мне нуно чтоб они не воскрешались а просто сдыхет воин и на его месте появляется такой-же
|
|
|
|
akolit | Дата: Пятница, 03 Июля 2009, 19:32:38 | Сообщение # 28 |
3 уровень
Группа: Пользователи
Сообщений: 59
Награды: 0
Репутация: 10
Блокировки:
| Событие-боевая единица умирает Действие Создать боевую единицу-тип(triggering unit) position of triggering unit
Принципы-это тот архимедов рычаг, с помощью которого можно сдвинуть землю.
|
|
|
|
Zagar | Дата: Пятница, 03 Июля 2009, 20:04:45 | Сообщение # 29 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| BuHHu-nyX, а рабоатет ли? я убиваю одного: Int=0.00+1 Unit [1]=Который сдох Point [1]=Позиция[1] прошло 20 секунд я убиваю второго: Int=1.00+1 Unit [2]=Погибший №2 Point [2]=Позиция[2] Прошло еще 10 секунд: Создается 1 Тип юнита (Умирающий юнит) для Нейтрально-враждебного в позиции Point [1] и т.п. Unit [????(какой?)]=Нет единицы Int=0,00 и на 36 секунде я юбиваю подряд двоих и они записываються соответственно в Unit[Int=1] и Unit[Int=2]..получаеться первый наш второй вообще не появится ладно ладно признаю не проверял)но надо
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
|
|
|
|
BuHHu-nyX | Дата: Пятница, 03 Июля 2009, 20:06:37 | Сообщение # 30 |
50 уровень Превед медвед
Группа: Ветераны
Сообщений: 1941
Награды: 2
Репутация: 437
Блокировки:
| Zagar, проверь. Если не пашет, попробую на локальных тебе заскринить.
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 22:47:04 | Сообщение # 31 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (Dragon93) MaSer, переменная = ссылка ты таким образом теряешь ссылку на объект... Иди учи матчасть и не неси бред.Добавлено (03-07-2009, 22:47) --------------------------------------------- То же самое на вашем ущербном гуи.
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 22:48:29 | Сообщение # 32 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| MaSer, дааа,ты не исправим... Чтож, немного теории: Переменная - это ссылка на определенный игровой объект, но обнуление переменой не значит, что и удалится объект по ссылке из переменой, объект нужно удалять отдельно (ДО(!) обнуления переменой) с помощью специальной функции, т.к. иначе после обнуление переменой ссылка на объект потеряется, и его нельзя будет удалить. К примеру, эффекты удаляются с помощью DestroyEffect Юниты: RemoveUnit Декорации: RemoveDestructable Точки: RemoveLocation Триггеры: DestroyTrigger Таймеры: DestroyTimer и т.д. Правда некоторые объекты не удаляются... т.е. DestroyTrigger не полностью удаляет триггер... перед этим еще нужно удалить все его действия выключить подождать секунду и потом удалить и обнулить.
El Psy Congroo
|
|
|
|
SkeletoN12 | Дата: Пятница, 03 Июля 2009, 22:50:07 | Сообщение # 33 |
3 уровень
Группа: Заблокированные
Сообщений: 53
Награды: 0
Репутация: -8
Блокировки:
| http://depositfiles.com/files/ncfu6l1dn ВОТ ВОСКРЕШЕНИЕ МОБОВ КАЖДЫЕ 10 СЕК
<b>Alice</b>, из за тебя пропадает смысл в паролях, а так же постоянно будет требоваться пинать админа...(Enforcer)
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 22:50:43 | Сообщение # 34 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (Dragon93) дааа,ты не исправим. А ты бездарен по ходу Quote (Dragon93) Переменная - это ссылка на определенный игровой объект, но обнуление переменой не значит, что и удалится объект по ссылке из переменой, объект нужно удалять отдельно (ДО(!) обнуления переменой) с помощью специальной функции, т.к. иначе после обнуление переменой ссылка на объект потеряется, и его нельзя будет удалить. Тебе никто не говорил, что если удалить что-то оно не будет работать, ммм?
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 23:01:31 | Сообщение # 35 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| Quote (MaSer) Тебе никто не говорил, что если удалить что-то оно не будет работать, ммм? я это знаю,но надо удалять вовремя(я же писал что надо отловить момент,когда закончит работать нужная функция Quote (MaSer) А ты бездарен по ходу по себе не судят...
El Psy Congroo
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 23:02:43 | Сообщение # 36 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (Dragon93) я это знаю,но надо удалять вовремя(я же писал что надо отловить момент,когда закончит работать нужная функция Она закончит работать, когда закончится игра. Сам триггер инициализации удалять смысла нету. Их не удаляют.
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 23:05:39 | Сообщение # 37 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| MaSer, но он будет во время работы мапы сидеть в память,при каждом респе создаёться и не убираеться такой триг => утечки,а утечки в большом кол-ве вызывают лаги...
El Psy Congroo
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 23:17:28 | Сообщение # 38 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Quote (Dragon93) MaSer, но он будет во время работы мапы сидеть в память,при каждом респе создаёться и не убираеться такой триг => утечки,а утечки в большом кол-ве вызывают лаги... Читай код. Он создается один раз.
|
|
|
|
DragoN | Дата: Пятница, 03 Июля 2009, 23:28:01 | Сообщение # 39 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| MaSer, а респ понадобиться 1 раз?
El Psy Congroo
|
|
|
|
MaSer | Дата: Пятница, 03 Июля 2009, 23:37:44 | Сообщение # 40 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Dragon93, там ивент один на всех юнитов 13го игрока. Читай внимательно.
|
|
|
|
nekron_013 | Дата: Суббота, 04 Июля 2009, 10:34:11 | Сообщение # 41 |
3 уровень
Группа: Проверенные
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| БАМ, вообшето этот триггер может действовать на всех юнитов одновременно.. Добавлено (04-07-2009, 10:34) --------------------------------------------- Но воскрешатся они будут там где погибли..
|
|
|
|
MaSer | Дата: Суббота, 04 Июля 2009, 14:33:05 | Сообщение # 42 |
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
| Кстати нет, в моем гуишном варианте маленький баг (: Править не буду - правьте сами +)
|
|
|
|
DragoN | Дата: Воскресенье, 05 Июля 2009, 18:28:00 | Сообщение # 43 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| MaSer,ладно,думаю ты бред вряд ли напишешь раз уж для жнгп то: Code library resp initializer Res_Init //Globals globals private gamecache cache = InitGameCache("map") private real timeout = 30.//Timeout for ressurect private real array UXS private 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 private 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
private 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 g = null - не уверен,нужно ли... set t = null endfunction
endlibrary хотя это и на scope можно заменить ^^ так же вроде надо обнулять локалку g...
El Psy Congroo
|
|
|
|
БАМ | Дата: Воскресенье, 05 Июля 2009, 18:51:11 | Сообщение # 44 |
10 уровень
Группа: КоМодераторы
Сообщений: 2490
Награды: 5
Репутация: 1223
Блокировки:
| Quote (nekron_013) вообшето этот триггер может действовать на всех юнитов одновременно Да, извини, невнимательно просмотрел событие.
|
|
|
|
STAWR | Дата: Пятница, 10 Июля 2009, 16:24:18 | Сообщение # 45 |
7 уровень
Группа: Проверенные
Сообщений: 387
Награды: 0
Репутация: 3
Блокировки:
| Задача и впрямь сложная
|
|
|
|
Пейн | Дата: Пятница, 10 Июля 2009, 17:06:14 | Сообщение # 46 |
7 уровень
Группа: Заблокированные
Сообщений: 349
Награды: 0
Репутация: 57
Блокировки:
| В игровых константах пробывал искать ?!
<b>Alice</b>, из за тебя пропадает смысл в паролях, а так же постоянно будет требоваться пинать админа...(Enforcer)
|
|
|
|
Devil-Boy | Дата: Воскресенье, 16 Августа 2009, 13:50:55 | Сообщение # 47 |
6 уровень
Группа: Пользователи
Сообщений: 162
Награды: 0
Репутация: 2
Блокировки:
| Можно поступить так - но это потребует занять обычное значение умирающего юнита. Тригер № 1 Событие - время прошло 0.01 Действия -Отряд - Выбрать каждого юнита в (юниты пренадлежщие Нейтрально враждебнвй) и сделать действия: --Если Условия выбраный юнит здание не равно да выбраный юнит герой не равно да (можно внести типы или отметить те юниты которые не должны перерождаться) --то Действия Установить преременную ПЕРЕМЕННАЯ 1 (целочисленная) = ПЕРЕМЕННАЯ 1+1 Боевая единаица - установить обычное значание для (Выбраный юнит) на ПЕРЕМЕННАЯ 1 -Отряд - Выбрать каждого юнита в (юниты пренадлежщие Нейтрально враждебнвй) и сделать действия: --Если Условия выбраный юнит здание не равно да выбраный юнит герой не равно да (можно внести типы или отметить те юниты которые не должны перерождаться) --то Действия Установить переменную ПЕРЕМЕННАЯ 2 Массив(Обычное значение юнита(Выбраный юнит)) (Точка) = позиция выбраный юнит И Тригер №2 Событие -Боевая единица - Умирает -Боевая единица - Меняет владельца Условия Владелец (Переключающий юнит) равно Нетрально враждебный Действие Ждать (время респауна (у меня 30 сек в RPG)) Создать 1 - Тип юнита (переключающий юнит)) для нейтрально враждебный в ПЕРЕМЕННАЯ 2 (масив Обычное значаение юнита(переключающий юнит) Боевая ед. - установить обычное значение для (последний созданный юнит) на (обычное значение умирающий юнит) Боевая tl. - установить обычное значение для умирющий юнит на 0. Уф ну вот так!
Нас здесь двое - Devil & Boy
|
|
|
|
Zagar | Дата: Воскресенье, 16 Августа 2009, 17:00:10 | Сообщение # 48 |
7 уровень
Группа: Проверенные
Сообщений: 397
Награды: 0
Репутация: 75
Блокировки:
| Devil-Boy, это что получаеться? это каждую милисекунду, все нейтралы записываются в массив одной переменной,а также их позиция..это я понял, а последний триг так и остался непонятным.умирает какой-то нейтрал.создается такой же.только в какой позиции то???далее ваще даже, вникнуть не мог
Хочешь сидеть на шее?Раздвигай ноги!Сомнения?...лучше не думай
|
|
|
|
warIker | Дата: Воскресенье, 16 Августа 2009, 18:00:56 | Сообщение # 49 |
7 уровень
Группа: Проверенные
Сообщений: 356
Награды: 0
Репутация: 91
Блокировки:
| -Castro- класно тока у мну триггеры на англ.))))
([ Ландшафт - 9/10]+[ GUI - 9/10]+[ Jass - 2/10]+[ Креатив - 9/10])/4 = 29/40 ТЫК! :3
|
|
|
|
Akama | Дата: Воскресенье, 16 Августа 2009, 18:18:12 | Сообщение # 50 |
7 уровень
Группа: Заблокированные
Сообщений: 263
Награды: 0
Репутация: 27
Блокировки:
| Лично я ресаю так: Ну например мне нужно реснуть волка нейтрально-враждебного. Я создаю территорию где его нужно реснуть и делаю триггер: Событие: Боевая единица - A unit Умирает Условие: (Unit-type of (Triggering unit)) ровно Волк Действие: Wait *через сколько сек реснуть* seconds Боевая единица - Create 1 Волк for Нейтрально-враждебный at (Random point in *территория где ресаются волки*) facing Стандартная ориентация зданий degrees
<b>Alice</b>, из за тебя пропадает смысл в паролях, а так же постоянно будет требоваться пинать админа...(Enforcer)
|
|
|
|