我遇到了一个关于在我的游戏模式中为一台San Andreas多人游戏服务器读取PAWN文件的问题,问题如下:
enum vInfo
{
vID,
vFaction,
Float: vPosX,
Float: vPosY,
Float: vPosZ,
vCash,
vDrugs,
vVW
}
new VaultInfo[7][vInfo];
上面有一些我服务器上的保险库系统的数据。
forward LoadVaults();
public LoadVaults()
{
new
arrCoords[9][64],
strFromFile2[256],
File: file = fopen("vaults.cfg", io_read);
if (file)
{
new idx;
while (idx < sizeof(VaultInfo))
{
fread(file, strFromFile2);
split(strFromFile2, arrCoords, ',');
VaultInfo[idx][vID] = strval(arrCoords[0]);
VaultInfo[idx][vFaction] = strval(arrCoords[1]);
VaultInfo[idx][vPosX] = floatstr(arrCoords[2]);
VaultInfo[idx][vPosY] = floatstr(arrCoords[3]);
VaultInfo[idx][vPosZ] = floatstr(arrCoords[4]);
VaultInfo[idx][vCash] = strval(arrCoords[5]);
VaultInfo[idx][vDrugs] = strval(arrCoords[6]);
VaultInfo[idx][vVW] = strval(arrCoords[7]);
printf("VaultID %d FactionNUM %d, PosX %f, PosY %f, PosZ %f, Cash %d, Drugs %d, VW %d", VaultInfo[idx][vID], VaultInfo[idx][vFaction],VaultInfo[idx] [vPosX], VaultInfo[idx][vPosY], VaultInfo[idx][vPosZ], VaultInfo[idx][vCash], VaultInfo[idx][vDrugs], VaultInfo[idx][vVW]);
idx++;
}
fclose(file);
}
return 1;
}
上面有一个函数,用于读取我为7个保险库创建的vaults.cfg,并打印每个元素的值以验证它们是否被正确读取,不幸的是,我的函数读错了它们,你可以看到这张图片:https://imgur.com/4vpJU60。这就是我在vaults.cfg中写的内容:
0,4,2492.2615,-1702.3912,1018.3438,0,0,21,5,2332.6660,-1142.7737,1054.2969,0,0,32,6,508.3405,-81.3647,998.9609,0,0,13, 7,508.3405,-81.3647,998.9609,0,0,44,8,-223.3711,1411.0023,27.7734,0,0,15,9,-223.3711,1411.0023,27.7734,0,0,26,10,508.3405,-81.3647,998.9609, 0,0,3
经过几个小时的搜索我的问题的解决方案之后,我想在我的vaults.cfg中引入其他数据并且它工作正常,我的函数会正确读取每个元素,如图所示:https://imgur.com/a/zFJv4mP 这就是我在vaults.cfg中写的内容:
0,1,231.1267,79.3089,1005.0391,0,0,-11,2,233.6864,111.3057,1003.2257,0,0,-12,3,1714.7601,-1670.1362,20.2247,0,0,-13,4,2546.9341 ,-1281.5876,1060.9844,0,0,14,5,2546.9341,-1281.5876,1060.9844,0,0,25,12,2546.9341,-1281.5876,1060.9844,0,0,36,13,2546.9341,-1281.5876,1060.9844 ,0,0,4
对于那些数据,所有内容都是正确读取的,那么我的初始元素有什么问题?为什么我的函数读错了元素?我非常感谢那些比我更了解的人的帮助。