Показать сообщение отдельно
Старый 12.01.2007, 13:58   #5
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Re: элементы из типа

Сори видимо не правельно задал вопрос)
НАДО чтоб юниты выделялись как в стратегиях(т.е. я могбы выбрать мышкой любова и тот должен идти куда я ткнул)
п.с. вот весь код(упростил как мог))
сейчас я могу управлять одним(последним) или всеми
а должно чтоб любым в любых комбинациях
помогите плиз)
Graphics3D 800,600,32,1
;KAMEPA
Global CamPiv=CreatePivot()
Global Cam=CreateCamera(CamPiv)
CameraRange cam,.1,150
CameraFogRange cam,90,150
CameraClsColor cam,0,0,0;150,200,250
CameraFogMode cam,1
CameraFogColor cam,0,0,0;150,200,250
TurnEntity Cam,55,0,0
MoveEntity Cam,0,35,-30
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
 
Sun=CreateLight(1)
TurnEntity Sun,45,45,0
LightColor Sun,100,100,100
AmbientLight 150,150,100
;Tun
Type unit
Field status
Field ent
Field piv
Field go
Field num
End Type
Const TERT=1,UNITT=2,TREET=3
Global Ground
Global terrain
;function: CO3gaEM Mup
Function create_World()
Collisions UNITT,TERT,2,3
Collisions UNITT,TREET,2,3
Collisions UNITT,UNITT,1,3
Collisions TREET,TERT,2,3
terrain=CreatePlane();LoadMesh("terrrain.b3d")
EntityColor terrain,0,95,0
EntityPickMode terrain,2 
EntityType terrain,TERT
End Function
;CO3gaEM Mup
create_World()

Global M,CurrentFPS,mFPS,Twin#,FPS,Zoom#
Global mouse=False,x_s=0,y_s=0,x_e=0,y_e=0 
Global obj.unit
;function: Co3gaEmM UNIT
Function create_Unit(x#,y#,z#,kol) 
obj.unit=New unit
obj\ent=CreateCube()
ScaleEntity obj\ent,2,3,2
EntityRadius obj\ent,3
PositionEntity obj\ent,x,y,z
obj\piv=CreatePivot()
EntityType obj\ent,UNITT
EntityPickMode obj\ent,2
obj\status=False
obj\num=kol
End Function 
;function: geucTBu9I UNIToB
Function Update_Unit();
speed#=-1
For obj.unit=Each unit
If Not obj\go Then Return
If Not obj\status Then Return ;)
PointToEntity(obj\ent,obj\piv);
MoveEntity obj\ent,0,0,speed#
If EntityDistance(obj\ent,obj\piv)<6 Then obj\go=False
Next 
End Function
Function PointToEntity( src, dest)
RotateEntity src,0,DeltaYaw#(dest,src),0
End Function
 
;Co3gaEM UNIToB
create_unit(Rnd(32),8,Rnd(32),1)
create_unit(Rnd(32),8,Rnd(32),2)
create_unit(Rnd(32),8,Rnd(32),3)
;||||||||||||||||||||||||||||||||||||||||||||||||||||||
Repeat 
 
If KeyDown(1) Exit
SetBuffer BackBuffer()
Cls
If mouse=False Then
If MouseDown(1)=True Then
mouse=True
x_s=MouseX()
y_s=MouseY()
x_e=MouseX()
y_e=MouseY()
End If
Else
x_e=MouseX()
y_e=MouseY()
If MouseDown(1)=False Then
select_unit()
mouse=False
End If
End If
For obj.unit= Each unit
If obj\status=True Then
TurnEntity obj\ent,0,4,0
End If
Next
MouseUpdate();gBu}|{eHuE KAMEPbI MbILLIKOu
GetFPS()
YnaJIo()
;UNITbI TOnaIOT)
If MouseDown(2) Then
pick=CameraPick(cam,MouseX(),MouseY())
If pick=terrain Then
For obj.unit=Each unit
If obj\status=True 
PositionEntity obj\piv,PickedX(),PickedY()+0.1,PickedZ()
obj\go=True
EndIf 
Next 
EndIf
EndIf
Update_Unit();obj)
;
UpdateWorld()
RenderWorld(Twin#)
If mouse=True Then
Color 0,255,0
Line x_s,y_s,x_e,y_s
Line x_s,y_s,x_s,y_e
Line x_e,y_s,x_e,y_e
Line x_e,y_e,x_s,y_e
End If
;
Color 55,255,255
Text MouseX(),MouseY(),"*"
Text 10,10,"FPS: "+CurrentFPS
Flip;(0)
Forever 
End
;||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Function MouseUpdate() 
If M<MilliSecs() Then
M=MilliSecs()+100-Timescale*66
CaptureWorld()
If MouseX()<10 Then MoveEntity CamPiv,-8,0,0
If MouseX()>GraphicsWidth()-10 Then MoveEntity CamPiv,8,0,0
If MouseY()<10 Then MoveEntity CamPiv,0,0,8
If MouseY()>GraphicsHeight()-10 Then MoveEntity CamPiv,0,0,-8
;If MouseDown(2) Then TurnEntity CamPiv,0,MouseXSpeed(),0
Zoom#=Zoom+MouseZSpeed()
If Zoom<1 Then Zoom=1
If Zoom>4 Then Zoom=4
CameraZoom Cam,Zoom
MouseXSpeed()
MouseYSpeed()
EndIf
End Function 
Function GetFPS() 
If mFPS<MilliSecs() Then
mFPS=MilliSecs()+1000
CurrentFPS=FPS
FPS=0
Else
FPS=FPS+1
EndIf
Twin#=1-Float(M-MilliSecs())/100
End Function 
;Bbl6op obj
Function select_unit()
If x_e<x_s Then
x=x_e
w=x_s-x_e
Else
x=x_s
w=x_e-x_s
End If
If y_e<y_s Then
y=y_e
h=y_s-y_e
Else
y=y_s
h=y_e-y_s
End If
For obj.unit= Each unit
CameraProject(cam,EntityX(obj\ent),EntityY(obj\ent),EntityZ(obj\ent))
If RectsOverlap(ProjectedX()-5,ProjectedY()-5,10,10,x,y,w,h)=True Then
obj\status=True
EntityColor obj\ent,0,0,255
Else
obj\status=False
EntityColor obj\ent,255,255,0
End If
Next
End Function
Function YnaJIo()
For obj.unit=Each unit
TranslateEntity obj\ent.unit,0,-1,0
Next
End Function 
(Offline)
 
Ответить с цитированием