San Andreas Multiplayer(GTA)使用PAWN作为其编程语言。我是SA-MP服务器的所有者,我不是那个专业人士,所以如果可能的话,我想得到一些帮助。基本上,我有一个命令可以在他/她在线时检查玩家的统计数据,但是我希望有一个命令在他们离线时检查它们。这是在他上线时检查玩家统计数据的命令代码。
CMD:check(playerid, var[])
{
new user;
if(!Logged(playerid)) return NoLogin(playerid);
if(Player[playerid][pAdmin] >= 2 || Player[playerid][pStaffObserver])
{
if(sscanf(var,"us[32]", user, var))
{
SendClientMessage(playerid, COLOR_WHITE, "{00BFFF}Usage:{FFFFFF} /check [playerid] [checks]");
SendClientMessage(playerid, COLOR_GRAD2, "** [CHECKS]: stats");
return 1;
}
if(!strcmp(var, "stats", true))
{
if(!Logged(user)) return NoLoginB(playerid);
ShowStats(playerid, user);
}
}
else
{
NoAuth(playerid);
}
return 1;
}
我使用ZCMD命令处理器和Dini保存系统。所以我想制作CMD:ocheck会显示股票ShowStats,它的工作方式就像/ ocheck [Firstname_Lastname]。
有任何帮助吗?请尽可能帮助。
由于
〜凯文
答案 0 :(得分:1)
对于您需要的命令,您必须从播放器的用户文件中加载数据。
你显然会以
开头if(!Logged(playerid)) return NoLogin(playerid);
if(Player[playerid][pAdmin] >= 2 || Player[playerid][pStaffObserver])
{
检查使用此功能的播放器是否有权使用此命令。 在此之后,
if(str, "s[32]", name))
您不能在此处使用'u'作为格式化程序,只是因为您正在检查离线播放器的统计信息。 在此之后,您需要检查用户是否实际注册 如果不是,则将该错误返回给该命令的用户 如果他是,那么检查他是否已经在线。如果他在线,请向管理员返回错误以使用此命令而不是'ocheck' 如果他处于离线状态,那么您可以安全地继续加载他的统计数据(当玩家登录时,您可以使用用于加载数据的代码,除非这次只能打印
例如,
format(str, sizeof(str),
"Score: %s, Money: %d",
dini_Int(file, "score"), dini_Int(file, "score") );
答案 1 :(得分:0)
是的,基本上,你必须从文件中获取所有信息,因此ShowStats不起作用,因为我认为它从枚举中获取所有信息等等,你必须编写一个全新的函数,获取所有离线信息。