• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Вопросы по union

Oster

Участник форума
Регистрация
13 Янв 2017
Сообщения
122
Благодарности
46
Баллы
190
Поставил на обычную Ночь Ворона плагин ускорения от Харта. Плагин работает как надо, но теперь при завершении игры, игра подвисает почти на минуту, и только потом закрывается. Без плагина при завершении, игра закрывалась мгновенно. Никаких других модов не стоит, только Union поставил. У всех так, кто ставил этот плагин ускорения?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.862
Благодарности
6.742
Баллы
1.625
Поставил на обычную Ночь Ворона плагин ускорения от Харта. Плагин работает как надо, но теперь при завершении игры, игра подвисает почти на минуту, и только потом закрывается. Без плагина при завершении, игра закрывалась мгновенно. Никаких других модов не стоит, только Union поставил. У всех так, кто ставил этот плагин ускорения?
Вопрос наверно нужно задать в разделе про Юнион, а не Ниндзю? ))
Сообщение перенес.
Наводящий вопрос: Во время закрытия игры, время ускорено/замедлено? Если просто зайти в игру, ничего не делать и сразу выйти?
 

Oster

Участник форума
Регистрация
13 Янв 2017
Сообщения
122
Благодарности
46
Баллы
190
Наводящий вопрос: Во время закрытия игры, время ускорено/замедлено? Если просто зайти в игру, ничего не делать и сразу выйти?
Попробовал зайти в игру и сразу же завершить ее (ничего больше в меню не нажимал, ни сейвы, ни настойки...) все равно около минуты висела заставка с магами воды и только потом игра закрылась.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.862
Благодарности
6.742
Баллы
1.625

Диккен

Участник форума
Регистрация
12 Июн 2004
Сообщения
469
Благодарности
127
Баллы
210
Что делает этот параметр настроек: VisualizePerfomance = False ? Для моей GTX750 включать или не нужно?
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.131
Благодарности
5.627
Баллы
910
Тема с Union -> Описание файла настроек Systempack.ini
VisualizePerfomance=0
; ... рисует на экране графиг производительности - включено (1) или выключено (0), по-умолчанию: 0.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.003
Благодарности
971
Баллы
295
Slavemaster а как работает B_RefreshArmor ? можно ли его починить?

Daedalus:
//////////////////////////////////////////////////////////////////////////
//    B_RefreshArmor
//    ==============
//    Wird einmal pro Spieltag um 0 Uhr vom Code aufgerufen!
//    Wurde frьher genutzt, um NSCs die ihrer Rьstung beraubt wurden, wieder
//    eine passende Rьstung dazuzuschummeln. Da der Spieler nun den NSCs
//    nicht mehr die Rьstung abnehmen kann, ist diese Funktion leer.
//
//    WICHTIG: Kцnnte aber zum Respawnen von irgendwelchen anderen Dingen
//    benutzt werden!
//////////////////////////////////////////////////////////////////////////
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.083
Благодарности
1.901
Баллы
320
MW 7, не знаю, а зачем её чинить?
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.003
Благодарности
971
Баллы
295
@MW 7, не знаю, а зачем её чинить?
кусок кода в моде немецком там находится и видимо никогда не вызывается. я сделал пока вот так
Daedalus:
var int NewDay2024;
func void B_NewDay()
{
    if NewDay2024 >= WLD_GETDAY()   { return; };

    NewDay2024 = WLD_GETDAY();
   
    Hlp_PrintConsole("B_NewDay");
    ....
};

func event GameLoop()
{
    B_NewDay();
   
    ....
   
};

но хотелось бы для себя разобраться с B_RefreshArmor
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.083
Благодарности
1.901
Баллы
320

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.003
Благодарности
971
Баллы
295
подскажите а как в данном случае вызвать оригинальную функцию?

C++:
    HOOK oCMobInter_OnTrigger PATCH(&oCMobInter::OnTrigger, &oCMobInter::zOnTrigger);
    void oCMobInter::zOnTrigger(zCVob*, zCVob*)
    {

        cmd << Z"oCMobInter:: zOnTrigger -> " << endl;
        //THISCALL(oCMobInter_OnTrigger)();
    }


    HOOK oCMobInter_OnUntrigger PATCH(&oCMobInter::OnUntrigger, &oCMobInter::zOnUntrigger);
    void oCMobInter::zOnUntrigger(zCVob*, zCVob*)
    {

        cmd << Z"oCMobInter:: zOnUntrigger -> " << endl;
        //THISCALL(oCMobInter_OnUntrigger)();
    }
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.862
Благодарности
6.742
Баллы
1.625
MW 7, убрать комментарии...
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.862
Благодарности
6.742
Баллы
1.625
еще варианты есть? :)
Ну тогда так:

C++:
    HOOK oCMobInter_OnTrigger PATCH(&oCMobInter::OnTrigger, &oCMobInter::zOnTrigger);
    void oCMobInter::zOnTrigger(zCVob* a, zCVob* b)
    {

        cmd << Z"oCMobInter:: zOnTrigger -> " << endl;
        THISCALL(oCMobInter_OnTrigger)(a,b);
    }


    HOOK oCMobInter_OnUntrigger PATCH(&oCMobInter::OnUntrigger, &oCMobInter::zOnUntrigger);
    void oCMobInter::zOnUntrigger(zCVob* c, zCVob* d)
    {

        cmd << Z"oCMobInter:: zOnUntrigger -> " << endl;
        THISCALL(oCMobInter_OnUntrigger)(c,d);
    }
 

Myszax

Участник форума
Регистрация
12 Май 2022
Сообщения
11
Благодарности
2
Баллы
40
Hi :)
I have (probably) simple question. How to open MENU_SAVEGAME_LOAD menu straight from Main Menu (after game is launched).
I just want to open this menu in code and use ForceSelAction() to load it.
C++:
ogame->LoadSavegame()
or
C++:
gameMan->Read_Savegame()
won't work here because they are trowing error in game.

My code inside Game_MenuLoop()
(slotNum) is determinated earlier, it could be 1 for expamle.
C++:
if (zinput->KeyToggled(KEY_F12)) {
    oCSavegameInfo* info = gameMan->savegameManager->GetSavegame(slotNum);
    auto menu = gameMan->menu_load_savegame;
    menu->m_mainSel = info->m_SlotNr + 8; // 8 beacause of headers etc.
    menu->m_selSlot = info->m_SlotNr; // to select slot
    menu->ForceSelAction(SEL_ACTION_CLOSE, "SAVEGAME_LOAD", menu->m_listItems[menu->m_mainSel]);
}
It works fine but i have to manually open Load menu in game.
What i try to achive is to after game is launched i just push F12 key to load game.
I tried menu->ScreenInit(); or menu->Enter(); but it does not work as I expected :p
menu->Run(); almost works but it opens menu in other thread? idk. it does not execude code until menu is closed, it does not matter what I choose in this menu (empty save slot, or good save slot) it always back to previous menu.
 

Myszax

Участник форума
Регистрация
12 Май 2022
Сообщения
11
Благодарности
2
Баллы
40
Thanks, but it's not exactly what I want :p
I'm testing this plugin on The Chronicles of Myrtana mod so when I'm trying to
C++:
ogame->LoadSavegame(slotNr, true)
or
C++:
gameMan->Read_Savegame(slotNr)
it's giving me this error:
Gothic2_pxbxPf9sr9.png

or Acces Violation crash.

Only
C++:
ogame->LoadSavegame(slotNr, FALSE)
works but it is not suppose how be, right?

As I said:
What I want to achive is: after game start (main menu) I want to press hotkey (F12 for example) and then it should automaticlly load game on slotNr.
Since ogame->LoadSavegame() and gameMan->Read_Savegame() not works I wanted to execute ForceSelAction() to avoid this problem.
Same thing that New Balance mod has. I'm just start game then press F12 and done. I don't have to manually select Load then seek for my slot.
I don't think hooking to Menu_Enter will do the trick. Anyway I tried something like this (just testing purpose):
C++:
void __fastcall zCMenu_Enter(zCMenu *menu);
CInvoke<void(__thiscall*)(zCMenu*)> ivkMenu_Enter(0x004DB780, zCMenu_Enter);

void __fastcall zCMenu_Enter(zCMenu* menu) {
    ivkMenu_Enter(menu);

    if (menu->name != "MENU_MAIN")
        return;
        
    int i;
    for (i = 0; i < menu->m_listItems.GetNum(); i++) {
        if (menu->m_listItems[i]->GetName() == "MENUITEM_MAIN_SAVEGAME_LOAD")
            break;
    }

    auto loadMenu = menu->m_listItems[i];
    menu->ForceSelAction(SEL_ACTION_STARTMENU, "MENU_SAVEGAME_LOAD", loadMenu);
}
But Load menu it's not open :/
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.083
Благодарности
1.901
Баллы
320
Try something like this:
C++:
namespace NAMESPACE
{
    Sub inMenu(ZSUB(GameEvent::MenuLoop), []
        {
            if (zCMenu* menu = zCMenu::GetActive())
                if (!menu->inGameMenu)
                    if (zKeyToggled(KEY_F12))
                    {
                        menu->m_exitState = zCMenu::BACK;
                        
                        for (zCMenu* subMenu : menu->menuList)
                            if (oCMenuSavegame* saveMenu = dynamic_cast<oCMenuSavegame*>(subMenu))
                                saveMenu->m_selSlot = 6;

                        gameMan->Read_Savegame(6);
                    }
        });
}
 
Сверху Снизу