Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 13.03.2007, 00:35   #1
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
Вопрос Такая лёгкая проблемма, а не как не получается...

Вообщем проблемма вот в чём:

Есть боты, у каждого бота свой ID, если я нажимаю пробел то кадому боту посылается сообщение с его новыми кординатоми. Если приходит сообщение на ID (бота) каторого не существует, то создаём нового бота с таким ID.

Проблемма в том что я незнаю как провельно это риализовать ...

Надо сделать так чтоб программа проверяла каждого бота, а потом принемала решение (создать нового бота или изменить кординаты текущего бота).

я делал это примерно так, но так это не катит:

For A.Bot=Each Bot
If A\ID=ID then
Positionentity A\Model,X#,Y#,Z#
else
CreateBot()
endif
Next

Плиз хелп... Знаю тут решение лёгкое но до меня не как не доходит!! =((
(Offline)
 
Ответить с цитированием
Старый 13.03.2007, 00:52   #2
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

[blitz]IDExists=0
For A.Bot=Each Bot
If A\ID=ID then
IDExists=1
Positionentity A\Model,X#,Y#,Z#
endif
Next
IF IDExists=0 THEN CreateBot()[/blitz]
Ну, раз сам признался, что решение лёгкое, да еще и попытался что-то сам сделать, что нынче редкость- то и помочь не жалко. )) Еще б писал без ашипак и ачепятак- и вообще был бы золото чисто 585-й пробы, а не человек.
(Offline)
 
Ответить с цитированием
Старый 13.03.2007, 01:06   #3
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

ААА =)) Я В ШОКЕ =)) ВСё пашет =)) ОГРОМНОЕ СПАСИБО! 4 часа над этим сидел и чуть с ума не сошёл... Не доходило как сделать =) Тенкс.
А за опечатки сорри, пишу как могу =).
Ещё раз огромное спасибо (Нажал "ТЕНКС")! Тема может быть закрыта!
(Offline)
 
Ответить с цитированием
Старый 13.03.2007, 05:35   #4
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

а вообще так делать - неправильно.

Нужно формировать пакет.
например первая цифра - назначение пакета:
например
1 удалить такого бота
2 создать бота
3 координаты
4 атака(выстрел)

и тд

второе значение - ИД бота
дальше уже по надобности.
То же самое делает сервер - создает свои пакеты.

Нужно тщательно продумать всю логику, потом уже писать код.
__________________
(Offline)
 
Ответить с цитированием
Старый 13.03.2007, 09:55   #5
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

А зачем здесь поле ID нужно? Есть же Handle() и без всяких переборов.
Когда создаешь бота - возвращаешь его порядковый номер в списке, который и будет являться ID:
A.Bot = New Bot
ID = Handle(A)
А когда нужно передвинуть бота - вытаскиваешь его из списка и двигаешь
A.Bot = Object.Bot(ID)
If (A <> Null) Then
   PositionEntity(A\Model, X, Y, Z)
Else
   CreateBot()
EndIf
(Offline)
 
Ответить с цитированием
Старый 13.03.2007, 11:22   #6
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

Он ведь явно сеть делает. IMHO, xендл будет "тяжел" для передачи.
Раз уж крутить структуру кода, то можно попробовать создать массив, хранящий хендлы, по принципу:
[blitz]DIM IDToHadle(NBots)
...
A.Bot = New Bot
NBot=NBot+1
IDToHandle(NBot) = Handle(A)
...
BotHandle=IDToHadle(ID)
A.Bot = Object.Bot(BotHandle)[/blitz]
(Offline)
 
Ответить с цитированием
Старый 14.03.2007, 03:25   #7
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

Да нет.
При создании клиента, сервер присваивает каждому ИД в виде инт числа и отправляет его обратно клиенту. а тот запоминает.

И все.
Можно и так:
ID = Handle(A)
но это должен делать только сервер
__________________
(Offline)
 
Ответить с цитированием
Старый 14.03.2007, 12:04   #8
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

Гм, по алгоритмике-то ясно... никто ж не спорит о жизнеспособности схемы создания нового клиента по неизвестному ИД.
А я лишь имел ввиду, что неэкономично оперировать идентификаторами-Интами (в том числе хендлами, утрачивающими актуальность на уровне сети), если для ИД вполне достаточно байта.
Вряд ли у сервера будет более 256 клиентов, а у клиента более 256 управляемых юнитов (для стратегий)...

P.S. Меня не покидает ощущение, что все четыре учаснега топика говорят о разных вещах? А тебя?
(Offline)
 
Ответить с цитированием
Старый 14.03.2007, 20:27   #9
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Такая лёгкая проблемма, а не как не получается...

Реальная разница между байтом и 2 байтами вряд ли будет заметна.
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается установить pipeline на max9 ELIAS Blitz3D 17 27.07.2009 15:24
проблемма с максом ЛысыЙ_Чук-Иванчук 3D Моделирование 3 08.02.2007 17:57
Вот такая вот мечта... Raiter Болтовня 23 17.01.2007 16:42
bla или проблемма :) jimon 3D-программирование 7 15.11.2005 19:58


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com