SA-MP Forums Archive
OnPlayerDisconnect stopped working - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: OnPlayerDisconnect stopped working (/showthread.php?tid=387592)



OnPlayerDisconnect stopped working - pasha97 - 25.10.2012

I don't know why, but this callback doesn't work anymore, but it used to all time ago. Mayby you know the reason?

Код HTML:
public OnPlayerDisconnect(playerid, reason){
    specby[specto[playerid]]=-1;
    specto[playerid]=-1;
    specby[playerid]=-1;
    PlayersCount--;
	Account[playerid][pVotesForKick]=0;
	Account[playerid][pVotesForBan]=0;
    PlayerInVotekick[playerid]=false;
    PlayerInVoteban[playerid]=false;
    KillTimer(VoteKickTimer[player]);
    KillTimer(VoteBanTimer[player]);
 	DestroyObject(myobject[playerid]);
	DestroyObject(myobject2[playerid]);
	DestroyObject(myobject3[playerid]);
	DestroyObject(myobject4[playerid]);
	DestroyObject(myobject5[playerid]);
    for(new i=0;i<MAX_SERVER_PLAYERS;i++){
      MyVoteK[i][playerid]=false;
	  MyVoteB[i][playerid]=false;}
    MyVoteC[playerid]=false;
    new stringa[128],file[256];
    GetPlayerName(playerid, name, sizeof(name));

      switch(reason){
        case 0: format(stringa, sizeof(stringa), "* [CRASH]: %s has left the server. *", name);
        case 1: format(stringa, sizeof(stringa), "* [EXIT]: %s has left the server. *", name);
        case 2:{
	           if(Banned[playerid]==false){
		         format(stringa, sizeof(stringa), "* [KICK]: %s has been kicked. *", name);}
			   if(Banned[playerid]==true){
		         format(stringa, sizeof(stringa), "* [BAN]: %s has been banned!!! *", name);}}}
    if(Options[ConnectMessages]==1){
      SendClientMessageToAll(COLOR_GREY, stringa);}
	print(stringa);
    Banned[playerid]=false;
    GetPlayerName(playerid, pname, sizeof(pname));
    format(file, sizeof(file), UsersFile, pname);
    OnPlayerLogout(playerid);
    Account[playerid][pMuteWarnings]=0;
    Account[playerid][pSpamWarnings]=0;
    Account[playerid][pPingWarnings]=0;
    Account[playerid][pFloodding]=0;
    Account[playerid][pJailed]=false;
    Account[playerid][pFreezed]=false;
    Account[playerid][pMuted]=false;
    Account[playerid][pFlood]=false;
    Account[playerid][pVehicleLocked]=false;
    Account[playerid][pWarning]=0;
    Account[playerid][pBanWarning]=0;
    Account[playerid][pSkin]=0;
    if(Account[playerid][pLoggedin]==1){
	  dini_IntSet(file,"muted",0);
	  dini_IntSet(file,"jailed",0);
	  dini_IntSet(file,"freezed",0);}
    Spawned[playerid]=false;
    GodActive[playerid]=false;
    ResetPlayerWeapons(playerid);
    KillTimer(MuteTimer[playerid]);
    KillTimer(JailTimer[playerid]);
	return 1;}



Re: OnPlayerDisconnect stopped working - ViniBorn - 25.10.2012

Make an debug to show the mistake...


Re: OnPlayerDisconnect stopped working - pasha97 - 25.10.2012

Quote:
Originally Posted by Viniborn
Посмотреть сообщение
Make an debug to show the mistake...
hmmmm, how to make a debug?


Re: OnPlayerDisconnect stopped working - HyDrAtIc - 25.10.2012

PHP код:
public OnPlayerDisconnect(playeridreason){
    
specby[specto[playerid]]=-1;
    
specto[playerid]=-1;
    
specby[playerid]=-1;
    
PlayersCount--;
    
Account[playerid][pVotesForKick]=0;
    
Account[playerid][pVotesForBan]=0;
    
PlayerInVotekick[playerid]=false;
    
PlayerInVoteban[playerid]=false;
    
KillTimer(VoteKickTimer[player]);
    
KillTimer(VoteBanTimer[player]);
     
DestroyObject(myobject[playerid]);
    
DestroyObject(myobject2[playerid]);
    
DestroyObject(myobject3[playerid]);
    
DestroyObject(myobject4[playerid]);
    
DestroyObject(myobject5[playerid]);
    for(new 
i=0;i<MAX_SERVER_PLAYERS;i++){
      
MyVoteK[i][playerid]=false;
      
MyVoteB[i][playerid]=false;}
    
MyVoteC[playerid]=false;
    new 
stringa[128],file[256];
    
GetPlayerName(playeridnamesizeof(name));

      switch(
reason){
        case 
0format(stringasizeof(stringa), "* [CRASH]: %s has left the server. *"name);
        case 
1format(stringasizeof(stringa), "* [EXIT]: %s has left the server. *"name);
        case 
2:{
               if(
Banned[playerid]==false){
                 
format(stringasizeof(stringa), "* [KICK]: %s has been kicked. *"name);}
               if(
Banned[playerid]==true){
                 
format(stringasizeof(stringa), "* [BAN]: %s has been banned!!! *"name);}}}
    if(
Options[ConnectMessages]==1){
      
SendClientMessageToAll(COLOR_GREYstringa);}
    print(
stringa);
    
Banned[playerid]=false;
    
GetPlayerName(playeridpnamesizeof(pname));
    
format(filesizeof(file), UsersFilepname);
    
OnPlayerLogout(playerid);
    
Account[playerid][pMuteWarnings]=0;
    
Account[playerid][pSpamWarnings]=0;
    
Account[playerid][pPingWarnings]=0;
    
Account[playerid][pFloodding]=0;
    
Account[playerid][pJailed]=false;
    
Account[playerid][pFreezed]=false;
    
Account[playerid][pMuted]=false;
    
Account[playerid][pFlood]=false;
    
Account[playerid][pVehicleLocked]=false;
    
Account[playerid][pWarning]=0;
    
Account[playerid][pBanWarning]=0;
    
Account[playerid][pSkin]=0;
    if(
Account[playerid][pLoggedin]==1){
      
dini_IntSet(file,"muted",0);
      
dini_IntSet(file,"jailed",0);
      
dini_IntSet(file,"freezed",0);}
    
Spawned[playerid]=false;
    
GodActive[playerid]=false;
    
ResetPlayerWeapons(playerid);
    
KillTimer(MuteTimer[playerid]);
    
KillTimer(JailTimer[playerid]);
    return 
1;




Re: OnPlayerDisconnect stopped working - Kirollos - 25.10.2012

i believe the callback crashes when its get called. happened to me before.

use crashdetect plugin and compile with the more params thingy and then look on the console, you will be able to fix it


Re: OnPlayerDisconnect stopped working - HyDrAtIc - 25.10.2012

Quote:
Originally Posted by kirollos
Посмотреть сообщение
i believe the callback crashes when its get called. happened to me before.

use crashdetect plugin and compile with the more params thingy and then look on the console, you will be able to fix it
The problem that he putted the "}" in someplace wrong anyway my code that I posted will fix that problem .


Re: OnPlayerDisconnect stopped working - pasha97 - 26.10.2012

Quote:
Originally Posted by James_Nick
Посмотреть сообщение
The problem that he putted the "}" in someplace wrong anyway my code that I posted will fix that problem .
it didn't. No changes yet. Also, you made a mistake and closed the public with ) instead of }


Re: OnPlayerDisconnect stopped working - JaKe Elite - 26.10.2012

Like Viniborn said, make a debug to make a debug print something (even random message), if it prints out in the console it means the callback is working, if it's not, the callback has causing some problems.

Here is an example of debug code

PHP код:
public OnPlayerDisconnect(playeridreason)
{
     print(
"[debug] OnPlayerDisconnect called!");
     return 
1;




Re: OnPlayerDisconnect stopped working - pasha97 - 26.10.2012

Quote:
Originally Posted by Romel
Посмотреть сообщение
Like Viniborn said, make a debug to make a debug print something (even random message), if it prints out in the console it means the callback is working, if it's not, the callback has causing some problems.

Here is an example of debug code

PHP код:
public OnPlayerDisconnect(playeridreason)
{
     print(
"[debug] OnPlayerDisconnect called!");
     return 
1;

its not working


Re: OnPlayerDisconnect stopped working - gtakillerIV - 26.10.2012

Maybe because you want to save ALOT of stuff when the player disconnects, with Dini. Of course you know what Dini does:

Open save entry close, open save entry close..etc.

Try to use YINI and see, it might work.

Or try to remove some stuff like the saving of the jailed, Float X...etc and see.

I might not be correct for why it's not getting called.