Brush- und TexturEigenschaften auslesen
Übersicht

![]() |
ShodanBetreff: Brush- und TexturEigenschaften auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die folgenden Funktionen hab ich aus jfk´s Brush-Hacking Test abgeleitet.
Damit lassen sich alle Brush und Textur-Eigenschaften auslesen. Gut für geladene Objekte. Bitte mal testen, obs bei euch auch so gut funktioniert. Das muss in die kernel32.decls im userlibs-Verzeichnis Code: [AUSKLAPPEN] .lib "kernel32.dll" RtlMoveMemory1%(Destination*,Source,Length) : "RtlMoveMemory" Nicht wundern, diese Funktion werden viele von euch bereits in einer kernel32.decls stehen haben. Es gibt hier aber ne kleine Änderung innerhalb der Klammer, weswegen es mit der ursprünglichen Variante nicht funzt. Testprogramm: Code: [AUSKLAPPEN] Include"Read_Brush_Texture_Stats.bb" Graphics3D 800,600,0,2 cam=createcamera() PositionEntity cam,0,0,-1.5 l=createlight() : TurnEntity l,0,90,0 CameraRange cam,.1,1000 c2=loadmesh("Euer Mesh",0) cs=countsurfaces(c2) For a=1 To cs surf=getsurface(c2,a) DebugLog CountTriangles(surf) br=getsurfacebrush(surf) DebugLog "Surface "+str$(a) DebugLog getbrushred(br) DebugLog getbrushgreen(br) DebugLog getbrushblue(br) DebugLog getbrushalpha#(br) DebugLog getbrushshininess#(br) DebugLog getbrushblend(br) DebugLog getbrushfx(br) For b=0 To 7 tex=getbrushtexture(br,b) t$=TextureName$(tex) If T$<>"" DebugLog "Brush-Textur Layer "+b DebugLog t$ DebugLog gettextureflags(tex) DebugLog gettextureblend(tex) DebugLog gettextureposx#(tex) DebugLog gettextureposy#(tex) DebugLog gettexturescalex#(tex) DebugLog gettexturescaley#(tex) DebugLog gettexturerotation#(tex) EndIf next Next FitMesh c2,-.5,-.5,-.5,1,1,1,1 While KeyHit(1)=0 TurnEntity c2,0,.5,0 UpdateWorld() RenderWorld() Flip Wend Die Funktionen: Code: [AUSKLAPPEN] ;Get_Brush_Texture_Stats.bb global hackbank1,hackbank2 hackbank1=createbank(4) hackbank2=createbank(4) Function GetBrushAlpha#(brush) Local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+32 RtlMoveMemory1(hackbank2,adr,4) return PeekFloat(hackbank2,0) End Function Function GetBrushshininess#(brush) Local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+28 RtlMoveMemory1(hackbank2,adr,4) return PeekFloat(hackbank2,0) End Function Function GetBrushRED(brush) local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+16 RtlMoveMemory1(hackbank2,adr,4) Return PeekFloat(hackbank2,0)*255 End Function Function GetBrushGREEN(brush) local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+20 RtlMoveMemory1(hackbank2,adr,4) Return PeekFloat(hackbank2,0)*255 End Function Function GetBrushBLUE(brush) local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+24 RtlMoveMemory1(hackbank2,adr,4) Return PeekFloat(hackbank2,0)*255 End Function Function GetBrushBLEND(brush) local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+4 RtlMoveMemory1(hackbank2,adr,4) Return Peekint(hackbank2,0) End Function Function GetBrushFX(brush) local adr RtlMoveMemory1(hackbank1,brush,4) adr=PeekInt(hackbank1,0)+40 RtlMoveMemory1(hackbank2,adr,4) Return Peekint(hackbank2,0) End Function Function GetTextureBlend(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+24 RtlMoveMemory1(hackbank2,adr,4) Return Peekint(hackbank2,0) End Function Function GetTextureScaleX#(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+36 RtlMoveMemory1(hackbank2,adr,4) Return (1.0/Peekfloat(hackbank2,0)) End Function Function GetTextureScaleY#(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+40 RtlMoveMemory1(hackbank2,adr,4) Return (1.0/Peekfloat(hackbank2,0)) End Function Function GetTexturePosX#(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+44 RtlMoveMemory1(hackbank2,adr,4) Return ((-1.0)*Peekfloat(hackbank2,0)) End Function Function GetTexturePosY#(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+48 RtlMoveMemory1(hackbank2,adr,4) Return ((-1.0)*Peekfloat(hackbank2,0)) End Function Function GetTextureFlags(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+140 RtlMoveMemory1(hackbank2,adr,4) Return Peekint(hackbank2,0) End Function Function GetTextureRotation(tex) local adr RtlMoveMemory1(hackbank1,tex,4) adr=PeekInt(hackbank1,0)+52 RtlMoveMemory1(hackbank2,adr,4) Return (360/(pi*2))*(Peekfloat(hackbank2,0))*(-1.0) End Function mfg Shodan |
||
www.selfmadegames.de |
- Zuletzt bearbeitet von Shodan am Mi, Okt 24, 2007 18:55, insgesamt einmal bearbeitet
![]() |
hamZtaAdministrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Landete wohl im falschen Forum. hamZta |
||
Blog. |
![]() |
Shodan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoppla.
War es nicht im Codearchiv? Hast du es wenigstens mal getestet hamZta? Würd gern wissen, obs irgendwo nicht geht. Bei der Gelegenheit noch ein Nachtrag. Die Funktion für Textureflags funzt nicht 100%. Die Flags werden scheinbar an unterschiedlichen Stellen gespeichert. Bei Createtexture() bei Offset 140 Bei Loadtexture() bei Offset 228 Und wenn die Texture im Zuge von Loadmesh geladen wird, stehen die Flags scheinbar bei Offset 196, was allerdings auch nicht immer stimmt. Habs bisher noch nicht herausfinden können, wie das zusammenhängt. Während es bei Createtexture() und Loadtexture() immer funzt, scheint es sich bei Loadmesh() nach mehr als 2 geladenen Texturen zu ändern. Und nach mehr als einem geladenen Mesh gehts gleich garnicht mehr richtig. Sehr mysteriös! ![]() Und die Funktion GetTextureScaleY#() hatte ich vergessen. Ist jetzt mit drin. ( siehe oben ) cu Shodan |
||
www.selfmadegames.de |
lettorTrepuS |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
![]() |
Shodan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Gag ist, dass ich die anderen Werte sehr schnell ausfindig gemacht hatte. Sogar den für BrushFX, obwohl der artverwandt mit Textureflags ist.
Nach umfangreicher Suche und Tests auf verschiedenen Rechnern ( naja ok es warn nur 2 ![]() Ich vermute, dass das mit einem event. vorhanden Bug in GetBrushTexture() zusammenhängt. Man erhält nämlich ein ungültiges Texturehandle anstelle von 0, wenn man einen leeren Texturlayer abfragt. Bei Entitys konnte ich garnix herausfinden. Man muss GetEntityBrush() anwenden, und den Brush auslesen. |
||
www.selfmadegames.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group