Total Annihilation

Форум сайта http://www.total-annihilation.org/
Текущее время: 04 дек 2020 22:04

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 14 авг 2012 15:03 
Не в сети
Аватара пользователя

Зарегистрирован: 12 ноя 2010 20:20
Сообщений: 194
[bl] - Буду забираться. Спасибо за участие, хоть поучусь у тебя :D

[bl] писал(а):
Добавь в проект tamem.h для описания всех структур данных из ТА.


Я чет не понимаю. Этот фалик tamem.h служит для того чтобы сделать динамическое обращение к функциям находащимся в работоющем потоке который запустил процесс TotalA.exe?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 14 авг 2012 15:36 
Не в сети
Золотой железяка
Золотой железяка

Зарегистрирован: 27 ноя 2011 20:49
Сообщений: 117
RofLas
Не совсем так. Вспомни пример, как через написанную на ассемблере функцию DWORD GetDword(DWORD dwAdr) приходилось получать некоторое число. Это не очень удобно: лишний вызов функции, не очень красивый код. А вот если использовать эти данные, как структуру - то и код красивее и обращаться к данным можно сразу. Вот и tamem.h содержит описания того, как ТА хранит данные у себя в памяти. Именно эти структуры делают работу удобнее в последствии. Например, чтобы отобразить сообщение от имени текущего игрока, то надо указать, от какого игрока это происходит. Через соответствующую структуру это делается просто:
Код:
ShowText(&TAdynmem->Players[0], (char*)"+setshareenergy 1", 4, 0);
Понимать этот код надо следующим образом:
  • Вызвать функцию ShowText(), у которой первый параметр игрок отправитель, а второй - сообщение, остальные параметры сообществу пока не особо известны
  • Текущего игрока (индекс 0) берем из массива игроков Players[] из структуры по указателю на TAdynmem
  • Сообщение формируется тут же, как константа и приводится к типу указатель на символы
Как-то так. Надеюсь не сложно изъясняюсь. wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 14 авг 2012 15:53 
Не в сети
Аватара пользователя

Зарегистрирован: 12 ноя 2010 20:20
Сообщений: 194
[bl] - А откуда ты добыл этот файл (tamem.h), наверно написать такой нельзя, еси ты конечно не бог дизассемблерщик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 14 авг 2012 16:09 
Не в сети
Золотой железяка
Золотой железяка

Зарегистрирован: 27 ноя 2011 20:49
Сообщений: 117
RofLas
Всё намного проще: этот файл был написан ещё теми ребятами, которые начинали делать TA Demo Recorder. Позже этот файл дорабатывался и дописывался несколькими людьми. В итоге он дошел в таком состоянии к последней версии ddraw.dll 0.8.4.6. Откуда они взяли эту информацию? Да скорее всего получили от кого либо из разработчиков, ибо найти всё это просто анализируя работающую программу очень и очень сложно и затратно по времени.
То что сейчас происходит в преддверии выхода ТА версии 4.0 - это уже совсем другая работа совсем других людей, которые просто ковыряют код, меняют что-то в нём, затем смотрят, что изменилось, опять что-то меняют... Но именно так и были найдены pathfinding patch и некоторые другие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 14 авг 2012 16:23 
Не в сети
Аватара пользователя

Зарегистрирован: 12 ноя 2010 20:20
Сообщений: 194
[bl] - А как ты думаешь, Wotan изменяет тотал на уровне дизассемблированного листинга, или у него какие нибудь тоже исходники есть на подобие этого (tamem.h), просто для меня мечта детства научиться модифицировать тотал, да и щас похоже по новому загорелся, в виду любезно предоставленных тобой открытий :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 14 авг 2012 16:29 
Не в сети
Золотой железяка
Золотой железяка

Зарегистрирован: 27 ноя 2011 20:49
Сообщений: 117
RofLas
Нет, Wotan изменяет только параметры юнитов, их модели, графику, анимацию, некоторые скрипты... Дело в том, что движок ТА изначально обладал таким заделом (правда с некоторыми ограничениями), что до сих пор хватает для изготовления кучи разных модов. А любые изменения кода ему бы пришлось вкладывать в свой архив в виде патча или уже модифицированного totala.exe или ddraw.dll.
Вот когда Wotan заявит требованием, что для очередной версии Escalation нужна ТА уже не просто 3.1с, а патченная с TAUniverse - считай, значит начал использовать какие-то фичи, накопанные умельцами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 18 авг 2012 02:49 
Не в сети
Аватара пользователя

Зарегистрирован: 12 ноя 2010 20:20
Сообщений: 194
Выкладываю вариант с хоткеями на строительство, потому как уже играл по сетке с этой прогой и хоткеи работали, незнаю на сколько прога стабильна, играл токо один раз, и надобы еще протестировать.

После того как прога запущена, хоткеи актевируються только если активна клавиша Caps Lock (еси лампочка горит). Хоткеи до сих пор работают глобально и проге неважно что запущено, от функции GetDword не удалось избавиться выдает какую то ошибку, походу не хватает каких то определений.

Как работают хоткеи, прога тупо нажимает мышкой по определенному месту на экране, хоткеи активируються через Alt, тоесть надо нажать комбинацию клавиш, например Alt - Q - чтобы нажать на ту кнопку где обычно у кома соляр. Если нажать хоткей через Alt - Ctrl - ..., то будет правое нажатие мышкой, это для от заказа в заводах. Вот расположение хоткеев:

Изображение

Икзешник в папке Debug

И еще, у меня стоит XP, и как работает прога на других версиях Windows я не тестировал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 21 авг 2012 12:17 
Не в сети
Золотой железяка
Золотой железяка

Зарегистрирован: 27 ноя 2011 20:49
Сообщений: 117
Почему без GetDword() не получается - не понятно. :blush: Вот твой же код, только все вызовы этой функции заменены на структуру. Обрати внимание на все строчки содержащие /// - это твои оригинальные строки, мною заменены на новые (строка над комментарием).

PS: В начале ещё закомментирован #include "stdafx.h", но это просто потому что мне он не нужен.

PS2: Прога то работает. wink:


У вас нет доступа для просмотра вложений в этом сообщении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 21 авг 2012 15:05 
Не в сети
Аватара пользователя

Зарегистрирован: 12 ноя 2010 20:20
Сообщений: 194
[bl]
Компилятор ругается на сроку с определением указателя key:
KBDLLHOOKSTRUCT* key;

пишет:
... main.cpp(25) : error C2501: 'KBDLLHOOKSTRUCT' : missing storage-class or type specifiers

Еще ругается на строку с присвоением указателю key, адреса структуры с сообщением:
key = (LPKBDLLHOOKSTRUCT)lParam;

пишет:
... main.cpp(65) : error C2065: 'LPKBDLLHOOKSTRUCT' : undeclared identifier

Я подозреваю что у меня какойто старый windows.h файл, и там просто нет нужных описаний. Мож мне где свежую версию скачать :dntknw:

А у тебя с этими поправками работает?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Hotkeys - хоткеи для Escalation
СообщениеДобавлено: 21 авг 2012 15:38 
Не в сети
Золотой железяка
Золотой железяка

Зарегистрирован: 27 ноя 2011 20:49
Сообщений: 117
RofLas
Да, компилируется и работает без проблем. Погоди ка, посмотрю описания этих структур...

У меня есть WinUser.h из MinGW и VC10, в обоих объявление этой структуры производится при следующем условии:
Код:
#if (_WIN32_WINNT >= 0x0400)
А это означает, что надо объявить в начале программы следующее:
Код:
#define WINVER 0x0502               // Минимум WinXP SP2
#define _WIN32_WINNT 0x0502         // Минимум WinXP SP2
Если это не поможет, дай мне свой файл WinUser.h, я посмотрю, как там описано.

PS: У тебя, судя по проектам, Studio 6.0?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



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

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


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

Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB