![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Yoda |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Ну собственно мне понадобилось написать игру на VCL типа "Бойцовского клуба" (Online проект www.combats.ru). На форме будут лежать: TClientSocket и TServerSocket (т.е. каждая копия игры сможет стать сервером, типа Counter-Strike). Работать сетевой режим должен примерно так:
//Для удобства первая копия игры будет "alpha", а другая "beta". 1. alpha создает сервер, и сразу подключаецца к нему. 2. beta подключаецца к созданому ранее серверу. (Значит на сервере уже висит 2 клиента). 3. alpha посылает свои значения (хелсов, маны и т.д.) beta, а beta в свою очередь посылает свои значения alpha. 4. Ну еще в игре будет присутвовать кнопка по нажатию на которую, твоему аппаненту будут посылацца значения твоих блоков и ударов. Я не прошу написать за меня игру - просто подскажите как это правильно все сделать. ЗЫ Для меня осталось не понятным, как отправлять значения (хелсов, маны и т.д.) всем кроме меня... Это сообщение отредактировал(а) Yoda - 12.1.2006, 13:01 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Ты посылаешь серверу свои значения.
Сервер их получает. Также он знает номер коннекта, с которого пришли данные. Сервер начинает перебирать все коннекты и отправлять данные всем, у кого номер коннекта не равен номеру, от которого получены данные. Все просто. Ну даже, если он и отправить тебе данные - хуже не станет ![]() P.S. Просьба писать на русском языке. |
|||
|
||||
Yoda |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
А мне как узнать номер коннекта с которого пришли значения ?
Ну смотри - например я получю значения (имени персонажа, кол-во хелсов) и присвою их какому нибудь labelEnemyName:= GotName.... А это окажутся мои значения ![]()
Ок ![]() |
||||||
|
|||||||
Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Вместо номера можно использовать указатель на TIdTCPServerConnection. Если хочешь именно номер - то прописывай его при соединении в Tag коннекшена, а при отправке смотри. Хотя указателя на TIdTCPServerConnection более, чем достаточно.
А что ты будешь делать, если соединятся 4 клиента? Как ты их будешь различать? У каждого клиента должен быть свой идентификатор. Вот и смотри - если получил данные о враге со своим идентификатором, то не считай себя врагом ![]() |
||||
|
|||||
Yoda |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Можно поподробней ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
В OnExecute ты можешь получить TIdPeerThread.Connection.
При отправке ты перибераешь все Connection и отправляешь данные всем, кто не есть этот. |
|||
|
||||
Yoda |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Я говорю о закладке Internet, компонентах: ServerSocket1, ClientSocket1... OnExecute там не нашел
![]() P.S. Юзать желательно их.. |
|||
|
||||
F1reF0x |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 10.10.2005 Репутация: нет Всего: нет |
IdTCPClient IdTCPServer как альтернатива, кстати там есть onExecute
![]() ![]() |
|||
|
||||
Yoda |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
Ты вопрос видел ? Как осуществить сетевой режим с использованием : ServerSocket1, ClientSocket1...
Не ужели никто не знает ?! ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
что значит "как осуществить"? как с этимим компонентами работать? так книги цитировать тут вряд ли кто-то будет...
поищи по форуму, по сети... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
F1reF0x |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 10.10.2005 Репутация: нет Всего: нет |
Yoda
Там всё просто. посмотри в хелпе какая процедура отвечает за отправку данных у клиента, и как принимать данные, больш тут почти ничего и не требуется (хост и порт ещё понятно). |
|||
|
||||
Yoda |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
У меня вопрос пока такой...У меня к серверу будет подключено несколько клиентов... Вот вопрос как отправить значения(хелсов, маны) всем клиену(ам) кроме того, который прислал эти значения.
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
при подключении нового клиента заноси его в какой-нить список и потом отправляй значения всем, кто есть в этом списке
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Yoda |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.6.2005 Репутация: нет Всего: нет |
....Допустим есть 2 клиента...1 из клинетов шлет на сервер значения (все таже мана и хелсы). Сервер их получает.... Как отослать эти значения ТОЛЬКО другому клиенту?
Это сообщение отредактировал(а) Yoda - 13.1.2006, 19:09 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 5 Всего: 98 |
что значит "ТОЛЬКО другому"?
слать точно так же как и ТОЛЬКО этому, но другому... P.S. таки почитай книгу... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |