Передача урона
|
|
NewN1ckName | Дата: Воскресенье, 21 Апреля 2013, 13:51:29 | Сообщение # 1 |
1 уровень
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Блокировки:
| Мне надо передать базовый урон от одного юнита другому (скопировать). Типа у 1го было 54-55 урона у другого 12-15 и другому нада сделать как у первого, как это сделать?
|
|
|
|
UbeR | Дата: Воскресенье, 21 Апреля 2013, 14:08:23 | Сообщение # 2 |
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 148
Блокировки:
| Только через Jass. Увы, я не владею им. Попроси опытных кодеров
http://warcraft3ft.info/forum/26-45754
|
|
|
|
Moddy | Дата: Воскресенье, 21 Апреля 2013, 14:09:08 | Сообщение # 3 |
4 уровень
Группа: Проверенные
Сообщений: 96
Награды: 0
Репутация: 30
Блокировки:
| триггеры и переменные в помощь Добавлено (21 Апреля 2013, 14:09:08) ---------------------------------------------
Цитата (UbeR) Только через Jass не согласен, хотя..
|
|
|
|
UbeR | Дата: Воскресенье, 21 Апреля 2013, 14:18:06 | Сообщение # 4 |
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 148
Блокировки:
| Цитата (Moddy) не согласен
Насколько я знаю, отслеживать урон в GUI нельзя... Или можно?
http://warcraft3ft.info/forum/26-45754
|
|
|
|
Wc3Mapmaker | Дата: Воскресенье, 21 Апреля 2013, 14:34:28 | Сообщение # 5 |
3 уровень
Группа: Проверенные
Сообщений: 47
Награды: 0
Репутация: 31
Блокировки:
| UbeR, можно отслеживать я делал способности где требуется отслеживание урона
|
|
|
|
UbeR | Дата: Воскресенье, 21 Апреля 2013, 14:37:44 | Сообщение # 6 |
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 148
Блокировки:
| Wc3Mapmaker, именно НЕ НАНЕСЕННЫЙ УРОН, а БАЗОВЫЙ УРОН ЮНИТА?
http://warcraft3ft.info/forum/26-45754
|
|
|
|
BlackFox | Дата: Воскресенье, 21 Апреля 2013, 15:02:22 | Сообщение # 7 |
3 уровень
Группа: Проверенные
Сообщений: 52
Награды: 0
Репутация: 25
Блокировки:
| NewN1ckName, метод замены и база клонов тебе в помощь.
SirNikolas падёт в неравном бою с брутфорсом, Alice.
|
|
|
|
UbeR | Дата: Воскресенье, 21 Апреля 2013, 15:23:24 | Сообщение # 8 |
5 уровень
Группа: Проверенные
Сообщений: 133
Награды: 0
Репутация: 148
Блокировки:
| Цитата (BlackFox) метод замены
Слишком примитивно.
Цитата (BlackFox) база клонов
Не знаю о таком, можно поподробнее, пожалуйста?
http://warcraft3ft.info/forum/26-45754
|
|
|
|
Daro | Дата: Воскресенье, 21 Апреля 2013, 15:28:36 | Сообщение # 9 |
6 уровень
Группа: Проверенные
Сообщений: 217
Награды: 0
Репутация: 105
Блокировки:
| Цитата (UbeR) Насколько я знаю, отслеживать урон в GUI нельзя... Или можно? Геройский точно можно
|
|
|
|
BlackFox | Дата: Воскресенье, 21 Апреля 2013, 15:29:47 | Сообщение # 10 |
3 уровень
Группа: Проверенные
Сообщений: 52
Награды: 0
Репутация: 25
Блокировки:
| Смотри старый тип того же юнита с 12-15 на тот же вид юнита, но другой тип, только у него будет 54-55. Я о такой замене. Код function ReplaceUnitBJ takes unit whichUnit, integer newUnitId, integer unitStateMethod returns unit
local unit oldUnit = whichUnit
local unit newUnit
local boolean wasHidden
local integer index
local item indexItem
local real oldRatio
// If we have bogus data, don't attempt the replace.
if (oldUnit == null) then
set bj_lastReplacedUnit = oldUnit
return oldUnit
endif
// Hide the original unit.
set wasHidden = IsUnitHidden(oldUnit)
call ShowUnit(oldUnit, false)
// Create the replacement unit.
if (newUnitId == 'ugol') then
set newUnit = CreateBlightedGoldmine(GetOwningPlayer(oldUnit), GetUnitX(oldUnit), GetUnitY(oldUnit), GetUnitFacing(oldUnit))
else
set newUnit = CreateUnit(GetOwningPlayer(oldUnit), newUnitId, GetUnitX(oldUnit), GetUnitY(oldUnit), GetUnitFacing(oldUnit))
endif
// Set the unit's life and mana according to the requested method.
if (unitStateMethod == bj_UNIT_STATE_METHOD_RELATIVE) then
// Set the replacement's current/max life ratio to that of the old unit.
// If both units have mana, do the same for mana.
if (GetUnitState(oldUnit, UNIT_STATE_MAX_LIFE) > 0) then
set oldRatio = GetUnitState(oldUnit, UNIT_STATE_LIFE) / GetUnitState(oldUnit, UNIT_STATE_MAX_LIFE)
call SetUnitState(newUnit, UNIT_STATE_LIFE, oldRatio * GetUnitState(newUnit, UNIT_STATE_MAX_LIFE))
endif
if (GetUnitState(oldUnit, UNIT_STATE_MAX_MANA) > 0) and (GetUnitState(newUnit, UNIT_STATE_MAX_MANA) > 0) then
set oldRatio = GetUnitState(oldUnit, UNIT_STATE_MANA) / GetUnitState(oldUnit, UNIT_STATE_MAX_MANA)
call SetUnitState(newUnit, UNIT_STATE_MANA, oldRatio * GetUnitState(newUnit, UNIT_STATE_MAX_MANA))
endif
elseif (unitStateMethod == bj_UNIT_STATE_METHOD_ABSOLUTE) then
// Set the replacement's current life to that of the old unit.
// If the new unit has mana, do the same for mana.
call SetUnitState(newUnit, UNIT_STATE_LIFE, GetUnitState(oldUnit, UNIT_STATE_LIFE))
if (GetUnitState(newUnit, UNIT_STATE_MAX_MANA) > 0) then
call SetUnitState(newUnit, UNIT_STATE_MANA, GetUnitState(oldUnit, UNIT_STATE_MANA))
endif
elseif (unitStateMethod == bj_UNIT_STATE_METHOD_DEFAULTS) then
// The newly created unit should already have default life and mana.
elseif (unitStateMethod == bj_UNIT_STATE_METHOD_MAXIMUM) then
// Use max life and mana.
call SetUnitState(newUnit, UNIT_STATE_LIFE, GetUnitState(newUnit, UNIT_STATE_MAX_LIFE))
call SetUnitState(newUnit, UNIT_STATE_MANA, GetUnitState(newUnit, UNIT_STATE_MAX_MANA))
else
// Unrecognized unit state method - ignore the request.
endif
// Mirror properties of the old unit onto the new unit.
//call PauseUnit(newUnit, IsUnitPaused(oldUnit))
call SetResourceAmount(newUnit, GetResourceAmount(oldUnit))
// If both the old and new units are heroes, handle their hero info.
if (IsUnitType(oldUnit, UNIT_TYPE_HERO) and IsUnitType(newUnit, UNIT_TYPE_HERO)) then
call SetHeroXP(newUnit, GetHeroXP(oldUnit), false)
set index = 0
loop
set indexItem = UnitItemInSlot(oldUnit, index)
if (indexItem != null) then
call UnitRemoveItem(oldUnit, indexItem)
call UnitAddItem(newUnit, indexItem)
endif
set index = index + 1
exitwhen index >= bj_MAX_INVENTORY
endloop
endif
// Remove or kill the original unit. It is sometimes unsafe to remove
// hidden units, so kill the original unit if it was previously hidden.
if wasHidden then
call KillUnit(oldUnit)
call RemoveUnit(oldUnit)
else
call RemoveUnit(oldUnit)
endif
set bj_lastReplacedUnit = newUnit
return newUnit
endfunction
SirNikolas падёт в неравном бою с брутфорсом, Alice.
|
|
|
|
Borodach | Дата: Воскресенье, 21 Апреля 2013, 17:02:12 | Сообщение # 11 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| NewN1ckName, Ну или создание библиотеки с уроном каждого юнита. А потом разницу изменять
Karamba
|
|
|
|
BlackFox | Дата: Воскресенье, 21 Апреля 2013, 18:59:10 | Сообщение # 12 |
3 уровень
Группа: Проверенные
Сообщений: 52
Награды: 0
Репутация: 25
Блокировки:
| А проще через способность "повышение атаки".
SirNikolas падёт в неравном бою с брутфорсом, Alice.
|
|
|
|
Borodach | Дата: Воскресенье, 21 Апреля 2013, 19:10:07 | Сообщение # 13 |
9 уровень
Группа: Проверенные
Сообщений: 930
Награды: 0
Репутация: 422
Блокировки:
| BlackFox, Я о том же
Karamba
|
|
|
|
BlackFox | Дата: Воскресенье, 21 Апреля 2013, 19:19:47 | Сообщение # 14 |
3 уровень
Группа: Проверенные
Сообщений: 52
Награды: 0
Репутация: 25
Блокировки:
| Цитата (NewN1ckName) 54-55 урона у другого 12-15 Как видно, ещё и кость меняем. Не только базовую атаку. Можно через исследования.
SirNikolas падёт в неравном бою с брутфорсом, Alice.
|
|
|
|