28

» WarCraft 3 / нестандартная модель летает в воздухе когда ставишь

)
знакомое, я тогда даже не знал про мдлвис и декорации опускать не умел)
через ctrl+page down, ctrl+page up можно опустить/поднять декорацию
28

» WarCraft 3 / Задержка в карте.

(Буду еще тестить на это)
т.е. ты не уверен что-ли?)
в основном причина как раз таки в утечках и постоянно увеличивающихся кол-во объектов (не утечек: юниты, декорации, предметы и т.д.)

можешь в принципе попробовать перевести триггеры на джасс, мне уже писали по этому поводу, и перевод на нормальный джасс спасало от лагов, задержек, фризов, называй как хочешь

может там в целом беда с логикой в действиях происходит
28

» WarCraft 3 / Задержка в карте.

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

» WarCraft 3 / OrderId2String

globals
	constant hashtable H = InitHastable( )
endglobals

function init takes nothing returns nothing
	call SaveStr( H, 'A000', 0, "stomp" )
endfunction

...

function myfunc takes nothing returns nothing
	call IssueImmediateOrder( GetTriggerUnit( ), LoadStr( H, GetSpellAbilityId( ), 0 ) )
endfunction

плюс столкнулся с другой проблемой, приказ вроде вылавливаю, но дамми не кастует один чёрт
дамми должен принадлежать игроку, а не нейтралу

и вероятно не боту в т.ч.
28

» WarCraft 3 / OrderId2String

бд сделай просто и всё, ты можешь прямо в равкод абилки сохранить её приказ, используя хэштаблицу
28

» WarCraft 3 / OrderId2String

у меня есть переменная с id применённой способности
чего? ты просто выдумал какое-то другое применение этой нативке или что?
она конвертирует целочисленный приказ в строковой, НЕ ПРИКАЗ ВЗЯТЫЙ ИЗ РАВКОДА АБИЛКИ

событие с применением способности не возвращает никакой приказ
28

» WarCraft 3 / Превращеия Юнитов из казармы из Своих в союзных

есть событие юнит завершает подготовку боевой единицы, юнит триггера это тот, кто создал юнита, подготовленный юнит это тот, кто появился, ему и меняешь владельца
28

» WarCraft 3 / Высота подъема

NatriY, возможно дело в угле крена и угле поворота, желательно их на 0 выставить
28

» WarCraft 3 / отлов приказа способности, добавление и каст

сейчас вникся в тему, нафиг тебе код на джассе я искренне не пойму, это на гуи в 2 строчки делается
насчёт сути
что хочу узнать - есть ли способ по id приказа добавить способность другому юниту и отдать приказ на применение?
бд делай, абилок и их приказов

globals
	integer SpellID
	string SpellOrder
	integer SpellTargetType
	
	constant integer Stomp = 1
endglobals

function init takes nothing returns nothing
	set SpellID[0] = 'A000'
	set SpellOrder[0] = "thunderbolt"
	set SpellTargetType[0] = 0 // 0 - target, 1 - no target, 2 - point
	
	set SpellID[Stomp] = 'A001'
	set SpellOrder[Stomp] = "stomp"
	set SpellTargetType[Stomp] = 1
endfunction

function myfunc takes unit u returns nothing
	local integer i = GetRandomInt( 0, 1 )
	
	call UnitAddAbility( u, SpellID[i] )
    if SpellTargetType[i] == 0 then
        call IssueTargetOrder( u, SpellOrder[i], GetNearUnitInRange( ... ) )
    elseif SpellTargetType[i] == 1 then
        call IssueImmediateOrder( u, SpellOrder[i] )
    elseif SpellTargetType[i] == 2 then
        call IssuePointOrder( u, SpellOrder[i], x, y )
    endif
endfunction
28

» WarCraft 3 / отлов приказа способности, добавление и каст

function Trig_Order_Actions takes nothing returns nothing
    local string s = GetUnitName(GetTriggerUnit()) + udg_Sep
    local string order = OrderId2String(GetIssuedOrderId())
    local string target = ""
    
    if order != null and order != "" then
        set s = s + order + " -- " + I2S(GetIssuedOrderId())
    else
        set s = s + I2S(GetIssuedOrderId())
    endif
    
    if GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER then
        if GetOrderTargetDestructable() != null then
            set target = "target destructable -- " + GetDestructableName(GetOrderTargetDestructable())
        elseif GetOrderTargetItem() != null then
            set target = "target item -- " + GetItemName(GetOrderTargetItem())
        else
            set target = "target unit -- " + GetUnitName(GetOrderTargetUnit())
        endif
        
    elseif GetTriggerEventId() == EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER then
        //set target = "target point -- (" + R2SX(GetOrderPointX()) + ", " + R2SX(GetOrderPointY()) + ")"
    endif
    
    if target != "" then
        set s = s + udg_Sep + target
    endif
    
    //call Message(10., s)
endfunction

//===========================================================================
function InitTrig_Order takes nothing returns nothing
    set gg_trg_Order = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_ORDER )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Order, EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER )
    call TriggerAddAction( gg_trg_Order, function Trig_Order_Actions )
endfunction
теперь будет сохраняться
28

» WarCraft 3 / Высота подъема

NatriY, плавающий тип ведь?
когда выставляешь высоту юнита, в аргументе rate ставь 0 для мгновенного изменения высоты, а не 10000000
28

» WarCraft 3 / GetClosestDestructable

ну типа как-то так, не уверен в работоспособности потому что не проверял
раскрыть
globals
    destructable bj_lastFilterDestructable = null
    destructable nearDestructable = null
    real g_distance
    real g_x
    real g_y
endglobals

function NearDestructable takes nothing returns nothing
    local real x
    local real y
    local real d
    
    set bj_lastFilterDestructable = GetEnumDestructable( )
    
    set x = GetDestructableX( bj_lastFilterDestructable )
    set y = GetDestructableY( bj_lastFilterDestructable )
    set d = SquareRoot( ( g_x - x ) * ( g_x - x ) + ( g_y - y ) * ( g_y - y ) )
    
    if d < g_distance then
        set g_distance = d
        set nearDestructable = bj_lastFilterDestructable
    endif
endfunction

function GetNearDestructable takes real x, real y, real radius, boolexpr b returns destructable
    local rect r = Rect( x - radius, y - radius, x + radius, y + radius )
    
    set nearDestructable = null
    set g_distance = radius
    set g_x = x
    set g_y = y
    
    call EnumDestructablesInRect( r, b, function NearDestructable )
    
    call RemoveRect( r )
    set r = null
    
    return nearDestructable
endfunction

в булекспр можешь кинуть любое условие для фильтрации деструктов, т.е. например
function MyCond takes nothing returns boolean
  return GetDestructableTypeId( GetFilterDestructable( ) ) == '4sdfsd' or GetDestructableTypeId( GetFilterDestructable( ) ) == 's'fsf'
endfunction
28

» WarCraft 3 / Высота подъема

если "летящий шарик" это юнит, то делай его изначально плавающим, добавляя абилку 'Arav'
высоту ты можешь узнать через общепринятую функцию:
globals
	location LFZ = Location( 0.00, 0.00 )
endglobals

function GetLocZ takes real x, real y returns real
	call MoveLocation( LFZ, x, y )
	return GetLocationZ( LFZ )
endfunction
28

» WarCraft 3 / Помощь по выпадении лута

1 - у юнита есть строка, "награда за уничтожение" и её грани (доп. рандомного кол-ва золота), для игроков в триггерах нужно включить награду за убийство
2 - таблица/формула опыта в константах
3 - если юнит стоит на карте, можно щёлкнуть по нему и выбрать выпадающие предметы, иначе - триггерно (при смерти юнита создавать на его месте предмет)
28

» WarCraft 3 / Mega Shot "скилы под ключ"

если подкрутить эффекты то в принципе норм спелл, для какого-нибудь босса
28

» WarCraft 3 / Руны

суть в том, что просто слово сюда идеально влезло, так-то руны все разные и слова подходящего не будет
28

» WarCraft 3 / Внимание вопрос

JIEGEND, ну так используй проверку на тип юнита, очевидно .-.
если юнит равен рыцарю, добавить +2 к переменной, если юнит пехотинец, +1
и нафиг ты выбираешь всех юнитов в области с действием выбрать всех юнитов в области?
у тебя в области могут быть 100 юнитов и получится, что ты сделал 99 лишних действий, т.е. тебе этот цикл вообще нафиг не нужен
28

» WarCraft 3 / Внимание вопрос

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