Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki - Woad

Strony: [1]
1
Skrypty / Hookowanie wzięcia przedmiotu z oCMobContainer
« dnia: 2021-05-31, 16:16 »
Hej Wszystkim,

Mam mały problem, z którym pewnie prędzej czy później sobie poradzę, ale może ktoś akurat ma większe doświadczenie albo robił coś podobnego. Szukałem tego pobieżnie, ale informacje są tak porozrzucane, że ciężko znaleźć gotowe rozwiązanie na forach.

Robię z użyciem LeGo i Ikarusa system, w którym wszechwiedzący Innos ocenia nasze czyny. I nie jak jakiś tam NPC, tylko widzi nawet to, czego nikt inny nie będzie w stanie dostrzec. W skrócie - globalnie. Podobne systemy są na pewno w innych modach.

Mam praktycznie wszystko gotowe - morderstwa npc i kradzieże vobów, z wyjątkiem jednej rzeczy - kradzieży ze skrzyń. Zdefiniowałem już condition, który będzie sprawdzał, czy dany oCMobContainer jest przez kogoś posiadany i nawet w celu debugowania podświetlam ich nazwy na czerwono. Wszystko śmiga.

Problemem jest to, że ni jak nie mogę znaleźć dobrej funkcji do zhookowania. Kombinowałem z oboma oCMobContainer::Remove i oCMobContainer::Insert i jeszcze parę innych, ale w ogóle się nie triggerują z tego co widzę podczas zwykłego wyciągania przedmiotu. Myślałem, że coś nie tak robię podczas hookowania, że jest gdzieś problem w kodzie, ale wszystko wskazuje na to, że używane przeze mnie funkcje po prostu się akurat wtedy nie wywołują. Żadne debugi na ekranie, nic nie przechodzi, a ten sam kod podpięty do DoTakeVob daje zadowalajace rezultaty.

To próbki hooków, które nic mi nie dają. Oczywiście zostały umieszczone w init itp.

func void Hook_oCMobContainer__Remove()
{
const int oCMobContainer__Remove = 7495808; //0x0726080
HookEngineF (oCMobContainer__Remove, 10, EVT_MobContainerRemove);
};

func void Hook_oCMobContainer__Remove()
{
const int oCMobContainer__Remove = 7495664; //0x0725FF0
HookEngineF (oCMobContainer__Remove, 6, EVT_MobContainerRemove);

};

Ma ktoś jakiś pomysł, co warto by zhookować? Potrzebuję na pewno dostępu do oCItem i oCMobContainer. Dostęp do podnoszącego oCNpc byłby na duży plus.

EDIT:

Dobra, sprawa częściowo rozwiązana. Chyba do zamknięcia. Jakby ktoś był ciekawy, to użyłem oCItemContainer::Remove. Wada jest taka, że nie miałem w ten sposób dostępu do oCMobContainer. Ominąłem to pobierając focus gracza jako container.

Jedynym problemem jest teraz tylko to, że przy przyspieszonym zabieraniu funkcja Remove jest wywoływana mniejszą liczbę razy i jak przytrzymamy mysz, to źle oblicza wartość skradzionych dóbr, bo przerzuca kilka itemów na raz. Poszukam, czy da się temu zaradzić.

2
Witajcie. Jako wielki fan starej czcionki postanowiłem przerobić pliki i podmieniłem tą główną na tą z G2NK. To niby drobnostka, ale stwierdziłem, że wrzucę pliczek. Najwyżej mnie za to zbijecie. Może komuś się przyda. Pozdrawiam.

Screeny:
Spoiler



Czcionka działa z AB i jego spolszczeniem.

Wrzucamy do folderu Data


Strony: [1]
Do góry