![]() |
Такая лёгкая проблемма, а не как не получается...
Вообщем проблемма вот в чём:
Есть боты, у каждого бота свой ID, если я нажимаю пробел то кадому боту посылается сообщение с его новыми кординатоми. Если приходит сообщение на ID (бота) каторого не существует, то создаём нового бота с таким ID. Проблемма в том что я незнаю как провельно это риализовать :@... Надо сделать так чтоб программа проверяла каждого бота, а потом принемала решение (создать нового бота или изменить кординаты текущего бота). я делал это примерно так, но так это не катит: For A.Bot=Each Bot If A\ID=ID then Positionentity A\Model,X#,Y#,Z# else CreateBot() endif Next Плиз хелп... Знаю тут решение лёгкое но до меня не как не доходит!! =(( |
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-й пробы, а не человек. :-) |
Re: Такая лёгкая проблемма, а не как не получается...
ААА =)) Я В ШОКЕ =)) ВСё пашет =)) ОГРОМНОЕ СПАСИБО! 4 часа над этим сидел и чуть с ума не сошёл... Не доходило как сделать =) Тенкс.
А за опечатки сорри, пишу как могу =). Ещё раз огромное спасибо (Нажал "ТЕНКС")! Тема может быть закрыта! |
Re: Такая лёгкая проблемма, а не как не получается...
а вообще так делать - неправильно.
Нужно формировать пакет. например первая цифра - назначение пакета: например 1 удалить такого бота 2 создать бота 3 координаты 4 атака(выстрел) и тд второе значение - ИД бота дальше уже по надобности. То же самое делает сервер - создает свои пакеты. Нужно тщательно продумать всю логику, потом уже писать код. |
Re: Такая лёгкая проблемма, а не как не получается...
А зачем здесь поле ID нужно? Есть же Handle() и без всяких переборов.
Когда создаешь бота - возвращаешь его порядковый номер в списке, который и будет являться ID: Код:
A.Bot = New Bot Код:
A.Bot = Object.Bot(ID) |
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] |
Re: Такая лёгкая проблемма, а не как не получается...
Да нет.
При создании клиента, сервер присваивает каждому ИД в виде инт числа и отправляет его обратно клиенту. а тот запоминает. И все. Можно и так: ID = Handle(A) но это должен делать только сервер |
Re: Такая лёгкая проблемма, а не как не получается...
Гм, по алгоритмике-то ясно... никто ж не спорит о жизнеспособности схемы создания нового клиента по неизвестному ИД.
А я лишь имел ввиду, что неэкономично оперировать идентификаторами-Интами (в том числе хендлами, утрачивающими актуальность на уровне сети), если для ИД вполне достаточно байта. Вряд ли у сервера будет более 256 клиентов, а у клиента более 256 управляемых юнитов (для стратегий)... P.S. Меня не покидает ощущение, что все четыре учаснега топика говорят о разных вещах? А тебя? :) |
Re: Такая лёгкая проблемма, а не как не получается...
Реальная разница между байтом и 2 байтами вряд ли будет заметна.
|
Часовой пояс GMT +4, время: 16:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot