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

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

Ответ
 
MegaBlax

offline
Опыт: 2,352
Активность:
Проблема с триггером
((код jass
globals
real dmg=0.
timer t
endglobals
function Kraken_Shell_Main takes nothing returns nothing
local unit lfo=GetTriggerUnit()
local real lf7=GetEventDamage()
set dmg=dmg+lf7
if(dmg>=600. and TimerGetRemaining(t)!=0)then
set dmg=0
call UnitRemoveBuffs(lfo,false,true)
call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl"​;,lfo,"origin"))
call BJDebugMsg("Дамаг достиг 600, бафы сброшены, дамаг = 0")
endif
if(TimerGetRemaining(t)==0.)then
call TimerStart(t,6.,false,null)
set dmg=lf7
call BJDebugMsg("Таймер запущен!")
endif
endfunction
function Trig_Kraken_Shell_Conditions takes nothing returns boolean
return GetLearnedSkill()=='A000' and IsUnitIllusion(GetTriggerUnit())==false
endfunction
function Trig_Kraken_Shell_Actions takes nothing returns nothing
local trigger ltt
if(GetUnitAbilityLevel(GetTriggerUnit(),'A000')==1)then
set ltt=CreateTrigger()
call TriggerRegisterUnitEvent(ltt,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
call TriggerAddAction(ltt,function Kraken_Shell_Main)
set t=CreateTimer()
endif
endfunction
===========================================================================
function InitTrig_Kraken_Shell takes nothing returns nothing
local trigger trg=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(trg,EVENT_PLAYER_HERO_SKILL)
call TriggerAddCondition(trg,Condition(function Trig_Kraken_Shell_Conditions))
call TriggerAddAction(trg,function Trig_Kraken_Shell_Actions)
set trg=null
endfunction
))
Кто может объяснить что тут неправильно?
При прокачке способности должно добавляться событие, получение урона.
При получение урона 600 в течении 6 секунд с юнита должны сбрасываться отрицательные эффекты.
[+] замечание от Nerevar: Неинформативное название темы+тема не в том разделе
Старый 24.04.2013, 14:19
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
MegaBlax, и? какие результаты дебага? не вижу описания проблемы
Старый 24.04.2013, 14:28
MegaBlax

offline
Опыт: 2,352
Активность:
Карта просто не запускается.
Старый 24.04.2013, 14:31
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
чекай
Прикрепленные файлы
Тип файла: w3x rak.w3x (10.9 Кбайт, 2 просмотров )
Старый 24.04.2013, 15:09
MegaBlax

offline
Опыт: 2,352
Активность:
16GB, а в мультиплеере покатит? Если способность будет у нескольких игроков?
Старый 24.04.2013, 15:13
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
нет,переменные же глобальные
Старый 24.04.2013, 15:23
MegaBlax

offline
Опыт: 2,352
Активность:
16GB, Ну ладно, скорее всего способность будет только у одного юнита. Жалко сам не додумал.
Старый 24.04.2013, 15:30
IceFog

online
Опыт: 6,486
Активность:
MegaBlax:
IsUnitIllusion(GetTriggerUnit())==false
А это зачем? Разве иллюзия может прокачивать способности?
Старый 24.04.2013, 20:21
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
код из опен доты
Старый 24.04.2013, 21:11
Zetox

offline
Опыт: 1,738
Активность:
Цитата:
Сообщение от IceFog
MegaBlax:
IsUnitIllusion(GetTriggerUnit())==false
А это зачем? Разве иллюзия может прокачивать способности?

Да, иллюзиям даже можно дать активные скилы, но они спрятаны.


Если автору нужно, могу кинуть реализацию этого скила из самой доты.
Старый 29.04.2013, 23:45
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl"​;​;,lfo,"origin"))
Найди опечатку.
Старый 01.05.2013, 13:43
MegaBlax

offline
Опыт: 2,352
Активность:
Zetox, Давай, хочу посмотреть!
16GB, Нет, код не из опен доты, писал сам. Первый вариант был ну просто ужасен! :) И в полтора раза больше чем этот.
Старый 12.05.2013, 14:38
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
MegaBlax:
16GB, Нет, код не из опен доты, писал сам. Первый вариант был ну просто ужасен! :) И в полтора раза больше чем этот.
сool story, особенно названия переменных
Код из опен доты
function Trig_Kraken_Shell_Conditions takes nothing returns boolean
	return GetLearnedSkill()=='A04E'and IsUnitIllusion(GetTriggerUnit())==false
endfunction

function Kraken_Timer takes nothing returns nothing
	call UnitRemoveBuffsBJ(1,GetUnit(H2Tx(GetExpiredTimer()),"UnitVar"))
endfunction

function Trig_Kraken_Shell_Actions takes nothing returns nothing
	local unit lfo=GetTriggerUnit()
	local integer lmZ=GetUnitAbilityLevel(lfo,'A04E')
	local timer ltt
	if lmZ==1 then
		set ltt=CreateTimer()
		call TimerStart(ltt,11,true,function Kraken_Timer)
		call SetHandle(H2Tx(ltt),"UnitVar",lfo)
		call SetHandle(H2Tx(lfo),"KrakenTimer",ltt)
	else
		set ltt=GetTimer(H2Tx(lfo),"KrakenTimer")
		call TimerStart(ltt,12-lmZ,true,function Kraken_Timer)
	endif
endfunction

function StartTrigger_Kraken_Shell takes nothing returns nothing
	set gg_trg_Kraken_Shell=CreateTrigger()
	call TriggerRegisterAnyUnitEventBJ(gg_trg_Kraken_Shell,EVENT_PLAYER_HERO_SKILL)
	call TriggerAddCondition(gg_trg_Kraken_Shell,Condition(function Trig_Kraken_Shell_Conditions))
	call TriggerAddAction(gg_trg_Kraken_Shell,function Trig_Kraken_Shell_Actions)
endfunction

function InitTrig_Kraken_Shell takes nothing returns nothing
endfunction
Старый 12.05.2013, 14:40
MegaBlax

offline
Опыт: 2,352
Активность:
16GB, Насчет названия переменых, я сидел и смотрел код Backtrack у войда, патом решил сделать скилл Kraken Shell. Скопировал часть кода из Backtrack и дописал Kraken Shell Но я писал сам!
((код jass
function StartTimerTest takes timer t returns nothing
if(TimerGetRemaining(t)<=0)then
call StartTimerBJ(t,false,6.)
call DisplayTextToForce( GetPlayersAll(), "Таймер равен 0 дамаг получен таймер запущен заново!" )
endif
endfunction
globals
real dmg=0
endglobals
Сам триггер:
function Trig_Kraken_Shell_Test_Conditions takes nothing returns boolean
return GetLearnedSkill()=='A00O' and IsUnitIllusion(GetTriggerUnit())==false
endfunction
function Kraken_Shell_Test_Main takes nothing returns nothing
local unit lfo=GetTriggerUnit()
local real lf7=GetEventDamage()
local timer t=GetLastCreatedTimerBJ()
call StartTimerTest(t)
if(TimerGetRemaining(t)<=0)then
set dmg=0
call DisplayTextToForce(GetPlayersAll(),"Таймер равен 0 дамаг сброшен")
else
if(lf7>0)then
if(dmg>600)then
call DisplayTextToForce(GetPlayersAll(),"Дамаг равен 600 buff off дамаг сброшен")
set dmg=0
call UnitRemoveBuffsBJ(bj_REMOVEBUFFS_NEGATIVE,lfo)
call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl"​;&#8203;;,lfo,"origin"))
else
set dmg=dmg+lf7
call DisplayTextToForce(GetPlayersAll(),"Дамаг еще не равен 600 и 6 секунд еще не прошло!")
endif
endif
endif
endfunction
function Trig_Kraken_Shell_Test_Actions takes nothing returns nothing
local trigger ltt
if GetUnitAbilityLevel(GetTriggerUnit(),'A00O')==1 then
set ltt=CreateTrigger()
call TriggerRegisterUnitEvent(ltt,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
call TriggerAddAction(ltt,function Kraken_Shell_Test_Main)
endif
endfunction
function InitTrig_Kraken_Shell_Test takes nothing returns nothing
local trigger Kraken_Shell=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(Kraken_Shell,EVENT_PLAYER_HERO_SKILL)
call TriggerAddCondition(Kraken_Shell, Condition(function Trig_Kraken_Shell_Test_Conditions))
call TriggerAddAction(Kraken_Shell,function Trig_Kraken_Shell_Test_Actions)
endfunction
))
Это мой первый вариант!
Старый 12.05.2013, 14:49
Ответ

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

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

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

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



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