Berserker, Так?
Ошибки указывают на строки с закрывающими фигурными скобками структур
обернуть - значит вложить в открывающую и закрывающую конструкцию
Code:
#pragma pack(1)
struct foobar
{
int foo;
double bar;
};
#pragma pack()
и вообще, почему там typedef?
не может того быть. нет typedef с одним параметром.
там у typedef 2 параметра.
Интересно насколько сложно полностью перехватить создание случайных карт? (=встроить свой генератор, если я его допишу всетаки %) )
Если ты действительно напишешь хороший генератор, думаю желающие его встроить найдутся.
Berserker, Еще ошибку выдает:
(12.02.2012 00:26)kostya_76 Wrote: [ -> ]Создаю форму. Вызываю Form1.Show(); хоть в обработчике хука, хоть при загрузке длл - вылет.
Так тоже не получается:
VAR AOwner: TComponent;
Form1 := TForm1.Create(AOwner);
Form1.Show();
И не получится. Убери формы вообще и все связи с VCL.
Хотя в теории подружить VCL с героями возможно (но формы будут открываться отдельно от окна героев), а вот встроить их внутрь интерфейса нереально (если бы у окон героев были оконные хендлы, а их там AFAIK нет, то можно было бы вообще вставлять праактически любой виджет из VCL прямо на любое окно в игре)
(12.02.2012 20:15)AVS Wrote: [ -> ]И не получится. Убери формы вообще и все связи с VCL.
Хотя в теории подружить VCL с героями возможно (но формы будут открываться отдельно от окна героев), а вот встроить их внутрь интерфейса нереально (если бы у окон героев были оконные хендлы, а их там AFAIK нет, то можно было бы вообще вставлять праактически любой виджет из VCL прямо на любое окно в игре)
Само-собой это окно отдельно от окна героев должно открываться.
Реквизит встроила VCL-ые формы в игру. zvslib1 использует формы билдера для новых воговских диалогов. Я, к сожалению, добился только глючного модального запуска и бросил.
kostya_76, замените __stdcall на WINAPI.
Berserker, Не помогает - такое сообщение об ошибке.
Собственно, мне пока нужен только хук, попробую сейчас функцию
typedef __stdcall void (*THook) (void* HandlerAddr, int HookType, int PatchSize, void* CodeAddr);
(12.02.2012 20:40)kostya_76 Wrote: [ -> ]Само-собой это окно отдельно от окна героев должно открываться.
Тогда при запуске в хуке Application.Initialize. Еще возможно необходимо установить Application.Handle на реальный хендл героев.
Формы создавать Tform1.Create(nil) и ставить FreeOnRelease. Уже это должно работать.
(12.02.2012 21:02)Berserker Wrote: [ -> ]Реквизит встроила VCL-ые формы в игру.
Ну если хукнуть главный цикл и "подсунуть под" окно героев VCL форму (чтобы окно героев было дочерним) потом наверное переписав обрабтку мыши и клавиатуры может и получится.
(12.02.2012 21:02)Berserker Wrote: [ -> ]zvslib1 использует формы билдера для новых воговских диалогов. Я, к сожалению, добился только глючного модального запуска и бросил.
Увы я только мельком поглядел на исходники самого вога - этой либы в них нет - а в самом воге диалоги реализованы через грязные хаки с VMT классов внурти движка героев.
kostya_76
__stdcall void замени на void __stdcall