У меня есть 4 игрока и мне требуется создать таблицу лидеров для них. Я не понимаю как создать таблицу, которая отображает любой нанесенный единицами игрока урон в первой колонке,
а полученный урон во второй. Есть какие либо идеи как это реализовать?
а полученный урон во второй. Есть какие либо идеи как это реализовать?
Принятый ответ
Happy:
Unryze:Считываешь нанесение урона через триггер EVENT_UNIT_DAMAGED, нанесённый урон записываешь за игроком - владельцем юнита, который нанёс урон, а полученный за игроком владельцем юнита, который получает урон.Далее просто складываешь полученные числа с числами из таблицы.Не сочтите за глупость, но можете более подробно расписать?
Пример Кода
globals
real array DamageDealt
real array DamageReceived
group GroupEnum = CreateGroup( )
group DamagedGroup = CreateGroup( )
trigger DamageTrigger = CreateTrigger( )
endglobals
function RegisterDealtDamage takes nothing returns nothing
local integer SourceID = GetPlayerId( GetOwningPlayer( GetEventDamageSource( ) ) )
local integer TargetID = GetPlayerId( GetOwningPlayer( GetTriggerUnit( ) ) )
set DamageDealt[ SourceID ] = DamageDealt[ SourceID ] + GetEventDamage( )
set DamageReceived[ TargetID ] = DamageReceived[ TargetID ] + GetEventDamage( )
endfunction
function AddUnitToDamageCheck takes nothing returns boolean
if not IsUnitInGroup( GetFilterUnit( ), DamagedGroup ) then
call GroupAddUnit( DamagedGroup, GetFilterUnit( ) )
call TriggerRegisterUnitEvent( DamageTrigger, GetFilterUnit( ), EVENT_UNIT_DAMAGED )
endif
return true
endfunction
function RegisterDamageTaken takes nothing returns nothing
call GroupEnumUnitsInRect( GroupEnum, GetWorldBounds( ), Filter( function AddUnitToDamageCheck ) )
endfunction
function InitData takes nothing returns nothing
call TriggerAddAction( DamageTrigger, function RegisterDealtDamage )
call RegisterDamageTaken( )
endfunction
Функция InitData создаёт действие триггеру DamageTrigger, которым мы будем принимать эвент получения урона, RegisterDamageTaken - функция для проверки юнитов по всей карте и добавлении их в триггер DamageTrigger, если они не существуют в группе DamagedGroup (фильтрация), ну а дальше всё банально, нанесённый урон = полученному, потому DamageDealt[ SourceID ] где SourceID - ID игрока наносившего урон и DamageReceived[ TargetID ] - ID игрока получившего урон.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Unryze