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

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

Закрытая тема
 
J
expert
offline
Опыт: 48,447
Активность:
BLackWoLf ты удаляеш тексттег через переменую в которой нет тексттега.. более того этой переменной несуществует... потому при удалении тексттега все последующие действия не выполнятся (т.е. таймер не удаляется) из-за того что грохается поток...
вообщем тебе нужно присвоить созданный текст тег CreateTextTagUnitOnTime в переменную tt
Старый 29.08.2007, 04:39
BLackWoLf

offline
Опыт: 90
Активность:
Jon вот код вроде так как надо ну тексттег почемуто остается:
Код:
function Trig_Strela_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'AUcs' ) ) then
        return false
    endif
    return true
endfunction

function FilterForTarget takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(get_object_uparam(GetExpiredTimer(),  "caster")))and GetUnitAbilityLevel(GetFilterUnit(),'A04R')==0 and GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>1 and IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE)==false
endfunction

function ACFT takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit u=get_object_uparam(t,"caster")
    local unit sn=get_object_uparam(t,"snar")
    local unit first
    local location ul=GetUnitLoc(u)
    local location sl=GetUnitLoc(sn)
    local texttag tt
    local real ugl=get_object_rparam(t,"Ugl")
    local real ras=DistanceBetweenPoints(ul,sl)
    local location kn=PolarProjectionBJ(sl,15,ugl)
    local boolexpr cfg=Condition(function FilterForTarget)
    local group g=CreateGroup()
    call SetUnitPositionLoc(sn,kn)
    call GroupEnumUnitsInRange(g,GetUnitX(sn),GetUnitY(sn),150,cfg)
set first=FirstOfGroup(g)
call DestroyBoolExpr(cfg)
call DestroyGroup(g)
call RemoveLocation(ul)
call RemoveLocation(kn)
call RemoveLocation(sl)
if first!=null then
        call UnitDamageTargetBJ(u,first,(ras*0.30)+250,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL)  
        set tt=CreateTextTagUnitBJ("+"+I2S(R2I((ras*0.30)+250)),first,50,15,100,50,50,0)
        call KillUnit(sn)
        call PauseTimer(t)
        call flush_object(t)
        call PolledWait(1)
        call DestroyTextTagBJ(tt)
        call DestroyTimer(t)
elseif ras>5000 then
call KillUnit(sn)
        call PauseTimer(t)
        call flush_object(t)
        call DestroyTimer(t)
endif
endfunction

function Trig_Strela_Actions takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local location ul=GetUnitLoc(u)
    local location stl=GetSpellTargetLoc()
    local real ugl=AngleBetweenPoints(ul,stl)
    local timer t=CreateTimer()
    local location gnc=PolarProjectionBJ(ul,10,ugl)
    local unit sn=CreateUnitAtLoc(GetOwningPlayer(u),'hfoo',ul,270)
    call SetUnitPathing(sn,false)
    call set_object_rparam(t,"Ugl",ugl)
    call set_object_iparam(t,"snar",H2I(sn))
    call set_object_iparam(t,"caster",H2I(u))
    call TimerStart(t,0.025,true,function ACFT)
    call RemoveLocation(ul)
    call RemoveLocation(stl)
    call RemoveLocation(gnc)
endfunction

//===========================================================================
function InitTrig_Strela takes nothing returns nothing
    local trigger gg_trg_Strela = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Strela, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Strela, Condition( function Trig_Strela_Conditions ) )
    call TriggerAddAction( gg_trg_Strela, function Trig_Strela_Actions )
endfunction
Старый 29.08.2007, 05:54
Лось

offline
Опыт: 7,223
Активность:
Скажите плз как узнать типь нанесёного дамага. Вот код:
Код:
function Trig_lims_Conditions takes nothing returns boolean
    if ( not ( GetLearnedSkillBJ() == 'AEah' ) ) then
        return false
    endif
    return true
endfunction

function TrigAction takes nothing returns nothing
    local damagetype dt=ConvertDamageType(R2I(GetEventDamage()))
    if dt==DAMAGE_TYPE_MAGIC then
    call KillUnit(GetTriggerUnit())
    endif
endfunction

function Trig_lims_Actions takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local trigger trg
    if GetUnitAbilityLevel(u,'AEah')==1 then
    set trg=CreateTrigger()
    call TriggerRegisterUnitEvent(trg,u,EVENT_UNIT_DAMAGED)
    call TriggerAddAction(trg,function TrigAction)
    endif   
endfunction

//===========================================================================
function InitTrig_lims takes nothing returns nothing
    local trigger gg_trg_lims = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_lims, EVENT_PLAYER_HERO_SKILL )
    call TriggerAddCondition( gg_trg_lims, Condition( function Trig_lims_Conditions ) )
    call TriggerAddAction( gg_trg_lims, function Trig_lims_Actions )
endfunction

Я пытался ничего не выходит. Мне надо если тока DAMAGE_TYPE_MAGIC происходило действие. Напишите код плз!

Отредактировано Лось, 01.09.2007 в 08:51.
Старый 01.09.2007, 08:29
J
expert
offline
Опыт: 48,447
Активность:
Лось не узнать его
Старый 01.09.2007, 19:02
Лось

offline
Опыт: 7,223
Активность:
Я знаю что такое возможно. Вот например в Доте у Шторм Спирита есть спелл "Бариер" он блокирует 600 магическоко дамага.
Старый 01.09.2007, 20:15
Profi

offline
Опыт: 3,640
Активность:
Если переводить в джазз тригер,и в нем есть if/then/else,причем несколько,появляеться множесво функций.Где нужно объявлять локальную переменную?Пробывал написать кустом скрипт в переменной,то она появляеться в серединек текста,а мне нада исользовать переменную в условиях...
(написал,надеюсь паймете что я хачу:) )
Старый 01.09.2007, 20:27
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
Цитата:
Сообщение от Лось
Я знаю что такое возможно. Вот например в Доте у Шторм Спирита есть спелл "Бариер" он блокирует 600 магическоко дамага.


это стандартный(не джассовый и не триггерный спелл)
Старый 01.09.2007, 20:29
adic3x

offline
Опыт: 108,439
Активность:
сделан на основе спела баньши если не ошибаюсь.
Старый 01.09.2007, 20:46
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
Цитата:
Сообщение от ADOLF
сделан на основе спела баньши если не ошибаюсь.

да, ты прав
Старый 01.09.2007, 20:50
Лось

offline
Опыт: 7,223
Активность:
У банши вроде на некоторое время и на баншу под шитом нельзя кастовать спеллы, а у Шторм Спирита на время и на полученый дамаг на 4 лвл 600 на него можно кидать спеллы.
Старый 02.09.2007, 06:41
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
Цитата:
Сообщение от Лось
У банши вроде на некоторое время и на баншу под шитом нельзя кастовать спеллы, а у Шторм Спирита на время и на полученый дамаг на 4 лвл 600 на него можно кидать спеллы.

сначала посмотри на настройки спелла, попробуй их изменить,а потом говори
Старый 02.09.2007, 09:23
Лось

offline
Опыт: 7,223
Активность:
df Hunter
Я вообше лось и не могу здалать такой спелл как у шторма зделай плз! =)
И скинь мапу сюда!!!
Старый 02.09.2007, 16:21
adic3x

offline
Опыт: 108,439
Активность:
Лось, элементарно пару кликов в РО. если не можешь сделать сам думаю мы врядли сможем помочь.
Старый 02.09.2007, 21:28
YellowStar
poon
offline
Опыт: 15,144
Активность:
Вот нашел функцию не сохранять репу. Будет ли канать функции такие donotsavegame & donotloadgame.
Старый 02.09.2007, 22:15
Лось

offline
Опыт: 7,223
Активность:
NaRaYaN ето вроде не сохранять не репу а игру, а к репе вроде вот ета DoNotSaveReplay().
Старый 03.09.2007, 19:43
S

offline
Опыт: 43,833
Активность:
Цитата:
Сообщение от NaRaYaN
Вот нашел функцию не сохранять репу. Будет ли канать функции такие donotsavegame & donotloadgame.


jasscraft тебе в руки, и World Editor + Warcraft III для тестов тебе навстречу...
Старый 03.09.2007, 20:03
LuciFEAR
C++ & JASS Maniac!!!
offline
Опыт: 62
Активность:
А как можно сделать, чтобы вокруг юнита двигались декорации (конкретно - айсберги)? Я сделал спел на JASS, но как-то тупо :)
Проблема в том, что айсберги:
1: не двигаются :)
2: при перемещении юнита он не отрисовываются заново, а остаются на том же месте.
Можно ли рект прилепить к герою?
Старый 09.09.2007, 12:58
J
expert
offline
Опыт: 48,447
Активность:
LuciFEAR декорачии нельзя двигать.. только юнитов можно...
прилепить нельзя.. но постояно периодически перемещать в его позицию можно
Старый 09.09.2007, 14:09
Medivx

offline
Опыт: 375
Активность:
Пожалуста научите
Хотел создать ульту для своего героя экзекутура смысл в том что вокруг цели на одинаковом растояние по окружности друг от друга стоят пять еретиков(ну там еще пентаграму для красоты хотел на рисовать) ставить их поодиночке конечно можно но это не красиво выглядит хотел через массив сделать не получилось((
собствено вот я что пытался сделать
  1. Создать пять еретиков стоящих на окружности на равно растояние друг от друга
  2. пентаграма из огня
  3. сообствно сама звезда пентаграмы чтобы это сделать я взял массив из 10 слотов и дважды запихнул туда еретиков с таким расчетом чтобы молния(из которой состоит звезда) шли от 1к3 от 3к5 от 5к7 от 7к9 от 9к1(предполагаю что первого еретика нужно было запихнуть в массив три раза тогда было бы как раз то что нужно 9-11)
так вот когда проверил единствено что работало это пустышка сделаная на основе молота бурь
Пожалуста научите как с помошью триггеров и jass сделать даный спелл
P.S. jass изучать стал недавно поэто в основном делал на тригерах
Старый 09.09.2007, 19:38
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Старый 10.09.2007, 09:38
Закрытая тема

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

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

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

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



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