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

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

Закрытая тема
 
Zombak2500

offline
Опыт: 1,855
Активность:
Вакуум
Не работает, вот код:
INFO
uca = caster ability
ula = level ability
ra = region of ability
ENDINFO
function Trig_Vacuum_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A006'
endfunction
function Trig_Untitled_Trigger_Null takes nothing returns nothing
endfunction
function Trig_Vacuum_Action takes nothing returns nothing
Locals
local unit uca
local integer ula
local location ra
End Locals
Sets
set uca = GetSpellAbilityUnit()
set ula = GetUnitAbilityLevel(uca,'A006')
set ra = GetSpellTargetLoc()
End Sets
Start Effect
call AddSpecialEffectLocBJ( ra , "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl" )
call PolledWait( 0.30 )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
End Effect
Creat Group
call ForGroupBJ( GetUnitsInRangeOfLocAll(ula*50, ra ), function Trig_Untitled_Trigger_Null )
if IsPlayerEnemy(GetOwningPlayer(uca), GetOwningPlayer(GetEnumUnit())) then
call SetUnitPositionLoc( GetEnumUnit(), ra )
call UnitDamageTargetBJ(uca, GetEnumUnit(), ula*50, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FORCE )
endif
endfunction
function InitTrig_Vacuum takes nothing returns nothing
set gg_trg_Vacuum = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Vacuum, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Vacuum, Condition( function Trig_Vacuum_Conditions ) )
call TriggerAddAction( gg_trg_Vacuum, function Trig_Vacuum_Action )
endfunction
Тригер должен делать вот что: Выделять всех в круге(пустышка БЛИЗЗАРД скилл) и всех врагов в центр
Старый 28.01.2010, 14:48
Doc

offline
Опыт: 63,163
Активность:
Лол. Действия притягивания должны быть в функций которую вызывает ФорГруп. Да и вообще тут все медленно и утечно.
Старый 28.01.2010, 16:30
Zombak2500

offline
Опыт: 1,855
Активность:
Покажи как надо
Старый 28.01.2010, 16:31
Doc

offline
Опыт: 63,163
Активность:
Trig_Untitled_Trigger_Null вот сюда вставляешь if IsPlayerEnemy(GetOwningPlayer(uca),
GetOwningPlayer(GetEnumUnit())) then
call SetUnitPositionLoc( GetEnumUnit(), ra )
call UnitDamageTargetBJ(uca, GetEnumUnit(),
ula*50, ATTACK_TYPE_NORMAL,
DAMAGE_TYPE_FORCE )
endif
DoctorGester добавил:
Соответственно придется либо вставлять глобалки, либо делать вместо ФорГрупа брутфорс
Старый 28.01.2010, 16:34
Zombak2500

offline
Опыт: 1,855
Активность:
глобалки меня не устраивают скажи плиз что нужно написать для брутфорса
Старый 28.01.2010, 16:36
Doc

offline
Опыт: 63,163
Активность:
local group g = CreateGroup()
local unit u
call GroupEnumUnitsInRange(parameters)
set u = FirstOfGroup(g)
loop
exitwhen u = null
call GroupRemoveUnit(g,u)
//Actions
set u = FirstOfGroup(g)
endloop
Старый 28.01.2010, 16:43
Zombak2500

offline
Опыт: 1,855
Активность:
» То есть так
INFO
uca = caster ability
ula = level ability
ra = region of ability
ENDINFO
function Trig_Vacuum_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A006'
endfunction
function Trig_Vacuum_Action takes nothing returns nothing
Locals
local unit uca
local integer ula
local location ra
End Locals
Sets
set uca = GetSpellAbilityUnit()
set ula = GetUnitAbilityLevel(uca,'A006')
set ra = GetSpellTargetLoc()
End Sets
Start Effect
call AddSpecialEffectLocBJ( ra , "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl" )
call PolledWait( 0.30 )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
End Effect
Creat Group
local group g = CreateGroup()
local unit u
call GroupEnumUnitsInRange(parameters)
set u = FirstOfGroup(g)
loop
exitwhen u = null
call GroupRemoveUnit(g,u)
if IsPlayerEnemy(GetOwningPlayer(uca), GetOwningPlayer(GetEnumUnit())) then
call SetUnitPositionLoc( GetEnumUnit(), ra )
call UnitDamageTargetBJ(uca, GetEnumUnit(), ula*50, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FORCE )
endif
set u = FirstOfGroup(g)
endloop

endfunction
function InitTrig_Vacuum takes nothing returns nothing
set gg_trg_Vacuum = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Vacuum, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Vacuum, Condition( function Trig_Vacuum_Conditions ) )
call TriggerAddAction( gg_trg_Vacuum, function Trig_Vacuum_Action )
endfunction
Старый 28.01.2010, 16:48
Doc

offline
Опыт: 63,163
Активность:
GetEnumUnit замени на u и локалки перенеси вверх функции
Старый 28.01.2010, 16:50
DioD

offline
Опыт: 45,134
Активность:
если вас не устраивают глобалки вам совершенно не нужен джаз.
брутфорс группы совершенно бессмысленное с точки зрения производительности и логики занятие.
Старый 28.01.2010, 16:50
Doc

offline
Опыт: 63,163
Активность:
В моей карте используется брутфорс при попадании снаряда в юнита и ничего, производительность нормальная. А ему требуется всего лишь на применение спела.
Ах да автор почитай статью сергея о утечках.
Старый 28.01.2010, 16:54
Zombak2500

offline
Опыт: 1,855
Активность:
DoctorGester:
call GroupEnumUnitsInRange(parameters)
GroupEnumUnitsInRange takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
как узнать filter ,и вообще что это такое
p.s. уток уберу
Zombak2500 добавил:
на вопрос ответьте плЫз

Отредактировано Zombak2500, 28.01.2010 в 17:17.
Старый 28.01.2010, 17:24
Doc

offline
Опыт: 63,163
Активность:
Просто поставь null
Старый 28.01.2010, 17:27
Zombak2500

offline
Опыт: 1,855
Активность:
Всё, всем спасибо выкладываю готовый тригер:
» Vacuum
INFO
uca = caster ability
ula = level ability
ra = region of ability
g = группа
u = юниты
x,y,R = координаты центра скила и радиус выделения
ENDINFO
function Trig_Vacuum_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A006'
endfunction
function Trig_Vacuum_Action takes nothing returns nothing
Locals
local unit uca
local integer ula
local location ra
local group g
local unit u
local real x
local real y
local real R
End Locals
Sets
set g = CreateGroup()
set uca = GetSpellAbilityUnit()
set ula = GetUnitAbilityLevel(uca,'A006')
set ra = GetSpellTargetLoc()
set x = GetLocationX(ra)
set y = GetLocationY(ra)
set R = ula*50 + 200
End Sets
Start Effect
call AddSpecialEffectLocBJ( ra , "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl" )
call PolledWait( 0.30 )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
End Effect
call GroupEnumUnitsInRange(g,x,y,R,null)
set u = FirstOfGroup(g)
loop
exitwhen u == null
call GroupRemoveUnit(g,u)
if IsPlayerEnemy(GetOwningPlayer(uca), GetOwningPlayer(u)) then
call SetUnitPositionLoc( u, ra )
call UnitDamageTargetBJ(uca, u, R, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FORCE )
endif
set u = FirstOfGroup(g)
endloop
NULLALL
set g = null
set uca = null
set ula = 0
set ra = null
set x = 0
set y = 0
set R = 0
ENDNULLALL
endfunction
function InitTrig_Vacuum takes nothing returns nothing
set gg_trg_Vacuum = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Vacuum, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Vacuum, Condition( function Trig_Vacuum_Conditions ) )
call TriggerAddAction( gg_trg_Vacuum, function Trig_Vacuum_Action )
endfunction
DoctorGester, биг спс ,что помог разобратьвся
DioD, одна дурацкая критика не чем не помог=флуд и набивание экспы
О ВЕЛИКИЙ МОДЕРАТОР ЗАКРОЙ ТЕМУ )

Отредактировано Zombak2500, 28.01.2010 в 17:53.
Старый 28.01.2010, 17:41
Doc

offline
Опыт: 63,163
Активность:
Переменные обнули в конце и точку с группой удали
DoctorGester добавил:
И бж старайся не использовать
Старый 28.01.2010, 17:47
Zombak2500

offline
Опыт: 1,855
Активность:
А да) утки спс)
Zombak2500 добавил:
На бж забил когда в JNGP увидел кнопку функцион лист. всё скрипт доделал можете брать кому надо)
ещё раз спс
Старый 28.01.2010, 17:54
Закрытая тема

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

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

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

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



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