Chaosy
Tutorial Reviewer
- Joined
- Jun 9, 2011
- Messages
- 13,239
JASS:
//! zinc
library UnitSpawn {
hashtable hash = InitHashtable();
force f = CreateForce();
integer toSpawn[], count;
integer enemyCount = 20;
function ForceActions() {
player p = GetEnumPlayer();
integer id = GetPlayerId(p);
unit base = LoadUnitHandle(hash, id, 0);
unit temp;
if(GetUnitState(base, UNIT_STATE_LIFE) > 0) {
temp = CreateUnit(p, toSpawn[GetRandomInt(0, count)], GetUnitX(base), GetUnitY(base), 0);
IssuePointOrder(temp, "attack", 0, 0);
SetUnitExploded(temp, true);
} else {
ForceRemovePlayer(f, p);
}
temp = null;
base = null;
}
function onInit() {
trigger tr = CreateTrigger();
integer i = 0;
real angle = bj_PI / 4;
real dist = 3000;
real x, y;
timer t = CreateTimer();
unit u;
TriggerRegisterPlayerUnitEventSimple(tr, Player(PLAYER_NEUTRAL_AGGRESSIVE), EVENT_PLAYER_UNIT_DEATH);
TriggerAddAction(tr, function() {
enemyCount -= 1;
if(enemyCount == 0) {
DisplayTextToForce(GetPlayersAll(), "You won!");
}
});
toSpawn[0] = 'hfoo';
toSpawn[1] = 'hrif';
count = 2;
while(i < enemyCount) {
CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE), ChooseRandomCreep(GetRandomInt(1,7)), 0, 0, 0);
i += 1;
}
i = 0;
while(i < 4) {
x = dist * Cos(angle);
y = dist * Sin(angle);
SaveUnitHandle(hash, GetPlayerId(Player(i)), 0, CreateUnit(Player(i), 'hbar', x, y, 0));
angle += bj_PI / 2;
ForceAddPlayer(f, Player(i));
i += 1;
}
TimerStart(t, 2.5, true, function(){
ForForce(f, function ForceActions);
});
u = null;
t = null;
}
}
//! endzinc