Krol
offline
Опыт:
17,884Активность: |
Спелы и утеки
Здесь я буду задавать разные вопросы о спеллах,а точнее о том,вызывают ли тот или другой спелл утечки,так как только учусь делать тригерные спелы...
Вот спелл,будет ли он вызывать утечки? |
16.12.2006, 16:37 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FoK_KruGer
<3 Vocal Trance
offline
Опыт:
19,940Активность: |
омагад...
тута среатишь юнитов но не удаляешь. FoK_KruGer добавил: зы. я хз как удалять - не спрашивай. |
16.12.2006, 16:43 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
FoK_KruGer видешь ли,там стоит таймер истечения юнита в 20 секунд,тоесть после появления через двадцать секунд юнит,ээээ а юнит умрёт или удалиться? я хз...
|
16.12.2006, 16:47 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FoK_KruGer
<3 Vocal Trance
offline
Опыт:
19,940Активность: |
а че ты с таймером делаешь? Я в таймерах вабще не тик-тик ( т.к. ниразу не юзал ) но ты просто заносишь кучу юнитов в таймер и все. |
16.12.2006, 16:49 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
MPI3
Хм...
offline
Опыт:
24,597Активность: |
Krol
Сколько раз тебе говорить???Сs использучется ТОЛЬКО в трёх случиях: 1)Есть локальные переменные 2)Надо вызвать функцию 3)Надо использоввать команду, не имеюшию аналогов в обычных триггерах! Так что делай прощё - используй обычные триггеровые команды!!! А так я, вроде, утечек не заметел! |
16.12.2006, 16:51 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
Да причём тут таймер,юнит создаётся и видел в игре где нить когда полоска истечения идёт,когда она кончится,то юнит незнаю чё он сделает,короче он исчезнет!
Krol добавил: Цитата:
Хы а миня прикалывает:) От этого всё равно хуже небудет:) Цитата:
Так я чё выложил спелл,там же точки где будет создаваться юнит,вот с точками я низнаю ничё:( |
||
16.12.2006, 16:54 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FoK_KruGer
<3 Vocal Trance
offline
Опыт:
19,940Активность: |
Krol - ну как хочешь думаю. В тригерах утечек нету. Вроде. В вот если в джасс перевести то событие с условием резать надо ( ну как обычно )
|
16.12.2006, 16:58 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
Там полно утечек! При каждом созданию юнита у тебя теряется 2 точки(1 на полярные координаты и 1 на facing). После каста у тебя теряется 2*3*25 точек. Отредактировано Dead_knight, 16.12.2006 в 18:30. |
16.12.2006, 18:17 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
Цитата:
Яж говорил про точки!!!!! Dead_knight а как эти точки удалить,у меня триги русские не мог бы исправить в карте? |
|
16.12.2006, 18:19 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
Нед, по крайней мере не сегодня! Могу дать линк, на нужную статью: вот
|
16.12.2006, 18:42 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
Спасибо! фЗначит прочитал я и понял как удалять точки вот так:call RemoveLocation(),значит когда удаляю точку,а она там тока одна Dead_knight эта одна точка переключающего юнита,но тока юниты создаются относительно смещению этой точки.
И значит удалил,и после этого юниты-бабочки появляются там где в самый первый раз находился герой,вот так вот,но хорошо что они у миня летят к герою,а если совсем другой спелл будет,как же это делать:( |
16.12.2006, 20:20 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Krol, а не легче эти точки несоздавать, юзать call CreateUnit
ADOLF добавил: Эта функция использует real X и real Y) |
16.12.2006, 21:58 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
Цитата:
ADOLF этого в тригерах вроде нет? Через сценарий создавать или через джаз? Krol добавил: Короче вот для Джассеров: function Trig_Triger_tru_Conditions takes nothing returns boolean if ( not ( GetSpellAbilityId() == 'A000' ) ) then return false endif return true endfunction function Trig_Triger_tru_Actions takes nothing returns nothing set udg_caster = GetSpellAbilityUnit() set udg_point = GetUnitLoc(udg_caster) set udg_angle = GetUnitFacing(udg_caster) set bj_forLoopAIndex = 1 set bj_forLoopAIndexEnd = 35 loop exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd call CreateNUnitsAtLocFacingLocBJ( 1, 'u000', GetOwningPlayer(udg_caster), PolarProjectionBJ(udg_point, ( 20.00 * I2R(GetForLoopIndexA()) ), ( ( 20.00 * I2R(GetForLoopIndexA()) ) + 0.00 )), GetUnitLoc(GetTriggerUnit()) ) call RemoveLocation(udg_point) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "move", GetUnitLoc(udg_caster) ) call UnitApplyTimedLifeBJ( 20.00, 'BTLF', GetLastCreatedUnit() ) call SetUnitTimeScalePercent( GetLastCreatedUnit(), 10000.00 ) call CreateNUnitsAtLocFacingLocBJ( 1, 'u000', GetOwningPlayer(udg_caster), PolarProjectionBJ(udg_point, ( 20.00 * I2R(GetForLoopIndexA()) ), ( ( 20.00 * I2R(GetForLoopIndexA()) ) + 90.00 )), GetUnitLoc(GetTriggerUnit()) ) call RemoveLocation(udg_point) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "move", GetUnitLoc(udg_caster) ) call UnitApplyTimedLifeBJ( 20.00, 'BTLF', GetLastCreatedUnit() ) call SetUnitTimeScalePercent( GetLastCreatedUnit(), 10000.00 ) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "move", GetUnitLoc(udg_caster) ) call CreateNUnitsAtLocFacingLocBJ( 1, 'u000', GetOwningPlayer(udg_caster), PolarProjectionBJ(udg_point, ( 20.00 * I2R(GetForLoopIndexA()) ), ( ( 20.00 * I2R(GetForLoopIndexA()) ) + 180.00 )), GetUnitLoc(GetTriggerUnit()) ) call RemoveLocation(udg_point) call UnitApplyTimedLifeBJ( 20.00, 'BTLF', GetLastCreatedUnit() ) call SetUnitTimeScalePercent( GetLastCreatedUnit(), 10000.00 ) set bj_forLoopAIndex = bj_forLoopAIndex + 1 endloop endfunction //=========================================================================== function InitTrig_Triger_tru takes nothing returns nothing set gg_trg_Triger_tru = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Triger_tru, EVENT_PLAYER_UNIT_SPELL_CAST ) call TriggerAddCondition( gg_trg_Triger_tru, Condition( function Trig_Triger_tru_Conditions ) ) call TriggerAddAction( gg_trg_Triger_tru, function Trig_Triger_tru_Actions ) endfunction Krol добавил: Цитата:
Это уже моё творчество... |
||
17.12.2006, 10:08 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Krol, какой ужас, ща почитаю...
|
17.12.2006, 10:11 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
Да ничего тут ужасного нет,здесь три раза короче во этого тока одругому:
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd call CreateNUnitsAtLocFacingLocBJ( 1, 'u000', GetOwningPlayer(udg_caster), PolarProjectionBJ(udg_point, ( 20.00 * I2R(GetForLoopIndexA()) ), ( ( 20.00 * I2R(GetForLoopIndexA()) ) + 0.00 )), GetUnitLoc(GetTriggerUnit()) ) call RemoveLocation(udg_point) call IssuePointOrderLocBJ( GetLastCreatedUnit(), "move", GetUnitLoc(udg_caster) ) call UnitApplyTimedLifeBJ( 20.00, 'BTLF', GetLastCreatedUnit() ) call SetUnitTimeScalePercent( GetLastCreatedUnit(), 10000.00 ) call CreateNUnitsAtLocFacingLocBJ( 1, 'u000', GetOwningPlayer(udg_caster), PolarProjectionBJ(udg_point, ( 20.00 * I2R(GetForLoopIndexA()) ), ( ( 20.00 * I2R(GetForLoopIndexA()) ) + 90.00 )), GetUnitLoc(GetTriggerUnit()) ) set bj_forLoopAIndex = bj_forLoopAIndex + 1 endloop endfunction |
17.12.2006, 10:13 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
щас профикшу, ждите 10 минут |
17.12.2006, 10:17 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Так, во первых
function Xc takes real x, real a, real d returns real return x+d*Cos(a*0.01745) endfunction function Yc takes real y, real a, real d returns real return y+d*Sin(a*0.01745) endfunction используй это место PolarProjectionBJ. Теперь создание юнитов: call CreateUnit (p, 'h000', Xc(x,a,d), Yc(y,a,d), f) Где p-игрок, x и y - координаты, 'h000' - код юнита, которого создаешь, f-поворот, d-полоярная дистанция... Вот, и никаких точек) Только если ничего непонимаешь делай лучше как знаешь... ADOLF добавил: Тем более что ты создаешь одного юнита как я понял) |
17.12.2006, 10:21 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Krol
offline
Опыт:
17,884Активность: |
Цитата:
Значит так и оставлю,ща DioD,а подождём... |
|
17.12.2006, 10:26 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
call IssuePointOrder (CreateUnit (p, 'h000', x, y, f), "move", x, y) - а вот так можно одной строкой создать юнита, и сразу дать ему приказ) иногда очень удобно...
ADOLF добавил: Krol, ну этоже видно, ты из ГУИ перебросил, оно лучше не стало( |
17.12.2006, 10:30 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Код:
|
17.12.2006, 10:34 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|