Type, class, and property names are no longer stored as strings. The engine uses the DJB2 hash function to generate unique hashes (an exception is raised in case of a hash collision).
There are three functions:
- ASCII
Code:unsigned long __stdcall djb2a(char const * name) { unsigned long hash = 5381; if (name) while (*name) hash += (hash << 5) + *name++; return hash; }- Unicode:
Code:unsigned long __stdcall djb2w(wchar_t const * name) { unsigned long hash = 5381; if (name) while (*name) hash += (hash << 5) + *name++; return hash; }- and a special one that is lowercase and ignores everything from '%' and the following character to the next '.' (therefore ignoring case and "tags" in file names):
Code:unsigned long __stdcall djb2x(char const * name) { if (!name) return 0; { unsigned long hash = 5381; while (*name) { if ('%' == *name) { if (!*++name) return hash; while (*++name) if ('.' == *name) break; } hash += (hash << 5) + tolower(*name++); } return hash; } }
The hash values of registered run-time types and enumeration names are listed in post #26.
The values of registered run-time enumeration names are listed in post #25.
Let's have a look at the "compiled headers" format (*.whdr)As you might notice there is no longer a string table in the archive. And the object persistence has changed a bit.Code:ArchiveHeader { char8_t Magic[4]; // "GAR3" uint32_t _reserved; // 0x00000000 } char8_t Magic[4]; // "GH15" uint32_t Count; for( Count ) { Name { uint16_t Length; char8_t String[Length]; } char8_t ClassRevision[4]; uint23_t DataSize; uint32_t DataOffset; uint16_t _unknown1; uint32_t RawDateTime[2]; // FILETIME with high/low swapped uint32_t _unknown2[2]; uint32_t _unknown3[2]; // FILETIME with high/low swapped uint32_t TimeLastModified[2]; // FILETIME with high/low swapped Object { char8_t Magic[4]; // "GEC0" uint32_t ClassHash; uint16_t Version; uint32_t PropSize; uint32_t DataSize; Prop { uint32_t Size; { uint16_t Count; for( Count ) { uint32_t TypeHash; uint32_t NameHash; uint32_t Size; uint8_t Data[Size]; } } } Data[] { uint32_t ClassHash; uint16_t Version; uint32_t Size; uint8_t Data[Size]; } } }
Two resource formats:
- Compiled Images (*._ximg):
Code:ArchiveHeader { char8_t Magic[4]; // "GAR3" uint32_t _reserved; // 0x00000000 } ResourceHeader { char8_t Magic[4]; // "GR01" char8_t ClassRevision[4]; uint32_t ObjectOffset; uint32_t ObjectSize; uint32_t DataOffset; uint32_t DataSize; uint64_t RawDateTime; // (FILETIME) char8_t RawFileExt[8]; // ".dds", ".png", ".tga" } ResourceObject { char8_t Magic[4]; // "GEC0" uint32_t ClassHash; // 0x251EC780 -> "class eCImageResource2" uint16_t Version; // 0x0001 uint32_t PropSize; uint32_t DataSize; Prop { uint32_t Size; { // 0x0B888030, 0x0E60A085, 0x00000004 { 0x________ } -> "int" "Width" // 0x0B888030, 0xB73174BE, 0x00000004 { 0x________ } -> "int" "Height" // 0xB23C93CD, 0x3EA71CD5, 0x00000004 { 0x________ } -> "unsigned int" "SkipMips" // 0x9A8892EC, 0x35F9A530, 0x00000008 { 0x________, 0x________ } -> "enum eEColorFormat" "PixelFormat" // 0xA09E2086, 0x00000000 -> "eEColorFormat_Unknown" // 0xC43B9B72, 0x00000015 -> "eEColorFormat_A8R8G8B8" // 0xFE25BBA9, 0x00000016 -> "eEColorFormat_X8R8G8B8" // 0xE317BC19, 0x00000018 -> "eEColorFormat_X1R5G5B5" // 0xA92D9BE2, 0x00000019 -> "eEColorFormat_A1R5G5B5" // 0x900A3562, 0x0000001A -> "eEColorFormat_A4R4G4B4" // 0x05580235, 0x0000006F -> "eEColorFormat_R16F" // 0xD8D4A203, 0x00000070 -> "eEColorFormat_G16R16F" // 0x0F978AB4, 0x00000071 -> "eEColorFormat_A16B16G16R16F" // 0x05580A33, 0x00000072 -> "eEColorFormat_R32F" // 0xDD36993F, 0x00000073 -> "eEColorFormat_G32R32F" // 0x985EF62C, 0x00000074 -> "eEColorFormat_A32B32G32R32F" // 0x0550FE97, 0x31545844 -> "eEColorFormat_DXT1" // 0x0550FE98, 0x32545844 -> "eEColorFormat_DXT2" // 0x0550FE99, 0x33545844 -> "eEColorFormat_DXT3" // 0x0550FE9A, 0x34545844 -> "eEColorFormat_DXT4" // 0x0550FE9B, 0x35545844 -> "eEColorFormat_DXT5" uint16_t Count; for( Count ) { uint32_t TypeHash; uint32_t NameHash; uint32_t Size; uint8_t Data[Size]; } } } Data { eCImageResource2 { uint32_t ClassHash; // 0x251EC780 -> "class eCImageResource2" uint16_t Version; // 0x0001 uint32_t Size; // 0x00000020 uint8_t Data[Size]; } eCResource2 { uint32_t ClassHash; // 0x7BF929DD -> "class eCResource2" uint16_t Version; // 0x0001 uint32_t Size; // 0x00000000 uint8_t Data[Size]; } bCObjectBase { uint32_t ClassHash; // 0x84ADA072 -> "class bCObjectBase" uint16_t Version; // 0x0001 uint32_t Size; // 0x00000000 uint8_t Data[Size]; } } } ResourceData { ArchiveHeader { char8_t Magic[4]; // "GAR3" uint32_t _reserved; // 0x00000000 } // "DDS " + DDSURFACEDESC2 uint8_t Surface[ResourceHeader.DataLength - sizeof(ArchiveHeader)]; }- Compield Sounds and Music (*._xsnd):
Notice that the resource data format has been changed from MP3 to RIFF WAVE.Code:ArchiveHeader { char8_t Magic[4]; // "GAR3" uint32_t _reserved; // 0x00000000 } ResourceHeader { char8_t Magic[4]; // "GR01" char8_t ClassRevision[4]; uint32_t ObjectOffset; uint32_t ObjectSize; uint32_t DataOffset; uint32_t DataSize; uint64_t RawDateTime; // (FILETIME) char8_t RawFileExt[8]; // ".wav" } ResourceObject { char8_t Magic[4]; // "GEC0" uint32_t ClassHash; // 0x88E0CA06 -> "class eCSoundResource2" uint16_t Version; // 0x0001 uint32_t PropSize; uint32_t DataSize; Prop { uint32_t Size; { // 0xB23C93CD, 0x7C9663EB, 0x00000004 { 0x________ } -> "unsigned int" "Duration" // 0xF9CBA7A0, 0x0D2E96B2, 0x00000001 { 0x__ } -> "unsigned char" "Flags" uint16_t Count; for( Count ) { uint32_t TypeHash; uint32_t NameHash; uint32_t Size; uint8_t Data[Size]; } } } Data { eCSoundResource2 { uint32_t ClassHash; // 0x88E0CA06 -> "class eCSoundResource2" uint16_t Version; // 0x0001 uint32_t Size; // 0x00000000 uint8_t Data[Size]; } eCResource2 { uint32_t ClassHash; // 0x7BF929DD -> "class eCResource2" uint16_t Version; // 0x0001 uint32_t Size; // 0x00000000 uint8_t Data[Size]; } bCObjectBase { uint32_t ClassHash; // 0x84ADA072 -> "class bCObjectBase" uint16_t Version; // 0x0001 uint32_t Size; // 0x00000000 uint8_t Data[Size]; } } } ResourceData { ArchiveHeader { char8_t Magic[4]; // "GAR3" uint32_t _reserved; // 0x00000000 } // RIFF WAVE uint8_t Sound[ResourceHeader.DataLength - sizeof(ArchiveHeader)]; }
And finally the Document Archives (data/compiled/library/compiled_*.bin - without compiled_achievements.bin):Code:ArchiveHeader { char8_t Magic[4]; // "GAR3" uint32_t _reserved; // 0x00000000 } char8_t Magic[4]; // "DOC5" uint32_t InfoSize; Info { uint32_t Count; for( Count ) { uint16_t Version; uint32_t RawDateTime[2]; // FILETIME with high/low swapped RawFileName { uint16_t Length; char8_t String[Length]; } } } Data { uint32_t Count; // Info.Count for( Count ) { char8_t Magic[4]; // "GEC0" uint32_t ClassHash; uint16_t Version; uint32_t PropSize; uint32_t DataSize; Prop { uint32_t Size; { uint16_t Count; for( Count ) { uint32_t TypeHash; uint32_t NameHash; uint32_t Size; uint8_t Data[Size]; } } } Data[] { uint32_t ClassHash; uint16_t Version; uint32_t Size; uint8_t Data[Size]; } } }
Best regards,
Nico
Ergebnis 1 bis 20 von 38
-
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- ConnorGeändert von NicoDE (14.06.2012 um 08:55 Uhr) Grund: archive and object layout updated
-
Hi, I'm really a noob at this subject. Would it be much work to update your ximg to dds converter for Risen 2?
3.1415926535
Blog
-
Here is the list of all currently unknown hashes (they are not present in your list) what we can meet while reading *.bin files (count = 513). Property names & types hashes:
Spoiler:(zum lesen bitte Text markieren)
Code:0x1022FBEE 0x126E270C 0x13019899 0x13780941 0x13AE0AB3 0x1463DDAA 0x1468E2B0 0x156B8B 0x15F3A1DA 0x1639C14B 0x1639C14C 0x164F458C 0x164F458D 0x16656265 0x17B0799D 0x17B0799E 0x18455B3C 0x18FBC010 0x18FD6E99 0x190E0022 0x19837974 0x19BADFC 0x1A864B96 0x1B6E7B79 0x1B883ED4 0x1BF81DAB 0x1C57897C 0x1C6A9767 0x1DF4CABB 0x1E13EECB 0x1E5D9285 0x1EE606C2 0x20249079 0x20B5FF26 0x20D700B3 0x20D98DBC 0x218EE45A 0x2394C2B5 0x240435D1 0x243F8DA 0x24659CAE 0x250E5D05 0x257F606F 0x2601E61 0x27DF1934 0x28E759BF 0x2A6A87EB 0x2B5BFCEC 0x2B96F79 0x2BAF2DE9 0x2BC86C04 0x2C283334 0x2CA23173 0x2CCBD76D 0x2CCBD76F 0x2CD6A1D6 0x2D64F612 0x2DE4DD1D 0x2F07592A 0x2F268055 0x2F86D63D 0x2F9E86BA 0x2FD94859 0x31D7CB48 0x31F07C3E 0x31F6AF0A 0x3207D6DC 0x32842B28 0x32D50CF8 0x33009E3A 0x33A30465 0x33A51E21 0x33C4C0B 0x34236AB7 0x348F6595 0x34AA0EDA 0x35967549 0x3651B2FF 0x366D834B 0x36E67281 0x37118166 0x3797805 0x38A06961 0x38A06A5F 0x39099523 0x3984E9A7 0x39C1B9C2 0x39FD087A 0x3B26915E 0x3BDB4022 0x3BEE4F96 0x3C3571F1 0x3C833237 0x3CCE651A 0x3DBB5852 0x3DF36725 0x3E95AD7B 0x3EFD069B 0x3F0D3184 0x3F721FD8 0x3F94C5A1 0x40BB2C 0x41E9114C 0x420E098F 0x42B6678C 0x44BC1AF6 0x458017E3 0x471BC421 0x4796F772 0x48086FB1 0x4813C530 0x4813C531 0x48FBAA5A 0x49D63EAC 0x49DFB497 0x4A3AEDF3 0x4B9CE777 0x4BCF1B78 0x4CAE843A 0x4CB01CB7 0x4CB8E343 0x4DCD0769 0x4DDD7F 0x4EC91816 0x4F780F6A 0x4FA0D25A 0x4FC18155 0x4FC18157 0x50DD76B0 0x50F07155 0x51DE9A02 0x526F4C83 0x5272BD20 0x53AC847A 0x543E093F 0x555E01C 0x55E3ECC4 0x56338F24 0x563670BE 0x56EE9993 0x576C4C73 0x583C7D0A 0x5882E5BA 0x59047BC3 0x5973F2 0x59CC4D7F 0x5C30DA74 0x5C30DB72 0x5CBCF577 0x5CF11F62 0x5D393FC4 0x5D6C0E43 0x5DFE9E35 0x5F069E93 0x5FBBD5FD 0x60DE09BB 0x61056DD9 0x612DA318 0x61517A34 0x61C3724A 0x62619FE9 0x63D2E144 0x64A72730 0x64E07943 0x653EBBCE 0x654FFB84 0x658684C8 0x659B0744 0x65ED4CD3 0x65EDB86B 0x663B2097 0x664BD5E6 0x6692749B 0x67919B95 0x67B717F5 0x680A9DEE 0x6810BA43 0x694CF1FE 0x696C7130 0x69D82D45 0x69FB9E7E 0x6A2B3B15 0x6A346635 0x6B40C7E2 0x6B725200 0x6C53542C 0x6CC15276 0x6D65D86 0x6D7A6358 0x6E153080 0x70EB1DCE 0x71475B4A 0x71FA7671 0x7217CA24 0x721BEF4A 0x72A9F7C7 0x72F27745 0x73354084 0x736FD4B1 0x74594308 0x750282A0 0x76898F87 0x770D854A 0x77E67AD9 0x781796DC 0x783CE3E2 0x783EC5CB 0x78728605 0x7A891A25 0x7AFACAB0 0x7BEFC75E 0x7C843EA6 0x7C898026 0x7C8BED82 0x7C8C61C0 0x7C8D30E7 0x7C9663EB 0x7C99E516 0x7DAC5E26 0x7DE7FA18 0x7EA655B6 0x80E5E57C 0x812C9EAB 0x816F90FF 0x827AC691 0x82A9C010 0x82B0C3D3 0x834D384A 0x8351396A 0x83671151 0x83D7D9EE 0x83FE00A9 0x845EE23E 0x84AA2147 0x84AD1A1A 0x857FD083 0x86EE7739 0x86F535C9 0x87B40937 0x8934C406 0x8959773C 0x89A7C004 0x8A316065 0x8AAB23E1 0x8AEF19EF 0x8AFE3221 0x8BCCED9C 0x8C0A5537 0x8C8833DF 0x8CC402CC 0x8D19B7FC 0x8D19B7FD 0x8D851D8F 0x8E761637 0x8F12A561 0x905FE3E1 0x90B66882 0x90E3DC0E 0x917ADA78 0x917CBC40 0x918D88B2 0x91B37C43 0x924CDC47 0x94BCD98C 0x9543CCA4 0x95A3C786 0x96A078DD 0x96B34B6E 0x9783064F 0x98E8DA35 0x992B4363 0x99649D8 0x9A7DE97 0x9A7DE98 0x9A8CCC6B 0x9AC70630 0x9C2FD21D 0x9CB1A9B9 0x9CB1F00C 0x9D88B7BB 0x9EB93183 0x9EDE0595 0x9F5D49 0xA0417C92 0xA091739F 0xA0A43A38 0xA1584D06 0xA1915ED4 0xA2A8EA52 0xA48F2B7E 0xA4E2DC38 0xA5C13938 0xA5CCE43E 0xA60C9641 0xA62FA6A2 0xA6650126 0xA69D4765 0xA6B14623 0xA6B1ADF7 0xA6BF39C1 0xA6BF52D1 0xA757B002 0xA7742CD6 0xA77E51E6 0xA7DBD3CF 0xA83E6117 0xA9481180 0xA98103C2 0xA9E75DF5 0xA9EC5843 0xAA20F449 0xAA43C20 0xAA4FB922 0xAAE072F4 0xAB40E961 0xAB5867D3 0xABCD3124 0xACAE5503 0xAD3FA7AB 0xADCB0982 0xAE1DF207 0xAE2660B3 0xAF72520E 0xAF8CF73B 0xAF8E082E 0xAFA474BD 0xB00AF5B7 0xB01D4366 0xB025FB49 0xB14B1319 0xB17EB1FE 0xB244C02A 0xB2B57DAF 0xB2E2C3A2 0xB33DB081 0xB4492522 0xB531F622 0xB56FDA96 0xB65A935F 0xB68C2AD1 0xB79C2617 0xB87A6912 0xB888030 0xB8D43AA7 0xB94CD98C 0xB94CD98D 0xB9531FD6 0xB999589F 0xB9FF5434 0xBA791753 0xBAD52E13 0xBBDF3F13 0xBBFB2310 0xBC89636E 0xBCF9B9B 0xBD667679 0xBD97B471 0xBEB630AB 0xBEC2257D 0xBEED1460 0xBF6AEEAC 0xC038AB0C 0xC0BBE2EE 0xC0EFDE8 0xC115DC62 0xC1920681 0xC1D1E8EC 0xC2006FF 0xC2C0C577 0xC2E7C9A3 0xC33DDE86 0xC378A17B 0xC3B38680 0xC3BB5F3A 0xC3C7EBE8 0xC3F0E990 0xC41FD1FD 0xC44FFAC2 0xC4851E7C 0xC4B4DE9A 0xC4B9B555 0xC4DFB20B 0xC63308D3 0xC71F678D 0xC74F1893 0xC816FF76 0xC8258306 0xC8EAE13A 0xC9211886 0xC921EDBF 0xC930724C 0xC9754BD3 0xC991324F 0xC9973F6F 0xCA5FAF5A 0xCAF5943D 0xCC501049 0xCD129742 0xCD71BD4C 0xCDDF93C4 0xCE8C24AB 0xCF3D5F90 0xCF3D6014 0xCFD935E 0xD06A9CD 0xD1140839 0xD1243314 0xD180FBA1 0xD1944B3A 0xD1E57929 0xD228C45D 0xD28CAA69 0xD336A224 0xD337C917 0xD383B440 0xD3ADAC8 0xD412F416 0xD4FA02CE 0xD515B8B 0xD56C098 0xD5F45232 0xD5FEB807 0xD61F5083 0xD61F5084 0xD61F5085 0xD656C88 0xD6758E62 0xD8CBCF3C 0xD97D5597 0xDA7FE0FC 0xDAD24B24 0xDB46DE73 0xDB491C15 0xDBC3890F 0xDBF94EA9 0xDC62B309 0xDD19F533 0xDD20858C 0xDD50FAC7 0xDD7B270 0xDDC33DB9 0xDE522D50 0xDE984F5F 0xDF118E6B 0xDF9D1DA7 0xDFAA637 0xE01234C6 0xE031B3F9 0xE044229A 0xE088813 0xE0F668D3 0xE0FFDD67 0xE1C1776 0xE2632AB 0xE326E01D 0xE3B0DB8C 0xE3D7B8A3 0xE3E0DDF6 0xE41A12D5 0xE452CCA6 0xE4702EEB 0xE474653E 0xE4A4595 0xE5304380 0xE577F41D 0xE5D675B8 0xE5D675B9 0xE61A1F69 0xE6A90F4E 0xE728CA0A 0xE86DEDCC 0xE8D82793 0xEA1412F4 0xEA6A7D63 0xEA9A9958 0xEBF4F8CC 0xEC657BD9 0xED3ED6C8 0xEE0B9B3 0xEF92F11E 0xEFB45A7B 0xEFC9735F 0xF055F74C 0xF0FD12DA 0xF0FD13D8 0xF34D2837 0xF395119C 0xF3BF546D 0xF4F53B7A 0xF57CC26F 0xF5FCC0B2 0xF619C33B 0xF61A0EFA 0xF6310006 0xF6313775 0xF6A73149 0xF71E19B 0xF786B475 0xF8003ABC 0xF81A37CB 0xF81AEE65 0xF89CD1AF 0xF94BE3CE 0xF9BAF36D 0xFA8A089E 0xFB0C3B19 0xFBCFF8DE 0xFBEFF458 0xFC876581 0xFCCFBE0E 0xFF25311A 0xFF303CB1 0xFFF96AC8
#Stand With Ukraine
-
[...] and here are the values:
Spoiler:(zum lesen bitte Text markieren)You might have missed existing values, because you did not include the leading zero(s) in the key name.Code:0x00156B8B="AlignPivotFront" 0x0040BB2C="Invalid" 0x004DDD7F="CamTargetCorrectionAcceleration" 0x005973F2="ID" 0x009F5D49="InnerRadius" 0x019BADFC="FogWaterLevel" 0x0243F8DA="FreeCamTurnSpeedFactorLeftRight" 0x02601E61="HighFreqVibration" 0x02B96F79="EchoDepth" 0x033C4C0B="BloomThreshold" 0x03797805="class bTRefPropertyArray<class gCEntityFlightKeyframe *>" 0x0555E01C="BaseTrafo" 0x06D65D86="CamAdditionalOffsetPitchCorrection" 0x099649D8="SpeedTreeWind" 0x09A7DE97="RotationPhase1" 0x09A7DE98="RotationPhase2" 0x0AA43C20="ImageEffectBlendInTime" 0x0B888030="int" 0x0BCF9B9B="CamWarmUpMoveDecceleration" 0x0C0EFDE8="LockOnMovementAlignTarget" 0x0C2006FF="OnX1ButtonDown" 0x0CFD935E="Filters" 0x0D06A9CD="RunningQuestScript" 0x0D3ADAC8="Gamma" 0x0D515B8B="Hints" 0x0D56C098="enum gETutorialCategory" 0x0D656C88="Image" 0x0DD7B270="Owner" 0x0DFAA637="Quest" 0x0E088813="HorizontalScrollBar" 0x0E1C1776="Speed" 0x0E2632AB="Tasks" 0x0E4A4595="Valid" 0x0EE0B9B3="SmalltalkInnerRange" 0x0F71E19B="float" 0x1022FBEE="class bCRect" 0x126E270C="CamWarmUpRotationAcceleration" 0x13019899="JumpSmoothing" 0x13780941="SunSpecularIntensity" 0x13AE0AB3="Caption" 0x1463DDAA="class bCPoint" 0x1468E2B0="CamRotationAcceleration" 0x15F3A1DA="MaxTime" 0x1639C14B="RotationAmplitude1" 0x1639C14C="RotationAmplitude2" 0x164F458C="OnGetScreenPntX" 0x164F458D="OnGetScreenPntY" 0x16656265="RandomEffect2" 0x17B0799D="PositionFrequency1" 0x17B0799E="PositionFrequency2" 0x18455B3C="Languages" 0x18FBC010="OnlyRealKBMessages" 0x18FD6E99="class eCEntityStringProxy" 0x190E0022="class eCGuiWindowProxy" 0x19837974="DefaultWeapon" 0x1A864B96="Configurable" 0x1B6E7B79="SysMenu" 0x1B883ED4="FixTargetRotationYaw" 0x1BF81DAB="TestCapsuleHeight" 0x1C57897C="MaxLookAtAngle" 0x1C6A9767="CancelledQuestScript" 0x1DF4CABB="FixTargetRotationPitch" 0x1E13EECB="OnModifyFocusName" 0x1E5D9285="ThunderDuration" 0x1EE606C2="MergeID" 0x20249079="CoolDownTime" 0x20B5FF26="JumpSmoothingTargetViewDistance" 0x20D700B3="OnEscape" 0x20D98DBC="DoFNearFarRatio" 0x218EE45A="TestForFreeSpace" 0x2394C2B5="class bTObjArray<struct gCQuest::gSDeliveryEntity>" 0x240435D1="SucceededQuestScript" 0x24659CAE="FixTargetRotationDistance" 0x250E5D05="BloomIntensity" 0x257F606F="class eCScriptProxyScript" 0x27DF1934="MaxLookAtAngleDown" 0x28E759BF="CamMoveDecceleration" 0x2A6A87EB="RequiredPerks" 0x2B5BFCEC="class bTObjArray<class gCTutorialHint>" 0x2BAF2DE9="DialogCanBeCancelled" 0x2BC86C04="CamMoveSpeedMax" 0x2C283334="CamWarmUpRotationDecceleration" 0x2CA23173="LowFreqVibration" 0x2CCBD76D="AlignToFloorX" 0x2CCBD76F="AlignToFloorZ" 0x2CD6A1D6="StumbleReaction" 0x2D64F612="AutoTrigger" 0x2DE4DD1D="class bTObjArray<class eCGuiResourceFontLanguage2>" 0x2F07592A="FlightKeyframes" 0x2F268055="EnvDiffusion" 0x2F86D63D="RefScreenSize" 0x2F9E86BA="CounterReaction" 0x2FD94859="CamWarmUpRotationSpeedMax" 0x31D7CB48="FogDensityOffset" 0x31F07C3E="EaseMainPitchFlips" 0x31F6AF0A="CamAdditionalOffsetTargetViewBlendRange" 0x3207D6DC="SoundVolumeVoice" 0x32842B28="OceanWavelengthBlue" 0x32D50CF8="WarmUpOutFadeTime" 0x33009E3A="TestCapsuleRadius" 0x33A30465="EnableAutoFocus" 0x33A51E21="class bTObjArray<struct gCQuest::SLogEntry>" 0x34236AB7="EaseMainYawFlips" 0x348F6595="Indicators" 0x34AA0EDA="class bTObjArray<class gCRequiredPerk_PS>" 0x35967549="ProgressDelay" 0x3651B2FF="AccuracyDelay" 0x366D834B="ProgressParam" 0x36E67281="ScaleSpeedByWeight" 0x37118166="DefaultFightAI" 0x38A06961="FixTargetRotationPitchMax" 0x38A06A5F="FixTargetRotationPitchMin" 0x39099523="TintColor" 0x3984E9A7="class bCColorScale" 0x39C1B9C2="SkyColorMultiplier" 0x39FD087A="StartChapter" 0x3B26915E="class eCGuiVisualProxy" 0x3BDB4022="class bTRefPtrArray<class gCCombatAIWeights *>" 0x3BEE4F96="CamAdditionalOffset" 0x3C3571F1="StageGizmoLocked" 0x3C833237="OverlayImageEffect" 0x3CCE651A="LookAtDistance" 0x3DBB5852="ReflectionsDelay" 0x3DF36725="AttachToOnParentFinish" 0x3E95AD7B="DefaultStyle" 0x3EFD069B="BorderExtent" 0x3F0D3184="AmbientColor" 0x3F721FD8="NeighborUp" 0x3F94C5A1="ImageEffectBlendOutTime" 0x41E9114C="class gCQuestLocString" 0x420E098F="NightSkyInnerCoronaSize" 0x42B6678C="TimeOut" 0x44BC1AF6="class bTObjArray<class gCFocusIndicatorProxy2>" 0x458017E3="NeedsPrefetching" 0x471BC421="FogDensity" 0x4796F772="MoodColorRatio" 0x48086FB1="OceanCuasticsMultiplier" 0x4813C530="PositionAmplitude1" 0x4813C531="PositionAmplitude2" 0x48FBAA5A="SunColor" 0x49D63EAC="class bTObjArray<class gCModifySkill>" 0x49DFB497="class bTObjArray<class gCTutorialAction>" 0x4A3AEDF3="MinFallDistance" 0x4B9CE777="class bTObjArray<class bCString>" 0x4BCF1B78="class bTRefPropertyArray<class eCImageFilterBase *>" 0x4CAE843A="AlignToTarget" 0x4CB01CB7="AutoComplete" 0x4CB8E343="ActivationTime_Day" 0x4DCD0769="class eCWeatherStatesProxy" 0x4EC91816="SplashDuration" 0x4F780F6A="SubWeights" 0x4FA0D25A="class bTRefPtrArray<class gCCombatAITask *>" 0x4FC18155="AlignMaxAngleX" 0x4FC18157="AlignMaxAngleZ" 0x50DD76B0="ToolTip" 0x50F07155="AnchorBottom" 0x51DE9A02="CloudColorMultiplier" 0x526F4C83="OnMButtonDown" 0x5272BD20="MeleeDistanceRadius" 0x53AC847A="ReverbDelay" 0x543E093F="MainSortID" 0x55E3ECC4="SoundVolumeFX" 0x56338F24="CursorName" 0x563670BE="CursorSize" 0x56EE9993="SplashSizeScale" 0x576C4C73="SmalltalkRewind" 0x583C7D0A="CharacterControlMove" 0x5882E5BA="CamJumpOnDistance" 0x59047BC3="VerticalScrollBar" 0x59CC4D7F="Conditions" 0x5C30DA74="FixTargetRotationDistanceMax" 0x5C30DB72="FixTargetRotationDistanceMin" 0x5CBCF577="FocalRange" 0x5CF11F62="SkyWavelengthGreen" 0x5D393FC4="MoonSpecularIntensity" 0x5D6C0E43="CameraEffectWeight" 0x5DFE9E35="EnableFakeEnvCamera" 0x5F069E93="CamWarmUpMoveAcceleration" 0x5FBBD5FD="NightSkyHazeColor" 0x60DE09BB="SkyColor" 0x61056DD9="class eCGuiBitmapProxy2" 0x612DA318="NightSkyHazeBiasAndScale" 0x61517A34="CombatHeight" 0x61C3724A="InfoGiven" 0x62619FE9="HealthRect" 0x63D2E144="DestinationEntity" 0x64A72730="class bTObjArray<class gCQuestActor>" 0x64E07943="PageControl" 0x653EBBCE="LostQuestScript" 0x654FFB84="JitterPower" 0x658684C8="JitterSpeed" 0x659B0744="GoldCost" 0x65ED4CD3="class bTRefPropertyArray<class gCCutsceneSequenceChannelSetup *>" 0x65EDB86B="SplashSize" 0x663B2097="ShowX360" 0x664BD5E6="ImageEffectInGame" 0x6692749B="CameraEffect" 0x67919B95="class bTObjArray<class eCWeatherStateProbability>" 0x67B717F5="OnRateTarget" 0x680A9DEE="DirectionScale" 0x6810BA43="FreeCamFOV" 0x694CF1FE="AutoFocus" 0x696C7130="MinimizeBox" 0x69D82D45="Density" 0x69FB9E7E="class eCTemplateEntityProxy" 0x6A2B3B15="RoomRolloffFactor" 0x6A346635="CharacterMoveInCameraSpace" 0x6B40C7E2="ReflectionsPan" 0x6B725200="FogColor" 0x6C53542C="Diffusion" 0x6CC15276="SeismicSources" 0x6D7A6358="CamRotationDecceleration" 0x6E153080="WonQuestScript" 0x70EB1DCE="CharacterRotationInCameraSpace" 0x71475B4A="class bTRefPropertyArray<class gCCameraEffectSeismicSource *>" 0x71FA7671="FailedQuestScript" 0x7217CA24="WindPower" 0x721BEF4A="ExperiencePoints" 0x72A9F7C7="PageMode" 0x72F27745="class bCVector2" 0x73354084="NightSkyHazeColorMultiplier" 0x736FD4B1="NeighborRight" 0x74594308="ShowScrollBarArrows" 0x750282A0="InfoIsRunnig" 0x76898F87="ParadeReaction" 0x770D854A="class bTRefPropertyArray<class gCEffectCondition *>" 0x77E67AD9="class bTRefPtrArray<class gCCombatAI2 *>" 0x781796DC="RangeWeapon" 0x783CE3E2="SunIntensity" 0x783EC5CB="UpdateCameraData" 0x78728605="AlignCapsuleRadius" 0x7A891A25="BloomOffset" 0x7AFACAB0="AirAbsorptionHF" 0x7BEFC75E="class bCFloatScale" 0x7C843EA6="Dock" 0x7C898026="Name" 0x7C8BED82="Room" 0x7C8C61C0="Size" 0x7C8D30E7="Type" 0x7C9663EB="Duration" 0x7C99E516="OnGetProgressFactor" 0x7DAC5E26="SoundVolumeAmbient" 0x7DE7FA18="ToneMapFactor" 0x7EA655B6="Actions" 0x80E5E57C="CloudScrollSpeed" 0x812C9EAB="TimeOutResult" 0x816F90FF="PreStartConsoleCommands" 0x827AC691="LoadingScreenOnPrefetch" 0x82A9C010="WarmUpTime" 0x82B0C3D3="NightSkyInnerCoronaColor" 0x834D384A="OceanWaveChoppyness" 0x8351396A="SortValue" 0x83671151="OceanWavelengthGreen" 0x83D7D9EE="CSCSetupArray" 0x83FE00A9="ObsoleteQuestScript" 0x845EE23E="IsCompleted" 0x84AA2147="GuideWalkMode" 0x84AD1A1A="Environment" 0x857FD083="CharacterControlRotation" 0x86EE7739="ParadeAngle" 0x86F535C9="CloudShadowMultiplier" 0x87B40937="OceanWaveHeight" 0x8934C406="RunningTimeDays" 0x8959773C="PlaySoundOnOpenAndClose" 0x89A7C004="WeightChangeSpeed" 0x8A316065="class eCTipLocString" 0x8AAB23E1="CamAdditionalOffsetWarmUpTime" 0x8AEF19EF="HealthVisual" 0x8AFE3221="SkyMieConstant" 0x8BCCED9C="OnWheelUp" 0x8C0A5537="IndoorMultiplier" 0x8C8833DF="FixTargetRotationJump" 0x8CC402CC="CamTargetMinDistance" 0x8D19B7FC="PositionPhase1" 0x8D19B7FD="PositionPhase2" 0x8D851D8F="SplashTextureTile" 0x8E761637="SoundWnd" 0x8F12A561="CloudExtinction" 0x905FE3E1="MaxLookAtAngleUp" 0x90B66882="NightSkyOuterCoronaSize" 0x90E3DC0E="Probabilities" 0x917ADA78="CombatAIs" 0x917CBC40="OnX2ButtonDown" 0x918D88B2="InfoGameModeType" 0x91B37C43="Category" 0x924CDC47="FogColorMultiplier" 0x94BCD98C="OnGetAccuracyFactor" 0x9543CCA4="JumpSmoothingWarmUpTime" 0x95A3C786="OverlayClient" 0x96A078DD="CSResetSpaces" 0x96B34B6E="KeyboardDisabled" 0x9783064F="ParticlesPerSecond" 0x98E8DA35="class bCMatrix" 0x992B4363="CamAdditionalOffsetTargetViewDistance" 0x9A8CCC6B="AutoFocusRange" 0x9AC70630="CSSearchSpaces" 0x9C2FD21D="CamJumpOnStart" 0x9CB1A9B9="BlendDelay" 0x9CB1F00C="AmbientIntensity" 0x9D88B7BB="BlendParam" 0x9EB93183="Reflections" 0x9EDE0595="AxisCorrectionAllowedForPlayerTarget" 0xA0417C92="Track_Day_Battle" 0xA091739F="class eCGuiScriptProxy" 0xA0A43A38="FreeCamSpeedModifier" 0xA1584D06="SmalltalkPartner" 0xA1915ED4="FocalRangeChangeSpeedMax" 0xA2A8EA52="CamTargetDistanceAcceleration" 0xA48F2B7E="class bCRange1" 0xA4E2DC38="DecayHFRatio" 0xA5C13938="ThunderIntesity" 0xA5CCE43E="CamFOVChangeSpeedMax" 0xA60C9641="class bTRefPtrArray<class eCInputMapping *>" 0xA62FA6A2="FogHeightScale" 0xA6650126="NightSkyOuterCoronaColor" 0xA69D4765="MoonIntensity" 0xA6B14623="FixTargetRotation" 0xA6B1ADF7="FixTargetRotationJumpPitch" 0xA6BF39C1="Active" 0xA6BF52D1="Actors" 0xA757B002="VisualWnd" 0xA7742CD6="ModulationDepth" 0xA77E51E6="FramesPerSecond" 0xA7DBD3CF="CamClippingCorrectionEnabled" 0xA83E6117="class bCString" 0xA9481180="ThunderProbability" 0xA98103C2="Bitmap" 0xA9E75DF5="NightSkyColor" 0xA9EC5843="Border" 0xAA20F449="IconSize" 0xAA4FB922="class bTRefPropertyArray<class eCParticleEmitter *>" 0xAAE072F4="HealthBorderSize" 0xAB40E961="CamFOV" 0xAB5867D3="RandomEffect" 0xABCD3124="CamTargetJumpDistance" 0xACAE5503="Cursor" 0xAD3FA7AB="IsPermanent" 0xADCB0982="HFReference" 0xAE1DF207="SmalltalkPartnerExitRoutineName" 0xAE2660B3="class bCVector" 0xAF72520E="FreeCamTurnSpeedFactorUpDown" 0xAF8CF73B="ReadByUser" 0xAF8E082E="Track_Night_Battle" 0xAFA474BD="class bTRefPropertyArray<class gCCSWeightedAddend *>" 0xB00AF5B7="ShowAlways" 0xB01D4366="RunningTimeHours" 0xB025FB49="FreeCamSpeed" 0xB14B1319="RunningTimeYears" 0xB17EB1FE="MusicVolume" 0xB244C02A="PrePageControl" 0xB2B57DAF="OnWheelDown" 0xB2E2C3A2="Completed" 0xB33DB081="Folder" 0xB4492522="SSAOIntensity" 0xB531F622="CamAdditionalOffsetCollisionTest" 0xB56FDA96="HotSpot" 0xB65A935F="CSWeightedAddends" 0xB68C2AD1="EndScript" 0xB79C2617="Commands" 0xB87A6912="SkyMiePhaseConstant" 0xB8D43AA7="SlopeLimit" 0xB94CD98C="CloudColor1" 0xB94CD98D="CloudColor2" 0xB9531FD6="CounterFrameDuration" 0xB999589F="CamTargetDistanceSpeedMax" 0xB9FF5434="FinishedQuests" 0xBA791753="Contrast" 0xBAD52E13="MoodColor" 0xBBDF3F13="EffectProbability" 0xBBFB2310="FixTargetRotationJumpYaw" 0xBC89636E="OverlayTarget" 0xBD667679="AutoSize" 0xBD97B471="Track_Night_Explore" 0xBEB630AB="SmalltalkExitRoutineName" 0xBEC2257D="HotSpotOffset" 0xBEED1460="CamWarmUpMoveSpeedMax" 0xBF6AEEAC="EventFailed" 0xC038AB0C="JumpSmoothingWarmUpOutFadeTime" 0xC0BBE2EE="ConditionType" 0xC115DC62="UseWantedCameraAsFallback" 0xC1920681="ActionMap" 0xC1D1E8EC="CamFOVVertigoDistance" 0xC2C0C577="Transparent" 0xC2E7C9A3="EndChapter" 0xC33DDE86="LFReference" 0xC378A17B="OceanWavelengthRed" 0xC3B38680="EventSuccess" 0xC3BB5F3A="CamTargetDistanceDecceleration" 0xC3C7EBE8="class bTRefPropertyArray<class gCFocusInteractFilter2 *>" 0xC3F0E990="SpawnPointDizzer" 0xC41FD1FD="CamRotationSpeedMax" 0xC44FFAC2="WeightScript" 0xC4851E7C="NightSkyColorMultiplier" 0xC4B4DE9A="Position" 0xC4B9B555="Track_Day_Explore" 0xC4DFB20B="CurrentInfoCommandIndex" 0xC63308D3="SpeciesType" 0xC71F678D="JumpSmoothingTargetViewBlendRange" 0xC74F1893="CloudSharpness" 0xC816FF76="OnInit" 0xC8258306="class eCGuiMsgScriptProxy" 0xC8EAE13A="DecayTime" 0xC9211886="AccuracyBlendParam" 0xC921EDBF="Emitter" 0xC930724C="CamMoveDirectionChangeSmoothing" 0xC9754BD3="AnchorTop" 0xC991324F="PageID" 0xC9973F6F="Parent" 0xCA5FAF5A="OnAbort" 0xCAF5943D="LookAtDistorsion" 0xCC501049="EnvSize" 0xCD129742="OnLButtonDown" 0xCD71BD4C="CamTargetCorrectionSpeedMax" 0xCDDF93C4="StartWeatherState" 0xCE8C24AB="Reverb" 0xCF3D5F90="RoomHF" 0xCF3D6014="RoomLF" 0xD1140839="ShowPC" 0xD1243314="Silent" 0xD180FBA1="LoopSample" 0xD1944B3A="SortID" 0xD1E57929="Status" 0xD228C45D="MoonColor" 0xD28CAA69="class bTRefPropertyArray<class gCCSSearchSpaceBase *>" 0xD336A224="LoopSystem" 0xD337C917="TextID" 0xD383B440="class bTObjArray<class gCFocusCollectorProxy2>" 0xD412F416="StreakIntensity" 0xD4FA02CE="DeliveryEntities" 0xD5F45232="MaximizeBox" 0xD5FEB807="CamTargetCorrectionDecceleration" 0xD61F5083="CamControl_AxisX" 0xD61F5084="CamControl_AxisY" 0xD61F5085="CamControl_AxisZ" 0xD6758E62="class bTRefPropertyArray<class gCEffectCommand *>" 0xD8CBCF3C="DecayLFRatio" 0xD97D5597="LoopVolume" 0xDA7FE0FC="StartCamera" 0xDAD24B24="VisualFrame" 0xDB46DE73="InLocalSpace" 0xDB491C15="ToolTipText" 0xDBC3890F="Permanent" 0xDBF94EA9="DisableInput" 0xDC62B309="class bTRefPropertyArray<class gCCutsceneSequence *>" 0xDD19F533="Visible" 0xDD20858C="Visuals" 0xDD50FAC7="CurrentTextureTile" 0xDDC33DB9="LookAtDeadZone" 0xDE522D50="ModulationTime" 0xDE984F5F="Collectors" 0xDF118E6B="CapsuleHeight" 0xDF9D1DA7="Overlay" 0xE01234C6="SmalltalkOuterRange" 0xE031B3F9="OnCalcBlendColor" 0xE044229A="StepHeight" 0xE0F668D3="AlignPivotBack" 0xE0FFDD67="AlignPivotSide" 0xE326E01D="Disabled" 0xE3B0DB8C="Condition" 0xE3D7B8A3="ActivationTime_Hour" 0xE3E0DDF6="ActivationTime_Year" 0xE41A12D5="ImageEffect" 0xE452CCA6="OnGetBlendFactor" 0xE4702EEB="NeighborDown" 0xE474653E="NeighborLeft" 0xE5304380="SpeedMinMax" 0xE577F41D="HitSufferRadius" 0xE5D675B8="RotationFrequency1" 0xE5D675B9="RotationFrequency2" 0xE61A1F69="Description" 0xE6A90F4E="ImageFilter" 0xE728CA0A="ReverbPan" 0xE86DEDCC="LogText" 0xE8D82793="EchoTime" 0xEA1412F4="AllowedToHaveFocus" 0xEA6A7D63="OnKeyDown" 0xEA9A9958="class eCLocString" 0xEBF4F8CC="DefaultCtrlID" 0xEC657BD9="OnCalcBlendFactor" 0xED3ED6C8="OnRButtonDown" 0xEF92F11E="class bTRefPtrArray<class eCGuiVisual *>" 0xEFB45A7B="SkyRayleighConstant" 0xEFC9735F="FogSkyMultiplier" 0xF055F74C="SkyWavelengthRed" 0xF0FD12DA="FixTargetRotationYawMax" 0xF0FD13D8="FixTargetRotationYawMin" 0xF34D2837="CamMoveAcceleration" 0xF395119C="ShowPS3" 0xF3BF546D="CamMoveAndRotationSync" 0xF4F53B7A="class eCGuiWndSound" 0xF57CC26F="Saturation" 0xF5FCC0B2="OceanAmbientMultiplier" 0xF619C33B="CloudCover" 0xF61A0EFA="CapsuleRadius" 0xF6310006="LogTopic" 0xF6313775="ClearChildren" 0xF6A73149="SizeBox" 0xF786B475="SequenceClassName" 0xF8003ABC="OuterRadius" 0xF81A37CB="AnchorLeft" 0xF81AEE65="AnchorMode" 0xF89CD1AF="SmalltalkGivenCmdIndex" 0xF94BE3CE="CamTargetMaxDistance" 0xF9BAF36D="FadeOut" 0xFA8A089E="Brightness" 0xFB0C3B19="SkyWavelengthBlue" 0xFBCFF8DE="AnchorRight" 0xFBEFF458="ModifySkillsSuccess" 0xFC876581="Partner" 0xFCCFBE0E="ParadeMovementStyle" 0xFF25311A="DefaultImageEffect" 0xFF303CB1="Sequences" 0xFFF96AC8="StartScript"
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- Connor
-
Can you help me to analyze the materials format ._xmat, for example by providing similar informations as for ximg in the opening post?
Being more specific I'm looking for the TexCoord settings.3.1415926535
Blog
-
-
I didn't had a look at the materials yet. But the eETexCoordSrc* enumeration constants are the same as in Risen 1. You only have to calculate/know the hash of the enumeration constant names if you want to modify the values.
ps: If you need hash lookups, just post a list. And you should have a look at the Compiled Shader Material research for Risen 1."Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- ConnorGeändert von NicoDE (09.05.2012 um 15:45 Uhr)
-
I did take a look at Risen 1 xmats but the material system is different. Risen 2 uses material instances for all mats in the game. It seems that most infos are stored in the master materials, whilst the instances primarily assign the texture maps only?
Spoiler:(zum lesen bitte Text markieren)3.1415926535
Blog
-
I updated the start post. Here is a summery of the changes:
I scanned all files for "GAR" and found only "GAR2" and "GAR3" archives. The following 32-bit word is always 0 (no nested archive). Therefore I renamed the field to _reserved:Code:ArchiveHeader { char8_t Magic[4]; // "GAR2", "GAR3" uint32_t _reserved; // 0x00000000 }
The object streaming layout is now complete (and should be more clear now):Code:Object { char8_t Magic[4]; // "GEC0" uint32_t ClassHash; uint16_t Version; uint32_t PropSize; uint32_t DataSize; Prop { uint32_t Size; { uint16_t Count; for( Count ) { uint32_t TypeHash; uint32_t NameHash; uint32_t Size; uint8_t Data[Size]; } } } Data[] { uint32_t ClassHash; uint16_t Version; uint32_t Size; uint8_t Data[Size]; } }
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- ConnorGeändert von NicoDE (10.05.2012 um 17:33 Uhr)
-
Thank you!
As for GEC0: The 'Version' number refers to the streamed object, not to the streaming system itself, right?
-
"Unter diesen schwierigen Umständen bin ich mir sicher, daß diese guten Menschen meinen augenblicklichen Bedarf an deren Gold verstehen werden." -- ConnorGeändert von NicoDE (10.05.2012 um 17:52 Uhr)
-
Hat eigentlich schon mal jemand die Templates, genauer die Waffen und ihre Schadenswerte bzw. den Schmuck und die Boni angeschaut? Würde mich mal interessieren...
-
-
Okay, Danke. Ich habe vom Hex-Editing ungefähr so viel Ahnung wie du Schnee in der Wüste findest, und bin dementsprechend überrascht, dass ich es trotzdem verstehe
Ich habe mir jetzt einfach mal ein paar Dateien angeschaut und Regelmäßigkeiten festgestellt. Ich bin mal gespannt ob ich das jetzt hinbekomme
edit: Ok, die Schadenswerte der Schwerter habe ich gefunden, allerdings interessieren mich auch die Musketen.
Die Hex-WerteCode:4D 75 73 6B 65 74 5F 44 61 6D 61 67 65 30 7E 0A BD AE 00 CB B4 08
Meine Frage: Kann jemand aus dem Stehgreif sagen, ob ich etwas falsch gemacht habe? (Wie gesagt: Ich habe praktisch keine Ahnung von Hex-Editoren) Oder wird der Schaden irgendwie anders gespeichert bzw. berechnet?Geändert von JFaron (11.05.2012 um 15:11 Uhr)
-
Auf die Gefahr hin zu nerven: Wurde der edit in dem Post über diesem überlesen oder hat sich damit noch niemand beschäftigt? Ich gehe aktuell vom zweiten Fall aus, aber ich bin mir nicht sicher, da der edit deutlich später kam als der normale Post.
So oder so, wenn sich nun niemand meldet, bin ich mir wenigsten sicher.
-
Du musst oberhalb vom Musket_Damage gucken.
Hier mal ein Beispiel:
Spoiler:(zum lesen bitte Text markieren)
Hex 46 = 70 Schaden.
Edit kam erst nach dem Lesen.3.1415926535
BlogGeändert von Malkav (12.05.2012 um 12:27 Uhr)
-
Ok, danke Malkav.
Der Schaden ist wohl bei sämtlichen Waffenarten (zumindest Gewehrschaden, Bajonett, Mindest- und Maximalschaden der Schwerter und Pistolen) hinter diesen "CD 93 ... 00"-Gebilden. Hätte ich auch so draufgekommen können...
edit: Yeah! Ich habe den Wert der Boni gefundenGeändert von JFaron (12.05.2012 um 12:53 Uhr)
-
3.1415926535
Blog
-
Könnte man sich auch mal anschauen.
Edit: Willst du nur so testen oder eventuell ne größere Mod (rebalancing?) in Angriff nehmen)
Ich habe Risen aufgrund meines Systems noch nicht einmal durch, habe aber jetzt schon keine Lust mehr per Hit & Run durch die Welt zu rennen. Shotgun, Nahkampf, Vodoo habe ich mir z. B. noch gar nicht gegeben und alles was ich bisher weiß ist: Die Schusswaffen sind zu stark
Wenn überhaupt, werde ich mir dann wohl Hilfe suchen, vllt. eine kleine Umfrage starten... Aber noch nicht.
edit: Im Moment schreibe ich mir erstmal alles auf, was ich herausfinde.
-
3.1415926535
BlogGeändert von Malkav (12.05.2012 um 14:52 Uhr)