attacktype - тип атаки, может быть "Герой", "Хаос" и так далее. damagetype - тип урона, может быть магическим, чистым и так далее. weapontype влияет на звук при попадании снаряда.
Все эти типы были с самого запуска варика, как минимум в 1.26 они есть и никаким изменениям не подверглись.
Начну с простого. Изменения по сравнению с 1.30.4.
common.ai - без изменений.
blizzard.j
Добавлена переменная boolean bj_lastInstObjFuncSuccessful. Хранит информацию о том, была ли последняя операция с полями Редактора объектов завершена успешно или нет.
Обновлена функция GetCurrentCameraSetup(), так как в common.j были добавлены новые переменные типа camerafield.
Исправлена утечка в SmartCameraPanBJ(...).
Добавлены функции типа Set, Add, Remove по взаимодействию с полями Редактора Объектов. Аналоги таких же функций из common.j с сохранением статуса вызванной операции в bj_lastInstObjFuncSuccessful.
cheats.j
Обновлена функция DebugCamInfo(). Добавлен вывод информации о новых camerafield.
Можно сразу все действия делать в фильтре, так будет гораздо быстрее.
Согласно тестам DracoL1ch, вытаскивание юнитов группы через FirstOfGroup() и выполнение над ними нужных действий в цикле будет быстрее ForGroup().
Примеры
struct Tower
...
private static method DistributeExpFilterFunc takes nothing returns nothing
local thistype t = GetUnitUserData(GetFilterUnit())
if IsFilterUnitTower() and t.isReady and t.data.hasexp and t.selfupgrade then
call t.addExp(TransmittedExpAmount)
endif
endmethod
private static boolexpr DistributeExpFilter
private static integer TransmittedExpAmount
static method distributeExp takes Minion m, thistype killer returns nothing
local real x = GetUnitX(m.minion)
local real y = GetUnitY(m.minion)
set TransmittedExpAmount = m.data.towexpgain
// Add to killer if it has experience, is upgradable, but is out of range.
if killer.data.hasexp and killer.selfupgrade and not IsUnitInRangeXY(killer.tower, x, y, ExpRange) then
call killer.addExp(TransmittedExpAmount)
endif
call GroupEnumUnitsInRange(bj_lastCreatedGroup, x, y, ExpRange, DistributeExpFilter)
endmethod
...
private static method UpgradeTowerFilterFunc takes nothing returns boolean
local thistype t = GetUnitUserData(GetFilterUnit())
return IsFilterUnitTower() and t.isReady and not t.data.hasexp and t.selfupgrade and t.owner.isGoldEnough(t.ToNextLevel)
endmethod
private static boolexpr UpgradeTowerFilter
static method upgradeTower takes thistype this returns nothing
local thistype array selected
local thistype temp1
local thistype temp2
local integer n = -1
local integer i = -1
local group g = CreateGroup()
local unit u
call GroupEnumUnitsSelected(g, this.owner.user, UpgradeTowerFilter)
// Sort selected towers from tower with the lowest cost to the highest.
loop
set u = FirstOfGroup(g)
exitwhen u == null
call GroupRemoveUnit(g, u)
set temp1 = GetUnitUserData(u)
set n = n + 1
set selected[n] = temp1
loop
exitwhen i < 0 or selected[i].ToNextLevel <= temp1.ToNextLevel
set temp2 = selected[i]
set selected[i] = temp1
set selected[i + 1] = temp2
set i = i - 1
endloop
set i = n
endloop
call DestroyGroup(g)
set g = null
if n > -1 then
// Upgrade towers starting from towers with the highest cost.
loop
set temp1 = selected[n]
exitwhen not this.owner.spendGoldNoMessage(temp1.ToNextLevel)
call temp1.incLevel()
set n = n - 1
exitwhen n == -1
endloop
else
// Raise "Not enough Gold" error.
call this.owner.messageNotEnoughGold()
endif
endmethod
private static method onInit takes nothing returns nothing
...
set DistributeExpFilter = Filter(function thistype.DistributeExpFilterFunc)
set UpgradeTowerFilter = Filter(function thistype.UpgradeTowerFilterFunc)
endmethod
endstruct
Заходим в службы -> отключаем службу обновлений. Также можно скачать версию, на которую выходят только важные обновления с опцией их отсрочивания (LTSB, LTSC).
В чём проблема сделать покупку героя, у которого в РО стоит начальное кол-во для магазина 1, а кд много времени. Как только 1 купит, остальные не смогут это сделать.
Ред. PT153
» WarCraft 3 / Официально стал доступен PTR 1.31
Ред. PT153
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
Ред. PT153
» WarCraft 3 / Официально стал доступен PTR 1.31
Ред. PT153
» WarCraft 3 / Официально стал доступен PTR 1.31
Ред. PT153
» WarCraft 3 / Официально стал доступен PTR 1.31
common.ai - без изменений.
Ред. PT153
» WarCraft 3 / Официально стал доступен PTR 1.31
» WarCraft 3 / Официально стал доступен PTR 1.31
Теперь эти функции возвращают boolean, по которым можно узнать, был ли добавлен\удалён юнит, как с UnitAddAbility\UnitRemoveAbility.
» WarCraft 3 / Патч 1.31, скоро?
» WarCraft 3 / Патч 1.31, скоро?
» WarCraft 3 / Патч 1.31, скоро?
Ред. PT153
» WarCraft 3 / Выбрать юнитов, выделенные игроком при условии.
» WarCraft 3 / Музыкальное оформление.
» WarCraft 3 / Музыкальное оформление.
» WarCraft 3 / Музыкальное оформление.
» WarCraft 3 / Музыкальное оформление.
» WARTRACK / WARTRACK V0.3
» WARTRACK / WARTRACK V0.3
» WarCraft 3 / Область утечки
» Мир безумного / WoW теперь и на Windows 7 поддерживает DirectX 12
» WarCraft 3 / Способности героя "Волна силы"
» WarCraft 3 / Проблема с runtextmacro
» WarCraft 3 / Помогите с системой формации
» WarCraft 3 / Как отключить автоатаку?
Ред. PT153
» WarCraft 3 / Таверна, как брать героя, которого выбрал
8gabriel8: