Hi epvp,
Ich habe mich rangesetzt ein eigenes Minispiel zu basteln. Um solche Werte wie Gold und so weiter zu verstecken habe ich mir eine eigene RegRead,RegWrite und RegDelete Funktion gebastelt:
Funktioniert gut. Aber: Ich bastle mir meinen Ausrüstungshändler und sobald ich etwas kaufe und danach 0 Yang (gold) habe, meint mein Programm ich habe "k" Yang. Jetzt frage ich mich ernsthaft wo das k herkommt.
Ich habe auch schon folgendes versucht:
Noch immer das selbe Ergebnis.
Danach habe ich zum Test mit folgendem Script mal das Yang auf eine andere Zahl außer 0 gesetzt:
Jetzt zeigt es den richtigen Wert an.
Dann habe ich den Wert mit dem soeben genannten Beispiel wieder auf 0 gesetzt. Siehe da: Es kommt kein "k" sondern wirklich eine 0.
Schlussfolgerung: Es liegt nicht an meinen Reg ... Funktonen, es muss am Ausrüstungshändler liegen. Da konnte ich jedoch keine Fehler entdecken.
Hier man der Ausrüstungshändler: (Wer das Script klaut, viel spaß, ihr braucht meine UDF dazu :D)
(Ja ich weiß, verdammt unordentlich und unübersichtlich ...)
Das Script wird bei euch nicht funktionieren, aber es sollte reichen, um meinen Fehler zu finden!
Hoffe jemand kann helfen, langsam verzweifle ich.
Lg V8II
Ich habe mich rangesetzt ein eigenes Minispiel zu basteln. Um solche Werte wie Gold und so weiter zu verstecken habe ich mir eine eigene RegRead,RegWrite und RegDelete Funktion gebastelt:
PHP Code:
Func _RegRead($vz,$wert0a)
$key1=_StringEncrypt(1,$wert0a,_StringtoHex("EPVP"),1)
$wert0a=REgREad($vz,$key1)
$wet0=_StringExplode($wert0a,"0x30")
$wert0=$wet0[0]
$wert1=_StringEncrypt(0,$wert0,_StringtoHex("EPVP"),1)
$wert2=_StringEncrypt(0,$wert1,_StringtoHex("EPVP"),1)
Return $wert2
EndFunc
Func _RegWrite($vz,$key,$U,$wert0)
$wert1=_StringEncrypt(1,$wert0,_StringtoHex("EPVP"),1)
$wert2=_StringEncrypt(1,$wert1,_StringtoHex("EPVP"),1)
$wert2=$wert2&"0x30"
$key1=_StringEncrypt(1,$key,_StringtoHex("EPVP"),1)
RegWrite($vz,$key1,$U,$wert2)
EndFunc
Func _RegDelete($vz,$key)
RegDelete($vz,_StringEncrypt(0,$key,_StringtoHex("EPVP"),1))
EndFunc
Ich habe auch schon folgendes versucht:
PHP Code:
Func _RegRead($vz,$wert0a)
$key1=_StringEncrypt(1,$wert0a,_StringtoHex("EPVP"),1)
$wert0a=REgREad($vz,$key1)
$wet0=_StringExplode($wert0a,"0x30")
$wert0=$wet0[0]
$wert1=_StringEncrypt(0,$wert0,_StringtoHex("EPVP"),1)
$wert2=_StringEncrypt(0,$wert1,_StringtoHex("EPVP"),1)
if $wert2="k" then $wert2=0
Return $wert2
EndFunc
Danach habe ich zum Test mit folgendem Script mal das Yang auf eine andere Zahl außer 0 gesetzt:
PHP Code:
#include <KM.au3>
$u=Inputbox("Gold","GOldWrite")
_RegWrite("HKEY_CURRENT_USER\Software\KM\game","gold","REG_SZ",$u)
GetGold()
Func GetGold()
MsgBox(0,"Yanginfo","Du hast "&_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")&" Yang!")
EndFunc
Dann habe ich den Wert mit dem soeben genannten Beispiel wieder auf 0 gesetzt. Siehe da: Es kommt kein "k" sondern wirklich eine 0.
Schlussfolgerung: Es liegt nicht an meinen Reg ... Funktonen, es muss am Ausrüstungshändler liegen. Da konnte ich jedoch keine Fehler entdecken.
Hier man der Ausrüstungshändler: (Wer das Script klaut, viel spaß, ihr braucht meine UDF dazu :D)
PHP Code:
FUnc buy()
GUiDelete($Form1_1)
Global $info[5]
$info[0]=_RegRead("HKEY_CURRENT_USER\Software\KM\game","sword")
$info[1]=_RegRead("HKEY_CURRENT_USER\Software\KM\game","armor")
$info[2]=_RegRead("HKEY_CURRENT_USER\Software\KM\game","off")
$info[3]=_RegRead("HKEY_CURRENT_USER\Software\KM\game","deff")
$info[4]=_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")
FOr $u=0 to 4 step 1
if $info[$u]="" Then
$info[$u]=""
EndIf
Next
Global $inv[10]
FOr $u=0 to 9 step 1
$inv[$u]=_RegRead("HKEY_CURRENT_USER\Software\KM\inventar",$u)
if $inv[$u]=0 then $inv[$u]="<leer>"
Next
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\nino\eigene dateien\downloads\forms\form1.kxf
$Form1_1 = GUICreate("Ausrüstungshändler", $hoehe, $breite, 0, 0, BitOR($WS_MINIMIZEBOX,$WS_POPUP,$WS_GROUP))
GUICtrlCreatePic(@WindowsDir&"\KM\buy.jpg",0,0,$hoehe,$breite)
GuiCtrlSetState(-1,$GUI_DISABLE)
$Pic1 = GUICtrlCreatePic(@WindowsDir&"\KM\buy.jpg", 0, 0, $hoehe, $breite, 105)
GUICtrlSetState(-1, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel("Charakterstatistiken:"&@CRLF&"Schwert: "&$info[0]&@CRLF&"Rüstung: "&$info[1]&@CRLF&"Angriffswert: "&CharGetOff()&@CRLF&"Verteidigungswert: "&CharGetDeff()&@CRLF&"Yang (Gold): "&$info[4], 936, 8, 268, 265)
$Label2 = GUICtrlCreateLabel("Willkommen beim Ausrüstungshändler. Hier kannst du Rüstungen und Waffen kaufen und sie einem Inventarplatz zuweisen.", 8, 8, 380, 33)
$Group1 = GUICtrlCreateGroup("Rüstungen", 8, 72, 817, 65)
$Combo1 = GUICtrlCreateCombo("Rüstung", 16, 96, 321, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Mönchsplattenpanzer (1 Yang)|Tigerplattenpanzer (20 Yang)|Schwarzwälderrüstung (50 Yang)|Templerrüstung (100 Yang)|Schwarzstahlpanzer (250 Yang)")
$Combo2 = GUICtrlCreateCombo("Inventarplatz", 352, 96, 337, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Platz 1 ("&$inv[0]&")|Platz 2 ("&$inv[1]&")|Platz 3 ("&$inv[2]&")|Platz 4 ("&$inv[3]&")|Platz 5 ("&$inv[4]&")|Platz 6 ("&$inv[5]&")|Platz 7 ("&$inv[6]&")|Platz 8 ("&$inv[7]&")|Platz 9 ("&$inv[8]&")|Platz 10 ("&$inv[9]&")")
$Button1 = GUICtrlCreateButton("Kaufen", 712, 96, 97, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Waffen", 8, 142, 817, 65)
$Combo3 = GUICtrlCreateCombo("Waffen", 16, 166, 321, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Bambusschwert (1 Yang)|Breitschwert (20 Yang)|Vollmilchschwert (50 Yang)|Nympfenschwert (100 Yang)|Heiliges Schwert (250 Yang)")
$Combo4 = GUICtrlCreateCombo("Inventarplatz", 352, 166, 337, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Platz 1 ("&$inv[0]&")|Platz 2 ("&$inv[1]&")|Platz 3 ("&$inv[2]&")|Platz 4 ("&$inv[3]&")|Platz 5 ("&$inv[4]&")|Platz 6 ("&$inv[5]&")|Platz 7 ("&$inv[6]&")|Platz 8 ("&$inv[7]&")|Platz 9 ("&$inv[8]&")|Platz 10 ("&$inv[9]&")")
$Button3 = GUICtrlCreateButton("Händler verlassen", 8, 216, 121, 25, 0)
$Button2 = GUICtrlCreateButton("Kaufen", 712, 166, 97, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $Button2
$read=GUiCtrlRead($Combo3)
$upped=GetUppLevel($read)
_ArrayDisplay($upped)
Switch $upped[0]
case "Bambusschwert (1 Yang)"
$rBuy="Bambusschwert (1 Yang)"
$price=1
case "Breitschwert (20 Yang)"
$rBuy="Breitschwert (20 Yang)"
$price=20
case "Vollmilchschwert (50 Yang)"
$price=50
$rBuy="Vollmilchschwert (50 Yang)"
case "Nympfenschwert (100 Yang)"
$rBuy="Nympfenschwert (100 Yang)"
$price=100
case "Heiliges Schwert (250 Yang)"
$rBuy="Heiliges Schwert (250 Yang)"
$price=250
case Else
MsgBox(16,"Error","Error, du hast kein gültiges Schwert gewählt!")
Return(0)
EndSwitch
$ask=MsgBox(4,"Kaufen?","Möchtest du wirklich "&$rBuy&" kaufen? Du benötigst "&$price&" Yang!")
if $ask=6 Then
$gRead=_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")
if $gRead="" or _RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")<$price Then
MsgBox(16,"Fehler","Du kannst "&$rBuy&" nicht kaufen, du benötigst "&$price&" Yang, du hast jedoch nur "&_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")&" Yang.")
Else
Switch GUiCTrlRead($Combo4)
case "Platz 1 ("&$inv[0]&")"
$place=0
if $inv[0]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 2 ("&$inv[1]&")"
$place=1
if $inv[1]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 3 ("&$inv[2]&")"
$place=2
if $inv[2]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 4 ("&$inv[3]&")"
$place=3
if $inv[3]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 5 ("&$inv[4]&")"
$place=4
if $inv[4]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 6 ("&$inv[5]&")"
$place=5
if $inv[5]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 7 ("&$inv[6]&")"
$place=6
if $inv[6]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 8 ("&$inv[7]&")"
$place=7
if $inv[7]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 9 ("&$inv[8]&")"
$place=8
if $inv[8]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 10 ("&$inv[9]&")"
$place=9
if $inv[9]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case Else
MsgBox(16,"Error","Error, du hast keinen gültigen Inventarplatz gewählt!")
ReBuy()
EndSwitch
_RegWrite("HKEY_CURRENT_USER\Software\KM\inventar",$place,"REG_SZ",$rBuy)
$gRead=_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")
$gRead=$gRead-$price
_RegWrite("HKEY_CURRENT_USER\Software\KM\game","gold","REG_SZ",$gRead)
_SOundPlay(@WindowsDIr&"\KM\Sounds\buy.wav")
MsgBox(0,"Gekauft","Danke, dass du "&$rBuy&" gekauft hast! Du hast noch "&_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")&" Yang")
FOr $u=0 to 9 step 1
$inv[$u]=_RegRead("HKEY_CURRENT_USER\Software\KM\inventar",$u)
Next
ReBuy()
EndIf
EndIf
case $Button1
$read=GUiCtrlRead($Combo1)
$upped=GetUppLevel($read)
Switch $upped[0]
case "Mönchsplattenpanzer (1 Yang)"
$rBuy="Mönchsplattenpanzer (1 Yang)"
$price=1
case "Tigerplattenpanzer (20 Yang)"
$rBuy="Tigerplattenpanzer (20 Yang)"
$price=20
case "Schwarzwälderrüstung (50 Yang)"
$rBuy="Schwarzwälderrüstung (50 Yang)"
$price=50
case "Templerrüstung (100 Yang)"
$rBuy="Templerrüstung (100 Yang)"
$price=100
case "Schwarzstahlpanzer (250 Yang)"
$rBuy="Schwarzstahlpanzer (250 Yang)"
$price=250
case Else
MsgBox(16,"Error","Error, du hast keine gültige Rüstung gewählt!")
ReBuy()
EndSwitch
$ask=MsgBox(4,"Kaufen?","Möchtest du wirklich "&$rBuy&" kaufen? Du benötigst "&$price&" Yang!")
if $ask=6 Then
$gRead=_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")
if $gRead="" or _RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")<$price Then
MsgBox(16,"Fehler","Du kannst "&$rBuy&" nicht kaufen, du benötigst "&$price&" Yang, du hast jedoch nur "&_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")&" Yang.")
Else
$ghg=GUiCTrlRead($Combo2)
Switch $ghg
case "Platz 1 ("&$inv[0]&")"
$place=0
if $inv[0]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 2 ("&$inv[1]&")"
$place=1
if $inv[1]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 3 ("&$inv[2]&")"
$place=2
if $inv[2]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 4 ("&$inv[3]&")"
$place=3
if $inv[3]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 5 ("&$inv[4]&")"
$place=4
if $inv[4]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 6 ("&$inv[5]&")"
$place=5
if $inv[5]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 7 ("&$inv[6]&")"
$place=6
if $inv[6]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 8 ("&$inv[7]&")"
$place=7
if $inv[7]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 9 ("&$inv[8]&")"
$place=8
if $inv[8]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case "Platz 10 ("&$inv[9]&")"
$place=9
if $inv[9]<>"" Then
$msg=MsgBox(4,"Warnung","Achtung, du hast einen Inventarplatz gewählt der bereits besetzt ist. Das alte Item geht verloren wenn du weitermachst. Möchtest du wirklich weitermachen?")
if $msg=7 Then
Return(0)
EndIf
EndIf
case Else
MsgBox(16,"Error","Error, du hast keinen gültigen Inventarplatz gewählt!")
Return(0)
EndSwitch
_RegWrite("HKEY_CURRENT_USER\Software\KM\inventar",$place,"REG_SZ",$rBuy)
$gRead=_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")
$gRead=$gRead-$price
_RegWrite("HKEY_CURRENT_USER\Software\KM\game","gold","REG_SZ",$gRead)
_SOundPlay(@WindowsDIr&"\KM\Sounds\buy.wav")
MsgBox(0,"Gekauft","Danke, dass du "&$rBuy&" gekauft hast! Du hast noch "&_RegRead("HKEY_CURRENT_USER\Software\KM\game","gold")&" Yang")
FOr $u=0 to 9 step 1
$inv[$u]=_RegRead("HKEY_CURRENT_USER\Software\KM\inventar",$u)
Next
ReBuy()
EndIf
EndIf
case $Button3
GuiDelete($Form1_1)
Main()
EndSwitch
WEnd
EndFunc
Das Script wird bei euch nicht funktionieren, aber es sollte reichen, um meinen Fehler zu finden!
Hoffe jemand kann helfen, langsam verzweifle ich.
Lg V8II