Объявления
Поздравляем
VDV_forever


Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

H3API by RoseKavalier

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 29 май 2020, 11:31

My bad, I didn't realize this was a text table and not a single column text.
Код: Выделить всё
H3ColumnTextFile& --> H3TextFile&
[next H3API H3TextFile will become be H3TextTable&]

...
// 0 bonus (short), 1 bonus (long), 2 right-click text
heroSpecText[i][2] = "test";
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: H3API by RoseKavalier

Сообщение as239 » 29 май 2020, 12:39

Syntax error here:
 
Изображение
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 29 май 2020, 15:37

I guess you are still using legacy version of h3api where H3Vector[] returns pointer, try
Код: Выделить всё
return **text[row];
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: H3API by RoseKavalier

Сообщение as239 » 29 май 2020, 16:24

Now I having crash here:
Код: Выделить всё
H3TextFile& __stdcall _HH_LoadArrayTxt(HiHook* h, LPCSTR filename)
{
   H3TextFile& Text = THISCALL_1(H3TextFile&, h->GetDefaultFunc(), filename);

   for (int i = 0; i < 100; i++)
   {
      *Text[i][0] = "test";
      *Text[i][1] = "test";
      *Text[i][2] = "test";

   }
   return Text;
}

   _PI->WriteHiHook(0x5BA035, CALL_, THISCALL_, _HH_LoadArrayTxt);


I need to change the range of monsters since it is poorly readable in 4.0 and SuperPack
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 29 май 2020, 17:02

Test 1
Код: Выделить всё
H3TextTable& __stdcall _HH_LoadHeroSpecTxt(HiHook* h, LPCSTR filename)
{
   H3TextTable& heroSpecText = THISCALL_1(H3TextTable&, h->GetDefaultFunc(), filename);

   UINT row = 0;

   for (H3Vector<LPCSTR>* vvec : heroSpecText.GetText())
   {
      UINT col = 0;
      for (LPCSTR& str : *vvec)
      {
         printf("[%d, %d] %s\n", row, col, str);
         ++col;
      }
      ++row;
   }

   return heroSpecText;
}

 
Изображение


test 2
Код: Выделить всё
H3TextTable& __stdcall _HH_LoadHeroSpecTxt(HiHook* h, LPCSTR filename)
{
   H3TextTable& heroSpecText = THISCALL_1(H3TextTable&, h->GetDefaultFunc(), filename);
   for (H3Vector<LPCSTR>* vvec : heroSpecText.GetText())   
      for (LPCSTR& str : *vvec)      
         str = "test";         

   return heroSpecText;
}

 
Изображение


I'm sorry to say but I don't remember fine details of legacy h3api and don't plan on supporting it; there are a lot of bugs that have since been fixed in it.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: H3API by RoseKavalier

Сообщение as239 » 30 май 2020, 05:47

_HH_LoadHeroSpecTxt code works fine with me.
So my H3API is working.
I checked H3ColumnTextFile with new version they are the same.
But I have problem with reading ArrayTxt.
If i use H3TextFile i have crash.
If i use H3ColumnTextFile I have no text:
Код: Выделить всё
H3ColumnTextFile& __stdcall _HH_LoadArrayTxt(HiHook* h, LPCSTR filename)
{
   H3ColumnTextFile& Text = THISCALL_1(H3ColumnTextFile&, h->GetDefaultFunc(), filename);   
   out.open("C:\\Games\\log.txt");
   for (int i = 0; i < 100; i++)
   {
      LPCSTR vec = Text.GetText(i);
      sprintf(h3_TextBuffer, "%d %d %d", vec, &vec, *vec);
      out << h3_TextBuffer << std::endl;
   }
   return Text;
}
   _PI->WriteHiHook(0x5BA035, CALL_, THISCALL_, _HH_LoadArrayTxt);
Вложения
log.txt
(2.07 КБ) Скачиваний: 213
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 30 май 2020, 12:23

New H3API is not live.

Код: Выделить всё
LPCSTR vec = Text.GetText(i);
sprintf(h3_TextBuffer, "%d %d %d", vec, &vec, *vec);


What do you expect to get from:
Код: Выделить всё
const char* text = "My text";
print("%d", text)
print("%d", &text)
print("%d", *text)


 
%d is for Digits! use %s for String

%d text is printing the memory location
%d &text is printing the stack address of text
%d *text is printing the first char of text as a digit
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: H3API by RoseKavalier

Сообщение as239 » 30 май 2020, 12:34

I apologize for this stupidity, was too tired, definitely need some rest.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 30 май 2020, 13:00

No worries))
Happens to everyone :smile16:
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: H3API by RoseKavalier

Сообщение as239 » 24 июн 2020, 14:28

А какая структура соответствует _MouseStr_?:
Код: Выделить всё
00000000 _MouseStr_          struc ; (sizeof=0x20, mappedto_22)      ; XREF: sub_005D29A0+1A/r
00000000                                                             ; .data:006604E0/o ...
00000000 Type                dd ?                                    ; XREF: sub_005AA0C0+9B/w
00000000                                                             ; sub_005AA0C0+10C/w ...
00000004 SubType             dd ?                                    ; XREF: sub_005AA0C0+A2/w
00000004                                                             ; sub_005AA0C0+D9/w ...
00000008 Item                dd ?                                    ; XREF: AdvMgr_Click+2A/r
00000008                                                             ; sub_005AA0C0+B1/w ...
0000000C Flags               dd ?                                    ; XREF: sub_005AA0C0+8F/w
0000000C                                                             ; sub_005AA0C0+FB/w ...
00000010 Xabs                dd ?                                    ; XREF: sub_005AA0C0+92/w
00000010                                                             ; sub_005AA0C0+FE/w ...
00000014 Yabs                dd ?                                    ; XREF: sub_005AA0C0+95/w
00000014                                                             ; sub_005AA0C0+101/w ...
00000018 NewPar              dd ?                                    ; XREF: sub_005AA0C0+C6/w
00000018                                                             ; sub_005AA0C0+E0/w ...
0000001C Dialog              dd ?                                    ; XREF: sub_005AA0C0+98/w
0000001C                                                             ; sub_005AA0C0+104/w ... ; offset
00000020 _MouseStr_          ends

Что-то не могу найти.
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

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

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

cron