forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Разрывная граната (http://forum.boolean.name/showthread.php?t=4392)

mr.DIMAS 09.09.2007 21:54

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

[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]

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

ЛысыЙ_Чук-Иванчук 10.09.2007 01:28

Re: Разрывная граната
 
А готовый проимер незя?
Ато ручками соберать незнамо что! както неочень тянет!
Хотябы фотки кинь чтоли!=)

IGR 10.09.2007 12:54

Re: Разрывная граната
 
Цитата:

Хотябы фотки кинь чтоли!=)
кидай гранату !! :-D

faq полезное , respect !!

mr.DIMAS 10.09.2007 16:09

Re: Разрывная граната
 
Вложений: 2
Цитата:

А готовый проимер незя?
Ато ручками соберать незнамо что! както неочень тянет!
Хотябы фотки кинь чтоли!=)
Просто надо было подождать

Э... Небольшая поправка чтоли
Вместо

For x=0 to 36
Radius=Radius+10
CreateOskolok(X,Y,Z,0,Radius,0)
Next


Лучше ;)
CreateOskolok(X,Y,Z,0,10,0)
CreateOskolok(X,Y,Z,0,20,0)
CreateOskolok(X,Y,Z,0,30,0)
CreateOskolok(X,Y,Z,0,40,0)
CreateOskolok(X,Y,Z,0,50,0)
CreateOskolok(X,Y,Z,0,60,0)
CreateOskolok(X,Y,Z,0,70,0)
CreateOskolok(X,Y,Z,0,80,0)
CreateOskolok(X,Y,Z,0,90,0)
CreateOskolok(X,Y,Z,0,100,0)
CreateOskolok(X,Y,Z,0,110,0)
CreateOskolok(X,Y,Z,0,120,0)
CreateOskolok(X,Y,Z,0,130,0)
CreateOskolok(X,Y,Z,0,140,0)
CreateOskolok(X,Y,Z,0,150,0)
CreateOskolok(X,Y,Z,0,160,0)
CreateOskolok(X,Y,Z,0,170,0)
CreateOskolok(X,Y,Z,0,180,0)
CreateOskolok(X,Y,Z,0,190,0)
CreateOskolok(X,Y,Z,0,200,0)
CreateOskolok(X,Y,Z,0,210,0)
CreateOskolok(X,Y,Z,0,220,0)
CreateOskolok(X,Y,Z,0,230,0)
CreateOskolok(X,Y,Z,0,240,0)
CreateOskolok(X,Y,Z,0,250,0)
CreateOskolok(X,Y,Z,0,260,0)
CreateOskolok(X,Y,Z,0,270,0)
CreateOskolok(X,Y,Z,0,280,0)
CreateOskolok(X,Y,Z,0,290,0)
CreateOskolok(X,Y,Z,0,300,0)
CreateOskolok(X,Y,Z,0,310,0)
CreateOskolok(X,Y,Z,0,320,0)
CreateOskolok(X,Y,Z,0,330,0)
CreateOskolok(X,Y,Z,0,340,0)
CreateOskolok(X,Y,Z,0,350,0)
CreateOskolok(X,Y,Z,0,360,0)
Ну а вот и собсно пример реализующий гранату(управление броском гранаты - пробел)

moka 13.09.2007 15:54

Re: Разрывная граната
 
Цитата:

CreateOskolok(X,Y,Z,0,10,0)
CreateOskolok(X,Y,Z,0,20,0)
CreateOskolok(X,Y,Z,0,30,0)
CreateOskolok(X,Y,Z,0,40,0)
CreateOskolok(X,Y,Z,0,50,0)
CreateOskolok(X,Y,Z,0,60,0)
CreateOskolok(X,Y,Z,0,70,0)
CreateOskolok(X,Y,Z,0,80,0)
CreateOskolok(X,Y,Z,0,90,0)
CreateOskolok(X,Y,Z,0,100,0)
CreateOskolok(X,Y,Z,0,110,0)
CreateOskolok(X,Y,Z,0,120,0)
CreateOskolok(X,Y,Z,0,130,0)
CreateOskolok(X,Y,Z,0,140,0)
CreateOskolok(X,Y,Z,0,150,0)
CreateOskolok(X,Y,Z,0,160,0)
CreateOskolok(X,Y,Z,0,170,0)
CreateOskolok(X,Y,Z,0,180,0)
CreateOskolok(X,Y,Z,0,190,0)
CreateOskolok(X,Y,Z,0,200,0)
CreateOskolok(X,Y,Z,0,210,0)
CreateOskolok(X,Y,Z,0,220,0)
CreateOskolok(X,Y,Z,0,230,0)
CreateOskolok(X,Y,Z,0,240,0)
CreateOskolok(X,Y,Z,0,250,0)
CreateOskolok(X,Y,Z,0,260,0)
CreateOskolok(X,Y,Z,0,270,0)
CreateOskolok(X,Y,Z,0,280,0)
CreateOskolok(X,Y,Z,0,290,0)
CreateOskolok(X,Y,Z,0,300,0)
CreateOskolok(X,Y,Z,0,310,0)
CreateOskolok(X,Y,Z,0,320,0)
CreateOskolok(X,Y,Z,0,330,0)
CreateOskolok(X,Y,Z,0,340,0)
CreateOskolok(X,Y,Z,0,350,0)
CreateOskolok(X,Y,Z,0,360,0)
=

For n=1 to 36
CreateOskolok(X,Y,Z,0,n*10,0)
Next

IGR 13.09.2007 15:58

Re: Разрывная граната
 
Цитата:

CreateOskolok(X,Y,Z,0,10,0)
CreateOskolok(X,Y,Z,0,20,0)
CreateOskolok(X,Y,Z,0,30,0)
CreateOskolok(X,Y,Z,0,40,0)
CreateOskolok(X,Y,Z,0,50,0)
CreateOskolok(X,Y,Z,0,60,0)
CreateOskolok(X,Y,Z,0,70,0)
CreateOskolok(X,Y,Z,0,80,0)
CreateOskolok(X,Y,Z,0,90,0)
CreateOskolok(X,Y,Z,0,100,0)
CreateOskolok(X,Y,Z,0,110,0)
CreateOskolok(X,Y,Z,0,120,0)
CreateOskolok(X,Y,Z,0,130,0)
CreateOskolok(X,Y,Z,0,140,0)
CreateOskolok(X,Y,Z,0,150,0)
CreateOskolok(X,Y,Z,0,160,0)
CreateOskolok(X,Y,Z,0,170,0)
CreateOskolok(X,Y,Z,0,180,0)
CreateOskolok(X,Y,Z,0,190,0)
CreateOskolok(X,Y,Z,0,200,0)
CreateOskolok(X,Y,Z,0,210,0)
CreateOskolok(X,Y,Z,0,220,0)
CreateOskolok(X,Y,Z,0,230,0)
CreateOskolok(X,Y,Z,0,240,0)
CreateOskolok(X,Y,Z,0,250,0)
CreateOskolok(X,Y,Z,0,260,0)
CreateOskolok(X,Y,Z,0,270,0)
CreateOskolok(X,Y,Z,0,280,0)
CreateOskolok(X,Y,Z,0,290,0)
CreateOskolok(X,Y,Z,0,300,0)
CreateOskolok(X,Y,Z,0,310,0)
CreateOskolok(X,Y,Z,0,320,0)
CreateOskolok(X,Y,Z,0,330,0)
CreateOskolok(X,Y,Z,0,340,0)
CreateOskolok(X,Y,Z,0,350,0)
CreateOskolok(X,Y,Z,0,360,0)
фу, вот это вы мочите !! :)
ошибка в одном слове !!

jimon 13.09.2007 17:43

Re: Разрывная граната
 
For n=0 to 350 step 10
CreateOskolok(X,Y,Z,0,n,0)
Next
:-) :P

moka 13.09.2007 17:54

Re: Разрывная граната
 
jimon, а степ будет производительнее чем умножение? ;)

impersonalis 13.09.2007 18:09

Re: Разрывная граната
 
стэп - проще с позиции читабельности, с позиции интерпретатора - суммирование, которое быстрее умножения.


Часовой пояс GMT +4, время: 06:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot