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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Статья про респавн крипов как в доте. (Требования: минимальные знания JASS)
Статья про респавн крипов как в доте.
lawsonДата: Воскресенье, 20 Февраля 2011, 21:09:06 | Сообщение # 1
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
В общем для тех кто хочет сделать вокрешение крипов как в доте - тоесть вокрешение группами.
И так
Для этого нам пригодится WE и id юнитов(нейтралов которых вы хотите воскресить)
Создаем обычный триггер с событием времени
Назовен его SpawnNeutral
Code
function InitTrig_SpawnNeutral takes nothing returns nothing
               local trigger t = CreateTrigger()
               call TriggerRegisterTimerEvent(t, 40, true)
               call TriggerAddAction(t, function Trig_SpawnNeutral_Actions)
endfunction

этот триггер будет вызываться каждые 40 секунды игры.
Далее на нужно создать глобальную переменную группу
Это делаеться вверху (самом) триггера
globals
group Neutral
endglobals

Далее нам нужна левая функция которыя будет проверять наличие юнитов в группе.
Code
function GetGroup takes group g returns boolean
set Neutral = g
return FirstOfGroup(Neutra) == null
endfunction

эта функция будет узнавать есть ли в группе юниты и будет выводить нам значение true или false.
Далее переходим в наш SpawnNeutral триггер
в нем создаем локальную группу
Code
local group g = CreateGroup()

дальше нам надо внести в группу юнитов которые находятся в области(заранее созданной) для вокрешения крипов.
и далее...
Code
call GroupEnumUnitsInRect(g, gg_rct_NC1, null)

g - это наша локальная группа
gg_rct_NC1 - это наша локация
null - это null (no comments)
теперь
мы проверяем если в группе нет юнитов то создаем на локации которую выделили нейтралов.
Code
if GetGroup(g) then

где GetGroup(g) - это наша левая функция которая проверяет на наличие юнитов в группе
аg - это наша локальная группа в которую мы занесли юнитов
далее мы создаем здесь юнтов методом
Code
call CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), 'здесь id вышего юнита', GetRectCenter(ваша локация), 0)

и так далее
Code
endif

но по окончанию функции
нода всегда писать
Code
call DestroyGroup(g)
- чтоб при последующем вызове функции не требовалось проверять уже наличие там других юнитов с других локаций
и создавать новую группу
Code
set g = CreateGroup()

повторяем все заново ..
заносим в группу юнитов проверяем на наличие и создаем в локации.
Вот весь мой триггер.
Желаю вам удачи. Всего наилучшего Lawson :)


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Воскресенье, 20 Февраля 2011, 23:16:07
 

romaN-1998Дата: Воскресенье, 20 Февраля 2011, 21:18:05 | Сообщение # 2
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
возьми "код" в код...

Добавлено (20-02-2011, 21:18)
---------------------------------------------
lawson, ещё добавь в "требования" - JNGP (насколько я понял, у тебя используется globals/endglobals.. а это вроде как vJass).. но я могу и ошибаться

 

lawsonДата: Воскресенье, 20 Февраля 2011, 21:20:13 | Сообщение # 3
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Я написал что нужен JASS а это точно нужен JNPG

Добавлено (20-02-2011, 21:20)
---------------------------------------------
Хотя там глобалки не нужны. Это тольок мне потому что требуеться в карте.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

[DUОS]Дата: Вторник, 01 Марта 2011, 19:11:11 | Сообщение # 4
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Аналог данной статьи без надобности JNGP.

НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

lawsonДата: Вторник, 01 Марта 2011, 19:21:19 | Сообщение # 5
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
[DUОS]

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


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

[DUОS]Дата: Вторник, 01 Марта 2011, 19:23:54 | Сообщение # 6
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
Quote (lawson)
Там с глобальными переменными здесь же я использую локальную да и все умешаеться о водном триггере без утечек.

lawson,
У тебя оно-то умещается, но Глобальные переменные + GUI понятнее новичкам.
Кстати, locat trigger t надо обнулять.


НУ И ЧТО ТЕПЕРЬ?


Кликайте на дракошку ;)
 

lawsonДата: Вторник, 01 Марта 2011, 19:27:39 | Сообщение # 7
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (|DUОS|)
понятнее новичкам

Я написал в требования МИнимальные знания JASS так что тем кто работает на гуи или только учиться гуи не рекомендуеться чиать эту статью.
Quote (|DUОS|)
locat trigger t надо обнулять

Когда стану таким как Faion тогда и буду. :)


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Форум о Warcraft 3 » Раздел для картостроителей » GUI / Jass » Статья про респавн крипов как в доте. (Требования: минимальные знания JASS)
  • Страница 1 из 1
  • 1
Поиск:

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