01.04.2010, 10:49
I'm making a RP Game Mode from scratch but I have a problem: the server crashes randomly.
This happens often when there more than one player. Sometimes when someone tries to do a command (I use zcmd) it returns with a message "UNKNOW COMMAND" and after a bit time it crashes...
For the account saving I use dudb for reading player data and a code made by me for writing player data (repeated with a timer and on player disconnect)
PS1: I use R7 Samp Server
PS2: sorry for my english, but in Italia (BA) the schools are still not invented...
This happens often when there more than one player. Sometimes when someone tries to do a command (I use zcmd) it returns with a message "UNKNOW COMMAND" and after a bit time it crashes...
For the account saving I use dudb for reading player data and a code made by me for writing player data (repeated with a timer and on player disconnect)
Код:
forward OnPlayerDataLoad(playerid); public OnPlayerDataLoad(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name, sizeof(name)); PlayerInfo[playerid][Password] = udb_UserInt(name, "password_hash"); PlayerInfo[playerid][Level] = udb_UserInt(name, "Level"); PlayerInfo[playerid][Walk] = udb_UserInt(name, "Walk"); PlayerInfo[playerid][Sex] = udb_UserInt(name, "Sex"); PlayerInfo[playerid][Skin] = udb_UserInt(name, "Skin"); PlayerInfo[playerid][Years] = udb_UserInt(name, "Years"); PlayerInfo[playerid][Registered] = udb_UserInt(name, "Registered"); PlayerInfo[playerid][TutorialDone] = udb_UserInt(name, "TutorialDone"); PlayerInfo[playerid][OldProfession] = udb_UserInt(name, "OldProfession"); PlayerInfo[playerid][Banned] = udb_UserInt(name, "Banned"); PlayerInfo[playerid][Admin] = udb_UserInt(name, "Admin"); PlayerInfo[playerid][Pay] = udb_UserInt(name, "Pay"); PlayerInfo[playerid][Exp] = udb_UserInt(name, "Exp"); PlayerInfo[playerid][AllowedPayDay] = udb_UserInt(name, "AllowedPayDay"); PlayerInfo[playerid][Money] = udb_UserInt(name, "Money"); PlayerInfo[playerid][Faction] = udb_UserInt(name, "Faction"); PlayerInfo[playerid][Rank] = udb_UserInt(name, "Rank"); PlayerInfo[playerid][Clan] = udb_UserInt(name, "Clan"); PlayerInfo[playerid][ClanLeader] = udb_UserInt(name, "ClanLeader"); PlayerInfo[playerid][Bank] = udb_UserInt(name, "Bank"); PlayerInfo[playerid][Jailed] = udb_UserInt(name, "Jailed"); PlayerInfo[playerid][JailTime] = udb_UserInt(name, "JailTime"); PlayerInfo[playerid][HouseKey] = udb_UserInt(name, "HouseKey"); PlayerInfo[playerid][Materials] = udb_UserInt(name, "Materials"); PlayerInfo[playerid][Drug] = udb_UserInt(name, "Drug"); PlayerInfo[playerid][CarLic] = udb_UserInt(name, "CarLic"); PlayerInfo[playerid][FlyLic] = udb_UserInt(name, "FlyLic"); PlayerInfo[playerid][WepLic] = udb_UserInt(name, "WepLic"); return 1; }
Код:
forward OnPlayerDataSave(playerid); public OnPlayerDataSave(playerid) { if(IsPlayerConnected(playerid)) { if(gPlayerLogged[playerid]) { new string3[128]; format(string3, sizeof(string3), "Accounts/%s.sav", udb_encode(ReturnName(playerid))); new File: hFile = fopen(string3, io_write); if (hFile) { new var[64]; PlayerInfo[playerid][Money] = GetPlayerCash(playerid); format(var, 64, "password_hash=%d\r\n", PlayerInfo[playerid][Password]);fwrite(hFile, var); format(var, 64, "Level=%d\r\n", PlayerInfo[playerid][Level]);fwrite(hFile, var); format(var, 64, "Walk=%d\r\n", PlayerInfo[playerid][Walk]);fwrite(hFile, var); format(var, 64, "Sex=%d\r\n", PlayerInfo[playerid][Sex]);fwrite(hFile, var); format(var, 64, "Skin=%d\r\n", PlayerInfo[playerid][Skin]);fwrite(hFile, var); format(var, 64, "Years=%d\r\n", PlayerInfo[playerid][Years]);fwrite(hFile, var); format(var, 64, "Registered=%d\r\n", PlayerInfo[playerid][Registered]);fwrite(hFile, var); format(var, 64, "TutorialDone=%d\r\n", PlayerInfo[playerid][TutorialDone]);fwrite(hFile, var); format(var, 64, "OldProfession=%d\r\n", PlayerInfo[playerid][OldProfession]);fwrite(hFile, var); format(var, 64, "Banned=%d\r\n", PlayerInfo[playerid][Banned]);fwrite(hFile, var); format(var, 64, "Admin=%d\r\n", PlayerInfo[playerid][Admin]);fwrite(hFile, var); format(var, 64, "Pay=%d\r\n", PlayerInfo[playerid][Pay]);fwrite(hFile, var); format(var, 64, "Exp=%d\r\n", PlayerInfo[playerid][Exp]);fwrite(hFile, var); format(var, 64, "AllowedPayDay=%d\r\n", PlayerInfo[playerid][AllowedPayDay]);fwrite(hFile, var); format(var, 64, "Money=%d\r\n", PlayerInfo[playerid][Money]);fwrite(hFile, var); format(var, 64, "Faction=%d\r\n", PlayerInfo[playerid][Faction]);fwrite(hFile, var); format(var, 64, "Rank=%d\r\n", PlayerInfo[playerid][Rank]);fwrite(hFile, var); format(var, 64, "Clan=%d\r\n", PlayerInfo[playerid][Clan]);fwrite(hFile, var); format(var, 64, "ClanLeader=%d\r\n", PlayerInfo[playerid][ClanLeader]);fwrite(hFile, var); format(var, 64, "Bank=%d\r\n", PlayerInfo[playerid][Bank]);fwrite(hFile, var); format(var, 64, "Jailed=%d\r\n", PlayerInfo[playerid][Jailed]);fwrite(hFile, var); format(var, 64, "JailTime=%d\r\n", PlayerInfo[playerid][JailTime]);fwrite(hFile, var); format(var, 64, "HouseKey=%d\r\n", PlayerInfo[playerid][HouseKey]);fwrite(hFile, var); format(var, 64, "IP=%s\r\n", PlayerInfo[playerid][IP]);fwrite(hFile, var); format(var, 64, "Materials=%d\r\n", PlayerInfo[playerid][Materials]);fwrite(hFile, var); format(var, 64, "Drug=%d\r\n", PlayerInfo[playerid][Drug]);fwrite(hFile, var); format(var, 64, "CarLic=%d\r\n", PlayerInfo[playerid][CarLic]);fwrite(hFile, var); format(var, 64, "FlyLic=%d\r\n", PlayerInfo[playerid][FlyLic]);fwrite(hFile, var); format(var, 64, "WepLic=%d\r\n", PlayerInfo[playerid][WepLic]);fwrite(hFile, var); fclose(hFile); } } } return 1; }
PS2: sorry for my english, but in Italia (BA) the schools are still not invented...