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

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

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

offline
Опыт: 11,196
Активность:
Движение дамми
» нубо код
((код jass
function Trig_FireEscort_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A000'
endfunction
function FireEscort_Move takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit dummy = LoadUnitHandle(udg_Hashtable,id,1)
local real tx
local real ty
set tx = GetUnitX(dummy)
set ty = GetUnitY(dummy)
call SetUnitX(dummy,tx+30)
call SetUnitY(dummy,ty+30)
endfunction
function Trig_FireEscort_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local timer t = CreateTimer()
local integer id=GetHandleId(t)
local unit dummy
set dummy = CreateUnit(GetOwningPlayer(caster), 'h000', x+100, y+100, 90 )
call SaveUnitHandle(udg_Hashtable,id,1,dummy)
call TimerStart(t, 1, true, function FireEscort_Move)

endfunction
))
координаты меняются, а дамик не двигается...
[+] замечание от Nerevar: Капс в названии темы+неинформативное её название

Отредактировано Nerevar, 10.06.2012 в 22:54.
Старый 10.06.2012, 22:13
Doc

offline
Опыт: 63,163
Активность:
оБАЛДЕТЬ.
У даммика скорость передвижения 0 - вот и не работает.
Старый 10.06.2012, 22:26
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
И вообще утечек полкило.
Старый 10.06.2012, 22:38
Arti

offline
Опыт: 11,196
Активность:
хм, а чего же на гуи двигается со скоростью передвижения 0 ?
Старый 10.06.2012, 23:21
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
На гуи используется SetUnitPosition
Старый 10.06.2012, 23:23
prog

offline
Опыт: 32,865
Активность:
а на гуи нет SetUnitX SetUnitY
Старый 10.06.2012, 23:23
JugHead

offline
Опыт: 1,612
Активность:
Arti, вот держи фасткод, закомментил думаю поймешь, что да как, если что в личку..
» Сам код:
((код jass
function Trig_FireEscort_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A000'
endfunction
function FireEscort_Move takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer id = GetHandleId(t)
local unit d = LoadUnitHandle(udg_Hashtable, id, 1)
local real a = LoadReal(udg_Hashtable, id, 0)
local real x = GetUnitX(d)+30.*Cos(a*0.0174532)
local real y = GetUnitY(d)+30.*Sin(a*0.0174532)
добавляешь условие, при котором юнит закончит движение, допустим по дистанции или времени, и когда движение закончится втыкай действия:
call PauseTimer(t)
call FlushChildHashtable(udg_Hashtable, id)
call DestroyTimer(t)
Опять же освобождаем память от уже использованных значений, которые нам не понадобятся в дальнейшем, и избегаем утечности.
call SetUnitPosition(d, x, y)
set t = null
set d = null
endfunction
function Trig_FireEscort_Actions takes nothing returns nothing
local unit c = GetSpellAbilityUnit() юнит-кастер
local timer t = CreateTimer()
local integer id = GetHandleId(t)
local real x = GetUnitX(c)
local real y = GetUnitY(c)
local real a = GetUnitFacing(c)
call SaveReal(udg_Hashtable, id, 0, a)
call SaveUnitHandle(udg_Hashtable, id, 1, CreateUnit(GetOwningPlayer(c), 'h000', x+100, y+100, a))
call TimerStart(t, 0.04, true, function FireEscort_Move)
set t = null// после запуска таймера необходимо его обнулять, иначе будут утечки.
set c = null// с юнитом тоже самое
endfunction
function InitTrig_FireEscort takes nothing returns nothing
set gg_trg_FireEscort = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_FireEscort, EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(gg_trg_FireEscort, Condition(function Trig_FireEscort_Conditions))
call TriggerAddAction(gg_trg_FireEscort, function Trig_FireEscort_Actions)
endfunction
))

Отредактировано JugHead, 10.06.2012 в 23:39.
Старый 10.06.2012, 23:34
Arti

offline
Опыт: 11,196
Активность:
JugHead, насчет оптимизации я и так знаю...
Хотя ещё вопрос, почему после 30 стоит точка?!
Старый 11.06.2012, 00:11
JugHead

offline
Опыт: 1,612
Активность:
Arti, 30.00 , если дробной части нету просто ставь точку, ибо используется real значение.
Старый 11.06.2012, 00:17
Hate
конь вакуумный
online
Опыт: 43,033
Активность:
потому что тебе по русскому написали сделать условия при которых движение остановится
Прикрепленные файлы
Тип файла: w3x wtfGG.w3x (17.7 Кбайт, 4 просмотров )
Старый 11.06.2012, 21:45
Arti

offline
Опыт: 11,196
Активность:
((код jass
local real xt = GetSpellTargetX()
local real yt = GetSpellTargetY()
local real xc = GetUnitX(caster)
local real yc = GetUnitY(caster)
local real angle = bj_RADTODEG * Atan2(xt-xc ,yt- yc)
CreateUnit(GetOwningPlayer(caster), 'h000', xc, yc, angle)
))
и создаёт на 90 градусов кривее...
Старый 11.06.2012, 23:38
JugHead

offline
Опыт: 1,612
Активность:
Arti, держи:
((код jass
local unit caster = GetSpellAbilityUnit()
local location p = GetSpellTargetLoc()
local real xt = GetLocationX(p)
local real yt = GetLocationY(p)
local real xc = GetUnitX(caster)
local real yc = GetUnitY(caster)
local real angle = bj_RADTODEG*Atan2(yt-yc ,xt-xc)
local unit d = CreateUnit(GetOwningPlayer(caster), 'h000', xc+100*Cos(angle*0.0174532), yc+100*Sin(angle*0.0174532), angle)
call RemoveLocation(p)
set p = null
set caster = null
))
Сделал так, все работает.
Старый 12.06.2012, 00:36
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Arti, вот карта дуоса, там как раз примеры всех движений даммиков, и прямое движение, и движение с подскоком, и тд., понятные даже гуишникам, + понятные комментарии....
Прикрепленные файлы
Тип файла: rar 8234_Duos_Knockback_.rar (27.8 Кбайт, 28 просмотров )

Отредактировано quq_CCCP, 12.06.2012 в 02:12.
Старый 12.06.2012, 01:59
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Вообще если хочешь писать на жассе - поиск в руки,статьи в зубы и вперед на амбразуру,а то развели тут детский сад
Старый 12.06.2012, 10:25
Закрытая тема

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

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

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

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



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