Mod do gry. Poszukiwanie funkcji(?) odpowiedzialnej za...

0

Hej,

Chcę stworzyć moda do gry. Przemodelować z własną grafiką ekran ekwipunku.
Gra jest w wersji ulepszonej (enhanced), co dodaje nowe funkcjonalności i jak mniemam zmienia kod gry.

Na poprzedniej wersji gry (oryginalnej) zostało to przez kogoś zrobione:

iM4vo3C.jpg

Chodzi mi o uzyskanie takiego efektu jak powyżej, aby inventory nie zasłaniało świata gry.

Normalnie tak to wygląda:

Przechwycenie obrazu ekranu_2023-01-27_11-27-34.jpg

Bez problemu da się edytować tło ekwipunku (ścisnąłem na test tło, w UI.menu):

Przechwycenie obrazu ekranu_2023-01-27_11-28-25.jpg

Lecz zostaje czarny layout pod spodem.

Chciałbym podpowiedz jak można sprawdzić/namierzyć co jest odpowiedzialne za to czarne "tło tła".

Owszem bawiłem się programami: Ghidra, gdb, radare2 - ale jestem zielony, wsteczna inżynieria i patchowanie plików wykonywalnych jest ponad me siły.
Ciekawe czy w ogóle gra umożliwia taki zabieg xD.

Gdb wyrzuciło mi parę funkcji, ale to tylko spis:
gdb1.txt

Każda pomoc i opinia mile widziana...

Dziękuję.

0

Postanowiłem wrócić do tematu.

Jest pewien postęp, ale mam problem z czytaniem id slotów przez ui.menu a mianowicie gdy inventory jest na świecie gry, każdy item podnoszony jest spod 1 postaci.

Tak wygląda przykładowy oryginalny slot w ekwipunku bez przeróbek, dla broni.

slot {name "slot_inv_1" area 191 250 40 40	bam "SLOTSWRD"	sequence 0	slotinfo "characters[id].equipment.weapon0"  	 highlight selected 1}

W pewnym, innym modzie (ale nie z inv na świecie gry) jest (podobna) funkcja:

function updateSlots2()
	charTable = {}
	local curCharId = id
	--local charTable = {}

	local CharId1 = id
	Infinity_UpdateLuaStats()
	table.insert(charTable, CharId1)
	
	local CharId2 = id
	Infinity_UpdateLuaStats()
	if Infinity_GetNumCharacters() > 1 then
	table.insert(charTable, CharId2)
	end
	
	local CharId3 = id
	Infinity_UpdateLuaStats()
	if Infinity_GetNumCharacters() > 2 then
	table.insert(charTable, CharId3)
	end

	local CharId4 = id
	Infinity_UpdateLuaStats()
	if Infinity_GetNumCharacters() > 3 then
	table.insert(charTable, CharId4)
	end
	
	local CharId5 = id
	Infinity_UpdateLuaStats()
	if Infinity_GetNumCharacters() > 4 then
	table.insert(charTable, CharId5)
	end

	local CharId6 = id
	Infinity_UpdateLuaStats()
	if Infinity_GetNumCharacters() > 5 then
	table.insert(charTable, CharId6)
	end
end

A działający slot wygląda przykładowo:

slot {name "slot_inv_1"		area 191 250 40 40	slotinfo "characters[charTable[1]].equipment.weapon0" enabled "Infinity_GetNumCharacters() > 0" bam "SLOTSWRD"	sequence 0	 highlight selected 1}

A więc wystarczyłoby zmienić charTable[2] oraz GetNumCharacters() > 1 - to powinno być tyle dla itemów z 2 postaci.

Niestety w tym przypadku to nie trybi. O ile UpdateLuaStats() działa, to ID kompletnie jest obojętne... Podnosi przedmioty jedynie z 1 postaci - jak już wspomniałem wcześniej.

Zdaję sobie sprawę, że ciężko będzie "wyczarować" odpowiedz, ale może ktoś ma pojęcie jak to ID wyedytować, lub tę funkcję ??

EDIT:
Zagadnąłem do człowieka, który moduje te gry, zrobił patch do exe, czarnej warstwy już nie ma, więc po problemie ;).

1 użytkowników online, w tym zalogowanych: 0, gości: 1