Q/A

здесь можете задавать вопросы по jass
162 34 162
0
9
11 лет назад
0
При запуске теста пишет wehack.lua:480 и что-то там дальше(
0
24
11 лет назад
Отредактирован prog
0
Возможно то что я скажу кого-то поставит в тупик, но не лучше ли положиться в вопросе оживления трупов на движок вара и решить проблему дамми-кастом? Или банальной подменой способностей. Первое более сложное, второе чуть менее удобно в использовании.
Первый вариант - при применении заклинания-пустышки (желательно на основе канала) триггерно создается дамми с соответствующим заклинанием призыва и активирует его. Остается решить проблему перезарядки способности и возврата стоимости если призыв не удался.
Второй вариант - триггерно по а активации все тех-же способностей-пустышек юниту выдается одна из призывающих способностей, что позволяет иметь одну призывающую способность в один момент времени, но пользоваться столькими разными призывами, на сколько места хватит (учитывая возможность использования спеллбуков - это очень много). Этот вариант можно реализовать в двух видах - способность-пустышка заменяется настоящей способностью или все пустышки в наличии постоянно плюс еще одна способность для непосредственно призыва.
Оба эти варианта на мой взгляд лучше чем триггерно искать труп, удалять его и создавать вызванное существо.
UPD: было много опечаток, поправил
0
9
11 лет назад
0
щас поставлю джнгп
0
28
11 лет назад
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 урока карта пошла, то и остальное получится
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:
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
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
21
11 лет назад
0
бог в помощь
native GroupEnumUnitsInRange                takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
0
9
11 лет назад
Отредактирован dermax1000
0
nvc123:
и названия меняются на равкоды
берёшь группу юнитов
group a=CreateGroup()
я сейчас системку напишу
Напиши пожалуйста. Вот пытаюсь что-то сделать и пока не особо понимаю как взять значение из группы и создать группу только из 1 юнита. Будет наглядно