Функция урона по линии. DamageLine(a, b, w, dmg, ranged) a - точка начала линии b - точка конца линии w - ширина линии (чем меньше тем точнее) dmg - наносимый урон ranged - true, если урон считается дальним боем, false, если нет.
Код Jass
function DamageLine takes location a, location b, real w, real dmg, boolean ranged returns nothing
local integer i = 0
local real aX = GetLocationX(a)
local real bX = GetLocationX(b)
local real aY = GetLocationY(a)
local real bY = GetLocationY(b)
local real dist = SquareRoot((bX - aX) * (bX - aX) + (bY - aY) * (bY - aY))
local real angle = 57.295827908 * Atan2(bY - aY, bX - aX)
local group g = CreateGroup()
local group tg = CreateGroup()
local unit u
loop
exitwhen i > 2*dist/w
call GroupEnumUnitsInRange(g, aX, aY, w, null)
loop
set u = FirstOfGroup(g)
if (IsUnitInGroup(u, tg) == false) then
call UnitDamageTarget(u, u, dmg, true, ranged, ATTACK_TYPE_CHAOS, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
endif
call GroupAddUnit(tg, u)
call GroupRemoveUnit(g, u)
exitwhen u == null
endloop
set aX = aX + w/2 * Cos(angle * 0.01745327)
set aY = aY + w/2 * Sin(angle * 0.01745327)
set i = i + 1
endloop
call DestroyGroup(g)
call DestroyGroup(tg)
set g = null
set u = null
endfunction
Код cJass
void DamageLine(location a, location b, real w, real dmg, boolean ranged) {
int i = 0
real aX = GetLocationX(a), bX = GetLocationX(b)
real aY = GetLocationY(a), bY = GetLocationY(b)
real dist = SquareRoot((bX - aX) * (bX - aX) + (bY - aY) * (bY - aY))
real angle = 57.295827908 * Atan2(bY - aY, bX - aX)
group g = CreateGroup(), tg = CreateGroup()
unit u
loop {
exitwhen i>2*dist/w
GroupEnumUnitsInRange(g, aX, aY, w, null)
loop {
u = FirstOfGroup(g)
if !IsUnitInGroup(u, tg) {
UnitDamageTarget(u, u, dmg, true, ranged, ConvertAttackType(5), ConvertDamageType(4), ConvertWeaponType(0))
}
GroupAddUnit(tg, u)
GroupRemoveUnit(g, u)
exitwhen u==null
}
aX+=w/2 * Cos(angle * 0.01745327)
aY+=w/2 * Sin(angle * 0.01745327)
i++
}
DestroyGroup(g)
DestroyGroup(tg)
g = null
tg = null
u = null
}
используются loc, а не координаты; как уже было замечено u наносит урон u; вторая булеан, которая проверяет урон стоит на true. следует использовать еще один аргумент. а вообще никто кроме конечно же тебя ее использовать не будет, кроме наивных newbies.
» WarCraft 3 / Библиотека функций
» WarCraft 3 / Zombieland 1.02 RU
» WarCraft 3 / Zombieland 1.02 RU
» WarCraft 3 / Караваны v.1.08 beta
*зловещий смех*
» WarCraft 3 / Ashgan
» WarCraft 3 / Передача и хранение данных в варкрафте
» WarCraft 3 / Трещина (спецэффект)
щяс потестим...
больше похоже на червя) нежели на что то в роде расщелины ...
» WarCraft 3 / Библиотека функций
» WarCraft 3 / cJass - дополнение к языку JASS
ы
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
я что-то сделал и у меня теперь 1.4.1.5
и всеравно не пашет. хм
все, пашет. спс всем
» WarCraft 3 / cJass - дополнение к языку JASS
Hellfim, скачал заного JNGP 5d с wc3c.net
после скачал и установил с твоей ссылки парсер
...
проверил
тоже самое
» WarCraft 3 / cJass - дополнение к языку JASS
ZeToX2007, а причем здесь ты? омг
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
cJass => check for updates now
он говорит что у меня последняя версия
авто обновление поставлена галка
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
v 1.4.1.36
» WarCraft 3 / Варвар
» StarCraft 2 / Создание областей в SC2
на статью не тянет
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
» WarCraft 3 / cJass - дополнение к языку JASS
flush locals
» WarCraft 3 / Труп