Hi all, I'm having a small problem here. For some reason, my code is reading my Player Level part of the INI fine. But its NOT reading anything else fine, such as User's level (permission of user).
What I need it to do, is display as little, or as many INI queries as I want from 1 to $FFFFFFFF, and still read the right data.
Here's the INI file:
Stats.INI:
[EXP]
Level=100
[UserLevel]
UserLvl="Administrator"
Here is the code:
Rem Written by DJ Shados (Mugen Wizardry)
Rem Created: Friday, November 26, 2010
Rem Copyright 2010-2011 DJShados
Rem ***** Main Source File *****
sync on : sync rate 0
`Start X
`X Set Target FPS 60
`message box type constants
Global MBOK = 0x0
Global MBOKCANCEL = 0x1
Global MBABORTRETRYIGNORE = 0x2
Global MBYESNOCANCEL = 0x3
Global MBYESNO = 0x4
Global MBRETRYCANCEL = 0x5
Global MBYES = 0x6
Global MBNO = 0x7
Global WMCLOSE = 0x10
Global br$=chr$(13)+chr$(10)
Global maxINIs
maxINIs = 100
Global maxlines=1
Global maxdims
maxdims=2
Dim INISect$(maxINIs) as string
Dim INIKey$(maxINIs) as string
Dim INIValues$(maxINIs) as string
Dim INIData$(maxINIs) as string
Dim INISect$(maxINIs) as string
for x=0 to maxdims
select x
case 0
INISect$(x)="EXP"
INIKey$(x) = "Level"
INIValues$(x) = INIKey$(x)
INIData$(x) = INISect$(x)
INISect$(x) = INIData$(x)
endcase
case 1
INISect$(x)="UserLevel"
INIKey$(x)="UserLvl"
INIValues$(x) = INIKey$(x)
INIData$(x) = INISect$(x)
INISect$(x) = INIData$(x)
endcase
endselect
next x
global writeit
writeit=0
Write_INI(writeit,get dir$()+"/Stats.ini",1)
global texttype
texttype=1
playerlevel=get_stats(player,1,texttype,INISect$(0),INIKey$(0),0,maxlines)
playerhp=get_stats(player,1,texttype,INISect$(1),INIKey$(1),1,maxlines)
print
print str$(playerlevel)
print str$(playerhp)
do
`Update X
sync
loop
`function Set_INI(Number,maxlines)
`for x=1 to maxlines
`set ini value Number, INISect$(x), INIKey$(x), INIValue$(x)
`next x
`endfunction x
function Open_INI(File$,Number,texttype,sectname$,keyname$,sectid,maxlines)
open ini file File$, Number
select texttype
//string
case 0
result$ as string
val1$ as string
if maxlines>-1
defaultvalue$ = "nope"
msgbox("",str$(maxlines),MBOK)
for x=0 to maxlines
sectname$ = INISect$(x)
keyname$ = INIKey$(x)
msgbox("loop "+str$(x),sectname$,MBOK)
msgbox("loop "+str$(x),keyname$,MBOK)
val1$ = Get INI Value$(Number,sectname$,keyname$,defaultvalue$)
print "'"+keyname$+"'='"+val1$+"'"+" "+"'"+sectname$+"' exists? " + str$(ini section exist(Number, sectname$))
Sync
next x
result$=val1$
else
local result$ as string
local val1$ as string
sectname$=INISect$(sectid)
keyname$=INIKey$(sectid)
msgbox("non-loop "+str$(sectid),sectname$,MBOK)
msgbox("non-loop "+str$(sectid),keyname$,MBOK)
val1$ = Get INI Value$(Number,sectname$,keyname$,defaultvalue$)
print "'"+keyname$+"'='"+val1$+"'"+" "+"'"+sectname$+"' exists? " + str$(ini section exist(Number, sectname$))
Sync
endif
if maxlines<=0
msgbox("ERROR!","CANNOT use a number<=0...",MBOK)
maxlines=0
end
endif
result$=val1$
endcase
//integer
case 1
local result as integer
local val1 as integer
if maxlines>-1
defaultvalue = 0
msgbox("",str$(maxlines),MBOK)
for x=0 to maxlines
sectname$ = INISect$(x)
keyname$ = INIKey$(x)
msgbox("loop "+str$(x+1),sectname$,MBOK)
msgbox("loop "+str$(x+1),keyname$,MBOK)
val1 = Get INI Value(Number,sectname$,keyname$,defaultvalue)
print "'"+keyname$+"'='"+str$(val1)+"'"+" "+"'"+sectname$+"' exists? " + str$(ini section exist(Number, sectname$))
Sync
next x
result=val1
else
sectname$=INISect$(sectid)
keyname$=INIKey$(sectid)
msgbox("non-loop "+str$(sectid+1),sectname$,MBOK)
msgbox("non-loop "+str$(sectid+1),keyname$,MBOK)
val1 = Get INI Value(Number,sectname$,keyname$,defaultvalue)
print "'"+keyname$+"'='"+str$(val1)+"'"+" "+"'"+sectname$+"' exists? " + str$(ini section exist(Number, sectname$))
Sync
if maxlines<=0
msgbox("ERROR!","CANNOT use a number<=0...",MBOK)
maxlines=0
end
endif
endif
result=val1
endcase
//float
case 2
local result# as float
local val1# as float
if maxlines>-1
defaultvalue# = 0.0
msgbox("",str$(maxlines),MBOK)
for x=0 to maxlines
sectname$ = INISect$(x)
keyname$ = INIKey$(x)
msgbox("loop "+str$(x+2),sectname$,MBOK)
msgbox("loop "+str$(x+2),keyname$,MBOK)
val1# = Get INI Value#(Number,sectname$,keyname$,defaultvalue#)
print "'"+keyname$+"'='"+str$(val1#)+"'"+" "+"'"+sectname$+"' exists? " + str$(ini section exist(Number, sectname$))
Sync
next x
result#=val1#
else
local result# as float
local val1# as float
sectname$=INISect$(sectid)
keyname$=INIKey$(sectid)
msgbox("non-loop "+str$(sectid+2),sectname$,MBOK)
msgbox("non-loop "+str$(sectid+2),keyname$,MBOK)
val1# = Get INI Value#(Number,sectname$,keyname$,defaultvalue#)
print "'"+keyname$+"'='"+str$(val1#)+"'"+" "+"'"+sectname$+"' exists? " + str$(ini section exist(Number, sectname$))
Sync
if maxlines<=0
msgbox("ERROR!","CANNOT use a number<=0...",MBOK)
maxlines=0
end
endif
endif
result#=val1#
endcase
endselect
close ini file Number
endfunction result
function Write_INI(writeit,File$,Number)
if writeit
if File Exist(File$)
Delete File File$
Endif
Open To Write Number,File$
for x=0 to 1
Write String Number,INIData$(x)
next x
Close File Number
else
exitfunction
endif
endfunction
`the actual message box function
function msgbox(caption as string, msg as string, msgtype as dword)
returnval as dword
load dll "user32.dll", 1
hwnd as dword : hwnd = CALL DLL (1,"GetForegroundWindow")
returnval = call dll(1, "MessageBoxA", hwnd, msg, caption, msgtype)
delete dll 1
endfunction returnval
function get_stats(player,Number,texttype,sectname$,keyname$,sectid,maxlines)
level=Open_INI(get dir$()+"/Stats.ini",Number,texttype,sectname$,keyname$,sectid,maxlines)
endfunction level
Thanks!
CHECK OUT SOME MUSIC FROM MY NEW TECHNO CD! TECHNOKINESIS
http://www.youtube.com/watch?v=4a8KedfgVv0
ALSO, CHECK OUT MY NEW TECHNO CD AT Amazon.com!