Показать сообщение отдельно
Старый 09.09.2007, 21:54   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Хорошо Разрывная граната

Сейчас я вас научу как создать разрывную гранату (естественно виртуальную).
Первым делом нужно создать типы

[blitz]
Type Oskolok
Field Entity
Field Dist
End Type

Type Grenade
Field Entity
End Type
[/blitz]

Далее создаем функции создания и обработки осколков, создание самой гранаты и ее обработки.

[blitz]
Const OSKT=2;Для столкновения с каким нибудь объектом (напр. с ботом)
Const GRNDT=3 ;Это неб. поправка
Global Radius

Function CreateOskolok(X#,Y#,Z#,P#,YA#,R#)
o.oskolok=new oskolok
o\entity = CreateSprite()
ScaleSprite o\entity,2,2
EntityColor o\entity,255,0,0
PositionEntity o\entity,X#,Y#,Z#
RotateEntity o\entity,P#,YA#,R#
EntityType o\entity,OSKT
End Function

Function CreateGrenade(X#,Y#,Z#)
g.Grenade = new grenade
g\entity=createsphere()
PositionEntity X#,Y#,Z#
EntityType g\entity,GRNDT
End Function

Function UpdateGrenade(Kollisia1)
For g.Grenade=Each Grenade
If KeyHit(57) Then CreateGrenade(0,5,0)
MoveEntity G\entity,0,-0.1,0.5
If EntityCollided(G\entity,Kollisia1) Then
X=EntityX(g\entity)
Y=EntityY(g\entity)
Z=EntityZ(g\entity)
FreeEntity g\entity
Delete g
For x=0 to 36
Radius=Radius+10
CreateOskolok(X,Y,Z,0,Radius,0)
Next
End if
Next
End Function

Function UpdateOskolki(Kollisia1)
For o.oskolok = Each Oskolok
MoveEntity o\entity,0,0,1
o\dist=o\dist+1
CO=EntityCollided(o\entity,Kollisia1)
If CO<>0
FreeEntity CO; Это если объект столкнулся напр. с ботом
elseif o\Dist>100
FreeEntity o\entity
Delete o
end if
Next
End Function
[/blitz]

Ну вот и все дальше напишу наглядный пример.
__________________

(Offline)
 
Ответить с цитированием