Замирают цифры потому что у подключившихся скорость интернета маленькая. Кикай их и ищи норм игроков. И если у тебя кастомный game.dll то надо чтобы игроки перезапускали варкрафт после скачивания.
"По локальной сети" имеется ввиду- по проводу. И ваша цитата-"И если у тебя кастомный game.dll то надо чтобы игроки перезапускали варкрафт после скачивания", можно по подробнее, пожалуйста?
Bergi, да ты прав. Стоит загрузить карту на бот. А там бот будет все сразу игрокам раздавать карту с приличной скоростью. Карты 8 мб скачиваются за секунды.
Bergi, да ты прав. Стоит загрузить карту на бот. А там бот будет все сразу игрокам раздавать карту с приличной скоростью. Карты 8 мб скачиваются за секунды.
Послушаю ваших советов и попробую, на Ирине можно запускать свои карты?
Честно говоря, вопрос довольно размытый. Какого именно порта? Современного или средневекового/другого? В виде комплекса зданий или одного здания? С анимациями или без? Для какой версии игры? Каков полигонаж? С тимколором или нет? На стандартных текстурах или импортных?
Средневековая модель/ одно здание/ всё остальное неважно
JIEGEND, лол)
во первых я сказал по факту, мемхак только для первого пункта может быть использован, остальное даже на гуи делается
во вторых, мне есть чем заняться, обновляю уже вполне достаточную карту и хочу свою собственную сделать)
в третьих, меня игра не заинтересовала, а сам фильм/сериал игры престолов я не смотрел, и соответственно за тебя карту я делать не буду, да и в конце концов я больше интересуюсь нестандартными способностями нежели какими-то системами для нестандартной стратегии
в четвёртых, у меня есть подозрения что "потребление пищи" в твоём значении имеется именно та пища, которая сверху справа как лимит армии используется, т.е. ты возможно юзаешь для этого стандартный интерфейс с его параметрами
upd что тоже не круто, если эта карта хочет брать наименование "лучшей" но, я в чужие дела не лезу, хочешь сделать, значит есть зачем
задавай отдельные вопросы по реализации нужных систем и тебе соответственно подскажут
например первый пункт уже отвечен, мемхак / реф / бд
второй пункт - сохранять область откуда пришёл захватчик, при поражении обратно в эту область отправлять, если проиграл защищающийся то даёшь ему на выбор любую среди окружающих областей для отступления, при условии, что в области нет контролёра либо контролёр владелец отступающего, в сами области сохраняешь тех кто контролируют их
да и с областями в общем-то криво в варе, ведь все они квадратные, лучше свою систему придумать, например основываясь на тайлах(?)
впрочем, можно даже и с квадратными областями красиво это реализовать
Что ж, я понял.
Кстати про области... Возможно ли их сделать другой формы?
JIEGEND, из перечисленного мемхак нужен только для первого пункта, и то, даже без него можно обойтись
))Я бы посмотрел как ты это делаешь. Но мне до такого уровня далеко
Если не сложно сделай пару наработок
"Многие механики постоянно упираются в потолок возможностей". Извини за оффтоп, но реально даже не представляю, что это может быть, тем более постоянно. Один раз сталкивался только с ситуацией, когда нужно считывать полученный урон, до нанесения урона (как то так) и то обошёл это другим способом. Перечисли хотя бы кратенько списочком такие ситуации, чтоб знать на будущее для себя.
Кароче, карту которую я пытаюсь повторить это игра Game of thrones board game- настолка. Честно говоря уже половину сделал, но постоянно появляются косяки которые очень мешают процессу воссоздания... Если хочешь могу скинуть скрины моей работы)
Что касается косяков, они относятся к механической части игры. А именно:
1)Мне нужно создать подсчет урона юнитов Разных игроков в области, и та группа юнитов у которой суммарный урон будет больше тот побеждает, и проигравший юнит отдает занятую область. Тут начинаются новые проблемы...
Допустим, Указанная группа юнитов игрока (Старк) занимает область с замком, когда наступает ход группы юнитов игрока (Грейджоев), он атакуют из другой области на карте в область где находится юниты(Старков). (ПРОИСХОДИТ БОЙ)_ Условно выиграла группа (Старк), значит, нужно сделать так чтобы юниты (Грейджоев) отступила в область откуда напала. И наоборот, если (Старк) защищает область и ПРОИГРЫВАЕТ в Битве, то нужно сделать так чтобы игрок (Старк) выбрал соседству (смежную) область, которая при этом не занята другим игроком, для ОТСТУПЛЕНИЯ.
Если группа юнитов игрока(Любой игрок) в области больше или ровно 2-установить общее потребительство ПИЩИ как 1- "Типо отряд, если юнитов в области 1или больше, то это отряд которому можно задать действо которое будет исполнять для всех юнитов в этом отряде"
И наоборот, если юнит вышел из зоны где сосредоточен отряд- добавить для этого юнита +1 ПИЩИ потребительства.
Возможность атаки через море. В игре есть много морей через которые можно перемещать свои войска из одной точки в другую, даже если она не смежная с областью в которой находится подготовленные юниты. Это довольно сложно для исполнения в редакторе, но это не самая болезненная тема...
Возможно использования некоторых бафов, в виде карточек, во время БИТВЫ.
на самом деле это не весь список проблем которые мне встречаются... Но что поделать(
На самом деле я начинаю думать что мне нужна помощь и поддержка, самому очень трудно делать такой объем работы. Но если у меня получится, то это будет ЛУЧШАЯ КАРТА Game of thrones из всех что сейчас есть.
Если интересно, вот ссылка на игру в карточном виде:https://youtu.be/xP64m3Qsru4
Как то делал способность, которая похищает % атаки у врагов поблизости на несколько секунд, используя мемхак. Способность так то вроде не сложная в реализации, но вот про новичков наверное не по адресу, ибо написано на vjass. Если интересно прокоментирую код и обьясню что и зачем:
код
globals
integer HASH_EXTRA_DAMAGE_INDEX = 5
integer array abilityAddDamageLvl //Массив способностей для увеличения дополнительного урона
endglobals
function GetUnitExtraDamage takes unit u returns integer
local integer iD = GetHandleId( u )
local integer ammount
set ammount = LoadInteger( gg_htb_HashData, iD, HASH_EXTRA_DAMAGE_INDEX )
return ammount
endfunction
function SetUnitExtraDamage takes unit u, integer ammount returns nothing
local integer iD = GetHandleId( u )
local integer power = 12
local integer index = 0
local integer rest
if ammount > 8191 then
set ammount = 8191
endif
loop
call UnitRemoveAbility( u, abilityAddDamageLvl[index] )
exitwhen index == 12
set index = index + 1
endloop
if ammount > 0 then
set rest = ammount
loop
exitwhen rest <= 0
if R2I( Pow( 2, power ) ) > rest then
set power = power - 1
elseif R2I( Pow( 2, power ) ) <= rest then
call UnitAddAbility( u, abilityAddDamageLvl[power] )
call UnitMakeAbilityPermanent( u, true, abilityAddDamageLvl[power] )
set rest = rest - R2I( Pow( 2, power ) )
set power = power - 1
endif
endloop
call SaveInteger( gg_htb_HashData, iD, HASH_EXTRA_DAMAGE_INDEX, ammount )
endif
endfunction
function Only_Alive_Player_No_Dummy_No_Ward_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return not ( IsUnitDead( bj_lastFilterUnit ) or IsUnitWard( bj_lastFilterUnit ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitIllusion( bj_lastFilterUnit ) or IsUnitHidden( bj_lastFilterUnit ) )
endfunction
function Group_Remove_Damage_Enum takes nothing returns nothing
local unit ally = GetEnumUnit( )
local TriggerData dd = bj_forceRandomConsidered
local integer bonus = R2I( GetUnitExtraDamage( ally ) - dd.dmg )
call UnitRemoveAbility( ally, 'B00H' )
call UnitRemoveAbility( ally, 'A0DV' )
call SetUnitExtraDamage( ally, bonus )
call SaveInteger( gg_htb_HashData, GetHandleId(ally), HASH_EXTRA_DAMAGE_INDEX, bonus )
call RemoveSavedHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(ally) )
set ally = null
endfunction
function Group_Add_Damage_Enum takes nothing returns nothing
local TriggerData dd = bj_forceRandomConsidered
local unit ally = GetEnumUnit( )
local integer bonus = 0
local integer pBuff
call TriggerRegisterDeathEvent( dd.trg, ally )
call SaveTriggerHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(ally), dd.trg )
call SetUnitExtraDamage( ally, R2I( GetUnitExtraDamage( ally ) + dd.dmg ) )
call UnitAddAbility( ally, 'A0DV' )
call UnitMakeAbilityPermanent( ally, true, 'A0DV' )
call UnitAddAbility( ally, 'A03W' )
set pBuff = GetUnitAbility( ally, 'B00H' )
if pBuff < 1 then
call BJDebugMsg(DEBUG+" "+ GetAbilityEffectById( 'A0DV', EFFECT_TYPE_SPECIAL, 1 ) )
call BJDebugMsg(INFO)
return
endif
set dd.c = TimerGetElapsed( DispTimer )
call SetBuffLevel( pBuff, dd.id )
call WMem( RMem( pBuff + 0x90 ) + 0x4, mR2I( dd.c + 15.10 ) )
call WMem( RMem( pBuff + 0x90 ) + 0x8, mR2I( dd.c + 10.408 ) )
call UnitRemoveAbilityTimed( ally, 'A03W', 0.00 )
set ally = null
endfunction
function Speed_Steal_damage_enemy takes nothing returns nothing
set TempDamage = TempDamage + GetUnitBaseDamage( GetEnumUnit( ) )
endfunction
function Trig_Speed_Steal_Buff_Expires_Conditions takes nothing returns boolean
local TriggerData dd
local unit dies
if ( GetTriggerEventId() == EVENT_WIDGET_DEATH ) then
set dd = GetDataBX( GetTriggeringTrigger( ) )
set dies = GetDyingUnit( )
if IsUnitInGroup( dies, dd.grp ) then
call GroupRemoveUnit( dd.grp, dies )
call SetUnitExtraDamage( dies, 0 )
call RemoveSavedHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(dies) )
call RemoveSavedInteger( gg_htb_HashData, GetHandleId(dies), HASH_EXTRA_DAMAGE_INDEX )
call UnitRemoveAbility( dies, 'A0DV' )
endif
set dies = null
return false
elseif ( GetTriggerEventId() != EVENT_GAME_TIMER_EXPIRED ) then
set dd = GetDataBX( GetTriggeringTrigger( ) )
set dies = bj_lastReplacedUnit
call GroupRemoveUnit( dd.grp, dies )
call SetUnitExtraDamage( dies, R2I( GetUnitExtraDamage( dies ) - dd.dmg ) )
call SaveInteger( gg_htb_HashData, GetHandleId(dies), HASH_EXTRA_DAMAGE_INDEX, R2I( GetUnitExtraDamage( dies ) - dd.dmg ) )
call RemoveSavedHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(dies) )
call UnitRemoveAbility( dies, 'A0DV' )
set dies = null
return false
endif
return true
endfunction
function Trig_Speed_Steal_Buff_Expires_Actions takes nothing returns nothing
local TriggerData dd = GetDataBX( GetTriggeringTrigger() )
call DisableTrigger( dd.trg )
set bj_forceRandomConsidered = dd
call ForGroup( dd.grp, function Group_Remove_Damage_Enum )
call ReleaseGroup( dd.grp )
call RemoveDataBX( dd.trg )
call dd.RemoveTrigger( )
call dd.destroy( )
endfunction
function Trig_Speed_Steal_Actions takes nothing returns nothing
local unit Runner = GetSpellAbilityUnit( )
local integer Level = GetUnitAbilityLevel( Runner, 'A03Q' )
local real CX = GetUnitX( Runner )
local real CY = GetUnitY( Runner )
local player pl = GetOwningPlayer( Runner )
local TriggerData dd
call GroupClear( gg_grp_TempGroup )
set bj_groupEnumOwningPlayer = pl
call GroupEnumUnitsInRange( gg_grp_TempGroup, CX, CY, 500.00, OnlyEnemy )
if FirstOfGroup( gg_grp_TempGroup ) != null then
set TempDamage = 0.00
call ForGroup( gg_grp_TempGroup, function Speed_Steal_damage_enemy )
if TempDamage > 1.00 then
set dd = TriggerData.create()
set dd.trg = CreateTrigger( )
set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_Speed_Steal_Buff_Expires_Conditions ) )
set dd.tra = TriggerAddAction( dd.trg, function Trig_Speed_Steal_Buff_Expires_Actions )
set dd.grp = NewGroup()
set dd.dmg = ( 0.15 * Level ) * TempDamage
set dd.id = Level
call SetDataBX( dd.trg, dd )
call GroupEnumUnitsOfPlayer( dd.grp, pl, Condition( function Only_Alive_Player_No_Dummy_No_Ward_Filter ) )
set bj_forceRandomConsidered = dd
call ForGroup( dd.grp, function Group_Add_Damage_Enum )
call TriggerRegisterTimerEvent( dd.trg, 15.00, false )
endif
endif
set Runner = null
endfunction
function Init_ExtraDamageSystem takes nothing returns nothing
if abilityAddDamageLvl[0] > 0 then
return
endif
set abilityAddDamageLvl[0] = 'A0DS'
set abilityAddDamageLvl[1] = 'A0DA'
set abilityAddDamageLvl[2] = 'A0DK'
set abilityAddDamageLvl[3] = 'A0DL'
set abilityAddDamageLvl[4] = 'A0DM'
set abilityAddDamageLvl[5] = 'A0DN'
set abilityAddDamageLvl[6] = 'A0DO'
set abilityAddDamageLvl[7] = 'A0DP'
set abilityAddDamageLvl[8] = 'A0DQ'
set abilityAddDamageLvl[9] = 'A0DR'
set abilityAddDamageLvl[10] = 'A0DJ'
set abilityAddDamageLvl[11] = 'A0DT'
set abilityAddDamageLvl[12] = 'A0DU'
set bj_lastCreatedUnit = CreateUnit( Player( 15 ), 'hpea', 4435.41, 4295.44, 270.00 )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[0] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[1] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[2] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[3] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[4] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[5] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[6] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[7] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[8] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[9] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[10] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[11] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[12] )
call ShowUnit( bj_lastCreatedUnit, false )
call KillUnit( bj_lastCreatedUnit )
endfunction
Как то делал способность, которая похищает % атаки у врагов поблизости на несколько секунд, используя мемхак. Способность так то вроде не сложная в реализации, но вот про новичков наверное не по адресу, ибо написано на vjass. Если интересно прокоментирую код и обьясню что и зачем:
код
globals
integer HASH_EXTRA_DAMAGE_INDEX = 5
integer array abilityAddDamageLvl //Массив способностей для увеличения дополнительного урона
endglobals
function GetUnitExtraDamage takes unit u returns integer
local integer iD = GetHandleId( u )
local integer ammount
set ammount = LoadInteger( gg_htb_HashData, iD, HASH_EXTRA_DAMAGE_INDEX )
return ammount
endfunction
function SetUnitExtraDamage takes unit u, integer ammount returns nothing
local integer iD = GetHandleId( u )
local integer power = 12
local integer index = 0
local integer rest
if ammount > 8191 then
set ammount = 8191
endif
loop
call UnitRemoveAbility( u, abilityAddDamageLvl[index] )
exitwhen index == 12
set index = index + 1
endloop
if ammount > 0 then
set rest = ammount
loop
exitwhen rest <= 0
if R2I( Pow( 2, power ) ) > rest then
set power = power - 1
elseif R2I( Pow( 2, power ) ) <= rest then
call UnitAddAbility( u, abilityAddDamageLvl[power] )
call UnitMakeAbilityPermanent( u, true, abilityAddDamageLvl[power] )
set rest = rest - R2I( Pow( 2, power ) )
set power = power - 1
endif
endloop
call SaveInteger( gg_htb_HashData, iD, HASH_EXTRA_DAMAGE_INDEX, ammount )
endif
endfunction
function Only_Alive_Player_No_Dummy_No_Ward_Filter takes nothing returns boolean
set bj_lastFilterUnit = GetFilterUnit( )
return not ( IsUnitDead( bj_lastFilterUnit ) or IsUnitWard( bj_lastFilterUnit ) or IsUnitType( bj_lastFilterUnit, UNIT_TYPE_MECHANICAL ) or IsUnitIllusion( bj_lastFilterUnit ) or IsUnitHidden( bj_lastFilterUnit ) )
endfunction
function Group_Remove_Damage_Enum takes nothing returns nothing
local unit ally = GetEnumUnit( )
local TriggerData dd = bj_forceRandomConsidered
local integer bonus = R2I( GetUnitExtraDamage( ally ) - dd.dmg )
call UnitRemoveAbility( ally, 'B00H' )
call UnitRemoveAbility( ally, 'A0DV' )
call SetUnitExtraDamage( ally, bonus )
call SaveInteger( gg_htb_HashData, GetHandleId(ally), HASH_EXTRA_DAMAGE_INDEX, bonus )
call RemoveSavedHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(ally) )
set ally = null
endfunction
function Group_Add_Damage_Enum takes nothing returns nothing
local TriggerData dd = bj_forceRandomConsidered
local unit ally = GetEnumUnit( )
local integer bonus = 0
local integer pBuff
call TriggerRegisterDeathEvent( dd.trg, ally )
call SaveTriggerHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(ally), dd.trg )
call SetUnitExtraDamage( ally, R2I( GetUnitExtraDamage( ally ) + dd.dmg ) )
call UnitAddAbility( ally, 'A0DV' )
call UnitMakeAbilityPermanent( ally, true, 'A0DV' )
call UnitAddAbility( ally, 'A03W' )
set pBuff = GetUnitAbility( ally, 'B00H' )
if pBuff < 1 then
call BJDebugMsg(DEBUG+" "+ GetAbilityEffectById( 'A0DV', EFFECT_TYPE_SPECIAL, 1 ) )
call BJDebugMsg(INFO)
return
endif
set dd.c = TimerGetElapsed( DispTimer )
call SetBuffLevel( pBuff, dd.id )
call WMem( RMem( pBuff + 0x90 ) + 0x4, mR2I( dd.c + 15.10 ) )
call WMem( RMem( pBuff + 0x90 ) + 0x8, mR2I( dd.c + 10.408 ) )
call UnitRemoveAbilityTimed( ally, 'A03W', 0.00 )
set ally = null
endfunction
function Speed_Steal_damage_enemy takes nothing returns nothing
set TempDamage = TempDamage + GetUnitBaseDamage( GetEnumUnit( ) )
endfunction
function Trig_Speed_Steal_Buff_Expires_Conditions takes nothing returns boolean
local TriggerData dd
local unit dies
if ( GetTriggerEventId() == EVENT_WIDGET_DEATH ) then
set dd = GetDataBX( GetTriggeringTrigger( ) )
set dies = GetDyingUnit( )
if IsUnitInGroup( dies, dd.grp ) then
call GroupRemoveUnit( dd.grp, dies )
call SetUnitExtraDamage( dies, 0 )
call RemoveSavedHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(dies) )
call RemoveSavedInteger( gg_htb_HashData, GetHandleId(dies), HASH_EXTRA_DAMAGE_INDEX )
call UnitRemoveAbility( dies, 'A0DV' )
endif
set dies = null
return false
elseif ( GetTriggerEventId() != EVENT_GAME_TIMER_EXPIRED ) then
set dd = GetDataBX( GetTriggeringTrigger( ) )
set dies = bj_lastReplacedUnit
call GroupRemoveUnit( dd.grp, dies )
call SetUnitExtraDamage( dies, R2I( GetUnitExtraDamage( dies ) - dd.dmg ) )
call SaveInteger( gg_htb_HashData, GetHandleId(dies), HASH_EXTRA_DAMAGE_INDEX, R2I( GetUnitExtraDamage( dies ) - dd.dmg ) )
call RemoveSavedHandle( gg_htb_HashData, ExSpeedSteal, GetHandleId(dies) )
call UnitRemoveAbility( dies, 'A0DV' )
set dies = null
return false
endif
return true
endfunction
function Trig_Speed_Steal_Buff_Expires_Actions takes nothing returns nothing
local TriggerData dd = GetDataBX( GetTriggeringTrigger() )
call DisableTrigger( dd.trg )
set bj_forceRandomConsidered = dd
call ForGroup( dd.grp, function Group_Remove_Damage_Enum )
call ReleaseGroup( dd.grp )
call RemoveDataBX( dd.trg )
call dd.RemoveTrigger( )
call dd.destroy( )
endfunction
function Trig_Speed_Steal_Actions takes nothing returns nothing
local unit Runner = GetSpellAbilityUnit( )
local integer Level = GetUnitAbilityLevel( Runner, 'A03Q' )
local real CX = GetUnitX( Runner )
local real CY = GetUnitY( Runner )
local player pl = GetOwningPlayer( Runner )
local TriggerData dd
call GroupClear( gg_grp_TempGroup )
set bj_groupEnumOwningPlayer = pl
call GroupEnumUnitsInRange( gg_grp_TempGroup, CX, CY, 500.00, OnlyEnemy )
if FirstOfGroup( gg_grp_TempGroup ) != null then
set TempDamage = 0.00
call ForGroup( gg_grp_TempGroup, function Speed_Steal_damage_enemy )
if TempDamage > 1.00 then
set dd = TriggerData.create()
set dd.trg = CreateTrigger( )
set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_Speed_Steal_Buff_Expires_Conditions ) )
set dd.tra = TriggerAddAction( dd.trg, function Trig_Speed_Steal_Buff_Expires_Actions )
set dd.grp = NewGroup()
set dd.dmg = ( 0.15 * Level ) * TempDamage
set dd.id = Level
call SetDataBX( dd.trg, dd )
call GroupEnumUnitsOfPlayer( dd.grp, pl, Condition( function Only_Alive_Player_No_Dummy_No_Ward_Filter ) )
set bj_forceRandomConsidered = dd
call ForGroup( dd.grp, function Group_Add_Damage_Enum )
call TriggerRegisterTimerEvent( dd.trg, 15.00, false )
endif
endif
set Runner = null
endfunction
function Init_ExtraDamageSystem takes nothing returns nothing
if abilityAddDamageLvl[0] > 0 then
return
endif
set abilityAddDamageLvl[0] = 'A0DS'
set abilityAddDamageLvl[1] = 'A0DA'
set abilityAddDamageLvl[2] = 'A0DK'
set abilityAddDamageLvl[3] = 'A0DL'
set abilityAddDamageLvl[4] = 'A0DM'
set abilityAddDamageLvl[5] = 'A0DN'
set abilityAddDamageLvl[6] = 'A0DO'
set abilityAddDamageLvl[7] = 'A0DP'
set abilityAddDamageLvl[8] = 'A0DQ'
set abilityAddDamageLvl[9] = 'A0DR'
set abilityAddDamageLvl[10] = 'A0DJ'
set abilityAddDamageLvl[11] = 'A0DT'
set abilityAddDamageLvl[12] = 'A0DU'
set bj_lastCreatedUnit = CreateUnit( Player( 15 ), 'hpea', 4435.41, 4295.44, 270.00 )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[0] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[1] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[2] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[3] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[4] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[5] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[6] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[7] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[8] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[9] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[10] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[11] )
call UnitAddAbility( bj_lastCreatedUnit, abilityAddDamageLvl[12] )
call ShowUnit( bj_lastCreatedUnit, false )
call KillUnit( bj_lastCreatedUnit )
endfunction
Ого... Блин, спасибо, бро! Попытаюсь разобраться. Эта наработка, возможно, станет очень важной частью моего проекта. Ещё раз Спасибо!
JIEGEND, base data (bd), reforged (ref), memoryhack (memhack)
мемхак позволяет получить новый функционал, в рефе уже этот функционал из коробки, а база данных хранит в себе кучу инфы, которую ты вручную туда закидываешь, чтобы в дальнейшем работать с ней
JIEGEND, т.е. тебе нужно узнать не урон а белую и бонусную атаку юнита? тут только бд либо мемхак/реф
))
Я в этой теме пока новичёк , потому не могу сказать что именно мне надо... Просто большинство терминов которые вы назвали мне ни о чём не говорят, без понятия что это😅
регистрируешь событие юнит получает урон на каждого юнита на карте, а в самом триггере проверяешь что атакующий находится в области и принадлежит такому-то игроку, выставляешь массивной переменной под индексом игрока владельца кол-во нанесённого урона, 2 простых гуи триггера
Надо будет посмотреть... Просто я хочу чтобы самой драки не было. Просто считался урон юнитов принадлежащее разными Игрокам, и тот отряд у которого статистики суммарного урона больше- тот выиграл
Если нужны какие-то конкретные флажки - пишите, сделаю в следующем паке.
Привет, дружище! Можешь мне помочь с моделями флагов, пожалуйста. Нужно сделать флаг для Мартейлов и Тиреллов из игры Престолов, очень нужно для моего следующего проекта. Поможешь?🙂
Ред. JIEGEND
» WarCraft 3 / Помогите запустить карту
» WarCraft 3 / Помогите запустить карту
» WarCraft 3 / Помогите запустить карту
» WarCraft 3 / Текстуры земли (Custom Tilesets Pack)
» WarCraft 3 / Изменение скорости передвижения юнита на 0
» WarCraft 3 / Нужна модель!
» WarCraft 3 / Без контакта или нет началу игры
» WarCraft 3 / Нужна модель!
» WarCraft 3 / Делать действия для юнитов под курсором.
» WarCraft 3 / Мемхак для нуба
Кстати про области... Возможно ли их сделать другой формы?
» WarCraft 3 / Мемхак для нуба
))Я бы посмотрел как ты это делаешь. Но мне до такого уровня далеко
Если не сложно сделай пару наработок
» WarCraft 3 / Мемхак для нуба
1)Мне нужно создать подсчет урона юнитов Разных игроков в области, и та группа юнитов у которой суммарный урон будет больше тот побеждает, и проигравший юнит отдает занятую область. Тут начинаются новые проблемы...
На самом деле я начинаю думать что мне нужна помощь и поддержка, самому очень трудно делать такой объем работы. Но если у меня получится, то это будет ЛУЧШАЯ КАРТА Game of thrones из всех что сейчас есть.
» WarCraft 3 / Как создать подсчёт урона юнитов в области?
» WarCraft 3 / Как создать подсчёт урона юнитов в области?
» WarCraft 3 / Как создать подсчёт урона юнитов в области?
))
Я в этой теме пока новичёк , потому не могу сказать что именно мне надо... Просто большинство терминов которые вы назвали мне ни о чём не говорят, без понятия что это😅
» WarCraft 3 / Как создать подсчёт урона юнитов в области?
» WarCraft 3 / Как заменить в верхнем правом углу иконки ресурсов?
» WarCraft 3 / Как заменить в верхнем правом углу иконки ресурсов?
Ред. JIEGEND
» WarCraft 3 / Как заменить в верхнем правом углу иконки ресурсов?
» WarCraft 3 / Помогите сделать модельку!
» WarCraft 3 / Помогите сделать модельку!
Ред. JIEGEND
» WarCraft 3 / Флаги стран Европы и Азии Средневековья