Q/A

Добавлен , опубликован
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
dermax1000, просто уберите классификацию здание у юнита
а вообще nvc123 дружно забил на это все :D как и я в свое время на свой проект))
9
Buulichkaa:
dermax1000, просто уберите классификацию здание у юнита
а вообще nvc123 дружно забил на это все :D как и я в свое время на свой проект))
Ну мне вообще не суть забил или нет, мне просто удобно сюда писать здесь всегда вовремя отвечают на нужный вопрос) А если я уберу класификацию, то он по прежнему будет нормально строится и создавать юнитов?
Проверил, благодарю, вроде все работает. Спасибо)
Это буличка, ещё а как сделать чтобы у скила для героя не было требования к уровню героя, а то мне нужно чтобы 10 уровней подряд скил можно было изучать каждый уровень, а на 2 уровне героя для скила требуется 3 уровень
24
nvc123, зачем? это отлично настраивается в РО и игровых константах.
28
prog,полноэкранный ап скилов(как в диабло) круче чем ро
28
prog, смотря какой микроскоп
пластмассовым не кул
5
Как лучше всего занести юнитов в группу G в радиусе R от точки P ?
Перед занесением нужно проверить, чтобы юнит не был невосприимчивым к магии и не являлся членом группы G.
Вот, я сделал свой первый спелл на джассе) Точнее это пока заготовка. Линейное движения снаряда.
И вот, мой снаряд летит, а как выбирать юнитов вокруг него, чтобы урон наносить?
И оптимальный ли код у меня?)
Загруженные файлы
5
nvc123, вот код:
include "cj_types.j"
library holyOrb initializer init{
private integer spell = 'A005' равкод способности
private integer dummyId = 'u001' равкод снаряда
private real speed = 20.00 скорость движения снаряда
private real dmgAoE = 275.00 область нанесения урона
private int maxIndex = 0 индекс для MUI


struct missile{
unit caster
unit dummy
real distance
real angle
real damage
group dmgGroup

static void new(unit caster,unit dummy,real distance, real angle,real damage){ создаём статичный метод new
local missile a=missile.create()//создание структуры
if(int(a)>10){ защита от переполнения
call a.destroy()
return
}
else{
set a.caster=caster юнит, применивший заклинание
set a.dummy=dummy заносим в структуру юнита которого будем двигать
set a.distance=distance заносим в структуру юнита к которому будем двигаться
set a.angle=angle
set a.damage=damage
set a.dmgGroup=null

call DisplayTimedTextToForce(GetPlayersAll(), 1.00, "Missile created")
call DisplayTimedTextToForce(GetPlayersAll(), 1.00, GetUnitName(a.dummy) + " angle = " + R2S(a.angle))
}
}

void delete(){
call KillUnit(.dummy)

set .caster=null
set .dummy=null
думаю, реальные переменные обнулять не надо, это я на всякий случай :D
set .angle=0
set .distance=0
set .damage=0

call .destroy()
call DisplayTimedTextToForce(GetPlayersAll(), 1.00, "Missile deleted")
}


void move(){
local location dummyLoc = GetUnitLoc(.dummy)
local location offsetLoc = PolarProjectionBJ(dummyLoc,speed,.angle)

set .distance = .distance - speed

if(.distance<speed){
call .delete()
}
else{
call SetUnitPositionLoc(.dummy,offsetLoc)
call SetUnitFacing(.dummy,.angle)

}

call RemoveLocation(dummyLoc)
call RemoveLocation(offsetLoc)
}

}

private void update(){
set maxIndex = maxIndex + 1
local missile holyOrb = maxIndex
loop
if(holyOrb.distance>=speed){
holyOrb.move()
}
exitwhen holyOrb==1
holyOrb--
endloop
}

private void action(){
local location casterLoc = GetUnitLoc(GetTriggerUnit())
local location targetLoc = GetSpellTargetLoc()
local real ho_angle = AngleBetweenPoints(casterLoc,targetLoc)
local real ho_distance = 1100.00
local real ho_damage = 70.00 * I2R(GetUnitAbilityLevel(GetTriggerUnit(), spell))
local unit ho_dummy

call CreateNUnitsAtLoc( 1, dummyId, GetTriggerPlayer(), casterLoc, ho_angle )
set ho_dummy = GetLastCreatedUnit()

call missile.new(GetTriggerUnit(),ho_dummy,ho_distance,ho_angle,ho_damage) вызываем статичный метод new

ho_dummy = null
call RemoveLocation(casterLoc)
call RemoveLocation(targetLoc)
}
private boolean cond(){
return GetSpellAbilityId()==spell
}
private void init(){
local trigger trig=CreateTrigger() создание триггера
local timer tmr=CreateTimer() создание таймера
call TriggerAddAction(trig,function action) добавление действия
call TriggerAddCondition(trig,Condition(function cond)) добавление условия
call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_SPELL_EFFECT) добавление события
call TimerStart(tmr,0.025,true,function update) запускаем таймер с функцией update
set trig=null
}
}
так как выбрать юнитов в области и продамажить?)
21
выбираем
native CreateGroup                          takes nothing returns group //создание группы

native GroupEnumUnitsInRange                takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing //занесение юнитов в радиусе в группу по условию

native Condition        takes code func returns conditionfunc // создание условия

constant native GetFilterUnit       takes nothing returns unit //юнит, возвращаемый в ф-ии условия
дамажим
native UnitDamageTarget             takes unit whichUnit, widget target, real amount, boolean attack, boolean ranged, attacktype attackType, damagetype damageType, weapontype weaponType returns boolean
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.