Hi. :) I've been researching enemy spawning.
and i want to be able to control different enemies at different waypoints with the same array.
only problem is when i try to load the enemies, it only spawns 1 enemy..
code:
Dim enemymesh(1)
enemymesh(0) = LoadAnimMesh("media\ninja.b3d")
enemymesh(1) = LoadAnimMesh("markio\mariorun.x")
For x = 0 to 24
CreateHostile(enemymesh(Rnd(0,1)), Rnd(0,24), Rnd(25,50))
Next
Function CreateHostile.hostile(spec,x,z)
A.hostile = New hostile
Select spec
Case 1
A\model = enemymesh(0)
A\hp = 5
A\attack = 2
A\attackrange = 20
A\state = IDLE
A\maxtime# = 5.0
A\cooled = True
A\current# = 0.0
End Select
A\ox = x
A\oz = z
A\fleepivot = CreatePivot()
If A\model <> 0
PositionEntity A\fleepivot,x,EntityY(t),z
; PositionEntity A\fleepivot,x,TerrainY(t,x,0,z),z
PositionEntity A\model,x,0,z
EndIf
Return A
End Function
Function UpdateHostile()
For A.hostile = Each hostile
A\current# = A\current# + 0.1
If A\maxtime# <= A\current#
A\cooled = True
A\current# = 0.0
EndIf
PositionEntity A\model, EntityX(A\model),3+EntityY(T),EntityZ(A\model)
; PositionEntity A\model,EntityX(A\model),3+TerrainY(T,EntityX(A\model),0,EntityZ(a\model)),EntityZ(A\model)
If A\hp < 1
A\state = DEAD
For P.player = Each player
P\experience = P\experience + 15
Next
EndIf
Select A\state
Case IDLE
For P.player = Each player
If EntityDistance(A\model,P\model) < A\attackrange And P\hp > 0
A\target.player = P
A\state = CONFRONT
EndIf
Next
Case CONFRONT
If EntityDistance(A\model,A\target\model) < 4
If A\cooled = True
A\target\hp = A\target\hp - A\attack
A\cooled = False
If A\target\hp < 1
A\state = flee
EndIf
EndIf
Else
PointEntity A\model,A\target\model
MoveEntity A\model,0,0,1
EndIf
If (Abs(EntityX(A\model) + EntityZ(A\model)- A\ox-A\oz)) > 120
A\state = FLEE
EndIf
Case DEAD
; Display("Gray Ball has died.",500,35,255,0,0,5)
PlaySound deathsound
CreateItem(Rand(1,2),EntityX(A\model),EntityZ(A\model))
FreeEntity A\model
Delete A
Case FLEE
PointEntity A\model,A\fleepivot
MoveEntity A\model,0,0,1
If EntityDistance(A\model,A\fleepivot) < 3
A\state = IDLE
EndIf
End Select
Next
End Function
~DS~
|