Вот, держи. Правда не тестил ибо писал на маке.
Нет мастурбации с созданием и удалением групп и ректов. Используется одна группа и рект.
Нет локалок, чтоб не париться с утечками.
Правда может не скомпилиться, но это уже дело третье.
native UnitAlive takes unit u returns boolean
//! zinc
library MinerMiner {
group g = CreateGroup();
unit u;
integer uid, action, itid, did;
rect r = Rect(0, 0, 0, 0);
real ux, uy, dx, dy;
item it;
destructable d, dt;
function distance(destructable d, unit u) -> real {
real dx = GetUnitX(u) - GetDestructableX(d);
real dy = GetUnitY(u) - GetDestructableY(d);
return dx * dx + dy * dy;
}
function onInit() {
trigger t = CreateTrigger();
TriggerRegisterTimerEventPeriodic(t, .5);
TriggerAddAction( t, function() {
integer i = 0;
for (0 <= i < bj_MAX_PLAYER_SLOTS) {
GroupEnumUnitsOfPlayer(g, Player(i), null);
ForGroup(g, function() {
u = GetEnumUnit();
uid = GetUnitTypeId(u);
ux = GetUnitX(u);
uy = GetUnitY(u);
if (!UnitAlive(u)) {
return;
}
// Баф на юните при вкл.скила
if (GetUnitAbilityLevel(u, 'BUF1') == 0 && GetUnitAbilityLevel(u, 'BUF2') == 0 && GetUnitAbilityLevel(u, 'BUF3') == 0) {
return;
}
if (GetUnitCurrentOrder(u) != 0) {
return;
}
action = 0;
// около 20 юнитов
if(uid == 'UNT1' || uid == 'UNT2' || uid == 'UNT3') {
SetRect(r, ux - 300, uy - 300, ux + 300, uy + 300);
EnumItemsInRect(r, null, function() {
it = GetEnumItem();
itid = GetItemTypeId(it);
// Только 2 предмета не ITEM_TYPE_POWERUP
if (GetItemType(it) != ITEM_TYPE_POWERUP && itid != 'I000' && itid != 'I002') {
return;
}
if(UnitInventorySize(u) - UnitInventoryCount(u) <= 0) {
return;
}
IssueTargetOrder(u, "smart", it);
action = 2;
});
}
if (action == 0) {
SetRect(r, ux - 700, uy - 700, ux + 700, uy + 700);
dt = null;
EnumDestructablesInRect(r, null, function() {
d = GetEnumDestructable();
did = GetDestructableTypeId(d);
dx = GetDestructableX(d);
dy = GetDestructableY(d);
// Ненужный объект
if (GetDestructableLife(d) <= 0 && did != 'B003') {
return;
}
if (dt == null || distance(d, u) < distance(dt, u)) {
action = 1;
dt = d;
}
});
}
if (action == 0) {
IssuePointOrder(u, "move", GetRandomReal(ux - 300, ux + 300), GetRandomReal(uy - 300, uy + 300));
}
if (action == 1) {
if (distance(dt, u) < 62500) {
IssueTargetOrder( u, "attack", dt);
} else {
IssuePointOrder(u, "move", GetDestructableX(dt), GetDestructableY(dt));
}
}
});
}
});
t = null;
}
}
//! endzinc
Перевставил изображения в приведённых статьях. Автоматически всё заменить нет возможности, так что просто кидай сюда статьи с пропавшими изображениями, будем фиксить ручками.
Ред. nazarpunk
» WarCraft 3 / Не удаляются точки в триггерной способности
» WarCraft 3 / Герой в виде рюкзака
» WarCraft 3 / Не удаляются точки в триггерной способности
Ред. nazarpunk
» WarCraft 3 / Герой в виде рюкзака
» WarCraft 3 / Не удаляются точки в триггерной способности
Ред. nazarpunk
» WarCraft 3 / Не удаляются точки в триггерной способности
Нет мастурбации с созданием и удалением групп и ректов. Используется одна группа и рект.
Нет локалок, чтоб не париться с утечками.
» WarCraft 3 / Не удаляются точки в триггерной способности
» WarCraft 3 / Раундовая система
» WarCraft 3 / Раундовая система
» WarCraft 3 / Раундовая система
Ред. nazarpunk
» Администрация XGM / Исчезли скриншоты в старых статьях
» WarCraft 3 / Раундовая система
Ред. nazarpunk
» Администрация XGM / Исчезли скриншоты в старых статьях
» XGM Team / Изменения в проектах
$5
$10
$25
» XGM Team / Изменения в проектах
» XGM Team / Изменения в проектах
» XGM Team / Изменения в проектах
» WarCraft 3 / Баг
Ред. nazarpunk
» WarCraft 3 / Баг
» XGM Team / Изменения в проектах
Ред. nazarpunk
» XGM Team / Изменения в проектах
» Блог им. TerrorGold / За каким типом сюжета интересней следить?
» Путь режиссёра (way of director) / Путь режиссёра (way of director)
» Путь режиссёра (way of director) / Путь режиссёра (way of director)
» Блог им. TerrorGold / За каким типом сюжета интересней следить?