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

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

Ответ
 
Xoniks

offline
Опыт: 1,858
Активность:
Событие применили заклинание
можно ли задать событие чтобы применили данное заклинание, обычно делают так юнит применил заклинание потом условие на какое именно, а мне нужно именно сразу в событии vJass only
Старый 14.08.2012, 22:14
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Xoniks, почитайте что такое триггер\как он устроен\как работает и что такое вжасс
Старый 14.08.2012, 22:18
Xoniks

offline
Опыт: 1,858
Активность:
Nerevar, знаю что такое vJass, и вполне как устроен триггер, где то давно видел такую системку и что-то не закопипастил
Старый 14.08.2012, 22:21
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
vjass? не не слышал, зато слышал о cjass
callback onUnitSpellEffect('A000') 
{
}
Старый 14.08.2012, 23:59
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,024
Активность:
Xoniks, можно и на jass онли сделать...
((код jass
local trigger trig = CreateTrigger()
local integer index
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(trig, Player(index), EVENT_PLAYER_UNIT_SPELL_EFFECT, Condition(function "Некая Функция Фильтр"))
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
))
Старый 15.08.2012, 08:20
Xoniks

offline
Опыт: 1,858
Активность:
quq_CCCP, если делать так как ты написал то будет событие срабатывать при применении любой способности, нужно сделать свой евент только вот как?
Старый 15.08.2012, 15:50
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,024
Активность:
Xoniks, нет, с чего бы это, у событие стоит бол експр, фильтр который будет отфильтровывать все ненужные события..
Старый 15.08.2012, 16:48
Xoniks

offline
Опыт: 1,858
Активность:
quq_CCCP, тогда делать так?
function Cond takes nothing returns boolean
 if GetSpellAbilityID() == 'A000' then
...
 return false
endfunсtion
в фильтр или как?
Старый 15.08.2012, 17:38
Doc

offline
Опыт: 63,163
Активность:
Блин дурачелло нет такого события, как бы ты не писал все сведется к проверке на абилку.
Старый 15.08.2012, 19:15
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
Doc:
Блин дурачелло нет такого события, как бы ты не писал все сведется к проверке на абилку.
Прав.
Так что юзай мой пример выше и не хавай моск нам:)
Старый 15.08.2012, 19:32
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
Xoniks, можно сделать вот так
library AbilTrigAPI initializer InitLib

	private struct SPELL_DATA
		private static thistype array all
		private static integer count = 0
		private integer index = 0
		private trigger callback = CreateTrigger()
		private integer spellID
		static method Create takes integer spellID, code callbackFunc returns thistype
			local thistype this = .create()
			set .id = .count
			set .count = .count + 1
			set .all[.id] = this
			set .spellID = spellID
			call TriggerAddAction(.callback, callbackFunc)
			return this
		endmethod
		method Remove takes nothing returns nothing
			set .count = .count - 1
			set .all[.id] = .all[.count]
			set .all[.id].id = .id
			call DestroyTrigger(.callback)
			call .destroy()
		endmethod
		method Process takes nothing returns nothing
			call TriggerExecute(.callback)
		endmethod
		static method ProcessAll takes integer spellID returns nothing
			local integer idx = .count - 1
			loop
				exitwhen idx < 0
				if .all[idx].spellID == spellID then
					call .all[idx].Process()
				endif
				set idx = idx - 1
			endloop
		endmethod
	endstruct
	
	function RegisterHandler takes integer spellID, code callback returns integer
		return SPELL_DATA.Create(spellID, callback);
	endfunction

	private function Action takes nothing returns nothing
		call SPELL_DATA.ProcessAll(GetSpellAbilityId())
	endfunction

	private function InitLib takes nothing returns nothing
		local trigger trg = CreateTrigger()
		local integer idx = 0
		loop
			exitwhen idx > MAX_PLAYER_SLOT
			call TriggerRegisterPlayerUnitEvent(trg, Player(idx), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
			set idx = idx + 1
		endloop
		call TriggerAddAction(trg, function Action)
	endfunction

endlibrary
Как то так. Писал прям тут, ошибок куча, может не работать, но думаю суть ясна
Старый 15.08.2012, 19:43
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
alexprey, не чувак, накол структуры :\ Велосипеды тоже накол.
Старый 15.08.2012, 19:44
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
Faion, он спросил, я ему дал, то что он конкретно хочет. Хотя понимаю, что бред, но мне просто нечем заняться. Ну можно перекрутить на натив массивы, но блин будет тоже самое ж
Старый 15.08.2012, 19:46
Ответ

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

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

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

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



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