Есть ли какая-нибудь сборка (желательно с исходами), любых хроник, в которой бы при появлении миньенов они были бы выстроены кругом, квадратом или как-то иначе (не появлялись друг в друге и между ними было одинаковое расстояние) возле рб? (Если знаете такую, скажите плз название или поделитесь ссылкой на нее)
Или можете, если знаете и вам не сложно, подсказать как сделать такое в aCis?
/**
* вычислить курс // направление
* @param fromX
* @param fromY
* @param toX
* @param toY
* @return
*/
public static final int calculateHeadingFrom(int fromX, int fromY, int toX, int toY)
{
double angleTarget = Math.toDegrees(Math.atan2(toY - fromY, toX - fromX));
if (angleTarget < 0)
{
angleTarget = 360 + angleTarget;
}
return (int) (angleTarget * 182.044444444);
}
/**
* Список точек на окружности<br>
* Hаправление от центра к окружности<br>
* @param loc начало центр
* @param radius радиус
* @param count количество точек
* @return список точек на окружности
*/
public static final List<Location> getPointCircle(ILocational loc, int radius, int count)
{
return getPointCircle(loc.getX(), loc.getY(), loc.getZ(), loc.getInstanceId(), radius, count);
}
/**
* Список точек на окружности<br>
* Hаправление от центра к окружности<br>
* @param x начало центр
* @param y начало центр
* @param z
* @param instanceId
* @param radius радиус
* @param count количество точек
* @return список точек на окружности
*/
public static final List<Location> getPointCircle(int x, int y, int z, int instanceId, int radius, int count)
{
List<Location> list = new ArrayList<>();
int angle = 360 / count;
for (int i = 0; i < 360; i += angle)
{
double rad = ((double) i / 180) * 3.14;
int xn = (int) (radius * Math.cos(rad));
int yn = (int) (radius * Math.sin(rad));
Location loc = new Location(xn + x, y + yn, z, calculateHeadingFrom(x, y, xn + x, y + yn), instanceId);
list.add(loc);
}
return list;
}
Смотрите мобов в лабиринте бездны, камалока. Там первая комната с мобами. У данных мобов должен быть AI для построения. Так как насколько я помню, там спавнится 1 моб, остальные доспавнивает AI.Есть ли какая-нибудь сборка (желательно с исходами), любых хроник, в которой бы при появлении миньенов они были бы выстроены кругом, квадратом или как-то иначе (не появлялись друг в друге и между ними было одинаковое расстояние) возле рб? (Если знаете такую, скажите плз название или поделитесь ссылкой на нее)
Или можете, если знаете и вам не сложно, подсказать как сделать такое в aCis?
Или школа полномочий та много примеров)Смотрите мобов в лабиринте бездны, камалока. Там первая комната с мобами. У данных мобов должен быть AI для построения. Так как насколько я помню, там спавнится 1 моб, остальные доспавнивает AI.
То, о чем ты говоришь, имея ввиду лабиринт бездны, это в AI ПТС-ки. И там тупо каждому мобу прописано примитивно типа такого:Смотрите мобов в лабиринте бездны, камалока. Там первая комната с мобами. У данных мобов должен быть AI для построения. Так как насколько я помню, там спавнится 1 моб, остальные доспавнивает AI.
@Override
protected void onEvtSpawn()
{
if (!is_private && !spawnActivated)
{
spawnActivated = true;
final L2NpcInstance actor = getActor();
final Location spawnLoc = actor.getSpawnedLoc().correctGeoZ();
final int i0 = Rnd.get(9);
if (i0 == 0)
{
//actor.teleToLocation(actor.getLoc());
//InstantTeleport(myself.sm, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 1)
{
actor.teleToLocation(spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 2)
{
actor.teleToLocation(spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 3)
{
actor.teleToLocation(spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 4)
{
actor.teleToLocation(spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 5)
{
actor.teleToLocation(spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 6)
{
actor.teleToLocation(spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else if (i0 == 7)
{
actor.teleToLocation(spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
}
else
{
actor.teleToLocation(spawnLoc.x + 85, spawnLoc.y + 60, spawnLoc.z);
actor.setSpawnedLoc(actor.getLoc());
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y - 120, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 85, spawnLoc.y - 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x + 120, spawnLoc.y, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x - 85, spawnLoc.y + 60, spawnLoc.z);
CreateOnePrivateEx(actor, silhouette, spawnLoc.x, spawnLoc.y + 120, spawnLoc.z);
}
}
super.onEvtSpawn();
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?