"Goły" Daedalus i masowe wyrabianie przedmiotów 1954 6

O temacie

Autor Czudak

Zaczęty 21.05.2019 roku

Wyświetleń 1954

Odpowiedzi 6

Czudak

Czudak

Użytkownicy
posty141
Propsy60
ProfesjaSkrypter
  • Użytkownicy
Moduję Gothica 2 NK pod kątem masowego (x1 - wszystko) wyrabiania przedmiotów (kucie broni, warzenie mikstur, właściwie wszystko oprócz rycia run). Niestety, animacje mają to do siebie że tworzą dodatkowy obiekt potrzebny do operowania danym punktem wyrabiania, przetrzymując go w "wirtualnym slocie", a który później pojawia się w ekwipunku, jeśli funkcje tworzenia nie traktują wszystkiego pojedynczo, jak w oryginalnym Gothicu 2, gdzie można kontrolować ostateczną ilość obiektów po jednym naraz.

Nie zmieniając samych animacji (usuwając przedmiot tutaj nie musiałbym się babrać w skryptach, ale wyglądałoby to niewyjściowo), próbowałem od zatrzęsienia zmiennych w różnych miejscach w samych skryptach, ale po dwóch dniach kombinacji muszę się poddać, bo zawsze wychodzi mi o jeden obiekt za dużo/mało w ostatecznym rozrachunku, nieważne jakbym próbował to ogarnąć.

Stąd pytanie: czy ktoś wie, widział albo zna modyfikację, w której autorzy ten problem rozwiązali, ale bez pomocy BNów i zachowując oryginalne animacje? Może być mod z Ikarusem, LeGo, czy nawet AST. Może być samouczek z tym zagadnieniem (nie widziałem takiego w wynikach wyszukiwania), a który potrzebuje wspomnianych pakietów skryptowych lub Agamy.
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
Spróbuj podpiąć się pod funkcję opuszczania oCMobIntern, jeżeli taka istnieje. Jeśli nie, to hook na oCMobIntern::StopInteract (czy jakoś tak) i w tym momencie usuwaj co tam potrzebujesz ;)
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Czudak

Czudak

Użytkownicy
posty141
Propsy60
ProfesjaSkrypter
  • Użytkownicy
O, wielkie dzięki.

*Szuka informacji o funkcji oCMobIntern.*

Mogliby tego Uniona już wypuścić...
 

Siemekk

Siemekk

Złote Wrota
Untersturmfuhrer
posty2143
Propsy1151
ProfesjaProgramista
  • Złote Wrota
  • Untersturmfuhrer
W Unionie wyglądałoby to tak:
// C++
//0x00721C20 public: virtual void __thiscall oCMobInter::StopInteraction(class oCNpc *)
void __fastcall hStopInteraction (oCMobInter*, void*, oCNpc*);
CInvoke<void(__thiscall*)(oCMobInter*, oCNpc*)> pStopInteraction(0x00721C20, IvkTargetVer(hStopInteraction, Engine_G2A), IVK_AUTO);
void __fastcall hStopInteraction (oCMobInter* _this, void*, oCNpc* pSelf)
{
if(pSelf == player)
{
int idx = parser->GetIndex("U_StopInteraction");
if(idx != -1) parser->CallFunc(idx, pSelf, _this);
}
pStopInteraction(_this, pSelf);
}

// And Gothic script:
func void U_StopInteraction(var C_Npc slf, var oCMobInter mob)
{
// Co chcesz :)
};
Wypadałoby jeszcze znać strukturę klasy, ale w Unionie masz wszystko!
 

P.S A Splash w szafie i nie ma psychy by mi dać bana.

Cruc

Cruc

Użytkownicy
posty666
Propsy232
Profesjabrak
  • Użytkownicy
Super. Szkoda tylko, że oprócz Ciebie nikt nie ma Uniona xd
 
while (!success) try{...}

Najlepszy modder od gothic multiplayer - polecam pytać go o wszystko!

bogu9821

bogu9821

Użytkownicy
posty404
Propsy185
ProfesjaProgramista
  • Użytkownicy
W Unionie wyglądałoby to tak:
// C++
//0x00721C20 public: virtual void __thiscall oCMobInter::StopInteraction(class oCNpc *)
void __fastcall hStopInteraction (oCMobInter*, void*, oCNpc*);
CInvoke<void(__thiscall*)(oCMobInter*, oCNpc*)> pStopInteraction(0x00721C20, IvkTargetVer(hStopInteraction, Engine_G2A), IVK_AUTO);
void __fastcall hStopInteraction (oCMobInter* _this, void*, oCNpc* pSelf)
{
if(pSelf == player)
{
int idx = parser->GetIndex("U_StopInteraction");
if(idx != -1) parser->CallFunc(idx, pSelf, _this);
}
pStopInteraction(_this, pSelf);
}

// And Gothic script:
func void U_StopInteraction(var C_Npc slf, var oCMobInter mob)
{
// Co chcesz :)
};
Wypadałoby jeszcze znać strukturę klasy, ale w Unionie masz wszystko!

Siemekk, draniu daj Uniona. #FreeUnion  :trollface: :ok:
 
while(false) Do();

Czudak

Czudak

Użytkownicy
posty141
Propsy60
ProfesjaSkrypter
  • Użytkownicy
Okej. Po zastosowaniu matematyki i rozpisaniu układu równań z trzema niewiadomymi udało mi się osiągnąć zamierzony cel bez zastosowania pakietów skryptowych lub Agamy. Jak Union wyjdzie to przepiszę wszystko na AST.

Temat do zamknięcia.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry