 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
13.03.2007, 00:35
|
#1
|
Знающий
Регистрация: 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
|
Дэвелопер
Регистрация: 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
|
Знающий
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений (для 2 пользователей)
|
Re: Такая лёгкая проблемма, а не как не получается...
ААА =)) Я В ШОКЕ =)) ВСё пашет =)) ОГРОМНОЕ СПАСИБО! 4 часа над этим сидел и чуть с ума не сошёл... Не доходило как сделать =) Тенкс.
А за опечатки сорри, пишу как могу =).
Ещё раз огромное спасибо (Нажал "ТЕНКС")! Тема может быть закрыта!
|
(Offline)
|
|
13.03.2007, 05:35
|
#4
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Такая лёгкая проблемма, а не как не получается...
а вообще так делать - неправильно.
Нужно формировать пакет.
например первая цифра - назначение пакета:
например
1 удалить такого бота
2 создать бота
3 координаты
4 атака(выстрел)
и тд
второе значение - ИД бота
дальше уже по надобности.
То же самое делает сервер - создает свои пакеты.
Нужно тщательно продумать всю логику, потом уже писать код.
__________________
|
(Offline)
|
|
13.03.2007, 09:55
|
#5
|
Знающий
Регистрация: 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
|
Дэвелопер
Регистрация: 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
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Такая лёгкая проблемма, а не как не получается...
Да нет.
При создании клиента, сервер присваивает каждому ИД в виде инт числа и отправляет его обратно клиенту. а тот запоминает.
И все.
Можно и так:
ID = Handle(A)
но это должен делать только сервер
__________________
|
(Offline)
|
|
14.03.2007, 12:04
|
#8
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Такая лёгкая проблемма, а не как не получается...
Гм, по алгоритмике-то ясно... никто ж не спорит о жизнеспособности схемы создания нового клиента по неизвестному ИД.
А я лишь имел ввиду, что неэкономично оперировать идентификаторами-Интами (в том числе хендлами, утрачивающими актуальность на уровне сети), если для ИД вполне достаточно байта.
Вряд ли у сервера будет более 256 клиентов, а у клиента более 256 управляемых юнитов (для стратегий)...
P.S. Меня не покидает ощущение, что все четыре учаснега топика говорят о разных вещах? А тебя?

|
(Offline)
|
|
14.03.2007, 20:27
|
#9
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Такая лёгкая проблемма, а не как не получается...
Реальная разница между байтом и 2 байтами вряд ли будет заметна.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:37.
|