forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Боты - и всё что с ними связано. (http://forum.boolean.name/showthread.php?t=5020)

Crystal 14.11.2007 02:22

Боты - и всё что с ними связано.
 
Здарова форумчане!

По совету глянул как импер делал своего бота в фпс.
Ну вот сварганил чёто типа:

Код:

v#=0
 For a.bot=Each bot
 
 TranslateEntity a\entity,0,-Gravitaciya#,0
 
 If Useru#=1 And EntityDistance(a\entity,bmw)<400 Then
 PointEntity a\entity,User
 v#=2
 End If
 
 If bmwu#=1 And EntityDistance(a\entity,bmw)<400 Then
 PointEntity a\entity,bmw
 v#=2
 End If
 
 If Useru#=1
 If EntityDistance(a\entity,User)<40 Then
 v#=0
 End If
 End If
 If bmwu#=1
 If EntityDistance(a\entity,bmw)<40 Then
 v#=0
 End If
 End If
 
 
 If Useru#=1
 If EntityDistance(a\entity,User)<30 Then
 v#=-1
 End If
 End If
 If bmwu#=1
 If EntityDistance(a\entity,bmw)<30 Then
 v#=-1
 End If
 End If
 
 
 MoveEntity a\entity,0,0,v#
 Next

Заставляет нашего безмозглово бота двигаться к юзеру и от него
команда PointEntity.

В общем пока не могу придумать как ещё этой командой пользоваться,
да и собственно времени нету даж в блитц залезть.

Мож кто подскажет как можно изменить скорость разворота бота в сторону юзера?
Ато у меня щас бмв бота разворачивается в мою сторону с той же скоростью,
с какой я мимо него пролетаю ))

Damp 14.11.2007 09:41

Re: Боты - и всё что с ними связано.
 
Вместо PointEntity использовать AlignToVector

Crystal 14.11.2007 11:41

Re: Боты - и всё что с ними связано.
 
Чёто не до конца понял как командой пользоваться ))
Бедный бот при виде меня в страхе едет на всех оборотах в стену дома )

Damp 14.11.2007 13:05

Re: Боты - и всё что с ними связано.
 
Можно посмотреть
http://damp.ucoz.ru/A_Cars.rar
там все с использованием AlignToVector

moka 14.11.2007 13:17

Re: Боты - и всё что с ними связано.
 
Damp, AlignToVector не хорошая комманда, есть с ней немало проблемм.
Советую смешивать углы, и вообще добывать угол поповрота математически, а смешивать не просто а написать функцию, т.к. 0 и 380 это одно и тоже а при простом общем арифметическом выдаст 180, что не правильно :)

Damp 14.11.2007 13:23

Re: Боты - и всё что с ними связано.
 
Незнаю... пока с трудностями не сталкивался.
Единственное что не нравится - нельзя задать ускорение поворота.

Crystal 15.11.2007 05:12

Re: Боты - и всё что с ними связано.
 
Задолбался щас с переменными для бота.
У меня должен быть набор разных переменных, сумму которых я буду менять.

Если пишу переменные внутри функции управления ботом, ничего не пашет.
Если пишу снаружи в глобале, всё пашет.
Если делаю её как тип, добавляю в функции создания бота, не пашет.

Как правильно создать переменную с которой будет бот работать?
Чтоб для каждого бота эта переменная была своя.

jimon 15.11.2007 08:44

Re: Боты - и всё что с ними связано.
 
в тип ее засунуть

Crystal 15.11.2007 12:56

Re: Боты - и всё что с ними связано.
 
Цитата:

Если делаю её как тип, добавляю в функции создания бота, не пашет.
Пробовал уже.
Я бота написал который летит к месту добычи,
добывает ресурс, везёт ресурс на склад,
перекачевает ресурс на склад, и летит опять добывать.

Если заношу в тип то после длбычи бот отказывается лететь на склад.
В глобале же всё работает нормально.

dimanche13 15.11.2007 13:12

Re: Боты - и всё что с ними связано.
 
я вижу это так, вводишь у бота переменныю состояние(state) в типе, то есть field. это состояние может принимать 3 значения допустим: ИДУ_ДОБЫВАТЬ, ДОБЫВАЮ, ОТВОЖУ_ЧТО_ДОБЫЛ. Прогоняешь в списке все объекты и в зависимости от состояния объекта делаешь то, что необходимо.

Crystal 15.11.2007 17:18

Re: Боты - и всё что с ними связано.
 
У меня пока всё просто.

Цитата:

Global PS#=0
Global T#=23


;--------------------------------------------------- { (F) - Bot Update
Function update_bot()
v#=0

For a.bot=Each bot


;---- Dobicha Polevogo Shpata {

If PS#=0 And T#=23 Then
PointEntity a\entity,Cube7
v#=0.1
End If

If EntityDistance(a\entity,Cube7)<1 And PS#<23 Then
v#=0.0
PS#=PS#+0.1
If PS#>23 Then PS#=23
If PS#=23 Then T#=0
End If


If PS#=23 Then
PointEntity a\entity,Cube4
v#=0.1
End If

If EntityDistance(a\entity,Cube4)<1 And PS#>0 Then
v#=0.0
PS#=0
T2#=1
End If

If EntityDistance(a\entity,Cube4)<1 And PS#=0 Then
T#=T#+0.1
If T#>23 Then T#=23
End If

;---- Dobicha Polevogo Shpata }

MoveEntity a\entity,0,0,v#
Next
End Function

;--------------------------------------------------- } (F) - Bot Update
Но ресурс добывает, и возит на склад ))

Щас тут работка привалила, в екселе таблиц наделать, и ещё комп методиста починить, системник себе домой притащил.
Так шо пока бота писать не буду, как освобожусь от всех своих дел, попробую ещё раз с типами поработать.

IGR 15.11.2007 18:03

Re: Боты - и всё что с ними связано.
 
Цитата:

Если делаю её как тип, добавляю в функции создания бота, не пашет.
и на всякий случай тип переменной укажи !!
это и тебя флоат получается:
field var#
вот так !!

Crystal 16.11.2007 15:11

Re: Боты - и всё что с ними связано.
 
Без глобала работать не хочет!
В чём проблема?

Цитата:

;--------------------------------------------------- { (T) - Bot
Type bot
Field entity
Field PS#
Field T#
End Type
;--------------------------------------------------- } (T) - Bot

; #############

;--------------------------------------------------- { (F) - Bot
Function create_bot(x#,y#,z#)
b.bot=New bot
b\entity=CreateSphere()
EntityColor b\entity,10,50,10
PositionEntity b\entity,x#,y#,z#
ScaleEntity b\entity,0.8,0.8,0.8
RotateMesh b\entity, 0, 180, 0
NameEntity b\entity,Handle(b)

b\PS#=0
b\T#=23

Return True
End Function
;--------------------------------------------------- } (F) - Bot

; #############

;--------------------------------------------------- { (F) - Bot Update
Function update_bot()
v#=0

For a.bot=Each bot


;---- Dobicha Polevogo Shpata {

If PS#=0 And T#=23 Then
PointEntity a\entity,Cube7
v#=0.1
End If

If EntityDistance(a\entity,Cube7)<1 And PS#<23 Then
v#=0.0
PS#=PS#+0.1
If PS#>23 Then PS#=23
If PS#=23 Then T#=0
End If


If PS#=23 Then
PointEntity a\entity,Cube4
v#=0.1
End If

If EntityDistance(a\entity,Cube4)<1 And PS#>0 Then
v#=0.0
PS#=0
T2#=1
End If

If EntityDistance(a\entity,Cube4)<1 And PS#=0 Then
T#=T#+0.1
If T#>23 Then T#=23
End If

;---- Dobicha Polevogo Shpata }

MoveEntity a\entity,0,0,v#
Next
End Function

;--------------------------------------------------- } (F) - Bot Update



H@NON 16.11.2007 15:32

Re: Боты - и всё что с ними связано.
 
Цитата:

If PS#=0 And T#=23 Then
PointEntity a\entity,Cube7
...
PS и T нужно через тип вызывать. a\PS a\T

Crystal 16.11.2007 15:41

Re: Боты - и всё что с ними связано.
 
Цитата:

Сообщение от H@NON
PS и T нужно через тип вызывать. a\PS a\T

Действительно!
Спасибо!

Чёто я от недосыпания и урабатывания уже торможу,
всё что пишу или моделю я делаю в зомбячем состоянии.:(


Блин всю ночь комп чинил, сёдня с утра ещё один чинил, потом у двух сеть настраивал, потом схемы делал,
голова раскалывается, спать хочу, чёто уже не в силах сёдня чёто рабочее писать.

Подскажи мне сонной мухе как рандом числа выставить?
вродибы надо типа - переменная#=Rnd(1,10) чёто типа того??
Ато чтёто тут опять попробовал сделать не вышло нифига, засыпаюю...


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

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