Passwortproblem mit Universal Mapeditor

Übersicht Ressourcen Andere Programme oder Tools

Neue Antwort erstellen

Hubsi

Betreff: Passwortproblem mit Universal Mapeditor

BeitragMi, März 24, 2010 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo beisammen.

Ich erstelle seit kurzem meine Maps mit dem Universal Mapeditor und möchte die Maps mit einem Passwort versehen. Bis dahin noch kein Problem, der Mapeditor kann seinen Kram auch selbst lesen, nur wenn ich im Spiel versuche die Datei zu laden steigt mir die Funktion mit einem "Array index out of bounds" aus. Lt. Debugger ist der Index des aufgerufenen Arrayeintrages aber 0, muß also zwangsläufig existieren, sonst würde es ja schon gar nicht die Syntaxprüfung überstehen. Kennt jemand das Problem, bzw. noch besser gleich die Lösung dafür?

Hier noch ein Screenie des ganzen:
https://www.blitzforum.de/upload/file.php?id=8236

Danke schonmal.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

ozzi789

BeitragMi, März 24, 2010 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie soll BB entscheiden ob es crypt_table oder byte nehmen soll?
Hast auch mal byte ausgeben und geschaut was das für einen Wert hat?


mfg

Edit: achso, bb schaut wenn eines null ist, und nimmt dann das mit nem Wert..
aber wenn beide einen Wert über (oder unter null) haben werden beide zusammen addiert (or halt und nicht exor^^)

siehe:
Code: [AUSKLAPPEN]
Dim test(5)
test(1)=2
byte=1
test(1)=byte Or test(1)
Print test(1)
WaitKey



Jetzt musst du mir nur noch sagen was du genau machen willst und wir finden ne Lösung Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Hubsi

BeitragMi, März 24, 2010 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm, entweder habe ich Dich jetzt nicht verstanden oder Du mich Mr. Green Die Funktionen werden aus dem Universal Mapeditor eingebunden, ein Programm von TheShadow. Das Problem ist nicht der Inhalt der Variable, sondern das der Index angeblich "out of bounds" ist. Was ja bei Index 0 (pos=0) nicht so recht sein kann. Weiter wird TS, denke ich wenigstens, auch diese Funktionen in seinem Programm so verwenden. Nur das es da eben funktioniert.

Trotzdem natürlich Danke für Deine Mühen Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Xeres

Moderator

BeitragMi, März 24, 2010 21:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Debugger etwas markiert, kann der Fehler schon vorher aufgetreten sein, z.B. fehlende Endifs, Next oder sowas sorgen immer mal dafür, dass etwas im Block als Fehlerhaft markiert wird. Das wär' jedenfalls meine Erklärung dafür.
Ansonsten: Wo wird das Teil Dimensioniert?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hubsi

BeitragMi, März 24, 2010 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo es dimensioniert wird weiß ich nicht. Irgendwo in den Unmengen an Funktionen die der Editor mitbringt. Dimensioniert muß es werden, sonst würde mich der Compiler schon vor dem Debugger ausschimpfen das er die Function nicht kennt. Oder habe ich gerade totale Denkblokade? Das Programm läuft ja an, nur steigt es eben mit einem "Array index out of bounds" aus sobald ich eine Map laden will mit Passwort. Und wenn ich auf Index 0, im Klartext also crypt_table(0), zugreifen will kann ich mir nur eine Fehlermeldung wie "Function not found" vorstellen. Passiert aber nicht, ergo muß das Array dimensioniert sein. Die Größe ist in der gegebenen Konstellation meines Erachtens unerheblich?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Xeres

Moderator

BeitragMi, März 24, 2010 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du schon nicht weißt was da wo vorgeht, können wir anderen hier nur ob der Rätselhaftigkeit stumm staunen oder ewig Philosophieren, wo der Fehler liegen könnte.
In diesem Sinne: Code wäre hilfreich.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hubsi

BeitragMi, März 24, 2010 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich benutze das Programm ob der Einfachheit nur, stumm geschrieben habe ich es nicht. Gar viel Code ist's, so schreib ich offen nur der Include dessen betroffene Function enthält:
BlitzBasic: [AUSKLAPPEN]
Dim crypt_table(63)





;---------------------------------------------------------------------
;source: source file
;dest: dest file
;passw: password string
;---------------------------------------------------------------------
Function crypt_file(source$,dest$,passw$)
Local bank
Local bytes
Local file1
Local file2
Local size
Local i
Local j
Local pos
Local value

crypt_init(passw$)

size=FileSize(source$)
If size<64 Then Return

file1=ReadFile(source$)
If file1=0 Then Return

file2=WriteFile(dest$)
If file2=0 Then CloseFile file1 : Return

bank=CreateBank($4000)
ReadBytes bank,file1,0,64
WriteBytes bank,file2,0,64

For j=1 To (size-64)/$4000
ReadBytes bank,file1,0,$4000
For i=0 To $3FFF Step 4
value=PeekInt(bank,i)
PokeInt bank,i,(value Xor crypt_table(pos))
pos=(pos+1) Mod 64
Next
WriteBytes bank,file2,0,$4000
Next

bytes=(size-64) Mod $4000
If bytes>0 Then
ReadBytes bank,file1,0,bytes
For i=0 To bytes-1 Step 4
value=PeekInt(bank,i)
PokeInt bank,i,(value Xor crypt_table(pos))
pos=(pos+1) Mod 64
Next
WriteBytes bank,file2,0,bytes
EndIf

CloseFile file1
CloseFile file2
FreeBank bank
End Function





;---------------------------------------------------------------------
;passw: password string
;---------------------------------------------------------------------
Function crypt_init(passw$)
Local ascii
Local byte
Local i
Local j
Local key$
Local pos

key$=md5$(passw$)

For j=0 To 15
For i=0 To 15
pos=(j*16+i)/4
ascii=Asc(Mid$(key$,i+1,1))
byte=ascii Shl ((i Mod 4)*8)
crypt_table(pos)=crypt_table(pos) Or byte
Next
key$=md5$(key$)
Next
End Function





;---------------------------------------------------------------------
;name: tmp file name
;---------------------------------------------------------------------
Function crypt_overwrite(name$)
Local bank
Local bytes
Local file
Local i
Local size

size=FileSize(name$)
file=OpenFile(name$)
If file=0 Then Return

bank=CreateBank($4000)
For i=0 To $3FFF
PokeByte bank,i,Rand(0,255)
Next

For i=1 To size/$4000
WriteBytes bank,file,0,$4000
Next

bytes=size Mod $4000
If bytes>0 Then WriteBytes bank,file,0,bytes

CloseFile file
FreeBank bank
End Function


Derer, die alle Includes betrachten wollen sei wohl gesonnen dieses Archiv:
https://www.blitzforum.de/upload/file.php?id=8237

Mr. Green Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Xeres

Moderator

BeitragMi, März 24, 2010 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
crypt_init funktioniert bei mir Problemlos...
Irgendwo hast du einen Fehler eingebaut Wink
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Hubsi

BeitragDo, März 25, 2010 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, ich lass das einfach mal so stehen. Vielleicht habe ich heute auch einfach keinen Kopf mehr dafür. Mal sehen ob eine Mütze Schlaf die wundersame Erleuchtung bringen kann Very Happy Danke erstmal Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht Ressourcen Andere Programme oder Tools

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group