» TeamX (Архив Форума)«


Форум TeamX » Исследования » Fallout online (... или что-то в этом духе)

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 ] Все собщения

 
Tehnokrat
Модератор

Откуда: Новосибирск
Регистрация: Окт. 2003

Всего: 489 сообщений

Я "еxport variable" как-раз с помощью ArtMoney искал, сначала по значению, потом по имени. Адреса точно не меняются при каждом запуске. Да хоть бы и менялись, поиск по имени занимает доли секунды и совпадение всего одно (если переменная не содержит текст). Но вот я попытался свою прогу начать писать и сразу понял, что это будет посложнее, чем первоначально представлялось. Хотелось бы знать, как добраться до адресного пространства чужого процесса. Может найду в инете готовый компонент, облегчу себе жисть

Цитата:

Не только изменив файл, но и поставив патч (вроде от Нойда). И если мне не изменяет память - то не в файл, а на экран, хотя я не помню. А было бы здорово, всё меньше проблем. Как появится время посмортю. Кроме того, я даже знаю функцию, которая эти отладочные сообщения и выдаёт. Будем смотреть.



Точно говорю - в файл, а имя ему - debug.log
В маппере работает (вроде я какой-то патч ставил), а вот в Фоле - нет.
Тока непонятно, что это нам даёт - односторонняя связь получается.

Краткие итоги:
Пока два способа намечается
1. поиск переменной в памяти
2. изменение какой-нибудь процедуры.

По поводу изменения процедуры - в файл писать сложно, по-моему лучше посылать системное сообщение внешней проге, WM_COPYDATA кажется.

-----
Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.

Отправлено: 18:51 - 5 Мая, 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Ха Всё гораздо проще! Советую ознакомиться. Это пока набросок. За граматику не винить, писал быстро. За смысловые ошибки/неточности/неправильную инфу тоже. Будут вопросы - порешаем.

Цитата:
Но вот я попытался свою прогу начать писать и сразу понял, что это будет посложнее, чем первоначально представлялось. Хотелось бы знать, как добраться до адресного пространства чужого процесса.



Ты не представляешь, сколько у меня на это ушло времени и нервов. Хоть это очень легко. Как я написал в доке - этим уже не надо заниматься, всё это решается проще. Но если интересно - у меня есть готовый пример, могу дать.


Цитата:
Точно говорю - в файл, а имя ему - debug.log
В маппере работает (вроде я какой-то патч ставил), а вот в Фоле - нет.
Тока непонятно, что это нам даёт - односторонняя связь получается.



В фолле прекрасно работает. Я неоднократно проверял. И связь не только односторонняя. Если непонятно из доки - спрашивайте. Кроме того, у меня данный файл теперь называется foinp.con


Цитата:
Краткие итоги:
Пока два способа намечается
1. поиск переменной в памяти
2. изменение какой-нибудь процедуры.



1.Не надо. Можно проще.
2.Тем более не надо.

По второму - думаю понятно. А по первому - долго, нудно, глючно. Кроме того ограниченность вывода текста. А при помощи дебаггера я писал в файл такие конструкции:

op_debug_msg("This is for fonline";
op_debug_msg("{100}{}{This is for fonline}";

И получал в файле foinp.con:

*******
This is for fonline
{100}{}{This is for fonline}
*******

Единственное что меня беспокоит - время прошедшее с определённого действия на одном компе и его отображения на другом.


(Добавление от 1:19 - 6 Мая, 2006.)


Вот так можно протестить дебаггер и каркас проги (запуск фола, а также работу в фоновом режиме (увидеть не получится )

Линк

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 0:26 - 6 Мая, 2006
Tehnokrat
Модератор

Откуда: Новосибирск
Регистрация: Окт. 2003

Всего: 489 сообщений

Ну, если всё это работает, я не стану продолжать возиться с переменными. Щас буду опыты ставить на Фоле, а потом всё обдумывать.

Кстати, я не уверен, что стоит с прошками связываться - все хары, умения и перки новому игроку (на сервере) можно выставлять в скрипте.

-----
Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.

Отправлено: 18:51 - 6 Мая, 2006
Tehnokrat
Модератор

Откуда: Новосибирск
Регистрация: Окт. 2003

Всего: 489 сообщений

to Ray
Значит так, передача данных из Фола через debug.log в принципе работает, если не считать того, твоя прога 111.exe постоянно выполняет "недопустимую операцию".
Ray, может расскажешь подробно чего делают твои проги, технологию, так сказать?

А вот с передачей данных в Фол, извини, не понял. Я попытался изменять содержимое msg-файлов во время работы Фола, но он их не перечитывает. Может я чего-то не так понял. Объясни, что значит загадочная фраза:

Цитата:

2) Команды, полученные приложением fonline.exe с сервера, обрабатываются и записываются в файл “foout.con” (или в нужный msg файл) Они обрабатываются двигом фолла при помощи скриптовой системы (см. “mrfixit”)



-----
Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.

Отправлено: 11:30 - 7 Мая, 2006 | ИСПРАВЛЕНО: Tehnokrat - 14:30 - 7 Мая, 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Цитата:

если не считать того, твоя прога 111.exe постоянно выполняет "недопустимую операцию".
Ray, может расскажешь подробно чего делают твои проги, технологию, так сказать?



Интересно Эта прога не делает ничего. Просто висит в фоновом режиме и всё. Странно, раньше всё работало, я просто выкинул всё лишнее и оставил каркас. Да и у меня всё работает. Надо смотреть. Исходник нужен? Могу отправить на мыло.


Цитата:
А вот с передачей данных в Фол, извини, не понял. Я попытался изменять содержимое msg-файлов во время работы Фола, но он их не перечитывает.



А вот с этим я прогнал. Я думал каждый раз смотрит из файла. Буду думать. Кстати, если выйти и снова войти на карту - фолл перечитает таки msg по новой.

Цитата:
Объясни, что значит загадочная фраза:



Вообще, в mrfixit реализовано скриптовое чтение строк. Я хотел этим воспользоваться.

Цитата:
в файл “foout.con” (или в нужный msg файл)



Я придумал вариант обработки событий. Возможно он ещё изменится (к тому же проблема с msg - см. выше), но идея была такова (слегка изменилась по сравнению с диз. доком):

foout.con - пока описывать не буду
fonline.msg - содержит список всех карт. И ещё какие-нибудь данные, пока не определённые(дополнятся в ходе разработки)
number.msg содержит id(номера) всех игроков и предметов. Позже раскажу зачем.
map"имя карты".msg - основные файлы событий. Имеют структуру:
[members]
{id}{}{координаты}
......
[items]
{id}{}{координаты}
[actions]
{}{}{команды для исполнения}


Скорее всего всё будет менятся - это черновой вариант. А пока идея такова.

Как только игрок переходит на определённую карту, на ней уже могут находится другие игроки. Тогда происходит растановка игроков и предметов и начинают выполняться действия, начиная с последнего.

P.S. Я так подумал - придётся отключать все системные кнопки(кража, лечение, ремонт, пипбой) и заменять их интерфейсными эквивалентами лечения, журнала и пр. Карту мира наверное тоже придётся выключить. Без неё можно, думаю, обойтись. Связанно это с согласованием внутриигрового времени.



-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 13:46 - 7 Мая, 2006
Tehnokrat
Модератор

Откуда: Новосибирск
Регистрация: Окт. 2003

Всего: 489 сообщений

Цитата:

--------------------------------------------------------------------------------
если не считать того, твоя прога 111.exe постоянно выполняет "недопустимую операцию".
Ray, может расскажешь подробно чего делают твои проги, технологию, так сказать?
--------------------------------------------------------------------------------

Интересно  Эта прога не делает ничего. Просто висит в фоновом режиме и всё. Странно, раньше всё работало, я просто выкинул всё лишнее и оставил каркас. Да и у меня всё работает. Надо смотреть. Исходник нужен? Могу отправить на мыло.



У меня Форточки 98, может поэтому. Кидай все исходники на моё мыло, в том числе и той проги, которая с памятью Фола работает.

Цитата:

P.S. Я так подумал - придётся отключать все системные кнопки(кража, лечение, ремонт, пипбой) и заменять их интерфейсными эквивалентами лечения, журнала и пр. Карту мира наверное тоже придётся выключить. Без неё можно, думаю, обойтись. Связанно это с согласованием внутриигрового времени.



Я тоже об этом думал, и полностью согласен. Придётся обходится без карты мира и многого другого, но зато можно будет сделать ну очень большую локальную карту. Конечно это будет не совсем Фол, или вернее - совсем не Фол, но зато появляется возможность поиграть в хорошей компании

Я думаю, что к серверу цеплять Фол вообще незачем, он будет стоять где-то в инете и отправлять клиентам инфу, полученную от одного из клиентов, а также сигналы синхронизации типа "все обработали ход, готов к следующему"


-----
Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.

Отправлено: 14:34 - 7 Мая, 2006 | ИСПРАВЛЕНО: Tehnokrat - 17:56 - 7 Мая, 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

В фоловском двиге дурацкая система работы с данными. На 99% уверен, что для передачи данных в фолл надо будет править двиг(а жаль, мне так вариант с msg нравился).

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 17:03 - 7 Мая, 2006
Tehnokrat
Модератор

Откуда: Новосибирск
Регистрация: Окт. 2003

Всего: 489 сообщений

Да всё нормально будет, я сейчас пишу поиск переменной в памяти Фола на асме, так что работать должно быстро. А ещё я выяснил интересный факт - при запуске Фола под разными системами - Вынь98 и ВыньXP адрес переменной (export variable) НЕ ИЗМЕНИЛСЯ!

-----
Прошлое можно узнать, но нельзя изменить. Будущее можно изменить, но нельзя узнать.

Отправлено: 18:18 - 9 Мая, 2006
Anchorite
Пользователь

Откуда: Не здесь
Регистрация: Янв. 2003

Всего: 283 сообщения

Ребята,  а как вы собираетесь СИНХРОНИЗИРОВАТЬ все это свое хозяйство (ресурсы и карты?

Где гарантия что:
1. Карта одного игрока совпадает с картой другого (напроходимая стена у одного это широченное шоссе у другого)?
2. RedRider BB Gun у одного игрока это не Vindicator Minigun  у другого?
3.  APA MKII одного это не Leather Armor другого?

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

Готов поспорить, что рано или поздно в вашей ситуации FO2 превратиться в простой РЕНДЕРЕР для вашей самописной сторонней проги.
И тогда возникнет ворос: "А то ли я вообще делаю? И может стоит написать СВОЙ двиг с использованием ресурсов FO?"

Отправлено: 23:16 - 9 Мая, 2006
Ray
Модератор

Откуда: Донецк,Украина
Регистрация: Янв. 2004

Всего: 746 сообщений

Цитата:

Готов поспорить, что рано или поздно в вашей ситуации FO2 превратиться в простой РЕНДЕРЕР для вашей самописной сторонней проги.
И тогда возникнет ворос: "А то ли я вообще делаю? И может стоит написать СВОЙ двиг с использованием ресурсов FO?"



Не исключено, что так всё и обернётся. За исключением двух мелочей: во-первых, двиг писать бессмысленно. Уж лучше что по новей и красивей. И, во-вторых, я занимаюсь этим не из за мечты скажем создать fonline. Я таким раньше вообще не увлекался. Для меня это в первую очередь возможность посмотреть на фолл по другому. Поковырятся в содержимом, посмотреть что и как работает, но уже с другой стороны (я рад, что эту тему перенесли сюда). Ну и было бы интересно создать нечто подобное

Цитата:

Ребята,  а как вы собираетесь СИНХРОНИЗИРОВАТЬ все это свое хозяйство (ресурсы и карты?

Где гарантия что:
1. Карта одного игрока совпадает с картой другого (напроходимая стена у одного это широченное шоссе у другого)?



Поэтому я и писал в доке, что при запуске проги надо проверять текущую версию на сервере. С игрой будут поставляться карты, скрипты и т.п. Но согласен, надо сделать проверку от "умельцев", которые захотят поправить данные сами, а потом запустить игру. Но в данный момент это наименьшее из бед.



(Добавление от 12:27 - 10 Мая, 2006.)


Цитата:
Да всё нормально будет, я сейчас пишу поиск переменной в памяти Фола на асме, так что работать должно быстро.



Я думаю больше нет смысла возиться с памятью. Ниже приведен список байт, которые нужно изменить, чтобы фолл каждый раз при вызове ф-ии msg_string считывал данные из файла. Это работает, я проверел (заходил в фолл, смотрел диалог - потом переключался в винду менял данные и смотрел по новой. Данные изменялись.) Осталось выяснить - будут ли какие либо тормоза. На моей машине это увы проверить не получится (я тормозов не заметил)

offset:  0x96F8A
orig: 000F85A500
изм:  FF7400EB02

Версия игры: оригинальная английская или Фаргус

Посмотрите кто-нибудь. Я надеюсь три дня мороки не пропадут зря.

-----
Не бывает невозможных задач – бывает мало времени.

Отправлено: 11:23 - 10 Мая, 2006
 

Переход по темам
<< Пред. След. >>
Страницы этой темы [ 1 2 3 ] Все собщения


Powered by Ikonboard 2.1.9 RUS
Modified by RU.Board Team
© 2000 Ikonboard.com