HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть II
Страницы (18): « Первая ... « 2 3 4 5 [6] 7 8 9 10 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13192
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
Переформулируй, я не понял.


Опечатка, имелось ввиду на сервере, из контекста в целом можно понять:
...у нас на сервере какой то объект красиво перемещается интерполяцией с точки А в точку Б, что нам нужно чтобы воспроизвести тоже самое на клиенте?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 221564

Старое сообщение 08-08-2024 16:54
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4525
Возраст: 34

Рейтинг



Цитата:
Дядя Миша писал:
Теперь представим, что пользователь полИнился и не прописал. Как на это должен реагировать движок?
Ваши варианты.

Спамить в консоль

Цитата:
FiEctro писал:
Спрайтовые монстры из первого дуума и вертексная анимация

У него римейк дума до сих пор в планах

Цитата:
Дядя Миша писал:
Инструменты берутся под задачу. А не с оглядкой на заданные тенденции.

Важно смотреть в будующее немного чтобы н еоказаться у разбитого корыта как я делал ютуб ролик 5 лет и юмор безнадежно устарел

Цитата:
Дядя Миша писал:
На десткопных Макинтошах нашей ЦА практически нет. А айфоны помоему Вулкан не поддерживают.

Самосбывающееся пророчество какое-то
А на айфонах вроде был PowerVR? Или то уже история?

Сообщить модератору | | IP: Записан
Сообщение: 221565

Старое сообщение 08-08-2024 16:56
- За что?
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 46

Рейтинг



Думаю стоит пробрасывать на рендер по умолчанию. А если это не нужно для конкретного поля(в целях оптимизации и т.д.), дать пользователю возможность установить флаг discard field или что-то типа этого.

Сообщить модератору | | IP: Записан
Сообщение: 221566

Старое сообщение 08-08-2024 16:58
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32580
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
у нас на сервере какой то объект красиво перемещается интерполяцией с точки А в точку Б, что нам нужно чтобы воспроизвести тоже самое на клиенте?

В моей архитектуре сервер ничего не интерполирует, а клиент интерполирует практически всё. Ну собсно, как и в движках Кармака.
Т.е. про интерполяцию думать вообще не надо - она применится автоматически. Это самый удобный и разумный вариант.
На сервере что-то интерполировать нет смысла в рамках сетевой архитектуры. Наоборот - это очень неудобно, когда приходится что-то интерполировать на сервере, в силу его природы. У меня вот сейчас в коде на Шоте хватает таких хаков, обусловленных тем, что сети долгое время не было. Наконец-то их можно будет удалить.

Цитата:
Crystallize писал:
Спамить в консоль

Можно и так.

Цитата:
Unit писал:
Думаю стоит пробрасывать на рендер по умолчанию

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

Цитата:
Crystallize писал:
как я делал ютуб ролик 5 лет и юмор безнадежно устарел

Для ютуб ролика это действительно много-вато.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221567

Старое сообщение 08-08-2024 18:50
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13192
Возраст: 33

Рейтинг



Цитата:
Дядя Миша писал:
В моей архитектуре сервер ничего не интерполирует, а клиент интерполирует практически всё. Ну собсно, как и в движках Кармака.
Т.е. про интерполяцию думать вообще не надо - она применится автоматически. Это самый удобный и разумный вариант.
На сервере что-то интерполировать нет смысла в рамках сетевой архитектуры. Наоборот - это очень неудобно, когда приходится что-то интерполировать на сервере, в силу его природы. У меня вот сейчас в коде на Шоте хватает таких хаков, обусловленных тем, что сети долгое время не было. Наконец-то их можно будет удалить.


Так покажи пример кода как это делать на сервере и клиенте у тебя.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 221568

Старое сообщение 08-08-2024 19:08
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32580
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Так покажи пример кода как это делать на сервере и клиенте у тебя.

Никак не делать. Оно не нужно. Движок сам всё проинтерполирует.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221569

Старое сообщение 08-08-2024 19:19
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13192
Возраст: 33

Рейтинг



Дядя Миша
Так а что и где прописывать тогда?

Цитата:
Дядя Миша писал:
4. интерполированные значения хранятся в пользовательской сущности.
5. если пользователь их не объявил, то и на рендеринг ничего не попадёт.


Вот про это подробнее расскажи.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 09-08-2024 в 15:45

Сообщить модератору | | IP: Записан
Сообщение: 221572

Старое сообщение 09-08-2024 15:44
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32580
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
FiEctro писал:
Так а что и где прописывать тогда?

Создаёшь на сервере энтить, у нее, понятное дело есть позиция.
C++ Source Code:
1
class Entity
2
{
3
  vec3 position;
4
  auto "entity.position" : 8.12f { load = position; }
5
};

Это у нас энтить с одним-единственным параметром. Она сможет быть передана на клиент, но рисоваться не будет, т.к. у нее нет модели.
О параметрах, которые нужны движку для корректного взаимодействия с объектами, я расскажу как-нибудь попозже, чтобы не перегружать ненужной информацией текущее объяснение. Нам важно знать, что даже такой простейший объект может быть передан на клиент.
Теперь нам надо создать объект на клиенте. В отличие от сервера, мы не можем создавать тут произвольные объекты - ведь нам надо чтобы клиентские точно совпадали с серверными. Впрочем, мы можем держать у себя упрощённые объекты, которые содержат минимум информации - ведь клиенту не нужно столько подробностей, сколько серверу. Нам не нужно вести учёт патронов для оружия, не нужно знать про текущий путь для ИИ. Есть клиентская функция, которая вызывается всякий раз, когда сервер создаёт новый объект. В нее передаётся тип этого объекта.
Если вместо типа объекта передана пустая строка, значит движок в клиентской программе такой тип попросту не нашёл. И мы можем создать любую универсальную энтить. Впрочем мы можем её создать в любом случае, игнорируя действительный тип. Рендереру всё равно в этом плане, это задел для будущего предиктинга. Поэтому мы будем создавать просто абстрактную одинаковую клиентскую энтить для каждой серверной. Например так:
C++ Source Code:
1
class ClientEntity
2
{
3
  vec3 position;
4
  auto "entity.position" { load = position; save = position; }
5
};

В чём здесь отличие? Ну во первых исчез параметр передачи по сети. т.к. он эти параметры приходят с сервера и клиент про них узнаёт автоматически. Задавать его здесь не нужно. Так же поменялся модификатор с load на save. Смысл в том, что на сервере движок не модифицирует поля объекта, он только их читает. Ну а здесь, поскольку мы прислали обновление позиции с сервера, нам надо их записать в наш член класса. Поэтому разрешаем доступ на запись. Но как вы видите, на клиенте в объект можно не только писать, но и читать. Зачем это нужно?
А этим будет пользоваться во первых рендерер, во вторых предиктинг, когда я его сделаю.
Ну и наконец вопрос, а где же, собственно интерполяция?
При подготовке очередного кадра для рендеринга учитывается время, прошедшее с момента старого обновления кадра, до момента нового обновления (сами обновления фиксированные со скоростью тиканья сервера, ну скажем 60 кадров в секунду). И вычисляется фактор интерполяции от 0 до 1. Он будет записываться в клиентские поля entity.position перед рендерингом каждого нового кадра. А рендер может выдавать гораздо больше чем 60 фпс, допустим около тысячи.
И позиция объекта будет меняться плавно всё время пока клиент ожидает нового обновления с сервера. Если сервер тикает 60 кадров в секунду, а рендер за это время успевает отрендерить 1000 кадров, то позиция будет плавно меняться в течение 16 кадров - до следующего обновления.
А на сервере мы меняем позицию с фиксированным шагом - 60 раз в секунду. Но сервер может тикать и реже, 10 раз в секунду, 20 раз в секунду. А на клиенте всё равно всё останется плавным и сглаженным.
Без какого-либо вмешательства пользователя.
Но разумеется будут кое-какие механизмы для отключения интерполяции, они и в халфе были. Самый простой пример - телепортация объекта.
Понятно, что здесь интерполяция только навредит и она не нужна.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221573

Старое сообщение 09-08-2024 16:26
-
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 46

Рейтинг



Что-то сложная механика получается на деле, нужно будет сильно углубляться.
+ Так понял, свой C-подобный язык с уникальными для него конструкциями, отсутствием комьюнити и примеров, сильно уменьшит порог вхождения.
Для меня например(субъективно), такая конструкция вообще неоднозначна:

C++ Source Code:
auto "entity.position" : 8.12f { load = position; }

Сообщить модератору | | IP: Записан
Сообщение: 221575

Старое сообщение 09-08-2024 18:19
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4525
Возраст: 34

Рейтинг



Дядя Миша Может пусть моддер протисывает энтитю в какой-нибудь раздел shared, откуда автоматически создастся код для клиента и сервера? Ну раз это тривиальный процесс?

Сообщить модератору | | IP: Записан
Сообщение: 221576

Старое сообщение 09-08-2024 18:56
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32580
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Unit писал:
Что-то сложная механика получается на деле, нужно будет сильно углубляться.

Это пример того, что реально прописывается при декларации.
В SDK такое никто писать не будет. Там объявления таких переменных обёрнуты в макросы и выглядят примерно так:

C++ Source Code:
1
DECLARE_ENGINE_PROP_KEYFIELD( uint, renderflags );
2
DECLARE_ENGINE_PROP_KEYFIELD( int, groupinfo );
3
DECLARE_ENGINE_PROP( HMODEL, modelindex );	// index of visible model of this object
4
DECLARE_ENGINE( xform, transform );		// transformation matrix of object
5
DECLARE_ENGINE( float, alpha );

А за этой строчкой уже скрывается полный набор необходимых объявлений.
Взаимосвязь с движком так или иначе должна содержать исчерпывающую информацию.

Цитата:
Unit писал:
Так понял, свой C-подобный язык с уникальными для него конструкциями, отсутствием комьюнити и примеров, сильно уменьшит порог вхождения.

Не С-подобный. С++ подобный. Совместимость с С++ процентов 80%, по крайней мере я довольно много кода на С++ просто копирую в проект на Шоте и он сразу начинает работать. "Уникальные конструкции" - это свойства. Как в Делфи. Есть и много других интересных и полезных вещей, встроенная рефлексия например. Свитчи по строкам. Динамический вызов функций, virtual_new. Да много чего есть. Никто не заставляет это использовать, можно ограничиться функционалом С++.

Насчёт отсутствия коммунити и примеров не понял. Может быть расскажешь о своём проекте? Я так понимаю у тебя и с коммунити и с примерами всё в порядке?

Цитата:
Unit писал:
Для меня например(субъективно), такая конструкция вообще неоднозначна:

Да, я ошибся. Одно равно там лишнее. Поправил в исходном посте.

Цитата:
Crystallize писал:
Может пусть моддер протисывает энтитю в какой-нибудь раздел shared, откуда автоматически создастся код для клиента и сервера? Ну раз это тривиальный процесс?

Ну в дальнейшем скорее всего так оно и будет. Я только начал заниматься сетью, она ждала своего часа почти пять лет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221577

Старое сообщение 09-08-2024 19:52
-
Unit
Частый гость

Группа: Неопытный
Дата регистрации: Jun 2024
Проживает: Краснодарский край
Сообщений: 46

Рейтинг



Цитата:
Дядя Миша писал:
Насчёт отсутствия коммунити и примеров не понял.


Это про новый язык, который уже на 20% не C++. Сам по себе C++ плохое решение для скриптинга, его никто учить не будет, что-бы пользоваться движком, в Unreal например пришли к blueprint'ам, а тут даже не C++, что-то своё, не стандартизированное.

Почитал описание, в планах покрыть довольно большую аудиторию.
Если эта аудитория мидлы сишники, конечно, их покроет.
Eсли же прицел на обычных работяг, вряд-ли их заинтересует пункт: Язык HeadShot.

Это не хейт, уважение за проделанную
Геймдев немного изменился со времён Кармака, он сейчас казуален, люди тыкают пару кнопок, перетаскивают готовые ассеты и выплевывают это в плеймаркет, работа над кодом это Ctrl+C Ctrl+V. Мысль такая, что этот подход не покроет большую аудиторию, только супер нишевую.

Сообщить модератору | | IP: Записан
Сообщение: 221578

Старое сообщение 09-08-2024 20:49
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13192
Возраст: 33

Рейтинг



Цитата:
Unit писал:
Это про новый язык, который уже на 20% не C++. Сам по себе C++ плохое решение для скриптинга, его никто учить не будет, что-бы пользоваться движком, в Unreal например пришли к blueprint'ам, а тут даже не C++, что-то своё, не стандартизированное.


Забавно то что сами анрильщики жалуются на эти блюпринты.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Сообщить модератору | | IP: Записан
Сообщение: 221579

Старое сообщение 09-08-2024 22:08
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32580
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Unit писал:
Это про новый язык, который уже на 20% не C++.

Он на 100% С++. И 20% новых возможностей.

Цитата:
Unit писал:
Сам по себе C++ плохое решение для скриптинга, его никто учить не будет, что-бы пользоваться движком

Сам по себе язык роли не играет, вот абсолютно. Люди учатся новому не по принципу "а вот он сложный, это я не смогу выучить". Люди учатся по реальным примерам, по подобию. И здесь мы можем рассмотреть ситуацию.
Когда к Унреалу или Краю идёт чудовищная игровая С++ библиотека на несколько мегабайт, где игровой код переплетён с низкоровневыми вызовами. Разобраться в этом сложно абсолютно всем, независимо от того, знают они С++ или нет. Я пытался понять, что и как там устроено в том же Крае - мозги плавятся. Причём в их движке я сразу соориентировался, ну как и в любом другом движке, тащем-то. Потому что движки все устроены одинаково, там идёт стандартный набор подсистем и пять-шесть решений их организации. А вот через какую задницу прикручено взаимодействие игрового кода с бакэндом - тут каждый извращается как может, учитывая что кресты для подобных решений вообще не заточены, это их реальное слабое место. Отсюда и родился миф, что С++ плохое решение для скриптинга, его сложно освоить новичкам. Да там в принципе жопа!
У меня тоже абсолютно не возникло никакого желания с этим ковыряться.
Но не потому что там С++, а именно в силу вышеописанных причин.

Скриптовой же язык все низкоуровневые действия оставляет за кадром.
Ты просто создаешь игровой объект через new и тебе без разницы, как он свяжется с движком, передасться по сети и прочее. Примеры реального игрового кода - есть, они оформлены в наборы игровых библиотек.
На данный момент кодостиль там ближе к той же Халфе, но это не принципиально. Главный плюс крестов в том, что он позволяет обернуть все операции в АТД, после чего будет выглядеть как типично скриптовой язык. Но в реальном С++ этому постоянно мешает низкоуровневость, которая выглядывает то там, то здесь. В Шоте этому ничего не мешает.

Основная проблема С\С++ это работа со строками. Люди очень быстро учатся работать с целыми числами и числами с плавающей точкой.

C++ Source Code:
c = a + b;

Со строками же начинается чертовщина. А почему там нужен массив? А какого размера брать массив? А почему в const char* можно записать статически объявленную строку, а любую другую произвольную - нельзя, а почему strncpy надо указывать при копировании на один символ меньше, а как правильно конвертировать из std::string в любой другой тип строки.
А почему нельзя написать
C++ Source Code:
с = "foo" + "bar";

То есть основные проблемы вот с этим. В Шоте тоже нет этих проблем, там нативный тип строки.

Цитата:
Unit писал:
Геймдев немного изменился со времён Кармака, он сейчас казуален, люди тыкают пару кнопок, перетаскивают готовые ассеты и выплевывают это в плеймаркет

Очевидно тех, кто таскает готовые ассеты и сразу выкладывает в плеймаркет всё и так устраивает. Это в любом случае чужая аудитория.

Так что там насчёт твоего движка? Покажешь\расскажешь?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 221580

Старое сообщение 10-08-2024 07:00
-
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 13192
Возраст: 33

Рейтинг



Ещё здорово бы было если бы был простой доступ к движковым классам и их методам. Без развёртывания кучи композиций и объявления в разных частях своего кода. Ну как в шарпах: объект.класс.значение
Типа GameObject.Transform.LocalScale.y += scaleY;

Чтобы таким же простым путём можно было получить доступ к элементам рендера и физики, без изобретения своего АПИ поверх движка.

Добавлено 10-08-2024 в 11:57:

Цитата:
Дядя Миша писал:
с = "foo" + "bar";


Сделай ещё поддержку атрибутов текста
Debug.Log("<color=red>Error: </color>AssetBundle not found");

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

Отредактировано FiEctro 10-08-2024 в 08:56

Сообщить модератору | | IP: Записан
Сообщение: 221581

Старое сообщение 10-08-2024 08:57
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 08:59. Новая тема    Ответить
Страницы (18): « Первая ... « 2 3 4 5 [6] 7 8 9 10 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > XashNT: блог разработчика
Часть II
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024