16

» WarCraft 3 / У меня магия происходит в тригерах

MATRITSA, меня больше прикалывает кстати что ты на сайте 7 лет и за 7 лет грамотность не апнулась ни на 1 уровень, до сих пор варны получаешь. Скажи, это твой стиль письма или как?)
Не в обиду, но, нифига же не понятно что пишешь
16

» WarCraft 3 / Фреймы в мультиплеере(десинхронизация)

quq_CCCP, писал с телефона, поэтому может звучать запутанно.
Но что я имею ввиду:
Общий таймер, две локалки(pl - player, num - integer) срабатываемый каждую 0.1 сек, в котором действие loop на проверку GetLocalPlayer() == Player(a).
Внутри этой проверки проверка на нажатие, проверка на кнопку.
Начальные значения: num - 0, player - Player(PLAYER_NEUTRAL_AGRESSIVE).
Если нажата кнопка номер 1, тогда
set num = 1
И так как кнопка нажата
set pl = Player(a).
и так в конце endloop. Далее, идет уже проверка.
if ( num == 1 ) then
Отправить сообщение(общее действие) pl 1 сообщение под номером 1
16

» WarCraft 3 / Фреймы в мультиплеере(десинхронизация)

quq_CCCP, а можно ли изменять локальную переменную локально, интересно, т.е. провести луп, если игрок нажал на кнопку вбить в локальную переменную что игрок который нажал на кнопку равен 1 условно. Начальное значение игрока будет нейтральный агрессор. А потом после проверки, сделать действие. У всех оно сработает, просто локал игрок который нажал кнопку его получит, код сработает на него. А у всех остальных код сработает точно также, такие же переменные, но значение вывода текста игроку будет равно нейтральному агрессору.
И вот интересно, сработает или нет
16

» WarCraft 3 / Фреймы в мультиплеере(десинхронизация)

quq_CCCP, хм, иначе говоря, как думаешь, так будет работать? Сейчас попробовал превратить в триггер с действием "Каждую 0.1 секунду". GetLocalPlayer используется в цикле, (loop 10 раз, где Х это номер игрока)
Господи спаси
function Trig_ClickEvent_Actions takes nothing returns nothing
    local integer pn = GetConvertedPlayerId(pl)
    local force pf = GetForceOfPlayer(pl)
    local player pl
    local integer p = 0
    local integer a = 1
    local integer b = 1
    local integer frame
    loop
    exitwhen p > 10
    
    if ( GetLocalPlayer() == Player(p) ) then
    set pl = Player(p)
    set pn = p+1
    set pf = GetForceOfPlayer(pl)
    set frame = FindCLayerUnderCursor()
    if IsKeyPressed( 0x01 ) then // проверяем нажата ли ЛЕВАЯ клавиша мыши в данный момент, если нужна правая то 0x02
        if LMBTap then // проверяем нажимали ли ранее (Check ведь каждые 0.1 секунду происхjlbn)
            set LMBTap = false //Если нет, говорим что нажимаем
            
            set bj_lastClickedFrame = frame // записываем последний фрейм что нажали
            
            if bj_lastClickedFrame == HeroFunct then // проверяем кнопка ли фрейм
                call ClearTextMessages()
                call SetFrameSize( HeroButton, 0.027, 0.032 ) // Если да то уменьшаем (Типо анимация)
                call DisplayTextToForce(GetForceOfPlayer(pl),GetAbilityBaseTip(abi_hero_p[int_player_hero[pn]],1)+"|n"+GetAbilityBaseUbertip(abi_hero_p[int_player_hero[pn]],1))
            endif
            if bj_lastClickedFrame == FactFunct then // проверяем кнопка ли фрейм
                call ClearTextMessages()
                call SetFrameSize( FactionButton, 0.027, 0.032 ) // Если да то уменьшаем (Типо анимация)
                call DisplayTextToForce(GetForceOfPlayer(pl),GetAbilityBaseTip(abi_fac[UI_FactionID[pn]],1)+"|n"+GetAbilityBaseUbertip(abi_fac[UI_FactionID[pn]],1))
            endif
            
            if bj_lastClickedFrame == B3Funct then // проверяем кнопка ли фрейм
                call ClearTextMessages()
                call SetFrameSize( Button3, 0.027, 0.032 ) // Если да то уменьшаем (Типо анимация)
    loop
    exitwhen a > 4
    call DisplayTimedTextToForce(pf,45.0,"|cffffcc00Задание номер:|r "+I2S(a))
    call DisplayTimedTextToForce(pf,45.0,QuestText[1]+QuestName[1][a]+QuestText[2]+I2S(IntCrit[1][a])+QuestText[3]+RewardName[1][a])
    if ( QuestCheck[1][a] == false ) then
    call DisplayTimedTextToForce(pf,45.0,"|c00FF0000Не выполнен|r")
    else
    call DisplayTimedTextToForce(pf,45.0,"|c0000FF00Выполнен|r")
    endif
    set a = a + 1
    endloop
            endif
            if bj_lastClickedFrame == B4Funct then // проверяем кнопка ли фрейм
                call ClearTextMessages()
                call SetFrameSize( Button4, 0.027, 0.032 ) // Если да то уменьшаем (Типо анимация)
                set a = 5
    loop
    exitwhen a > 8
    if ( Quest[2][b] == 3 ) then
    call DisplayTimedTextToForce(pf,45.0,"|cffffcc00Задание номер:|r "+I2S(a))
    call DisplayTimedTextToForce(pf,45.0,QuestText[1]+QuestName[2][b]+QuestText[2]+I2S(IntCrit[2][b])+QuestText[3]+RewardName[2][b])
    endif
    if ( Quest[2][b] == 4 ) then
    call DisplayTimedTextToForce(pf,45.0,"|cffffcc00Задание номер:|r "+I2S(a))
    call DisplayTimedTextToForce(pf,45.0,QuestText[4]+QuestName[2][b]+QuestText[5]+I2S(IntCrit[2][b])+QuestText[3]+RewardName[2][b])
    endif
    if ( Quest[2][b] == 5 ) then
    call DisplayTimedTextToForce(pf,45.0,"|cffffcc00Задание номер:|r "+I2S(a))
    call DisplayTimedTextToForce(pf,45.0,QuestText[1]+QuestName[2][b]+QuestText[2]+I2S(IntCrit[2][b])+QuestText[3]+RewardName[2][b])
    endif
    if ( QuestCheck[2][b] == false ) then
    call DisplayTimedTextToForce(pf,45.0,"|c00FF0000Не выполнен|r")
    else
    call DisplayTimedTextToForce(pf,45.0,"|c0000FF00Выполнен|r")
    endif
    set b = b + 1
    set a = a + 1
    endloop
            endif
            if bj_lastClickedFrame == B5Funct then // проверяем кнопка ли фрейм
                call ClearTextMessages()
                call SetFrameSize( Button5, 0.027, 0.032 ) // Если да то уменьшаем (Типо анимация)
                set a = 9
    loop
    exitwhen a > 11
    if ( Quest[3][b] == 6 ) then
    call DisplayTimedTextToForce(pf,45.0,"|cffffcc00Задание номер:|r "+I2S(a))
    call DisplayTimedTextToForce(pf,45.0,QuestText[7]+QuestName[3][b]+QuestText[8]+RewardName[3][b])
    endif
    if ( Quest[3][b] == 7 ) then
    call DisplayTimedTextToForce(pf,45.0,"|cffffcc00Задание номер:|r "+I2S(a))
    call DisplayTimedTextToForce(pf,45.0,QuestText[1]+QuestName[3][b]+QuestText[2]+I2S(IntCrit[3][b])+QuestText[3]+RewardName[3][b])
    endif
    if ( QuestCheck[3][b] == false ) then
    call DisplayTimedTextToForce(pf,45.0,"|c00FF0000Не выполнен|r")
    else
    call DisplayTimedTextToForce(pf,45.0,"|c0000FF00Выполнен|r")
    endif
    set b = b + 1
    set a = a + 1
    endloop
            endif
            if bj_lastClickedFrame == B6Funct then // проверяем кнопка ли фрейм
                call ClearTextMessages()
                call SetFrameSize( Button6, 0.027, 0.032 ) // Если да то уменьшаем (Типо анимация)
                set a = 0
                call DisplayTextToForce(pf,"Активированные |c00E4201Bхаосы|r")
    loop
    exitwhen a > ChaosMax
    if ( ChaosBOOL[a] == true ) then
    call DisplayTextToForce(pf,ChaosNAME[a])
    call DisplayTextToForce(pf,ChaosDISC[a])
    endif
    set a = a + 1
    endloop
            endif
        endif
    else
        set LMBTap = true //говорим что отпустили
        
        if bj_lastClickedFrame == HeroFunct then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( HeroButton, 0.029, 0.034 ) // восстанавливаем размер
            
        endif
        if bj_lastClickedFrame == FactFunct then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( FactionButton, 0.029, 0.034 ) // восстанавливаем размер
            
        endif
        if bj_lastClickedFrame == B3Funct then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( Button3, 0.029, 0.034 ) // восстанавливаем размер
            
        endif
        if bj_lastClickedFrame == B4Funct then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( Button4, 0.029, 0.034 ) // восстанавливаем размер
            
        endif
        if bj_lastClickedFrame == B5Funct then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( Button5, 0.029, 0.034 ) // восстанавливаем размер
            
        endif
        if bj_lastClickedFrame == B6Funct then //если последний нажатый фрейм кнопка
            set bj_lastClickedFrame = 0 //стираем из переменой последний фрейм
            call SetFrameSize( Button6, 0.029, 0.034 ) // восстанавливаем размер
            
        endif
    endif
    endif
    
    set p = p + 1
    endloop
endfunction
16

» WarCraft 3 / Фреймы в мультиплеере(десинхронизация)

quq_CCCP, сам таймер создается вне-функции GetLocalPlayer() == Player(). Там лишь аргумент вместо true/false. Который, вроде как, должен работать(ибо с Мультибордом это работает, плюс некоторые источники пишут об этом как о решении проблемы). Пример xgm.guru/p/wc3/Lokalnyy-taymer-Cbw
16

» WarCraft 3 / Фреймы в мультиплеере(десинхронизация)

Дополнение
Попробовал создать таймер под каждого игрока(массив), не сработало.
Попробовал заменить хештаблицу на обычный GetLocalPlayer() в функции, не сработало.
Вылет все ещё в самом начале игры(при срабатывании функции)
16

» WarCraft 3 / У меня магия происходит в тригерах

жесть у тебя там, конечно, глаза вырвать. Но тебе повезло, я уже потерял их в своем коде.
В общем, у тебя событие происходит не один раз, а столько же раз, сколько юнитов в твоей группе ОтратАЛЛ.
Проверка на тип юнита происходит для каждого юнита, который в группе.
Но так как проверка не проходит, следует ELSE. Иначе говоря - иначе.
И вот у тебя 6 раз создается 1 юнит функцией, надеюсь ты понял.
Я бы объяснил подробнее но это пиздец у тебя там)

В самом начале строки если что у тебя ВЫБРАТЬ КАЖДОГО ЮНИТА и за каждого юнита в области сделать действие. И внутри этой функции происходит всё-всё, столько раз, сколько твоих юнитов.

но триггер реально 3.14здец, хотя может бывало и хуже?

А ещё эта грамматика, господи иже еси на небеси..
16

» Hero of Warcraft [RPGArena] (4 сезон) [Заморожен] / Hero of Warcraft [RPGArena] (4 сезон) [Заморожен]

Вышла новая версия!
Прокрутить к ресурсу

Hero of Warcraft 2 5.5


Напоминаем вам про наш Discord-сервер
Там ведется вся жизнь и активность связанная с картой.
А также, о новой версии сразу же можно узнать именно оттуда.
А теперь, о нововведениях за 8 версий.

4.8

4.9+5.0

5.1

5.2

5.3

5.4

5.5

Безголовый

16

» Hero of Warcraft [RPGArena] (4 сезон) [Заморожен] / Hero of Warcraft [RPGArena] (4 сезон) [Заморожен]

Вышла новая версия!
Прокрутить к ресурсу

Hero of Warcraft 2 4.7

Мы решили продолжить разработку HoW с новой цепочки версий, а именно Hero of Warcraft 2 сезон.
В ней мы перерабатываем силы героев почти всех героев, меняем полностью артефакты и многие элементы игры, позволяя снова окунуться в неизвестность мира рандома, пусть и с теми же персонажами, но уже с полностью новыми силами героя и артефактами, которые используются для создания билдов.
Загруженные файлы
16

» SpellLAB | II редакция | Создай свои спеллы / Новая карта SpellLAB [Warcraft 3]

Вышла новая версия!
Прокрутить к ресурсу

0.6

Исправление бага связанный с 4 неотображаемым слотом эффекта способности(замеченный в одиночной игре) и упрощение интерфейса для новичков(путем создания текстовых подсказок над зданиями).
16

» Hero of Warcraft [RPGArena] (4 сезон) [Заморожен] / Hero of Warcraft [RPGArena] (4 сезон) [Заморожен]

Wjatschik, а так все норм, Hero of Warcraft вечен, полгода не страшно)
Вадим просто ставил специально час, типо подольше разобраться в карте. Но классика 30 мин, новички быстро учатся
16

» Hero of Warcraft [RPGArena] (4 сезон) [Заморожен] / Hero of Warcraft [RPGArena] (4 сезон) [Заморожен]

Вышла новая версия!
Прокрутить к ресурсу

Hero of Warcraft 4.6

Люди с HoWTeam против того, чтобы закрывать Hero of Warcraft, поэтому мы выдвинули новую версию. Немного поговорили о будущем HoW и даже решили, куда двигаться.
С этого момента HoW навсегда закрепляет название Hero of Warcraft, без DLC
Мы же двигаемся вместе с командой и согласовываем нововведения и изменения +-
Загруженные файлы
16

» SpellLAB | II редакция | Создай свои спеллы / Новая карта SpellLAB [Warcraft 3]

Вышла новая версия!
Прокрутить к ресурсу

0.5

Выключена функция выпадения вещей после смерти
Изменены немного механики боссов
Временно удалена [Книга лича].
Понижены шансы на выпадение предметов вдвое.
16

» SpellLAB | II редакция | Создай свои спеллы / Новая карта SpellLAB [Warcraft 3]

Вышла новая версия!
Прокрутить к ресурсу

SpellLAB 0.4BETA

Нововведения
Способности - рунный камень был удален, создание способностей теперь происходит через способность у героя.
Стартовый ролик - был изменён.
ИИ - в игре теперь действует эффект дождя.
Карта - по карте было разбросано 30+ коробок со случайным содержимым.
Карта - теперь подсвечиваются боссы
Боссы - теперь призывают прислужников и имеют уникальную способность.
ИИ - В заданиях выведена краткая информация об игре.
Исправления
Способности - исправлен баг с созданием способностей.
Способности - призываемые существа которые должны были быть временными не были временными, теперь это исправлено.
Загруженные файлы