Сейчас 03:47:21 Суббота, 27 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как сделать возрождение (revival) Нейтрально-враждебных?
Как сделать возрождение (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)
 

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

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