32

» WarCraft 3 / Исправьте ошибки

Что за копипаст? Фигня какая то, напиши здесь что тебе нужно!
У тебя там ничего правильного нет, какой то копипаст примитивного диалога выбора, тебе нужно выбрать героев с помощью диалога - опиши очень подробно про то как ты видишь эту систему пика, мы поможем с реализацией.
Вопросы по функциям есть в статьях.
32

» WarCraft 3 / Удалить предмет и дать игроку его цену в золоте

Странно, я же где то видел карту с кастом коммон ж, мб там getunitcost юзали и для итемов.
32

» WarCraft 3 / ИИ не кастует автоматом

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

» WarCraft 3 / Удалить предмет и дать игроку его цену в золоте

Есть вариант попроще, импортный common.j с аи нативками, была как то тема - суть в ии скриптах есть функции позволяющие узнать что по чем, хаков не требуется.
32

» WarCraft 3 / Апгрейд способности отдельного здания

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

» WarCraft 3 / Улучшение требует места в инвентаре

Принятый ответ
Какие улучшения? Ты про продажу предметов? Нужно делать на основе рун, руны пропадают при покупке и не требуют места в инвентаре.
32

» WarCraft 3 / Отследить Fatal Error

Принятый ответ
Ну есть же логи, через прелоад сохраняют.
Смотрите что происходило в момент фатала, какие юзались скиллы, кто что делал, следите за дамми юнитами.
Вот наработка xgm.guru/p/wc3/ifdebug-2
Так же было бы не лишним внести карту в студию, мб все очень банально?
32

» WarCraft 3 / Как сменить анимацию юнита?

Ну тока пассивками, которые срабатывают при атаке, но те обычно проигрывают slam анимацию.
Так же может быть 100500 разных моделей.
32

» WarCraft 3 / Есть ли предел/потеря производительности от дофига ивентов

Принятый ответ
События не удаляются, пока есть объект на котором они весят, но это просто целые числа, ничего они не забивают, яркий пример дота ( там еще и утечек по части триггеров куча) но катки по 70-80 мин. И все норм, на 100+ минут катках спектра и войд багается, и то из за кривого ресайкла групп.
Это в кривой доте Фрога, делаешь по человечески и все работает, а не как криворукий - создал триггер и оставил выключенным висеть.
Вот пример ссылочка по триггерам и их удалении на примере фрога, а так же проблемы связанные с триггерами.
Вроде же все разжевано на эту тему?
Или нужно что то еще?
32

» WarCraft 3 / Воскрешение героя в триггерах

Принятый ответ
Искать нужно лучше.
Раздел герой на гуях, действие Revive (instanty)
32

» WarCraft 3 / Система отлова нанесённого урона

WakVellios:
Какая команда получает боевую еденицу получившую урон?
GetTriggerUnit()
JASS API в помощь.
32

» WarCraft 3 / Запомнить любую нужную точку на карте

Принятый ответ
Ну можно координаты камеры игрока. Но там нужен синк в кеше, чтобы небыло десинха, а это уже ни ГУИ.
Вот примитивный пример получение и сохранения координат камеры игрока:
scope PlayerRelated initializer InitPlayers

    globals
        force AllPlayers = null
        trigger gg_trg_PlayerLeft = null
        playerevent bj_enumPlayerEventId = null
        player array PL
        gamecache data
    endglobals

    function TriggerRegisterPlayerEventEnum takes nothing returns nothing
        call TriggerRegisterPlayerEvent( bj_destInRegionDiesTrig, GetEnumPlayer( ), bj_enumPlayerEventId )
    endfunction
    
    function TriggerRegisterForceEvent takes trigger trig, force forforce, playerevent id returns nothing
        set bj_destInRegionDiesTrig = trig
        set bj_enumPlayerEventId = id
        call ForForce( forforce, function TriggerRegisterPlayerEventEnum )
    endfunction
 
    function Trig_Player_Left_Actions takes nothing returns nothing
        call ForceRemovePlayer( AllPlayers, GetTriggerPlayer( ) )
    endfunction
    
    function IsSlotPlayer takes player pl returns boolean
        return GetPlayerSlotState( pl ) == PLAYER_SLOT_STATE_PLAYING and GetPlayerController( pl ) == MAP_CONTROL_USER
    endfunction
    

    function InitPlayers takes nothing returns nothing
        set AllPlayers = CreateForce( )
        set gg_trg_PlayerLeft = CreateTrigger( )
        set data = InitGameCache( "Data.w3v" )
        
        set bj_forLoopAIndex = 0
        
        loop
        
            exitwhen bj_forLoopAIndex > bj_MAX_PLAYERS
        
            set PL[bj_forLoopAIndex] = Player( bj_forLoopAIndex )
            if IsSlotPlayer( PL[bj_forLoopAIndex] ) then
                call ForceAddPlayer( AllPlayers, PL[bj_forLoopAIndex] )
                call TriggerRegisterPlayerEvent( gg_trg_PlayerLeft, PL[bj_forLoopAIndex] , EVENT_PLAYER_LEAVE )
            endif
        
            set bj_forLoopAIndex = bj_forLoopAIndex + 1
        endloop
    
        call TriggerAddAction( gg_trg_PlayerLeft, function Trig_Player_Left_Actions )
    
    endfunction
endscope

function Trig_Get_Player_Screen_Cord_Conditions takes nothing returns boolean
    return true
endfunction

function Trig_Get_Player_Screen_Cord_Actions takes nothing returns nothing
    local player pl = GetTriggerPlayer( )
    local real dx = 0.00
    local real dy = 0.00

    
    if GetLocalPlayer( ) == pl then
        set dx = GetCameraEyePositionX( )
        set dy = GetCameraEyePositionY( )
    else
        set dx = 0.00
        set dy = 0.00
    endif

    call StoreReal( data, "Cord", "X", dx )
    call StoreReal( data, "Cord", "Y", dy )
    
    call TriggerSyncStart( )
    
    if GetLocalPlayer( ) == pl then
        call SyncStoredReal( data, "Cord", "X" )
        call SyncStoredReal( data, "Cord", "Y" )
    endif
    
    call TriggerSleepAction( 2.00 )

    call TriggerSyncReady( )
    
    set dx = GetStoredReal( data, "Cord", "X" )
    set dy = GetStoredReal( data, "Cord", "Y" )
    
    // далее делаем с коорданатами камеры что хочется!
    call PingMinimapEx( dx, dy, 3.00, 255, 255, 255, true )

endfunction

//===========================================================================
function InitTrig_Get_Player_Screen_Cord takes nothing returns nothing
    set gg_trg_Get_Player_Screen_Cord = CreateTrigger( )
    
    set bj_forLoopAIndex = 0
    
    loop
        exitwhen bj_forLoopAIndex > bj_MAX_PLAYERS
    
        if IsPlayerInForce( PL[bj_forLoopAIndex], AllPlayers ) then
            call TriggerRegisterPlayerChatEvent( gg_trg_Get_Player_Screen_Cord, PL[bj_forLoopAIndex], "-GetCord", true )
        endif
    
        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop
    
    call TriggerAddCondition( gg_trg_Get_Player_Screen_Cord, Condition( function Trig_Get_Player_Screen_Cord_Conditions ) )
    call TriggerAddAction( gg_trg_Get_Player_Screen_Cord, function Trig_Get_Player_Screen_Cord_Actions )
endfunction
32

» WarCraft 3 / Передача параметров в Таймер

JaBeN_Симфер:
Нафиг это гомно, сразу хештаблицу и все, темболее этот эксплоит не работает с переодическими твймерами, а не малое количество паразиьных действий намекает на низкую скорость этого алгоритма.
32

» WarCraft 3 / Вопрос по поводу лагов

FarFacer:
quq_CCCP:
Не лагает, а загружается дольше - это да, лаги в мультиплеере связаны не с картой а с говвеным пингом до хоста, из за задержек и постоянных дисконектов.
А если лагает, то это скорее от хуёвого кода, моделей и т.д.?
Ну если начинает лагать через какое то время даже в сингле = код гомно.
Модели надо подгружать, ну неужели вы не слышали об этом?
32

» WarCraft 3 / Вопрос по поводу лагов

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

» WarCraft 3 / Инвиз у зданий.

Принятый ответ
Добавь инвиз мины - он не сбивается любыми действиями юнита - Мина Взрывается ( 'Amin' ) задержку срабатывания нужно только установить на бесконечную.
32

» WarCraft 3 / Как сделать стаки способностей?

Принятый ответ
Если охото сделать зарыды со счетчиком то тут 2 пути:
  1. Юзать стандартные абилки со счетчиком зарядов, а их только 2 совы охотницы и вспышки орудийного расчета гномов. Увы первая цель декор онли, вторая цель точка онли, на юнита никак, кстати хорошо подходит под кастом блинки, кастуется почти мгновенно, быстрее канала, без всяких рукомаханий.
  2. Использовать N способностей с разными иконками, на которых будет изображен счетчик, изменяя уровень способности или вовсе весть скилл через 'Eneg' (Техника, скилл механика, позволяет изменять поля скиллов) то можно создать скиллы со счетчиком, допустим пока есть заряды у скилла нету кулдауна, скилл последнего заряда имеет кулдаун.
Увы туча ипорта да и найти качественные иконки со счетчиком дело непростое.
32

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

Все скиллы наносят урон типом атаки Заклинание (ATTACK_TYPE_NORMAL) а тип урона влияет тока на блокираторы урона, негативные баффы наносят 0.00 ед. урона неизвестным типом урона (DAMAGE_TYPE_UNKNOWN или просто null), что ативирует событие - юнит получает урон, даже когда юнит неуязвим - нужно для агра юнитов к примеру.
Почти все DAMAGE_TYPE_FIRE\COLD и так далее одинаковы, их близзарды сделали для красоты - проверить на тип урона мы никак не можем, магический и магический а от холода он или огня никак, что собственно и не особо важно - результат один.
32

» WarCraft 3 / Как триггерно сделать бонус защиты

Принятый ответ
Ну тут только добавлать герою предметные абилки на повышение защиты, есть вроде же готовые системы добавления всего что только можно, хп-мп, защиту, скорость и так далее.
Гугли Custom Hero stat system.
Вот пример ссылочка
32

» WarCraft 3 / Блокировка урона

Я просто добавлял пассивку на 15000 хп, ставил хп макс, а через 0.00 сек. таймером ставил сколько было.
32

» WarCraft 3 / Иногда не срабатывают некоторые спеллы

IcE_PLayER:
quq_CCCP,
1 - id приказа и id магии, которую юзает дамик различные
2 - да, может отличаться, не думал что может повлиять (надо проверить)
3 - это касается всех скилов? (допустим у меня есть скилл буран (dummy) и просто буран) Если я сначало скастую буран, то у даммика буран (dummy) может не сработать? (мог неправильно понять)
Джасс почти не знаю, сорри...
Речь только если у тебя канал с настройками и базовым ид приказа бурана, то да.