32

» WarCraft 3 / Че за функции ??

Zetox, а это платформа - автор всех этих функций, они запили себе варкравт с нативками, блекджеком и .....
32

» WarCraft 3 / Че за функции ??

Zetox, это все сделано и придумано китацами, близзард лишь готовое внесла в игру, причем не все, собрало, кое как с горем пополам добилось работы - потом не взлетело, и все. Нативки можно добавить на любой патч, что китайцы и делают, как и модельки.

Близард с их политикой просто стали не нужны тем, кто все может сделать самостоятельно, никого не ожидая и не спрашивая.

Zetox, www.neteasegames.com - идем туда и играем. (если получится зарегистрироваться)
32

» WarCraft 3 / Че за функции ??

Zetox, близарды сами не в состоянии чето сделать, да им вовсе пофиг, рефаунд они делали для китацев, но им не понравился - они пошли своим путем, а мы рожей не вышли, щяс рефаунд - загнется.
Основным рынком был Китай, но там люди не такие, взяли и сделали сами как им угодно, не спрашивая близзард, те даже не заикнулись про пиратство на платформах китайцев.
32

» WarCraft 3 / Че за функции ??

офк сетевую часть близзард не поддерживает, все для платформы китацев где это реализовано.
32

» WarCraft 3 / Утечки

Proshel_Doty, нет никакой надобности в подобном, о чем я пытаюсь донести - но кто бы слушал. Да и вовсе рализация не лучшая.
32

» WarCraft 3 / Че за функции ??

Это все что для себя делали китацы, у них там своя платформа с кастом нативками.
32

» WarCraft 3 / Утечки

Zetox, в варкарвте лок 60 фпс, который надо еще и снимать, а обновление анимации там и того реже бывает, так что не обманывайте себя что там вы чето лучше сделали, или плавнее - нет.

rsfghd, внезапно юниту можно время жизни поставить и он разложится как суммон, сразу после времени смерти.
32

» WarCraft 3 / MapHack для реплея

Swini, jass api, гуглим, там тебя интересуют все функции связанные lableboard.
32

» WarCraft 3 / WFE - Warcraft Feature Extender

badass, гугл в помощь, данный сайт решил не публиковать данный софт.
32

» WarCraft 3 / Заголовок

Событие EVENT_WIDGET_DEATH, делается с помощью функции TriggerRegisterDeathEvent( trigger, widget)
Это событие на юнита можно повешать лишь в jass, на гуях не пашет - там оно лишь на деревья.
Ну собственно оно срабатывает какраз на смерть юнита с крестом перерождения, ну далее все просто, проверить кд реинкарнации не штука, таймер в помощь или таймер в 0.00 сек, по которому проверити реально ли юнит подох или нет.

Замедление - даммик с ударом грома горного короля.
32

» WarCraft 3 / Утечки

rsfghd,
1)SetUnitPosition - значительно более ресурсоемка чем движение по осям, для проверки границ карты проверяйете кординаты на корректность, это элементарно.
  1. Нет никакой надобности юзать таймеры с таким малым периодом, типа 100 раз в сек, 50 или 23 более чем достаточно.
  2. Ты скорее наделал утечики с переменными чем сделал лучше, подобный код бесполезен, уж лучше обынчый БЖ код юзай.

Далее неверный алгоритм, нет иного завершения кроме как попадания. Если у тебя планируется тонны снарядом - то мб не делать как ты для каждого снаряда 1 таймер, еще и переборы группой ?
32

» WarCraft 3 / Утечки

Че это за ахинея?
    local trigger t = CreateTrigger()
    local integer index = 0
    local playerunitevent e = null
    local code c = function Frost_Conditions
    local player p = null
    local boolexpr b = null
    
    loop
    set p = Player(index)
    set e = EVENT_PLAYER_UNIT_SPELL_EFFECT
    call TriggerRegisterPlayerUnitEvent(t,p,e,b)
    set index = index + 1
    exitwhen index == bj_MAX_PLAYER_SLOTS
    set e = null
    set p = null
    endloop
    
    set b = Condition(c)
    call TriggerAddCondition(t,b)
    set c = null
    set c = function Frost_Actions
    call TriggerAddAction(t,c)
    
    set b = null
    set c = null
    set t = null
Ну сами и наплодили непойми чего.

Потом волну силы то не пробовали а?
Тут спелл примитив примитивом, но сделан отвратно, зачем то SteUnitPos - вместо нормального движения по осям, как таймер бредовый 0.01, ну ладно уж 0.02, или 0.03125.
Куда 0.01? Нет никакой обьективной нужды в таких таймерах, как и в прочих вещях вроде SetIUnitPosition.

Vlod, они там улететь немогут, т.к SetUnitPos не выпустит.

Но тут почему то нормально не пострена дальность полета, тупая проверка группой что кто то попалася, а если никто - то оно и дальше тикает....

Полная ахинея, уж блин триггер бы взяли и событие UnitsInRange и вручали его всем даммиками, а триггер был бы 1, если уж дофига оптимизацию охото.
1 пункт от Maniac_91: 1.1 (ненормативная лексика)
32

» WarCraft 3 / скрыть/показать юнита

grudlac, карту в студию.
Видно что в коде ошибки и глупость, но непонятно что, где и как. Вовсе что хочешь сделать опиши нормально, если ты хайдишь юнита - почему не паузишь, скрытый юнит может делать что ему вздумается.
32

» WarCraft 3 / В чем проблема?

Принятый ответ
Не везде можно указывать отрец значения, точнее не везде это дает какой то толк. Некоторые поля движок игры проверяет на корректность и изменяет на минимально возможное, если оно неккоректно. Хп юниту отрец вы не поставите. Длительность тоже, толку 0.
32

» WarCraft 3 / Дистанция получения цели

Это радиус пойска цели для автоатаки, над целью должен быть обзор.
32

» WarCraft 3 / Способности и алгоритмы на заказ

Daro:
quq_CCCP, вытащи, полезный скилл будет.
я уже кинул ссылку на спелл. У фрога ничем не лучше, с того же хайва сперт.
32

» WarCraft 3 / Система постройки стен

Зачем? Что мешает зданию поставить текстуру пути стенки?Ну и модель соответствующую, все вовсе без кода, только РО.
32

» WarCraft 3 / Дистанция атаки

Принятый ответ
Ты забываешь важное НО - ты меришь дистацнию между центрами юнитов, а игра между краем моделей, это раз, два юнит начинает атаковать не мгновенно как увидел цель в зоне досягаемости, так же не забывай что снаняды будут догонять юнита и не смотря на то что юнит уже вышел за радиус атаки - тот удар что был заготовлен всеравно на пофиг полетит в него.
Не пробовал поступить оригинальнее - событие юнит входит в регион, юнит выходит из региона, при входе помещаем юнита в группу, при выходе удаляем из этой группы, как и при смерти. В отдельном триггере кадую секунду всем юнитам в этой группе отнимаем здоровье в размере 10% от максимума.
32

» WarCraft 3 / Способности и алгоритмы на заказ

CaZaNoVa, на жассе пойдет? Могу из доты вытащить, там оно криво да косо сделано, но работает.

CaZaNoVa, кстати совсем забыл - www.hiveworkshop.com/threads/wild-axes.45611
Этот спел очень популярен и его много раз делали, фрог его тупо спер с конкурса спеллов хайва =)
32

» WarCraft 3 / Нужна помощь (vjass)

Принятый ответ
Там все гораздо проще, на каждого юнита аттачится экземпляр структуры где хранится цель, заклинатель, кол-во урона в сек, и сколько хп у тебя было, по нему высчитывается урон каждые 4 секунды. Тебе ни 10 таймеров ни группы не нужны.

function WC5 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 = GetUnitAbilityLevel( P7I, 'A0NO' )
    local integer NPI = GetTriggerEvalCount( t )
    local real WD5 = ( LoadReal( HashData, ( S5I ), ( 392 ) ) )
    local real H84 = 0
    if GetTriggerEventId( ) == EVENT_WIDGET_DEATH then
        call DestroyEffect( ( LoadEffectHandle( HashData, ( S5I ), ( 32 ) ) ) )
        call FlushChildHashtable( HashData, ( S5I ) )
        call S0I( t )
    else
        if NPI == 4 or NPI == 8 or NPI == 12 then
            call DestroyEffect( ( LoadEffectHandle( HashData, ( S5I ), ( 32 ) ) ) )
            if NPI == 12 then
                call FlushChildHashtable( HashData, ( S5I ) )
                call S0I( t )
            elseif NPI == 4 or NPI == 8 then
                call SaveEffectHandle( HashData, ( S5I ), ( 32 ), ( AddSpecialEffectTarget( "effects\\NetherInferno.mdx", P8I, "origin" ) ) )
            endif
            set H84 = ( 0.08 + SUI * 0.08 ) * QDI( WD5 - GetUnitState( P8I, UNIT_STATE_LIFE ), 0 )
            if H84 > 0 then
                call UYI( "+" + I2S( R2I( H84 ) ), 2, P8I, 0.023, 68, 0, 187, 216 )
            endif
        endif
        call DamageTarget( P7I, P8I, 1, 5 * SUI + H84 )
    endif
    set t = null
    set P7I = null
    set P8I = null
    return false
endfunction

function WE5 takes nothing returns nothing
    local trigger t = CreateTrigger( )
    local integer S5I = GetHandleId( t )
    local unit P7I = GetTriggerUnit( )
    local unit P8I = GetEnumUnit( )
    call DestroyEffect( AddSpecialEffectTarget( "effects\\NetherInferno.mdx", P8I, "origin" ) )
    call TriggerRegisterTimerEvent( t, 1, true )
    call TriggerRegisterDeathEvent( t, P8I )
    call TriggerAddCondition( t, Condition( function WC5 ) )
    call SaveUnitHandle( HashData, ( S5I ), ( 17 ), ( P8I ) )
    call SaveUnitHandle( HashData, ( S5I ), ( 2 ), ( P7I ) )
    call SaveReal( HashData, ( S5I ), ( 392 ), ( ( GetUnitState( P8I, UNIT_STATE_LIFE ) ) * 1.0 ) )
    call SaveEffectHandle( HashData, ( S5I ), ( 32 ), ( AddSpecialEffectTarget( "effects\\NetherInferno.mdx", P8I, "origin" ) ) )
    set t = null
    set P7I = null
    set P8I = null
endfunction

function WF5 takes nothing returns nothing
    local unit P7I = GetTriggerUnit( )
    local location l = GetSpellTargetLoc( )
    local real x = GetLocationX( l )
    local real y = GetLocationY( l )
    local group g = NTI( )
    local integer SUI = GetUnitAbilityLevel( P7I, 'A0NO' )
    call GroupEnumUnitsInRange( g, x, y, 180 + 25, Condition( function D01 ) )
    call ForGroup( g, function WE5 )
    call NSI( g )
    call RemoveLocation( l )
    set l = null
    set g = null
endfunction

function WG5 takes nothing returns boolean
    if GetSpellAbilityId( ) == 'A0NO' then
        call WF5( )
    endif
    return false
endfunction

function NI1 takes nothing returns nothing
    local trigger t = CreateTrigger( )
    call UMI( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( t, Condition( function WG5 ) )
    set t = null
endfunction
Как видишь все очень примитивно.Точно так же делаешь структуру с данными кто, где, когда. Нет смысла пытатся хранить сразу группу.
32

» WarCraft 3 / Как сделать так чтоб 4 удар был 100 крит 200%

Bergi_Bear, 200% на 2, крит по механике варкравта заменяет основную атаку множенной, т.е если сработал крит - твоя основная атака не срабатывает, она подменяется множенной, при этом отваливаются всякие орбы которые "ждали" обычной атаки.
32

» WarCraft 3 / Способность завод не работает

Это техническая способность, сама по себе не работает, это как создать труп - у кладбища, без способности оживить скелета или вызывать жука трупоеда оно бесполезно. Тут тоже самое, само по себе не пашет, юзай связку способностей или триггерный вариант спауна возле здания.