GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Winklevows le 08 Février 2011, 21:48:45
-
Bonjour,
Je souhaiterais sauvegardé les stats des joueurs si le serveur redémarre, lorsqu'un joueur ce déconnecte sa fonctionne :
<?php
public OnPlayerDisconnect(playerid, reason)
{
new msg[90];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(msg, sizeof(msg), "\2;%s(%d) a quitté le serveur (%s)\2;", name,playerid,aDisconnectNames[reason]);
IRC_GroupSay(gGroupID, IRC_CHANNEL, msg);
zoneupdates[playerid] = 0;
player_zone[playerid] = -1;
Banning[playerid] = 0;
Kicking[playerid] = 0;
PlayerAdminLevel[playerid] =0;
HasDrugHouseKeys[playerid] =0;
if (PLAYERLIST_authed[playerid])
{
dUserSetINT(PlayerName(playerid)).("money",GetPlayerMoney(playerid));
dUserSetINT(PlayerName(playerid)).("score",GetPlayerScore(playerid));
dUserSetINT(PlayerName(playerid)).("robrank",robberrank[playerid]);
dUserSetINT(PlayerName(playerid)).("teamkills",teamkiller[playerid]);
dUserSetINT(PlayerName(playerid)).("innocentkills",innocentkiller[playerid]);
dUserSetINT(PlayerName(playerid)).("lowwantedkills",lowwantedkiller[playerid]);
dUserSetINT(PlayerName(playerid)).("cashinsured",BankRobInsurance[playerid]);
dUserSetINT(PlayerName(playerid)).("setjail",Setjail[playerid]);
dUserSetINT(PlayerName(playerid)).("RegularPlayer",RegularPlayer[playerid]);
dUserSetINT(PlayerName(playerid)).("InTeam",InTeam[playerid]);
dUserSetINT(PlayerName(playerid)).("Jailed",Jailed[playerid]);
dUserSetINT(PlayerName(playerid)).("jailtime",JailTime[playerid]);
dUserSetINT(PlayerName(playerid)).("NiveauRecherche",GetPlayerWantedLevel(playerid));
dUserSetINT(PlayerName(playerid)).("HasDrugHouseKeys",HasDrugHouseKeys[playerid]);
}
PLAYERLIST_authed[playerid]=false;
new ConnectName[24], str[60];
GetPlayerName(playerid, ConnectName, 24);
switch (reason)
{
case 0: format(str, 55, "%s a quitté le serveur! (Bug)", ConnectName);
case 1: format(str, 60, "%s a quitté le serveur! (Déconnexion)", ConnectName);
case 2: format(str, 55, "%s a quitté le serveur! (Kické)", ConnectName);
}
SendClientMessageToAll(0x808080AA, str);
return 1;
}
?>
Lorsque le serveur reboot j'ai fait sa :
<?php
public OnGameModeExit()
{
GameTextForAll(conversiontext("VEUILLEZ PATIENTER"), 20000,4);
SendClientMessageToAll(COLOR_SYSTEM,"Le serveur est en train de redémarrer...");
IRC_Quit(gBotID[0], "Déconnexion");
IRC_Quit(gBotID[1], "Déconnexion");
IRC_DestroyGroup(gGroupID);
for(new i=0; i < MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
if(udb_Exists(PlayerName(i)) && PLAYERLIST_authed[i])
{
dUserSetINT(PlayerName(i)).("money",GetPlayerMoney(i));
dUserSetINT(PlayerName(i)).("score",GetPlayerScore(i));
dUserSetINT(PlayerName(i)).("robrank",robberrank[i]);
dUserSetINT(PlayerName(i)).("teamkills",teamkiller[i]);
dUserSetINT(PlayerName(i)).("innocentkills",innocentkiller[i]);
dUserSetINT(PlayerName(i)).("lowwantedkills",lowwantedkiller[i]);
dUserSetINT(PlayerName(i)).("cashinsured",BankRobInsurance[i]);
dUserSetINT(PlayerName(i)).("setjail",Setjail[i]);
dUserSetINT(PlayerName(i)).("RegularPlayer",RegularPlayer[i]);
dUserSetINT(PlayerName(i)).("InTeam",InTeam[i]);
dUserSetINT(PlayerName(i)).("Jailed",Jailed[i]);
dUserSetINT(PlayerName(i)).("jailtime",JailTime[i]);
dUserSetINT(PlayerName(i)).("NiveauRecherche",GetPlayerWantedLevel(i));
dUserSetINT(PlayerName(i)).("HasDrugHouseKeys",HasDrugHouseKeys[i]);
}
PLAYERLIST_authed[i]=false;
}
}
return 1;
}
Mais les infos ne sont pas sauvé, vous voyez ce que ne va pas ?
-
avec la commande gmx la callback n'est pas appeler au mieux dans ta commande du fait une boucle pour tout save et ensuite de reboot
-
Ah oui effectivement je n'y avais pas pensé, merci :)