Q/A

Добавлен , опубликован
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
11 лет назад
0
у меня был где то подобный скил но ты и сам сможешь сделать(как раз экзамен будет тебе)
Buulichkaa, у трупа меньше чем 0 хп это проверено)
0
9
11 лет назад
Отредактирован dermax1000
0
Созрел вопрос) как посмотреть рав код спела)
Собственно создал скилл на гуи, далее его перевёл на джазз посмотреть как это вообще сделать. Ну как бы всё более менее понятно, но вопрос такой почему Pick юнитов в джаззе происходит вообще в конце кода
function Trig_Skelet_GUI_____________________u_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Skelet_GUI_____________________u_Func001Func001C takes nothing returns boolean
    if ( not ( IsUnitDeadBJ(GetEnumUnit()) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_Skelet_GUI_____________________u_Func001A takes nothing returns nothing
    if ( Trig_Skelet_GUI_____________________u_Func001Func001C() ) then
        call RemoveUnit( GetEnumUnit() )
        call AddSpecialEffectLocBJ( GetUnitLoc(GetEnumUnit()), "Abilities\\Spells\\Undead\\RaiseSkeletonWarrior\\RaiseSkeleton.mdl" )
        call CreateNUnitsAtLoc( 1, 'uske', Player(0), GetUnitLoc(GetEnumUnit()), bj_UNIT_FACING )
        call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    else
        call DoNothing(  )
    endif
endfunction

function Trig_Skelet_GUI_____________________u_Actions takes nothing returns nothing
    call ForGroupBJ( GetUnitsInRangeOfLocAll(512, GetUnitLoc(GetTriggerUnit())), function Trig_Skelet_GUI_____________________u_Func001A )
endfunction

//===========================================================================
function InitTrig_Skelet_jass takes nothing returns nothing
    set gg_trg_Skelet_jass = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Skelet_jass, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Skelet_jass, Condition( function Trig_Skelet_GUI_____________________u_Conditions ) )
    call TriggerAddAction( gg_trg_Skelet_jass, function Trig_Skelet_GUI_____________________u_Actions )
endfunction
Далее если не трудно скажите как сделать чтобы он создавал из 1 трупа скелета, а не из всех. Почему делал так скажу просто я не особо понял какая функция отвечает за то чтобы проверить жив юнит или мертв и не знал как пропикать юнитов
И ещё вопрос. Как избавиться от утечет тобеж чтобы если рядом было 2 игрока он не создавал для обоих игроков 2 скелетов (думаю так и будет если в 2 проверить)
0
28
11 лет назад
0
берёшь хп юнита и сравниваешь больше нуля или нет
не надо пикать всех юнитов
просто берёшь 1 юнита в группе
    bool filt1(){
        return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>=0
    }
вот фильтр
в ро жмёшь
вид-показать названия переменных
0
9
11 лет назад
0
nvc123:
берёшь хп юнита и сравниваешь больше нуля или нет
не надо пикать всех юнитов
просто берёшь 1 юнита в группе
Я наверно дебил но я не знаю как взять юнита не пикая его и ещё чтобы в радиусе от применившего заклинания.
0
28
11 лет назад
0
и названия меняются на равкоды
берёшь группу юнитов
group a=CreateGroup()
я сейчас системку напишу
0
9
11 лет назад
Отредактирован dermax1000
0
nvc123:
и названия меняются на равкоды
берёшь группу юнитов
group a=CreateGroup()
я сейчас системку напишу
Напиши пожалуйста. Вот пытаюсь что-то сделать и пока не особо понимаю как взять значение из группы и создать группу только из 1 юнита. Будет наглядно
0
21
11 лет назад
0
бог в помощь
native GroupEnumUnitsInRange                takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
0
28
11 лет назад
0
Buulichkaa, ты раскрыл страшный секрет
теперь масоны убьют тебя
сейчас открою блокнот
library lib initializer init{
 private hashtable hash=InitHashtable()
 define{
 radius=300
 }

    private bool filt1(){
        return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>=0
    }
    
    private void act(){
     group a=CreateGroup()
     unit b=GetTriggerUnit()
     player c=GetOwningPlayer(b)
     float x
     float y
      GroupEnumUnitsInRange(a,GetUnitX(b),GetUnitY(b),radius,function filt1)
      b=FirstOfGroup(a)
      x=GetUnitX(b)
      y=GetUnitY(b)
      RemoveUnit(b)
      b=CreateUnit(c,LoadInteger(hash,GetSpellAbilityId(),0),x,y,0)
      DestroyGroup(a)
      b=null
      a=null
    }
    
    private void add(int a,int b){
      SaveInteger(hash,a,0,b)
    }
    
    private bool cond(){
        return LoadInteger(hash,GetSpellAbilityId(),0)>0
    }
    
    private void init(){
     trigger a=CreateTrigger()
      TriggerAddAction(a,function act)
      TriggerAddCondition(a,function cond)
      TriggerRegisterAnyUnitEventBJ(a,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    }
    
}
писал по памяти
в функцию add передёшь равкод спелла и равкод юнита которого надо призвать
0
9
11 лет назад
0
nvc123:
Buulichkaa, ты раскрыл страшный секрет
теперь масоны убьют тебя
сейчас открою блокнот
library lib initializer init{
 private hashtable hash=InitHashtable()
 define{
 radius=300
 }

    private bool filt1(){
        return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>=0
    }
    
    private void act(){
     group a=CreateGroup()
     unit b=GetTriggerUnit()
     player c=GetOwningPlayer(b)
     float x
     float y
      GroupEnumUnitsInRange(a,GetUnitX(b),GetUnitY(b),radius,function filt1)
      b=FirstOfGroup(a)
      x=GetUnitX(b)
      y=GetUnitY(b)
      RemoveUnit(b)
      b=CreateUnit(c,LoadInteger(hash,GetSpellAbilityId(),0),x,y,0)
      DestroyGroup(a)
      b=null
      a=null
    }
    
    private void add(int a,int b){
      SaveInteger(hash,a,0,b)
    }
    
    private bool cond(){
        return LoadInteger(hash,GetSpellAbilityId(),0)>0
    }
    
    private void init(){
     trigger a=CreateTrigger()
      TriggerAddAction(a,function act)
      TriggerAddCondition(a,function cond)
      TriggerRegisterAnyUnitEventBJ(a,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    }
    
}
писал по памяти
в функцию add передёшь равкод спелла и равкод юнита которого надо призвать
То есть эта библиотека создаёт нам группу из 1 игрока жизни которого меньше или равны 0 в радиусе 300? А при каком условии она её создаёт? И вопрос как задействовать эту библиотеку при использовании скила? И почему редактор блокирет её при попытке сохранить или запустить тест карты.
PS извини за количество вопросов)
0
28
11 лет назад
0
это скил
в функции init в конце пишешь
add(равкод скила,равкод скелета)
у тебя джнгп?
ты 1 урок читал?
и 2
в нестандартном коде написал include "cj_types.j"
группа создаётся со всеми труппами в радиусе но из неё берётся только 1 юнит(b=FirstOfGroup(a))
ой
там ошибочка
return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>=0
замени на
return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)<=0
знак перепутал)
0
9
11 лет назад
0
nvc123:
это скил
в функции init в конце пишешь
add(равкод скила,равкод скелета)
у тебя джнгп?
ты 1 урок читал?
и 2
в нестандартном коде написал include "cj_types.j"
группа создаётся со всеми труппами в радиусе но из неё берётся только 1 юнит(b=FirstOfGroup(a))
ой
там ошибочка
return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>=0
замени на
return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)<=0
знак перепутал)
Нет я обычны редактор юзал. Я думал раз у меня из 1 урока карта пошла, то и остальное получится
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.