14

» WarCraft 3 / Тотальная оптимизация - на тысячи юнитов и десяток игроков

Так, по сети обнаружилось, что доход не начисляется. Строки выводятся(доход, профицит, т.п.), но не нет начисления. А в одиночной я в итоге глядел триг до 10 минут который.
14

» WarCraft 3 / Тотальная оптимизация - на тысячи юнитов и десяток игроков

Так, проверил в одиночке, работает. Теперь интересно насколько повлияет в мультиплеере. Огромное спасибо!
14

» XGM Team / Роскомнадзор заблокировал The Hive Workshop

Nikson12:
Перепроверьте насчет блокировки, на всякий случай. Сегодня без ВПНа стало заходить. У меня по крайней мере.
Да, подтверждаю. Ну что, хорошо.
14

» WarCraft 3 / Вылетел редактор карт варкрафт 3, но я не сохранил

file\preferences\Autosave every число minutes
(Слева сверху редактора)
Но вручную тоже версии делай. 1.001, 1.002 и т.д)
14

» XGM Team / Роскомнадзор заблокировал The Hive Workshop

Торренты же живы, думаю на любую блокировку найдется обход. Хотя сама ситуация прискорбная.
14

» WarCraft 3 / Вылетел редактор карт варкрафт 3, но я не сохранил

Не припомню вариантов по восстановлению, но рекомендую на будущее поставить автосохранение(в настройках) + периодически сохранять новым файлом, чтобы ты мог если что возвращаться к старым версиям.
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

goodlyhero:
По классике для анализа крита пиши в прелоад: В начале игры написал PreloadGenStart()
Далее при каждом действии Preload("Сообщение для дебага"), PreloadGenEnd("Файл для дебага")
В начале работы триггера пиши что триггер начал работу, в конце - кончил, после каждого действия - что сделано. Так, ты без проблем определишь точное место крита, сообщения прервутся, когда игра кританет, если крит конечно в триггере.
Понял, учту.
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

rsfghd, ты нашел решение. Огромное спасибо. Уж если карта дойдет до релиза, все секретки\уникалки тебе будут доступны. Огромное спасибо.
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

rsfghd:
у тебя если юнит герой то происходят проверки с той функцией, а если наоборот, то +100 голды
Да, должно быть за гера 100 голды, а за юнита высчитывать.
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

"меня именно if not IsUnitType( GetEnumUnit( ), UNIT_TYPE_HERO ) then смущает
мне кажется not нужно убрать" Попробую
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

Значит тут где-то проблема? фор груп функция
function Trig_Disincome_OV_Func001Func006A takes nothing returns nothing
    set udg_Kol_voUnitod = udg_Kol_voUnitod + 1
    
    if not IsUnitType( GetEnumUnit(), UNIT_TYPE_HERO ) then
        set udg_GoldCost = udg_GoldCost + 100.00
    else
        set udg_Price = GetUnitGoldCost( GetUnitTypeId( GetEnumUnit( ) ) )
        set udg_GoldCost = udg_GoldCost + udg_Price * 0.10
        // ---------------------------Особые условия-----------------------------          +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        // ---------------------------Топливо гоблинов-----------------------------
        if GetUnitAbilityLevel( GetEnumUnit( ), 'A0A5' ) > 0 then
            set udg_GoldCost = udg_GoldCost + udg_Price * 0.10 * ( 1.60 - GetUnitAbilityLevel( GetEnumUnit( ), 'A0A5') * 0.10 )
        endif
        // ---------------------------Топливо гоблинов закончилось-----------------------------
    endif
endfunction

rsfghd:
VinerX, тогда включи обратно форгруп и закомменти всё что после GroupClear идёт, до комментария с коррупцией
ок
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

rsfghd, ща попробую

Закомментил чисто форгруп "попробуй отключить форгруп". Код сейчас скинутый тобой(+ починеный)
call ForGroup( udg_LocalOtrad2, function Trig_Disincome_OV_Func001Func006A )

Да, оно не фаталит!
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

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

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

rsfghd:
а, ещё одно, я слышал что GetUnitGoldCost может вызвать краш, мб на рефе пофиксили, но на 1.26 вроде нет

GetUnitGoldCost, GetUnitWoodCost и GetUnitBuildTime критуют, если передать равкод, содержащий буквы верхнего регистра.
Вот в этом сомневаюсь, так как ими спокойно пользовались. А вот когда я перевел триггер из 2 в 3 (вверху что прикладывал), только тогда уже наступает фатал.
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

Я все же на всякий пожарный проверил единственное деление в триггере, но отключение блока с ним не помогло.

rsfghd,
Хорошо, сейчас тестану.
14

» WarCraft 3 / Оптимизация: поредактировал jass триггер, но он начал фаталить.

rsfghd:
Фаталит код или гуи? чтоб знать куда внимание обращать
Код, который третий. Гуи норм работает, переведенный в код гуи(без обработки) тоже.
goodlyhero:
Возможно, если бы был лог с критом, было бы понятнее (мне), так ничего в глаза не бросается, все слишком непонятно.
Сейчас займусь.

Вот лог. Я его посмотрел, но чет кроме проблем с моделями не понял ничего. Но это точно не то, дело в триге.
Загруженные файлы
14

» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)

rsfghd,
Так, ну по поводу ретурна понял, огромное спасибо.
А вот случалось нечто подобное из второго вопроса(резкий необъясним скачек хендлов) ? Понимаю, может его сформулировал не понятно, но вдруг. Ну и хендлкаунтер, с ним как, все нормально?
14

» WarCraft 3 / Дорога к оптимизации: захотел заменить "Замену" юнита (Reforged)

В вот по поводу newUnit, я его попытался обнулить (ставил после return), он мне ошибку выдавал (тогда подумал что значение, которое уходит в ретурн обнулять не надо). Это как нужно реализовать?
Код счетчика, который находится в шапке карты в самом верху:
function HandleCounter_Update takes nothing returns nothing
   local integer i = 0
   local integer id = 0
   local location array P
   local real result=0
   loop
      exitwhen i >= 50
      set i = i + 1
      set P[i] = Location(0,0)
      set id = GetHandleId(P[i])
      set result = result + (id-0x100000)
   endloop
   set result = result/i-i/2
   loop
      call RemoveLocation(P[i])
      set P[i] = null
      exitwhen i <= 1
      set i = i - 1
   endloop
   call LeaderboardSetItemValue(udg_HandleBoard,0,R2I(result))
endfunction

function HandleCounter_Actions takes nothing returns nothing
   set udg_HandleBoard = CreateLeaderboard()
   call LeaderboardSetLabel(udg_HandleBoard, "Handle Counter")
   call PlayerSetLeaderboard(GetLocalPlayer(),udg_HandleBoard)
   call LeaderboardDisplay(udg_HandleBoard,true)
   call LeaderboardAddItem(udg_HandleBoard,"Handles",0,Player(0))
   call LeaderboardSetSizeByItemCount(udg_HandleBoard,1)
   call HandleCounter_Update()
   call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)
endfunction

function InitTrig_HandleCounter takes nothing returns nothing
   call TimerStart(CreateTimer(),0,false,function HandleCounter_Actions)
endfunction
+запуск(хз, нужен ли он)

Обратно к функции, если добавляю set newUnit = null, ловлю такую ошибку.
set bj_lastReplacedUnit = newUnit
    set oldUnit = null
    set indexItem = null
    return newUnit
    set newUnit = null
Загруженные файлы