Order of Elite Games [OEG]  




Начать новую тему Ответить на тему  [ Сообщений: 187 ] 

Какими вы видите локальные карты в "Забытой Войне"
Большими, включающими в себя всю планетарную систему, в масштабе 25%  25%  [ 1 ]
Маленькими, включающими в себя одну планету и луны, в масштабе 0%  0%  [ 0 ]
Оригинального размера, включающими в себя всю систему, но масштаб не соблюден 75%  75%  [ 3 ]
Всего голосов : 4
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-24 12:19:51 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Исправлена ошбка CharReg.
Начинаем сборку модулей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-27 00:29:59 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Еще небольшая информация по OSD Online Module

1) некоторые антивирусные системы могут распознать его как вирус. Это объясняеться тем, что в ядре использованны функции перехвата API функций виндовс и DirectX

2) Тем, у кого установленн файерволл потребуеться разрешить все входящие/исходящие для процесса Freelancer.exe по протоколу Tcp/IP на порт 2201. Этот порт используеться модулями OSD для обмена информацией между пользователями

3) Само ядро модуля выполненно таким образом, что при запуске процесса он сливаеться с процессом Freelancer.exe и до отключения оного функционируют как единое целое.

4) Так как ядро модуля написанно на DirectX?, при прорисовки интерфейса не происходит "мограния"

5) При создании модуля использовалась библиотека MadCodeHook.dll. Если в катологе с OSD нет файла validate.bin или при запуске не появляеться отдельного окна с логотипом MAD, значит это не легальный OSD, и даже возможно вирус. Будте внимательны!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-27 19:56:40 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Изображение
примерная работа OSD (форма входа в систему)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-27 22:35:58 
Аватара пользователя

Зарегистрирован: 2007-03-29 09:00:39
Сообщения: 1174
Откуда: Moscow,Russian Federation
убери етого чела )))))))))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-27 23:53:45 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
уберу, если Милка с ним раньше что-нить не сделает=)))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-28 01:34:49 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Вопрос, который мучал уже многих почти с самого момента выхода фрилансера: почему в игре начисто отсутвует возможность походить по планетам/базам, хотя выполненны они в 3д и достаточно достойно?

ТАк вот, кажеться я нашел решение. Я могу зделать это возможным, причем, в онлайне других игроков можно увидеть и побить=). Это не проблема и с ядром OSD выполняеться на раз, два, три. Настоящая проблема - нпц, а в часности их ии. Луа скрипт для таких целей не подходит. Нужно писать самый настойщий ии, основанный на онализе ситуаций. Это долго, и сложно. Поэтому с нежитями придеться подождать.
Итак. Как создать 3д базы, чтоб можно было походить

Этап 1. Рисуем свои, или выдераем модели из игры и сохроняем их в формате *.x (не будем стоить из себя крутых, а формат хороший)
Этап 2. Стираем строчки в файле базы к примеру Li01_01.ini, но сам файл не трогаем (чтоб игра не вылетала)

Этап3. Создаем новый модуль (неважно на каком языке, главное, чтоб DLL)
Модуль должен экспортировать следующие функции: GetModuleMode с возвращаемой текстовой строкой
В нашем случае она должна ровняться "BaseLi01_01"
и ModuleBody - здесь будет производиться старт модуля.
и ModuleRender - собсно прорисовка нашей базы

Этап4.
В MOduleBody обрабатываем загрузку текстур и моделей (примеры в DirectXSDK и в документации к OSD Online SDK)
В ModuleRender прописываем метрику и положение моделей (города Либерти)(для экономии памяти город можно разбить на локации, только не факт что работать будет корректно)
там же пишем обработку положения и анимации персоонажей

Если вы хотите чтоб ваш персоонаж двигался, то прописываем еще одну функцию KeysAssign, в которой привязываем коды клавиш, к ключу анимации персоонажа в функции Modulerender
пример
Код:
if 87 then Walk;

т.е. если нажата клавиша номер 87, тогда ваш персоонаж начинает идти (код 87 соответствует клавише "w")
вот и все.
Прописываем модуль в конфигурационный инишник OSD Online и в путь
Ой, да, совсем забыл. В серверной части модуля необходимо прописать событие, при котором Статус OSD будет BaseLi01_01
примерно так
Код:
if Save.Base = 'Li01_01' Then ChangeState('BaseLi01_01')


Ну вот=) Теперь летим на Манхеттэн. Садимся. Видим черный экран (я думаю секунды 2-3 не больше) и попадаем в 3д город, по которому можно побродить.
=)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-29 01:05:06 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Нашел маленький БАГ (мой недочет)
мыш во фриле обрабатываеться DirectInput, поэтому координаты аппаратной мыши и координаты спрайта на экране не совпадают
Чтобы исправить необходимо перехватить функции выхова DirectInputа
Для этого надо знать его порядковые номера (для всех основных функций инпута)
кто может подсказать их номера?

пока не отыщу их, ресую дополнительный спрайт - мыш с привязкой к аппаратным координатам (на экране два курсора и оба работают)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сервер freelancer
СообщениеДобавлено: 2009-05-29 03:45:42 
Капитан 1 ранга
Капитан 1 ранга
Аватара пользователя

Зарегистрирован: 2006-06-06 12:54:10
Сообщения: 3376
Откуда: SPB
Ой, а можно про аппаратный курсор и его реализацию во фриле поподробнее? На ххц народ недавно плакался на этот счёт, но админы сказали что это очень непросто и вообще есть заботы поважнее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-29 10:38:10 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
дык. а что подробнее то?
во фриле для обработки курсора используеться DirectX, а именно irectInput
формула расчета такая - по X (текущее положение курсора минус предыдущие положение курсора помноженное на сенс в настройках)вся эта дурь прибавляеться к положению СПРАЙТА (т.е. картинки с изображением курсора)
и он движеься.
Windows курсор обрабатываеться, но он не виден (DirectInput кго перекрывает).
Т.К. его формула расчета положения несколько другая, то и координаты Аппаратного (Windows) курсора и Спрайтового курсора во Фриле не совпадают.
И вообще. даже еслиб совпадалито ни одна из кнопок (имееться ввиду в фриле (Новая Игра, Гастройки)) не работали.
Это объясняеться тем, что все эти кнопки всего лишь спрайты (как и курсор)
Обработка этих клавиш идет по рассчету координат курсора (Спрайтового), и области кнопки. Если он (курсор)
находиться в области кнопки, тогда кнопка становится активной и может обработаться клик по ней.

DirectInput - низкоуровневый интерфейс, поэтому он имеет приоритет по мыши (собсно его даже глобальный хук на мыш не блокировал)

а вообще зайди на gamedev.com там про реолизацию курсора в играх подробненько написанно
а из-за чего весь сыр-бор-то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сервер freelancer
СообщениеДобавлено: 2009-05-29 10:56:51 
Капитан 1 ранга
Капитан 1 ранга
Аватара пользователя

Зарегистрирован: 2006-06-06 12:54:10
Сообщения: 3376
Откуда: SPB
Сыр-бор из-за вопроса: возможно ли реализовать в моде ххц или просто чистом фриле аппаратный курсор (не программный, как сейчас, тормозной и с привязкой к фпс игры) без тяжёлого моддинга и сторонних модулей? Ты ведь, как я понял, что-то стороннее для всего этого пишешь - OSD?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-29 10:59:16 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Ну и вобще админы ххц правы. Это действительно ООЧЕНЬ сложно.
Дляэ этого нужно перехватить функцию DirectInput`a State.
+ необходимо знать ИМЯ переменной, отвечающий за курсор. (чесно говоря я даже не знаю как это ИМЯ перехватить) хотя ее тип ТОЧНО TD3DXVector2

ОГА. именно. OSD


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сервер freelancer
СообщениеДобавлено: 2009-05-29 11:17:41 
Капитан 1 ранга
Капитан 1 ранга
Аватара пользователя

Зарегистрирован: 2006-06-06 12:54:10
Сообщения: 3376
Откуда: SPB
Ясно.. ладно, спасибо за инфу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-05-29 12:19:09 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
НП


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сервер freelancer
СообщениеДобавлено: 2009-05-29 19:07:39 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Об Объектах

Для облегчения написания модулей создал отдельный pas файл с объектами OSD.

    класс TFormDX
Являеться основным. На этой форме рисуються все остальные элементы управления.
    класс TButtonDX
Кнопка. Динамический элемент. Понажатию обрабатываеться функция State.ChangeState.
Т.е. переключение между модулями
    класс TInputDX
Элемент ввода текста с клавиатуры. Имеет два состояния: активный/ неактивный.
В неактивном режиме. Ввод с клавиатуры игнарируеться. Активируеться кликом мышки по нему.
Также иммет параметр Password. При этом видимый текст будет заменяться на *
    класс TTextDX
Статичный текст. Используеться для вывода информационного текста. Не имеет каких либо динамических состовляющих

О Модулях

Модули в OSD Online представляют собой библиотеки DLL.

Модуль должен содержать следующие функции:

    ModuleStartState
Функция должна содержать константу текстового типа с иминем Стата, при котором модуль активен.

    ModuleBegin
Функция должна содержать оглашение ВСЕХ компанент, которые будут рисоваться. Функции Draw компонентов вызывать не нужно

    ModuleRender
Главная функция модуля.
Должна содержать позиции компонентов или анимацию (если есть)

Обязателен компонент класса TButtonDX с командой Main. для закрытия модуля

    ModuleEnd
функция завершения.
Всем объекты модуля должны быть обнулины.

Отсутствие данной функции приведет к краху и вылету в винду.

Конфигурационный файл

После того как модуль написан, его нужно добавить в Modules.ini. Иначе в базу данныйх модулей.

текст файла следующий

[Socket] - работа с протоколом TCP/IP
online=True - должен ли OSD подключаться к серверу при старте
host=d-team.spb.ru - адресс сервера
port=2201 - порт сервера

[ModCounts]
Num=2 - Общие количество модулей в базе

[0] - Модуль номер 1
File = Blablabla\Primer.dll - путь к файлу модуля
Mode=Online - модуль имеет параметры для передачи на сервер

[1]
File = Primer2.dll
Mode=Ofline - модуль локальный. Данных для передачи серверу нет

Прошу обратить внимание, что перечисление модулей начинаеться с 0, а количество с единицы

Также прошу обратить внимание на то, что ядра у OSD Online 2
для игр, написанных под DirectX8 и для игр, написанных под DirectX9

Это РАЗНЫЕ ядра. Не пытайтесь использовать ядро DX8 для игр DX9 и наоборот. Это может плохо кончиться

_________________
Мы рейнджеры. Мы заходим в такие темные дали, куда никто не ходит. Мы никогда не уклоняемся от боя.
Мы стоим на мосту и никто не может пройти мимо нас. Мы никогда не отступаем.
Мы живем ради одного. Мы умираем ради одного


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сервер freelancer
СообщениеДобавлено: 2009-05-29 19:25:27 
Капитан-лейтенант
Капитан-лейтенант
Аватара пользователя

Зарегистрирован: 2007-04-10 13:52:33
Сообщения: 849
Откуда: Питер, Кронштадт, Новый Токио
Ну и собсно о самом проекте Забытая Война, с которого все началось:

компания будет выполненна в OSD.
Таким образом будет пресечено читерство и проскок основных квестов.

АКак это будет выполненно:

На определенных базах вы услыщите звуковой сигнал, означающий входящее интерактивное сообщение.

В меню OSD будет клавиша Comm (Communication)

На экране вы увидите: 1) лицо, вызывающего
2) краткая информация: имя, звание(должность), фракция, к который человек принадлежит
3) в текстовом виде все то, что он вам говорит (Если удастся собрать народу, то можно в дополнение все это озвучить)
4) Поле с возможными ответами

В общем стандартное диалогове окно игр РПГ
Иногда для активации "вызова" необходимо иметь в трюме какой-либо груз, либо лететь на определенном корабле

Вызов может поступить также из космоса

По нажатию на клаыишу Comm без вызова Вы увидите список персоонажей, с которыми можно поговорить

_________________
Мы рейнджеры. Мы заходим в такие темные дали, куда никто не ходит. Мы никогда не уклоняемся от боя.
Мы стоим на мосту и никто не может пройти мимо нас. Мы никогда не отступаем.
Мы живем ради одного. Мы умираем ради одного


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 187 ] 


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB