1
Голосов: 1
- 3 days ago
1
Голосов: 1

» WarCraft 3 / Как добавить пассивное сожжение маны баллисте?

На атаку по площади оно не работает, нужно делать триггерный вариант этой способности.
Собственно банальный детект урона, т.к это всего лишь крип - создаем триггер который реагирует на урон по всем юнитам на карте, в условии проверяем что урон выше скажем 5, источник урона баллиста а цель её враг, у врага есть мана - тогда убавить маны, и нанести еще урона сколько было выжжено маны, урон наносит от лица даммика. Вот и все.
0
Голосов: 0
- 4 days ago
0
Голосов: 0

» WarCraft 3 / локальная fogmodifier

Extremator, чтобы ты врага мог в деревьях видеть, а враг тебя не мог.
0
Голосов: 0
- 4 days ago
0
Голосов: 0

» WarCraft 3 / Предмет с рандом шансом на яд

Blatnoi Account, там такой лютый костыль, по сравнению с детектом на мемхаке, да и ради одной сферы яда такой гемор делать?
0
Голосов: 0
- 4 days ago
0
Голосов: 0

» WarCraft 3 / Спавн Рун

Блядь, ну ниужели никто не догодался использовать тамер и массив локейшинов блин...
0
Голосов: 0
- 4 days ago
0
Голосов: 0

» WarCraft 3 / Помощь с депротектом

Для начала нужно уметь работать с жасс кодом карты и понимаьть что как устроенно, потом уже взламывать карту, опять же зачем был нужен депротект?
0
Голосов: 0
- 2 weeks ago
0
Голосов: 0

» WarCraft 3 / Пропала новая сфера огня и способность слияние с тенью

Ну разумеется на 1.26 это надо самому такие способности делать.
0
Голосов: 0
- 2 weeks ago
0
Голосов: 0

» WarCraft 3 / Поджигание огненным дыханием без паров.

Да у нейтралов, там так горят юниты, без паров. Ну либо сделай кастом, способность то примитивная.
0
Голосов: 0
- 4 weeks ago
0
Голосов: 0

» WarCraft 3 / [JASS] Разница между location и x/y

Потому что локейшены нахрен не нужны, ибо тебе придется работать с координатами и делать кучу лишних днйствий, не говоря чтот локейшены - хендлы, и их использование без необходимости не желательно.
0
Голосов: 0
- 4 weeks ago
0
Голосов: 0

» WarCraft 3 / Постоянно использует slam

Такая механика у этих спеллов, если анимации нету - они берут дефолт, тоесть slam, введи туда spell, или attack
0
Голосов: 0
- 1 month ago
0
Голосов: 0

» WarCraft 3 / Первый скилл феникса ICARUS DIVE

Вот так:
function YK5 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local unit P8I=(LoadUnitHandle(HashData,(S5I),(17)))
local integer SUI=(LoadInteger(HashData,(S5I),(5)))
if GetTriggerEventId()==EVENT_WIDGET_DEATH or GetTriggerEvalCount(t)==4 or RKI(P8I)then
call DestroyEffect((LoadEffectHandle(HashData,(S5I),(32))))
call UnitRemoveAbility(P8I,'A2O7')
call UnitRemoveAbility(P8I,'B0GC')
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
endif
if GetTriggerEventId()!=EVENT_WIDGET_DEATH then
call DamageTarget(P7I,P8I,1,20*SUI-10)
endif
set t=null
set P7I=null
set P8I=null
return false
endfunction
function YL5 takes unit P7I,unit P8I,integer SUI returns nothing
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
call AddPermanentAbility(P8I,'A2O7')
call TriggerRegisterTimerEvent(t,1,true)
call TriggerRegisterDeathEvent(t,P8I)
call TriggerAddCondition(t,Condition(function YK5))
call SaveUnitHandle(HashData,(S5I),(2),(P7I))
call SaveUnitHandle(HashData,(S5I),(17),(P8I))
call SaveInteger(HashData,(S5I),(5),(SUI))
call SaveEffectHandle(HashData,(S5I),(32),(AddSpecialEffectTarget("Environment\\LargeBuildingFire\\LargeBuildingFire1.mdl",P8I,"chest")))
set t=null
endfunction
function YM5 takes nothing returns boolean
if IsUnitInGroup(GetEnumUnit(),WKI)==false and RKI(GetEnumUnit())==false then
call GroupAddUnit(WKI,GetEnumUnit())
call DestroyEffect(AddSpecialEffectTarget("war3mapImported\\FireBlast.mdx",GetEnumUnit(),"chest"))
call YL5(WMI,GetEnumUnit(),WLI)
endif
return false
endfunction
function YN5 takes nothing returns boolean
local trigger t=GetTriggeringTrigger()
local integer S5I=GetHandleId(t)
local integer NPI=(LoadInteger(HashData,(S5I),(34)))
local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
local real QXI=(LoadReal(HashData,(S5I),(189)))
local real QYI=(LoadReal(HashData,(S5I),(190)))
local real QJI=(LoadReal(HashData,(S5I),(47)))
local real QKI=(LoadReal(HashData,(S5I),(48)))
local real a=(LoadReal(HashData,(S5I),(13)))
local real YS5=(1-I2R(NPI)/50)*bj_PI
local real YT5=1400/2*Cos(YS5)
local real YR5=500/2*Sin(YS5)
local real x=PTI(QJI+YT5*Cos(a)-YR5*Sin(a))
local real y=PUI(QKI+YT5*Sin(a)+YR5*Cos(a))
local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
local group g
local integer SUI=GetUnitAbilityLevel(P7I,'A1RJ')
if GetTriggerEventId()==EVENT_UNIT_DEATH or(GetTriggerEventId()==EVENT_UNIT_SPELL_EFFECT and NPI>0 and(GetSpellAbilityId()=='A20N' or GetSpellAbilityId()=='A1RK'))or NPI>100 or BH1(P7I)then
call UPI(x,y,300)
call SetUnitVertexColor(P7I,255,255,255,255)
if(LoadInteger(HashData,(GetHandleId(P7I)),(704)))==0 or(LoadInteger(HashData,(GetHandleId(P7I)),(704)))=='A1RJ' then
call SetPlayerAbilityAvailable(GetOwningPlayer(P7I),'A1RJ',true)
endif
call SetPlayerAbilityAvailable(GetOwningPlayer(P7I),'A20N',false)
call SetUnitPathing(P7I,true)
call NSI(JAO)
call FlushChildHashtable(HashData,(S5I))
call S0I(t)
else
if ModuloInteger(NPI,10)==0 then
call UPI(x,y,200)
endif
call SaveInteger(HashData,(S5I),(34),(NPI+1))
call SetUnitX(P7I,x)
call SetUnitY(P7I,y)
call SetUnitFacing(P7I,(a+YS5-bj_PI/2)*bj_RADTODEG)
set g=NTI()
set WKI=JAO
set GK=P7I
set WMI=P7I
set WLI=GetUnitAbilityLevel(P7I,'A1RJ')
call GroupEnumUnitsInRange(g,x,y,225,Condition(function CE1))
call ForGroup(g,function YM5)
call NSI(g)
endif
set t=null
set P7I=null
set g=null
set JAO=null
return false
endfunction
function YP5 takes nothing returns nothing
local trigger t=CreateTrigger()
local integer S5I=GetHandleId(t)
local unit P7I=GetTriggerUnit()
local real QXI=GetUnitX(P7I)
local real QYI=GetUnitY(P7I)
local real a=UEI(QXI,QYI,GetSpellTargetX(),GetSpellTargetY())*bj_DEGTORAD
local real QJI=QXI+1400/2*Cos(a)
local real QKI=QYI+1400/2*Sin(a)
call SetUnitState(P7I,UNIT_STATE_LIFE,GetUnitState(P7I,UNIT_STATE_LIFE)-GetUnitState(P7I,UNIT_STATE_LIFE)*0.15)
call SCI(P7I,4301,2)
call SCI(P7I,4415,2)
call TriggerRegisterTimerEvent(t,0.02,true)
call TriggerRegisterUnitEvent(t,P7I,EVENT_UNIT_DEATH)
call TriggerRegisterUnitEvent(t,P7I,EVENT_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition(function YN5))
call SaveUnitHandle(HashData,(S5I),(2),(P7I))
call SaveReal(HashData,(S5I),(189),((QXI)*1.0))
call SaveReal(HashData,(S5I),(190),((QYI)*1.0))
call SaveReal(HashData,(S5I),(47),((QJI)*1.0))
call SaveReal(HashData,(S5I),(48),((QKI)*1.0))
call SaveReal(HashData,(S5I),(13),((a)*1.0))
call SaveGroupHandle(HashData,(S5I),(133),(NTI()))
call SetUnitPathing(P7I,false)
call SetUnitVertexColor(P7I,255,255,255,50)
call AddPermanentAbility(P7I,'A20N')
call SetPlayerAbilityAvailable(GetOwningPlayer(P7I),'A1RJ',false)
call SetPlayerAbilityAvailable(GetOwningPlayer(P7I),'A20N',true)
set t=null
set P7I=null
endfunction
function YQ5 takes nothing returns boolean
if GetSpellAbilityId()=='A1RJ' then
call YP5()
endif
return false
endfunction
function RC1 takes nothing returns nothing
local trigger t=CreateTrigger()
call UMI(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition(function YQ5))
set t=null
endfunction
Собственно синусоеда по оси движения и все.
0
Голосов: 0
- 1 month ago
0
Голосов: 0

» WarCraft 3 / Первый скилл феникса ICARUS DIVE

Достаточно сложный, и кривой в доте, могу кинуть код с доты.
2
Голосов: 2
- 1 month ago
Edited by quq_CCCP
2
Голосов: 2

» WarCraft 3 / Почему способность утекает?

Ну код конечно у тебя не ахти, вот пример кода из доты:

function IsUnitDead takes unit u returns boolean
  return GetUnitTypeId(u)<1 or IsUnitType(u,UNIT_TYPE_DEAD)==true
endfunction

function ID1 takes nothing returns boolean
  local trigger t=GetTriggeringTrigger()
  local integer S5I=GetHandleId(t)
  local integer PCI=(LoadInteger(HashData,(S5I),(30)))
  local unit P8I=NYI(PCI)
  local integer IE1=(LoadInteger(HashData,(S5I),(43)))
  local unit P7I=NYI(IE1)
  local real IF1=(LoadReal(HashData,(S5I),(44)))
  local unit IG1=(LoadUnitHandle(HashData,(S5I),(45)))
  local real x=GetUnitX(IG1)
  local real y=GetUnitY(IG1)
  local real QJI=GetUnitX(P8I)
  local real QKI=GetUnitY(P8I)
  local real IH1=IF1*0.03
  local real IZ1=UEI(x,y,QJI,QKI)
  local real IV1=x+IH1*Cos(IZ1*bj_DEGTORAD)
  local real IW1=y+IH1*Sin(IZ1*bj_DEGTORAD)
  local boolean IX1=(LoadBoolean(HashData,(S5I),(698)))
  local boolean IY1=(LoadBoolean(HashData,(S5I),(818)))
  call SetUnitX(IG1,IV1)
  call SetUnitY(IG1,IW1)
  call SetUnitFacing(IG1,IZ1)
  if IsUnitDead(P8I)and IX1==false or(((LoadInteger(HashData,(GetHandleId((P8I))),((4422))))==1)==true and IY1==true)then
    call KillUnit(IG1)
    call NXI(PCI)
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  elseif UTI(QJI,QKI,IV1,IW1)<=IH1 then
    call KillUnit(IG1)
    set GK=P7I
    set HK=P8I
    call ExecuteFunc((LoadStr(HashData,(S5I),(46))))
    call NXI(PCI)
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  endif
  set t=null
  set P8I=null
  set P7I=null
  set IG1=null
  return false
endfunction

function IJ1 takes unit P7I,unit P8I,integer IK1,string IL1,real IF1,boolean IM1 returns trigger
  local trigger t=CreateTrigger()
  local integer S5I=GetHandleId(t)
  local real QXI=GetUnitX(P7I)
  local real QYI=GetUnitY(P7I)
  local real IN1=GetUnitFacing(P7I)
  call TriggerRegisterTimerEvent(t,0.03,true)
  call TriggerAddCondition(t,Condition(function ID1))
  call SaveReal(HashData,(S5I),(44),((IF1)*1.0))
  call SaveInteger(HashData,(S5I),(30),(NKI(P8I)))
  call SaveStr(HashData,(S5I),(46),(IL1))
  call SaveInteger(HashData,(S5I),(43),(NKI(P7I)))
  call SaveUnitHandle(HashData,(S5I),(45),(CreateUnit(GetOwningPlayer(P7I),IK1,QXI,QYI,IN1)))
  call SaveBoolean(HashData,(S5I),(698),(false))
  call SaveBoolean(HashData,(S5I),(818),(IM1))
  set WK=t
  set t=null
  return WK
endfunction
Это готовая наработка для создание снарядов из юнитов,
используется так
  local trigger t=IJ1(DKI,GetEnumUnit(),'h0D8',"MT3",400,false)
кто кастер, кто цель, ид юнита снаряда, имя функции которая вызывается при попадании, скорость в секунду, уничтожаем снаряд если цель подохла или недосигаем.
Функция возвращает триггер, на ID которого мы можем записать остальные данные и получить их в другой функции.
Код тоже не идеален, но вполне удобен, юзаются триггеры вместо таймеров, т.к тут отслеживаются события.
1
Голосов: 1
- 1 month ago
1
Голосов: 1

» Unryze Jass API / UjAPI

Ух ты наконец то, можно создавать баффы, и ненужно возится с аурой торнадо.
5
Голосов: 5
- 2 months ago
5
Голосов: 5

» WarCraft 3 / Ловушка

Super cool, это очень сложно, вам нужно много изучать прежде чем пытаться что то такое делать в редакторе.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Определение хоста карты

IceFog, типа у кого меньше всех задержка - тот и хост, но это не надежный метод.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Id приказа "Похищение жизни"

"lifedrain", но канал это пустышка, реверс ты таким образом не сделаешь.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Определение хоста карты

nazarpunk, насколько помню, по геймкешу и зажержке синха, без мемхака, способ не очень надежный.
1
Голосов: 1
- 2 months ago
1
Голосов: 1

» WarCraft 3 / ии на карте дота

Глянул карту, ууу, человеку нечем занятся, свою доту на гуи лепит...
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / ии на карте дота

Ну им штука сложная, + нужно сперва составить чёткую тактику.
3
Голосов: 3
- 2 months ago
3
Голосов: 3

» WarCraft 3 / Ульт Лича из Доты

ALEX 101 НЕ, надо не вставлять, а писать с нуля, глядя на этот код.
Вопрос был как сделать, я вам кинул пример как это в доте сделано, изучайте и пробуйте.
0
Голосов: 0
- 2 months ago
Edited by quq_CCCP
0
Голосов: 0

» WarCraft 3 / Ульт Лича из Доты

Там примитивный код, создается дамми юнит с моделью ледяного шара, и его двигают от лича к указанной цели, если дистанция между шаром и целью меньше N, то наносят урон цели (дамми каст ледяной звезды, урон по цели убран, оставлен только урон по области) ну и ищем в радиусе 500 еще одну цель, которой не является юнит которого мы ударили, ну и летим дальше.

function SH4 takes nothing returns boolean
    local trigger t = GetTriggeringTrigger( )
    local integer S5I = GetHandleId( t )
    local unit P7I = ( LoadUnitHandle( HashData, ( S5I ), ( 2 ) ) )
    local unit P8I = ( LoadUnitHandle( HashData, ( S5I ), ( 17 ) ) )
    local unit WF3 = ( LoadUnitHandle( HashData, ( S5I ), ( 374 ) ) )
    local integer SUI = ( LoadInteger( HashData, ( S5I ), ( 5 ) ) )
    local integer SZ4 = ( LoadInteger( HashData, ( S5I ), ( 233 ) ) )
    local integer MKO = ( LoadInteger( HashData, ( S5I ), ( 12 ) ) )
    local real x = GetUnitX( WF3 )
    local real y = GetUnitY( WF3 )
    local real tx = GetUnitX( P8I )
    local real ty = GetUnitY( P8I )
    local real a = AngleBetweenCords( x,y,tx,ty )
    local integer DT1 = ( LoadInteger( HashData, ( S5I ), ( 720 ) ) )

    if DT1 > 0 then
        call SaveInteger( HashData, ( S5I ), ( 720 ), DT1 - 1 )
        set t = null
        set P7I = null
        set P8I = null
        set WF3 = null
        return false
    endif

    if DistBetweenCods( x, y, tx, ty ) > 20.00 then
        call SetUnitFacing( WF3, a )
        set x = PTI( x + 18.0 * Cos( a * bj_DEGTORAD ) )
        set y = PUI( y + 18.0 * Sin( a * bj_DEGTORAD ) )
        call SetUnitX( WF3, x )
        call SetUnitY( WF3, y )
    else
        if not( IsUnitDead( P8I ) or IsUnitType( P8I, UNIT_TYPE_MAGIC_IMMUNE ) ) then
            set tx = GetUnitX( P8I )
            set ty = GetUnitY( P8I )
            set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer( P7I ), DUMMY, tx, ty, a ) 
            call SetUnitPathing( bj_lastCreatedUnit, false )
            call SetUnitX( bj_lastCreatedUnit, tx )
            call SetUnitY( bj_lastCreatedUnit, ty )
            call UnitApplyTimedLife( bj_lastCreatedUnit, 'BTLF', 2.00 )
            call UnitAddAbility( bj_lastCreatedUnit, 'A091' )
            call SetUnitAbilityLevel( bj_lastCreatedUnit, 'A091', SUI )
            if not IsUnitHasNegation(P8I) and IssueTargetOrder( bj_lastCreatedUnit, "frostnova", P8I ) then
                call UnitDamageTarget( P7I, P8I, LoadReal( HashData, S5I, 3 ), false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
            else 
                call KillUnit( bj_lastCreatedUnit )
            endif
        endif
        if SZ4 > MKO then
            call RemoveUnit( WF3 )
            call FlushChildHashtable( HashData, ( S5I ) )
            call S0I( t )
        else
            call GroupClear( bj_TempGroup )
            set bj_groupEnumOwningPlayer = GetOwningPlayer( P7I )
            call GroupEnumUnitsInRange( bj_TempGroup, tx, ty, 625.00, Condition( function Cond_EnemyVisibleNoVardVulAlive ) )
            call GroupRemoveUnit( bj_TempGroup, P8I )
            set P8I = GroupPickRandomUnit( bj_TempGroup )
            
            if P8I == null then
                call RemoveUnit( WF3 )
                call FlushChildHashtable( HashData, ( S5I ) )
                call S0I( t )
            else
                call SaveInteger( HashData, ( S5I ), ( 720 ), ( 10 ) )
                call SaveInteger( HashData, ( S5I ), ( 233 ), ( SZ4 + 1 ) )
                call SaveUnitHandle( HashData, ( S5I ), ( 17 ), ( P8I ) )
            endif
        endif
    endif

    set t = null
    set P7I = null
    set P8I = null
    set WF3 = null
    return false
endfunction

function Trig_ChainFrost_Actions takes nothing returns nothing
    local unit P7I = GetTriggerUnit( )
    local unit P8I = GetSpellTargetUnit( )
    local integer SUI = GetUnitAbilityLevel( P7I, 'A05T' )
    local integer MKO = 10
    local trigger t = CreateTrigger( )
    local integer S5I = GetHandleId( t )
    local unit dummy= CreateUnit( GetOwningPlayer( P7I ), 'e009', GetUnitX( P7I ), GetUnitY( P7I ), GetUnitFacing( P7I )  )
    
    call SetUnitPathing( dummy, false )
    
    if GetSpellAbilityId( ) == 'A08H' then
        set SUI = GetUnitAbilityLevel( P7I, 'A08H' ) + 1
        set MKO = 100000
    endif
    
    call SaveUnitHandle( HashData,  S5I ,  2,  P7I )
    call SaveUnitHandle( HashData,  S5I ,  17,  P8I )
    call SaveUnitHandle( HashData,  S5I ,  374, dummy )
    call SaveInteger( HashData, S5I ,  5, ( SUI ) )
    call SaveInteger( HashData, S5I ,  233, ( 1 ) )
    call SaveInteger( HashData, S5I ,  12, ( MKO ) )
    call SaveInteger( HashData, S5I ,  720, ( 0 ) )
    call SaveReal( HashData, S5I, 3, 190.00 + 90.00 * SUI )
    
    call TriggerRegisterTimerEvent( t, 0.02, true )
    call TriggerAddCondition( t, Condition( function SH4 ) )
    
    set P7I = null
    set P8I = null
    set dummy = null
    set t = null
endfunction

function Trig_ChainFrost_Conditions takes nothing returns boolean
    if ( GetSpellAbilityId() == 'A05T' or GetSpellAbilityId()=='A08H' ) and not IsUnitHasNegation(GetSpellTargetUnit()) then
        call  Trig_ChainFrost_Actions( )
    endif
    return false
endfunction

function Register_ChainFrost takes nothing returns nothing
    local trigger trg = CreateTrigger()
    local integer nIndex = 1
    
    call TriggerAddCondition( trg, Condition( function Trig_ChainFrost_Conditions ) )
    
    loop
        exitwhen nIndex > 11
            if IsSlotPlayer(Player(nIndex))then
                call TriggerRegisterPlayerUnitEvent( trg, Player(nIndex), EVENT_PLAYER_UNIT_SPELL_EFFECT, OnlyHero )
            endif
        set nIndex = nIndex + 1
    endloop
    
    set trg = null
endfunction
Вот как оно сделано у фрога, с небольшими доработками.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Возможно ли использовать более 16 разных тайлов на одной карте?

Там увы проблема, формат самого файла ландшавта не поддерживает больше число тайлов. + там 2 заняты водой, которые анимированые тайлы.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Транспорт наземный и урон

Отслеживать смерть техиники, и наносить урон. Вроде кстати у дирежаблей гоблинов была способность - парашутист, типа после крушения все получают головокружение и медленее двигаются некоторое время.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Как делать заклинание Arctic Blast из доты

Как где, не видно? TriggerCondition, тут все в условиях написано.
Код Jass, собвственно все что надо таймер, дамми юнит с модлью кольца и группа, по малому периоду двигаем даммика за юнитом кастером и выбираем всех врагов вокруг, с каждым тиком таймера увеличиваем радиус поиска группы, тех кто уже попался отсеиваем, а тех кто попался впервые дамажим, замедление делается дамми юнитом кидающим ледяную звезду в себя, урон по площяди убран, только замедление.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / FRAMETRIS (тетрис на фреймах)

Традиционные были без звука, это после добавили звук с цветом и прочее.
Пажитов насколько помню писал тетрис на компе где ни графики ни звука, разве что принтером шуршать можно. Так что музяку можно любую использовать, то что у нас в 90х китайцы продавали не есть каноничный вариант игры.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Как делать заклинание Arctic Blast из доты

NTI - тупо CreateGroup, ну NSI - DestroyGroup
Если в карте нету GroupUtils (прекрасно гуглится на хайве).
Триггер меняем на таймер, но я скинул не для копипаста а для изучения, сложного в коде ничего нету.
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Как делать заклинание Arctic Blast из доты

function J9O takes nothing returns nothing
  local unit P8I=GetEnumUnit()
  local group JAO=ND0
  local unit P7I=NE0
  if IsUnitInGroup(P8I,JAO)==false then
    call GroupAddUnit(JAO,P8I)
    call IssueTargetOrder(NF0,"slow",P8I)
    set JJI=true
    call DamageTarget(P7I,P8I,1,200)
    set JJI=false
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl",P8I,"origin"))
  endif
  set P8I=null
  set JAO=null
  set P7I=null
endfunction

function JBO takes nothing returns boolean
  local trigger t=GetTriggeringTrigger()
  local integer S5I=GetHandleId(t)
  local unit P7I=(LoadUnitHandle(HashData,(S5I),(2)))
  local unit I01=(LoadUnitHandle(HashData,(S5I),(19)))
  local group JAO=(LoadGroupHandle(HashData,(S5I),(133)))
  local real d
  local real x
  local real x0=GetUnitX(P7I)
  local real y
  local real y0=GetUnitY(P7I)
  local group g=NTI()
  local integer NPI=GetTriggerEvalCount(t)
  local integer i
  call SetUnitX(I01,GetUnitX(P7I))
  call SetUnitY(I01,GetUnitY(P7I))
  set ND0=JAO
  set NE0=P7I
  set NF0=(LoadUnitHandle(HashData,(S5I),(132)))
  if GetTriggerEvalCount(t)>37 then
    call KillUnit(I01)
    call NSI(JAO)
    call FlushChildHashtable(HashData,(S5I))
    call S0I(t)
  else
    set d=NPI*21
    set i=0
    loop
      exitwhen i>36
      set x=x0+d*Cos(360*i/36*bj_DEGTORAD)
      set y=y0+d*Sin(360*i/36*bj_DEGTORAD)
      set GK=P7I
      call GroupEnumUnitsInRange(g,x,y,150,Condition(function C81))
      call ForGroup(g,function J9O)
      set i=i+1
    endloop
  endif
  call NSI(g)
  set t=null
  set I01=null
  set JAO=null
  set P7I=null
  set g=null
  return false
endfunction

function JCO takes nothing returns nothing
  local unit SFI=GetTriggerUnit()
  local real x=GetUnitX(SFI)
  local real y=GetUnitY(SFI)
  local group JAO=NTI()
  local trigger t=CreateTrigger()
  local integer S5I=GetHandleId(t)
  local unit I01=CreateUnit(GetOwningPlayer(SFI),'h091',x,y,0)
  local unit JDO=CreateUnit(GetOwningPlayer(SFI),'e00E',GetUnitX(SFI),GetUnitY(SFI),0)
  call UnitAddAbility(JDO,'A0T0')
  call SaveGroupHandle(HashData,(S5I),(133),(JAO))
  call SaveUnitHandle(HashData,(S5I),(19),(I01))
  call SaveUnitHandle(HashData,(S5I),(132),(JDO))
  call SaveUnitHandle(HashData,(S5I),(2),(SFI))
  call TriggerRegisterTimerEvent(t,0.06,true)
  call TriggerAddCondition(t,Condition(function JBO))
  set t=null
  set JAO=null
  set I01=null
  set JDO=null
  set SFI=null
endfunction

function JEO takes nothing returns nothing
  if GetSpellAbilityId()=='A0T9' then
    call JCO()
  endif
endfunction
0
Голосов: 0
- 2 months ago
0
Голосов: 0

» WarCraft 3 / Как делать заклинание Arctic Blast из доты

Extremator, там кастомная модель, разлета снарядов.
Могу скинуть код, он там примитивный.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)

host_pi, потому что вы что то не то делайте, сами себе создаёте проблему.
1
Голосов: 1
- 3 months ago
1
Голосов: 1

» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)

host_pi, нет, не припомню ни одной задачи, где бы были такие циклы.
0
Голосов: 0
- 3 months ago
Edited by quq_CCCP
0
Голосов: 0

» WarCraft 3 / Отследить количество играющих игроков

Нельзя сразу в одном цикле пересчитать играющих игроков не ботов, сходу выдать им ресурсы, и добавить их в зависимости от номера в разные "форсы"?
1
Голосов: 1
- 3 months ago
1
Голосов: 1

» WarCraft 3 / Циклы и их лимиты (+ способы обхода лимитов)

Мне вот интересно, а зачем?
Проблемы были лишь в Гуи говнокартах и дотах, где оптимизатор сливает все в одну функцию и начинаются обрывы, которые лечатся сверхпросто.
Но проще думать головой и не плодить сущности, инит нет надобности делать в мейне и разом, необходимые триггеры вовсе можно создавать во время игры, к примеру когда игрок выберет героя к котором эти триггеры относятся.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Золотая башня

Очень сложно это на гуи делать. Нужно создать триггер и отслеживать урон всем юнитам которым можно нанести урон, так же проверять что это за урон.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Devistating Blow ( Фатальный удар )

Ну я бы сделал по нормальному, через детект урона. Собственно все просто, задаем абилке труповозки эксгумация кд, там достаточно просто все в статьях есть, когда кд прошло, включаем триггер на атаку, при замахе на врага создаем еще 1 триггер, в котором ждем удара от врага, при удара неносим урон. Все просто.
1
Голосов: 1
- 3 months ago
1
Голосов: 1

» WarCraft 3 / Оптимизация карты

Ну для начала не мешало бы избавится от гуи, и использовать как можно меньше разрушаймых декораций и блокираторов пути.
На больших картах из за них лагает, стоит удар грома юзнуть и 5 фпс на секунды 3 обеспечено.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Как сделать систему рейтинга? (BD sql)

TheNoyl, реально, но проелоадом или мемхаком.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Как сделать систему рейтинга? (BD sql)

Ну пасскоды как во всяких гоблинах, это самое простое.
Более сложное, это preload или мемхак, создавать на машине юзера файл с данными.
Ну и у лтд или доты, тупо отправка хостботу, который все сам делает, получает инфу хостбот анализируя пакеты синха геймкеша.
Для этого даже наработка есть, wc3mdd
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Аналог Smoke of deceit из dota2

SAND, Ну есть функция настройки цвета юнита и его прозначности, прозрачность в 0, и юнит полностью прозрачный, прозрачность как и цвет можно локально настроить для игрока, SetUnitVertexColor называется.
С иконкой там немного посложнее, в разделе нейтральное здание, сначала настраиваем альтернативную иконку для миникарты - call SetAltMinimapIcon( "UI\\Minimap\\Minimap-Tower" ), ну а потом для конкретного юнита прменяем функцией - call UnitSetUsesAltIcon(whichUnit, flag), ну так вот, иконки тоже можно локально настраивать, таким образом сделав незаметным на миникарте героя.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Юнит отходит при атаке

mifexiy, зачем? Есть триггер с событием, юнит отдал приказ - цель точка, приказ является move, юнитам отдавшим приказ - является крип ( в доте тупо проверка на абилку которая есть только у крипов идущих по линиям), то отдаем приказ атаковать в нужную точку, точку вычисляем исходя из области в которой сейчас юнит сидит. Все просто.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Аналог Smoke of deceit из dota2

SAND, не видно, но автоатакой бить можно - но смысл смоуков чтобы варды не палили и все.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Юнит отходит при атаке

Постоянно отдавать приказ идти, в доте к примеру там проверка на приказ move, если крип отдал такой приказ, проверяется в какой области он находится, и отдается приказ идти в следующую область.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Аналог Smoke of deceit из dota2

Да как и в доте 1, ептить. Просто инвиз, иконку на миникарте делаем прозрачной, как и саму модель юнита для врагов, поэтому даже на вардах юнитов то не видно.
1
Голосов: 1
- 3 months ago
1
Голосов: 1

» WarCraft 3 / Опасен ли мемхак?

IceFog, у мемхака много способов подключения?
Да, и судя по некоторым тредам, есть еще и в рефе. Хз конечно как и что, о дырах в виртуальной машинезнал один местный юзер, который молчал, но на хайве один человек взял и рассказал Драколичу об одном, найденым им простым вариантом - результат все мы знаем...
Но сколько людей, не пошло постить на форумы свои находки, авторы читов и программ типа кеев, маперов, улучшайзеров фпс. К слову они ни чуть не менее опасны чем мемхак, они написаны человеком который сидит за ником, за которым ничего нет, ты даже не знаешь в какой стране на самом деле живет этот человек и что он там написал, опенсурсы вам никто не дает.
Ну и как я уже писал, айкаплаунчер и прочие лаунчеры - написаны ни понять кем, у айкапа разработчиков выгнаных со скаднадалами уже десятки, так что вирусов боятся - сидеть оффлайн.
Кто хочет юзать мемхак для своей карты юзайте, вам ничего не угрожает, для тех кто видит на ирне что карта с мемхаком, гуглите инфу - если карта норм и автор её развивает, вирусы там не появятся, стрелять себе в ногу автор карты не будет.

Кстати забыл сказать, есть способы скрытия мемхака от тупых проверок, мемхак это всего лишь сломанный массив - а как и где его сломать не принципиально важно, все остальное мешура которая лишь дает API для работы, чеканье переменных как сделал айкап лечится сверх просто. Мемхак может быть в любом скрипте, а не только в J, т.е AI, PLD, начхать.Передать адрес массива можно геймкешем.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Как отловить стан?

Ептить, ну при касте молотка создаешь на цель каста триггер с событием - юнит получает урон, урон ровно 0, и есть бафф стана, сразу бафф удаляешгь и все. Следом триггер, а так же добавляешь событие - время вышло, на примерное время за которое молоток долетит до юнита.
Разумеется все это на JASS делается, а не на гуях.
0
Голосов: 0
- 3 months ago
0
Голосов: 0

» WarCraft 3 / Как отловить стан?

Получает урон, ровно 0 урона и бафф стана, или приказ стана...
0
Голосов: 0
- 4 months ago
0
Голосов: 0

» WarCraft 3 / Опасен ли мемхак?

nazarpunk, лич как то собирал инфу о пк игроков его дотки, 90% картофелены из средины нулевых и еле живой инет, окей ботнет...

Проверка j файла карты не поможет от инжекта дллки, это мы честные картоделы размещаем мемхак на самом видном месте, и проверить на него карту не сложно, но мемхак можно запустить и из AI и PLD файла, и подгрузить длл, вовсе мемхак мини который в глаза не бросается а только запускат ддл был уже давно, та самая карта демка китайцев. Ну и труды Айсфога напомню, было бы желание.
Те кто хочет сделать свою карту лучше с помощью мемхака ни от кого не прячатся и ничего из вышеописанного делать не будут, зачем?
2
Голосов: 2
- 4 months ago
2
Голосов: 2

» WarCraft 3 / Опасен ли мемхак?

QQQQWWWW, в теории, которую никто так и не поддвердил, в карте может быть вирус, который с помощью мемхака поселится у тебя на пк, но это нахер никому не интересно.
  1. То что пишет вася выше, абсолютная ерунда, толку от его мелких пакостей кроме как все перестанут играть в его карту нету, чтобы написать вирус который что то может в современных систамах - нужно постаратся, а зачем стараться если это не приносит никакого профита?
  2. Невозможность получения профита с атаки машин потенциальных жертв, тебе как автору карты то от вирусов на машинах игроков какой профит? Что ты там можешь украсть, пароли от порно сайта? Ну ок, аккаунт от дотки айсикапа, ой ты ептить кража века...
  3. Любой вред игрокам для автора карты вреден, его задача сделать так чтобы как можно больше игроков играло в его карту, а не вредить им и делать так чтобы никто не играл, создание играбельной карты это труд, огромный труд.
И еще параноики, бойтесь - я могу кинуть карту, с мемхаком, которая работет везде, даже на ракапе и не палитсо... Если кто захочет вам навредить, он навредит.
0
Голосов: 0
- 4 months ago
0
Голосов: 0

» WarCraft 3 / какие свойства есть у абилки 'Aloc' и чем их воспроизвести?

Берги, удалить москиты можно только после хайда юнита, но хп бара не будет, чтобы герой был как прежде - сперва морфим его в кого либо, кого неважно, после обратно, в того каким был,и улыбаемся, москитов нету.
0
Голосов: 0
- 4 months ago
0
Голосов: 0

» WarCraft 3 / каким софтом можно создать w3r файлы из координат?

Зачем?, у тебя есть координаты с ними и работай если что, создать в карте новый рект и посмотреть его текущие корды и переписать в j файл раз плюнуть.
0
Голосов: 0
- 4 months ago
0
Голосов: 0

» WarCraft 3 / Как добавить юнита для продажи?

Макс количество и время пополнения в настройках юнита измени, по вкусу.