Tällähetkellä pystyy tallentamaan vain desimaali arvoja, mutta nehän ovat käytännössä parempia kuin pelkät kokonaisluvut. (koska tarkemmat arvot ja ne ovat helppoja muuttaa kokonaisluvuiksi ) Tulen kyllä lisäämään vielä tekstin tallennuksen tuonne muistipalaan.
Esimerkki + Funktiot:
Code: Select all
//Luodaan liput joilla ohjataan data oikeisiin soluihin
Const Flag_ID = 0
Const Flag_Energy = 1
Const Flag_Stealth = 2
Const Flag_Kills = 3
Const Flag_Cells = 3
ukko = LoadObject("Media\Guy.BMP") //Ladataan objekti
//Asetetaan objekteille dataa :)
ObjDataBank(ukko, Flag_Cells)
SetObjData(ukko, Flag_ID, 1)
SetObjData(ukko, Flag_Energy, 100.0)
SetObjData(ukko, Flag_Stealth, 75.0)
SetObjData(ukko, Flag_Kills, 0)
Repeat
SetWindow ""+FPS()
ClearText
//Nyt luetaan dataa objektin pankista..
AddText "Obj ID:"+GetObjData(ukko, Flag_ID)
AddText "Obj Energy: "+GetObjData(ukko, Flag_Energy)
AddText "Obj Stealth: "+GetObjData(ukko, Flag_Stealth)
AddText "Obj Kills: "+GetObjData(ukko, Flag_Kills)
//Tällä koodinpätkällä muokataan dataa lennosta.
If UpKey() Then IncrObjData(ukko, Flag_Energy, 0.5)
If DownKey() Then IncrObjData(ukko, Flag_Energy, -0.5)
DrawScreen
Forever
//Funktiot
//Parametrien selitykset:
'obj <- objekti jolle halutaan asettaa datapankki, tai objekti jolla on jo datapankki
'cell <- solu, josta luetaan tai jonne kirjoitetaan dataa
'var# <- arvon määrä
'amount <- määrä paljonko arvoa lisätään tai vähennetään
//Tällä funktiolla luot data pankin, arvo vaatii objektimuuttujaa ja solujen määrää, joka on valmiina asetettu kolmeen.
//Muttakun nolla arvokin lasketaan soluksi oikeasti soluja on siis 4 :)
Function ObjDataBank(obj, cells = 3)
cells = Int(cells)
memblock = MakeMEMBlock((cells+1)*4)
If ObjectInteger(obj) Then MakeError "Object already has data!"
ObjectInteger obj, memblock
Return False
End Function
//Tällä funktiolla voit asettaa tietttyyn soluun arvon
Function SetObjData(obj, cell, var#)
cell = Int(cell*4)
block = ObjectInteger(obj)
If Not block Then MakeError "Object doesn't has a databank!"
PokeFloat block, cell, var#
Return False
End Function
//Tällä funktiolla voit hakea tietystä solusta arvon
Function GetObjData(obj, cell)
cell = Int(cell*4)
block = ObjectInteger(obj)
If Not block Then MakeError "Object doesn't has a databank!"
Return PeekFloat(block, cell)
End Function
//Tällä funktiolla voit lisätä ja vähentää olemassa olevaa arvoa
Function IncrObjData(obj, cell, amount#)
cell = Int(cell*4)
block = ObjectInteger(obj)
If Not block Then MakeError "Object doesn't has a databank!"
newdata# = PeekFloat(block, cell) + amount
PokeFloat block, cell, newdata
End Function
//Tällä funktiolla tuhoat objektilla olevan datapankin.
//MUISTA KUTSUA TÄMÄ ENNENKUIN TUHOAT OBJEKTIN!
Function DeleteDatabank(obj)
block = ObjectInteger(obj)
If block Then
DeleteMEMBlock block
EndIf
End Function
Code: Select all
//Parametrien selitykset:
'obj <- objekti jolle halutaan asettaa datapankki, tai objekti jolla on jo datapankki
'cell <- solu, josta luetaan tai jonne kirjoitetaan dataa
'var# <- arvon määrä
'amount <- määrä paljonko arvoa lisätään tai vähennetään
//Tällä funktiolla luot data pankin, arvo vaatii objektimuuttujaa ja solujen määrää, joka on valmiina asetettu kolmeen.
//Muttakun nolla arvokin lasketaan soluksi oikeasti soluja on siis 4 :)
Function ObjDataBank(obj, cells = 3)
cells = Int(cells)
memblock = MakeMEMBlock((cells+1)*4)
If ObjectInteger(obj) Then MakeError "Object already has data!"
ObjectInteger obj, memblock
Return False
End Function
//Tällä funktiolla voit asettaa tietttyyn soluun arvon
Function SetObjData(obj, cell, var#)
cell = Int(cell*4)
block = ObjectInteger(obj)
If Not block Then MakeError "Object doesn't has a databank!"
PokeFloat block, cell, var#
Return False
End Function
//Tällä funktiolla voit hakea tietystä solusta arvon
Function GetObjData(obj, cell)
cell = Int(cell*4)
block = ObjectInteger(obj)
If Not block Then MakeError "Object doesn't has a databank!"
Return PeekFloat(block, cell)
End Function
//Tällä funktiolla voit lisätä ja vähentää olemassa olevaa arvoa
Function IncrObjData(obj, cell, amount#)
cell = Int(cell*4)
block = ObjectInteger(obj)
If Not block Then MakeError "Object doesn't has a databank!"
newdata# = PeekFloat(block, cell) + amount
PokeFloat block, cell, newdata
End Function
//Tällä funktiolla tuhoat objektilla olevan datapankin.
//MUISTA KUTSUA TÄMÄ ENNENKUIN TUHOAT OBJEKTIN!
Function DeleteDataBank(obj)
block = ObjectInteger(obj)
If block Then
DeleteMEMBlock block
EndIf
End Function