这是我显示自定义高分系统的完整代码:
// instance vars
var buffer = 0
var trigger = 0
// display setup
draw_set_font(fnt_highscores)
draw_set_color(c_white)
draw_set_halign(fa_left)
draw_set_valign(fa_middle)
// open save
ini_open("highscores.sav")
// reads file into 2d array
for (var i=0; i<10; i++)
{
scores[0,i] = ini_read_string(string(i+1), "place", 0)
scores[1,i] = ini_read_string(string(i+1), "name", 0)
scores[2,i] = ini_read_string(string(i+1), "score", 0)
}
// cycles through array to look for new high score
for (var i=0; i<10; i++)
{
// found one, run once.
if (global.points >= int64(scores[2,i]) && trigger == 0)
{
// starting from bottom, move value from number above to current
for (var j=9; j>i; j--)
{
scores[0,j] = scores[0,j-1]
scores[1,j] = scores[1,j-1]
scores[2,j] = scores[2,j-1]
}
// new high score
var initials = "beef"
scores[0,i] = string(i+1)
scores[1,i] = initials
scores[2,i] = global.points
trigger++
}
// display score
var j = i + 1
draw_text(global.centerw - 150, global.centerh - 220 + buffer, string(j) + ".")
draw_text(global.centerw - 100, global.centerh - 220 + buffer, scores[1,i])
draw_text(global.centerw + 20, global.centerh - 220 + buffer, scores[2,i])
buffer += 40
}
// write to file - NOT WORKING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
for (var i=0; i<10; i++)
{
ini_write_string(string(i+1), "place", scores[0,i])
ini_write_string(string(i+1), "name", scores[1,i])
ini_write_string(string(i+1), "score", string(scores[2,i]))
}
// close save
ini_close()
// draws flashing text
scr_flash_alpha(300)
draw_text(50,room_height - 50, "Start or R Key to Restart. Q to quit")
draw_set_alpha(1)
“写入文件”行(靠近按钮)导致了问题。这是我击败高分时它在做什么:
有趣的是,如果我注释掉写入 ini 行,一切都会按预期完美运行(显然,只是不会将信息保存到 ini)
所以,我所有的循环都在工作,只是当它写入 ini 时,它没有正确写入值。有什么提示吗?我已经重写了好几个小时了,却无处可笑
提前非常感谢你!!!
(编辑:这是我的 highscores.sav - 请注意,条目 10 和 9 完全相同,直到“位置”值。有趣的是它从 10 开始,一直到 1。当我编写默认保存时,我编号为 1-10。)
[10]
score="2500"
name="beef"
place="9"
[9]
score="2500"
name="beef"
place="9"
[8]
score="3000"
name="ASS"
place="8"
[7]
score="3800"
name="MAL"
place="7"
[6]
score="4600"
name="ADO"
place="6"
[5]
score="5500"
name="DSK"
place="5"
[4]
score="5500"
name="DIS"
place="4"
[3]
score="5900"
name="PPS"
place="3"
[2]
score="6100"
name="DSK"
place="2"
[1]
score="6800"
name="PSF"
place="1"
(旁注:我知道这里和那里的代码中有一些草率的东西,一旦它起作用,就会把它全部清理掉。)