dimanche 23 mars 2014

[Question] FNameEntry error topic




Hi, all...

I'm having trouble trying to get an SDK in APB:BR.

I'm using the Feckless tutorial.

Using the correct GNames address, I had to make a small change
in FNameEntry struct.

I do not know if it's the right way, but I get the values ​​in NamesDump.

This is the image of the GNames in ReClass




PHP Code:







struct FNames
{
    
char Name            ];
};

struct FNameEntry
{
    
UCHAR    Unknown        0x10 ];    
    
FNames  Names;
}; 









Although the first 3134 names appear with strange characters, I get a good part of
strings.


Code:


NamesDump
[...cut...]
Name[003130] ,ç¼
Name[003131] dç¼
Name[003132] œç¼
Name[003133] Ôç¼
Name[003134] øç¼
Name[003135] PreEngineTick
Name[003136] PostEngineTick
Name[003137] FrameEndSync time
Name[003138] Progression Fixups
Name[003139] Tick Time
Name[003140] EstimateMemoryUsage Time
Name[003141] UpdateRequestedLODs Time
Name[003142] GetWantedLODs Time
Name[003143] Feature UpdateResourceStreaming time
Name[003144] Anti-Hack Outfit Items
Name[003145] AcStorageInventory::UpdateAvailabilities
Name[003146] AcStorageInventory::LoadFrom
Name[003147] AcStorageInventory::LoadItemFlagsFrom
[...cut...]


The problem is that UClass :: StaticClass () always returns NULL.


PHP Code:







void ProcessPackages()
{
    
// create packages array
    
vectorUObject* > vPackages;
    
    
// loop objects and process packages
    
for ( int i 0UObject::GObjObjects()->Num(); i++ )
    {

        
// get object
        
UObjectpObject UObject::GObjObjects()->Data];
        
        if ( ! 
pObject )
            continue;
        

        if ( 
pObject->IsA UClass::StaticClass() ) )//UClass::StaticClass returns NULL
        
{

            
//...code cut... 









The UClass::StaticClass() uses UObject::FindClass("Class Core.Class"),
not correctly returns strings.


PHP Code:







UClassUObject::FindClass charClassFullName )
{
    while ( ! 
UObject::GObjObjects() )
        
Sleep ); //aqui era 100

    
while ( ! FName::Names() )
        
Sleep ); //aqui era 100
    
    
for ( int i 0UObject::GObjObjects()->Count; ++)
    {
        
UObjectObject UObject::GObjObjects()->Data];
        
        if ( ! 
Object )
            continue;

        
//
        
Log("[UObject::FindClass] Object->GetFullName() %s"Object->GetFullName());
        
//

        
if ( ! _stricmp Object->GetFullName(), ClassFullName ) )
            return (
UClass*) Object;
    }

    return 
NULL;










This is the log from Object->GetFullName()


Code:


[UObject::FindClass] Object->GetFullName() (null)
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.cBulkDataCollection
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.hQ¼
[UObject::FindClass] Object->GetFullName() hQ¼ P¼.Default__Object
[UObject::FindClass] Object->GetFullName() cBulkDataCollection P¼.Default__cBulkDataCollection
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.cStatWatchManager
[UObject::FindClass] Object->GetFullName() cStatWatchManager P¼.Default__cStatWatchManager
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.cAPBCoreSDDStructs
[UObject::FindClass] Object->GetFullName() cAPBCoreSDDStructs P¼.Default__cAPBCoreSDDStructs
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.cAPBCoreSDD
[UObject::FindClass] Object->GetFullName() cAPBCoreSDD P¼.Default__cAPBCoreSDD
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.pQ¼
[UObject::FindClass] Object->GetFullName() pQ¼ P¼.Default__TextBuffer
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.tˆ
[UObject::FindClass] Object->GetFullName() ÄT¼ P¼.œQ¼
[UObject::FindClass] Object->GetFullName() œQ¼ P¼.Default__Subsystem
[UObject::FindClass] Object->GetFullName() tˆ P¼.Default__System
[UObject::FindClass] Object->GetFullName() 0O¼ P¼.tˆ .StaleCacheDays
[UObject::FindClass] Object->GetFullName() 0O¼ P¼.tˆ .MaxStaleCacheSize
[UObject::FindClass] Object->GetFullName() 0O¼ P¼.tˆ .MaxOverallCacheSize
[UObject::FindClass] Object->GetFullName() 0O¼ P¼.tˆ .PackageSizeSoftLimit
[UObject::FindClass] Object->GetFullName() LO¼ P¼.tˆ .AsyncIOBandwidthLimit
[UObject::FindClass] Object->GetFullName() àO¼ P¼.tˆ .SavePath
[UObject::FindClass] Object->GetFullName() àO¼ P¼.tˆ .CachePath
[UObject::FindClass] Object->GetFullName() àO¼ P¼.tˆ .CacheExt
[UObject::FindClass] Object->GetFullName() àO¼ P¼.tˆ .ScreenShotPath
//... cut ...


The whole problem is FNameEntry struct, could someone help me with this struct?

Thanks for help.





Aucun commentaire:

Enregistrer un commentaire