forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Система боя врага в РПГ (http://forum.boolean.name/showthread.php?t=14761)

LLI.T.A.L.K.E.R. 18.05.2011 01:20

Система боя врага в РПГ
 
Пробую написать подобную систему..
Код внутри:
Код:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Camera=CreateCamera()

Player=CreateCube()
PositionEntity Player,5,0,-5
Player_Health%=100

Enemy=CreateCube()
EntityColor Enemy,200,100,100
Enemy_IsFight=0                                ; атакует
Enemy_FightFrame#=0                ; задержка атаки (время размаха)

While Not KeyDown(1)
       
        If KeyDown(200) Then MoveEntity Player,0,0,0.1        ; ^
        If KeyDown(208) Then MoveEntity Player,0,0,-0.1        ; \/
       
        If KeyDown(203) Then MoveEntity Player,-0.1,0,0        ; <
        If KeyDown(205) Then MoveEntity Player,0.1,0,0        ; >
       
        PositionEntity Camera,EntityX#(Player),EntityY#(Player)+3,EntityZ#(Player)-5
        PointEntity Camera,Player
       
        PointEntity Enemy,Player
        If EntityDistance#(Enemy,Player)>3 Then
                MoveEntity Enemy,0,0,0.08
        Else
                If Enemy_IsFight=0 Then Enemy_IsFight=1
        EndIf
       
        If Enemy_IsFight=1 Then
                Enemy_FightFrame#=Enemy_FightFrame#+1
                If Enemy_FightFrame#>75 Then
                        Enemy_IsFight=0
                        Enemy_FightFrame#=0
                       
                        If EntityDistance#(Enemy,Player)<4 Then Player_Health=Player_Health-5
                EndIf
        EndIf
       
        If EntityDistance#(Enemy,Player)>5 Then
                Enemy_IsFight=0
                Enemy_FightFrame#=0
        EndIf
       
        UpdateWorld
        RenderWorld
       
        Text 5,5,Player_Health
        Text 5,25,"Dis:"+EntityDistance#(Enemy,Player)+" | Fight: "+Enemy_IsFight+" | Sum: "+Enemy_FightFrame#
       
        Flip
Wend



Цитата:

Пояснение:
Игрок двигается от врага, тот к игроку.
Если враг дальше игрока на 3 метра, двигается к нему.
Если враг ближе к игроку чем 3 метра - начинает размах (Enemy_FightFrame#)
Проходит 75 мксек - происходит удар.
Если враг ближе к игроку на 4 метра наносится урон.
Если игрок дальше от врага на 5 метров - удар отменяется.
В отличии от глупых боёв в ЛА2 - есть проверка "игрок во время удара вблизи или нет".
(В Ла2 и ВоВ: если враг размахнулся, Ты хоть за 5 метров убегай - он тебя считай побил)


Нужно будет добавить модель противника (с мечом или кулаками). И ориентироваться по анимации.

Hurrit 18.05.2011 02:01

Ответ: Система боя врага в РПГ
 
юзай функции, а то сложно потом будет.

LLI.T.A.L.K.E.R. 18.05.2011 03:03

Ответ: Система боя врага в РПГ
 
Цитата:

Repeat

Enemy_UpdateFight(то-то, это)

Flip
Until

Function Enemy_UpdateFight(то-то,это)
If то-то>3 then
... ... ...
End Function
Примерно об этом?

У себя я обычно потом врагов, предметы и т.п. в их includЫ вывожу.

LLI.T.A.L.K.E.R. 18.05.2011 11:01

Ответ: Система боя врага в РПГ
 
Добавлена примитивная модель врага для наглядности боя.

http://ifolder.ru/23603996
(внутри архива: исходник.bb, модели мах+3дс)

В наглядности кода ничего не менял.
Следующим будет вынесения кода боя отдельно. Проба боя игрока.

Потребуется справка: "баланс удара и нанесения урона между игроком и врагом, тактика боя и т.п." Т.е. так, чтобы драка была "равная" и захватывающая.

Nex 18.05.2011 13:38

Ответ: Система боя врага в РПГ
 
Если бы это расчет урона был, то было бы круто, а так... проверка на расстояние.

Dream 18.05.2011 15:31

Ответ: Система боя врага в РПГ
 
Цитата:

Проходит 75 мксек - происходит удар.
Цитата:

Enemy_FightFrame#=Enemy_FightFrame#+1
Это ну ни как не 75 мсек

HolyDel 18.05.2011 18:01

Ответ: Система боя врага в РПГ
 
Цитата:

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 188817)
В отличии от глупых боёв в ЛА2 - есть проверка "игрок во время удара вблизи или нет".
(В Ла2 и ВоВ: если враг размахнулся, Ты хоть за 5 метров убегай - он тебя считай побил)

.

для рпг самое то

Dream 18.05.2011 20:57

Ответ: Система боя врага в РПГ
 
Цитата:

В отличии от глупых боёв в ЛА2 - есть проверка "игрок во время удара вблизи или нет".
(В Ла2 и ВоВ: если враг размахнулся, Ты хоть за 5 метров убегай - он тебя считай побил)
.
Ты мало в л2 играл, или у тебя большой пинг. проверка на расстояние там есть. Правда только для скилов. для каждого удара это былобы слишком. когда у чувака скрость атаки оочень высокая - он машет оружием с такой скоростью что видно только мерцание "сосок". а теперь представь еслиб на сервере расчитывалось растояние для каждого удара over9000 игроков?

LLI.T.A.L.K.E.R. 18.05.2011 21:50

Ответ: Система боя врага в РПГ
 
Это не будет Л2.
Замену мксек ещё не продумал.
(пока это будет кадр анимации)

Цитата:

Если бы это расчет урона был, то было бы круто, а так... проверка на расстояние.
Проверку столкновения в части тела не предполагаю.
Пока мне требуется примитивный бой (как в стратегиях... WarCraft например)
http://www.youtube.com/watch?v=3qcwZ...e=related#t=45

NitE 18.05.2011 22:27

Ответ: Система боя врага в РПГ
 
Цитата:

Если бы это расчет урона был, то было бы круто, а так... проверка на расстояние.
Объясни на милость, где ты в верхней цитате увидел такие слова как "столкновение" и "части тела" ?
Цитата:

Проверку столкновения в части тела не предполагаю.

LLI.T.A.L.K.E.R. 18.05.2011 22:39

Ответ: Система боя врага в РПГ
 
В чём подразумеваешь "расчёт урона" ?
Сила, скилл врага и игрока?

Если что, это будет после того как будут готовы сами враги и управление игроком.

Это только начало.. Версия так сказать -0.1 (минус 0.1)

Crayzi 22.05.2011 11:29

Ответ: Система боя врага в РПГ
 
Цитата:

Сообщение от Dream (Сообщение 188884)
Ты мало в л2 играл, или у тебя большой пинг. проверка на расстояние там есть. Правда только для скилов. для каждого удара это былобы слишком. когда у чувака скрость атаки оочень высокая - он машет оружием с такой скоростью что видно только мерцание "сосок". а теперь представь еслиб на сервере расчитывалось растояние для каждого удара over9000 игроков?

Всмысле, ты хош не брать в рассчет расстояние между персонажами при рассчете можно ли нанести удар или нет? Это-ж глупо, знаеш сколько читов наклепают сразу, бегаеш в одной локации и коцаеш когото кто лазит на другом конце игрового мира, а он стоит и тупит в шоке, в непонятках кто его коцает.. ))

Igor 22.05.2011 15:18

Ответ: Система боя врага в РПГ
 
Цитата:

коцаеш когото кто лазит на другом конце игрового мира
Делается одна проверка вместо двух - только при замахе.
При ударе проверка на расстояние не производится

LLI.T.A.L.K.E.R. 22.05.2011 20:49

Ответ: Система боя врага в РПГ
 
У меня тоже одна проверка.
Думаю, намного правильнее проверка будет при ударе (а не замахе).
Ведь игровой герой может быстро перемещаться, в этом появляется возможность отмахиваться от удара.

Пока что это заготовка для новичков (я не задумывал делать онлайн, или ла2)
Далее применю её в открытом рпг примере.

(Если на то пойдёт - придётся поучить "советы программирования рпг")

Crayzi 22.05.2011 22:21

Ответ: Система боя врага в РПГ
 
Хорошая мысль насчет проверки при нанесении удара, для того чтобы замахнутся ведь ненужно цели, правильно? В таком случае если к моменту нанесения удара цель будет вне досягаемости то можно засчитать это за промах, так будет реалистичнее, правда только при низких пингах...(правда при высоких при любом раскладе будет коряво)


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

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