Jak przekształcić funkcję C++ na Deadalus'a 2413 4

O temacie

Autor Siemekk

Zaczęty 21.11.2016 roku

Wyświetleń 2413

Odpowiedzi 4

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Edit:Literówka w temacie ><
Tak jak w temacie, jak to osiągnąć? Do wywołania funkcji C++ potrzebne są CALL_* oraz adresy. Co gdy w funkcji nie ma żadnego adresu, a sama funkcja jest w 100% w C++ ?
zCArray<zCModelNodeInst*> GetModelNodeList()
{
return *(zCArray<zCModelNodeInst*>*)(((char *)this) + 0x70);
};

zCModelNodeInst* SearchNodeA(zSTRING & node)
{
node.Upper();
zCArray<zCModelNodeInst*> arrNodeList = GetModelNodeList();
for(int i = 0; i < arrNodeList.GetSize(); i++)
if(!arrNodeList[i]->m_pNode->m_sName.Compare(node))
return arrNodeList[i];
return NULL;
};
Domyślam się, że najlepiej było by dobrać pointer do obiektu klasy zCModelNodeInst o nazwie "activeVobList_numInArray".
A potem przypisać do niego funkcję GetModelNodeList()
Reszta to zwykłe metody które w miarę potrafię przepisać na Ikarusa. Jednak nie wiem jak ogarnąć tą funkcję GetModelNodeList oraz pointer do Array.
 

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

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
Jedyne, czego potrzebujesz to pointer do arraya (na WoGu zapewne będzie parę geniuszów, którzy będą wiedzieli jaki) oraz poprawić troszkę tą funkcję (nie jestem pewien, czy się nie jebłem):

func int SearchNodeA (var string node)
{
node = STR_Upper(node);
var zCArray arr; arr = ArrayPointer;//Tutaj musisz dodać pointer do arraya
var int i; i = 0;

repeat(i, arr.numInArray);
//if(!arrNodeList[i]->m_pNode->m_sName.Compare(node)) <- Nie do końca ogarniam o co tu chodzi, ale raczej będzie tak:
var zString zNode; var zString zArrayString;
zNode = _^s(node);
zArrayString = arr.array;

if (zNode.ptr == zArrayString.ptr)
{
return arr.array; //arrNodeList[i];
};
end;
return 0;
};
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Dzięki xD ale mi by wystarczyła sama zmienna zCArray xD.
Mam teraz taki problem, i może @Splash masz taki sam... Otóż dzięki funkcji "SetNodeVisual() 0x005792A0" wiadomo co mogę zrobić jak nazwa wskazuje, zmienić visual dowolnej kości. Ale... Visual znika gdy wczytam grę :I Pisałem do "tych wyższych" czyli twórców AST ale powiedzieli że muszę zmienić Archiver NPC... To super ja idę do ukochanych adresów a tu... najgorsze co może być... Funkcja jest zablokowana. Domyślam się, że tu następuje coś czego nie potrafię MemoryProtectionOverride... Więc czy tylko dzięki temu mogę się dostać do archiva ?
virtual void __thiscall oCNpc::Archive(zCArchiver &)  0x00746470 0 6 protected: virtual void __thiscall oCNpc::Archive(zCArchiver
 

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

Splash

Splash

Moderator
posty4211
Propsy3414
ProfesjaNierób
  • Moderator
Cytuj
@Splash masz taki sam... Otóż dzięki funkcji "SetNodeVisual() 0x005792A0" wiadomo co mogę zrobić jak nazwa wskazuje, zmienić visual dowolnej kości. Ale... Visual znika gdy wczytam grę :I
To chyba oczywiste, że znika. Zmieniasz tylko wartość adresu w pamięci silnika. Jak chcesz żeby nie "znikało" musisz napisać system, który będzie reinicjować funkcję.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

Siemekk

Siemekk

Złote Wrota
posty2143
Propsy1154
ProfesjaProgramista
  • Złote Wrota
Problem w tym xD Że ja używam tej funkcji na zmiennych i Aivarach :lol: Chyba, że za pomocą tego fajnego pakietu na B(chyba bordcards) można to zreinitować :D
 

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


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