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

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

Ответ
 
sleepw

offline
Опыт: 8,449
Активность:
Движение Юнита
вод накрутил тут спель на основе холи болт из одной из статей на форуме.
вар не запускаецо=\

мб изза глобалок?) я их ваще юзать не умею :[
хелп..
Код:
globals
unit vinecaster
unit vinetarget
unit vine
trigger act
endglobals

function Trig_Killing_Vine_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A01Q' ) ) then
        return false
    endif
    return true
endfunction

function main takes nothing returns nothing
local unit u = vine
local unit u2 = vinetarget
local unit u3 = vinecaster
local location p = GetUnitLoc(u)
local location p2 = GetUnitLoc(u2)
local real a
local effect e = null
if DistanceBetweenPoints(p, p2) > 100 then

   set a = AngleBetweenPoints(p, p2)

   call MoveLocation(p, GetLocationX(p) + 50 * CosBJ(a), GetLocationY(p) + 50 * SinBJ(a))
   call SetUnitPositionLoc( u, p )
else

call CreateUnitAtLoc(GetOwningPlayer(u3),'h001',GetUnitLoc(u2),bj_UNIT_FACING)
call UnitApplyTimedLifeBJ( 1, 'BTLF', GetLastCreatedUnit() )
call UnitAddAbility(GetLastCreatedUnit(),'A01R')
call SetUnitAbilityLevel(GetLastCreatedUnit(),'A01R',GetUnitAbilityLevel(u3,'A01Q'))
call IssueTargetOrderBJ( GetLastCreatedUnit(), "entanglingroots", u2 )

    call RemoveUnit( u )
    call DestroyTrigger(act)

endif

 set u = null
 set u2 = null
call RemoveLocation(p)
call RemoveLocation(p2)
 set p = null
 set p2 = null
 set a = 0
endfunction



function Trig_Killing_Vine_Actions takes nothing returns nothing
set vinecaster=GetSpellAbilityUnit()
set vinetarget=GetSpellTargetUnit()
set vine=CreateUnitAtLoc(GetOwningPlayer(vinecaster),'u000',GetUnitLoc(vinecaster),b  j_UNIT_FACING)
set act=CreateTrigger()
call TriggerRegisterTimerEvent(act,0.05,true)
call TriggerAddAction(act,function main)
endfunction

//===========================================================================
function InitTrig_Killing_Vine takes nothing returns nothing
    set gg_trg_Killing_Vine = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Killing_Vine, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Killing_Vine, Condition( function Trig_Killing_Vine_Conditions ) )
    call TriggerAddAction( gg_trg_Killing_Vine, function Trig_Killing_Vine_Actions )
endfunction
Старый 08.03.2008, 04:14
J
expert
offline
Опыт: 48,447
Активность:
у тебя ген пак или обычный редактор?
на твоем месте я бы перешел на кеш, ну или в крайнем случае заюзал структуры^^
Код:
globals
    unit vinecaster
    unit vinetarget
    unit vine
endglobals

function Trig_Killing_Vine_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A01Q'
endfunction

function DistanceBetweenCord takes real AX, real AY, real BX, real BY returns real
    local real dx = BX - AX
    local real dy = BY - AY
    return SquareRoot(dx * dx + dy * dy)
endfunction 

function main takes nothing returns nothing
    local real X = GetUnitX(vine)
    local real Y = GetUnitY(vine)
    local real len = DistanceBetweenCord(X, Y, GetUnitX(vinetarget), GetUnitY(vinetarget))
    local real a
    local unit u
    if len > 100 then
        set a = Atan2(GetUnitY(vinetarget) - Y, GetUnitX(vinetarget) - X)
        call SetUnitX(vine, X + 50 * Cos(a))
        call SetUnitY(vine, Y + 50 * Sin(a))
    else
        set u = CreateUnit(GetOwningPlayer(vinecaster), 'h001', GetUnitX(vinetarget), GetUnitY(vinetarget), bj_UNIT_FACING)
        call UnitApplyTimedLife( u, 'BTLF', 1 )
        call UnitAddAbility(u, 'A01R')
        call SetUnitAbilityLevel(u, 'A01R', GetUnitAbilityLevel(vinecaster, 'A01Q'))
        call IssueTargetOrder(u, "entanglingroots", vinetarget)
        call RemoveUnit(vine)
        call DestroyTimer(GetExpiredTimer())
        set u = null
    endif
endfunction

function Trig_Killing_Vine_Actions takes nothing returns nothing
    local timer t = CreateTimer()  
    call TimerStart(t, 0.05, true, function main)
    set vinecaster = GetSpellAbilityUnit()
    set vinetarget = GetSpellTargetUnit()
    set vine = CreateUnit(GetOwningPlayer(vinecaster), 'u000', GetUnitX(vinecaster), GetUnitY(vinecaster), bj_UNIT_FACING)
    set t = null
endfunction

function InitTrig_Killing_Vine takes nothing returns nothing
    set gg_trg_Killing_Vine = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Killing_Vine, EVENT_PLAYER_UNIT_SPELL_EFFECT                  )
    call TriggerAddCondition          (gg_trg_Killing_Vine, Condition(function Trig_Killing_Vine_Conditions))
    call TriggerAddAction             (gg_trg_Killing_Vine,           function Trig_Killing_Vine_Actions    )
endfunction

на код я потратил 5 минут, учись)

Отредактировано Jon, 08.03.2008 в 08:04.
Старый 08.03.2008, 06:58
sleepw

offline
Опыт: 8,449
Активность:
Jon
ген пак... а что это решает?)

sleepw добавил:
всё равно вар летит

"
call SetUnitX(X + 50 * Cos(a))
call SetUnitY(Y + 50 * Sin(a))
"

нот инаф аргуметс
кеннот конверт реал ту юнит..

sleepw добавил:
так имхо?
call SetUnitX(vine,X + 50 * Cos(a))
call SetUnitY(vine,Y + 50 * Sin(a))

sleepw добавил:
цуко я ненавижу варкрафт:(

ошибог нет но всё равно летит ррр
Старый 08.03.2008, 07:51
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
так имхо?

да, и правдо)
в блокноте пишу, все функции забыл уже, а джазкрафт скачать лень...
Старый 08.03.2008, 07:56
sleepw

offline
Опыт: 8,449
Активность:
ну вод всё равно летит :(
Старый 08.03.2008, 07:57
J
expert
offline
Опыт: 48,447
Активность:
я неуверен что дело в этом, но попробуй заменить
EVENT_PLAYER_UNIT_SPELL_EFFECT
на
EVENT_PLAYER_UNIT_SPELL_CHANNEL
Старый 08.03.2008, 08:00
sleepw

offline
Опыт: 8,449
Активность:
всё равно=\
зы. а в чём то вообще дело может быть? вот например бывает с шопа качаю спеллы какието и при сохранении у себя(генпак) такая же байда.. хотя афтар написал шо нужен генпак для запуска=\
Старый 08.03.2008, 08:05
J
expert
offline
Опыт: 48,447
Активность:
что там происходит то? при запуске выкидывает или при попадании или вообще при стате карты?

Jon добавил:
Если при старте:
посмотри может у тебя этот триггер запускается при инициализации? там над триггером верху правоя галочка, сними ее...
Старый 08.03.2008, 08:09
sleepw

offline
Опыт: 8,449
Активность:
вообще если нажимавю тест мапы то оно выбивает в меню и всё..

sleepw добавил:
Jon
та не..
обычно так выбивает когда генпак находит ошибки.
но щас кроме ошибки что неуказа вариэйбл гг_трг_тратта ничего нет.. но эта ошибка стандартная и не в ней дело..
Старый 08.03.2008, 08:11
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
а почему функция называется main? может из-за этого? ведь такая функция есть в war3map.j
Старый 08.03.2008, 08:11
sleepw

offline
Опыт: 8,449
Активность:
Nethrez1m
сострил да?

sleepw добавил:
Nethrez1m
нед не катит=\
Старый 08.03.2008, 08:15
J
expert
offline
Опыт: 48,447
Активность:
бгагага, еле замети, ктож использует название функции как main? этоже зарезервировыаное слово
Старый 08.03.2008, 08:16
J
expert
offline
Опыт: 48,447
Активность:
черт, опоздал
Старый 08.03.2008, 08:16
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
а я уж удалил :)
Старый 08.03.2008, 08:17
sleepw

offline
Опыт: 8,449
Активность:
дык некатит здрасте=\

попробовал другое всё рафно

sleepw добавил:
зоменил глобалки на переменные редакторные стало норм\=

sleepw добавил:
чего ж ему так глобалки не понравились?:(
Старый 08.03.2008, 08:33
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
может, ты отключил проверку синтаксиса vJass'ом? (сейчас не вспомню точно, какая там точно опция это делала)
Старый 08.03.2008, 08:37
sleepw

offline
Опыт: 8,449
Активность:
может..) вспонимай какаЯ).. я вижу токо Disable WE syntax...
ибо оно стоко гавна выдаёт непонятного..
Старый 08.03.2008, 08:40
Nethrez1m
Dat av doe
offline
Опыт: 2,123
Активность:
Disable vJass syntax отключено.
Enable vJass включено.
имел в виду это.
Старый 08.03.2008, 08:55
sleepw

offline
Опыт: 8,449
Активность:
а где ты взял Enable vJass?

sleepw добавил:
кароче уже норм залез на их официалку нашёл ответ ы

sleepw добавил:
терь вот вопрос по спеллу... инетерсно стало почему если юниту сделать скорость 0 то его не двигает? SetUnitX,Y это ж тригерно двигаецо..

sleepw добавил:
зы.
call DestroyTimer(GetExpiredTimer())

оно не поломает другие таймеры не относящиеся к спеллу?)
Старый 08.03.2008, 10:26
YellowStar
poon
offline
Опыт: 15,144
Активность:
Омг. Код вроде был уже. Очень сильно напоминает один код. Если ты отключил синтаксис то очем может идти речь. Он попросту гавно не выдает значит ты код свой поришь. Читай по синтаксису блин.
ЗЫ Джон какой нафиг джасс карфт? Этим говном е пользуются приналичи генпака так как там итак нужное можно найти. Сколько помню там был такой же лист как в джасс крафте.
Старый 08.03.2008, 11:31
Ответ

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

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

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

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



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