[-][-][-][-][SERIOUS HELP NEEDED!][-][-][-][-]
#1

My server crashes SOMETIMES, and everytime when it crashes, i check server_log.txt. Well everytime i checked there is last print for example:

Quote:

[13:24:57] [part] Michail_Diachuk has left the server (3:2)

or

Quote:

[12:30:50] [part] Seby_Diablo has left the server (10:2)

or

Quote:

[12:26:44] [part] Zero_malevin has left the server (9:2)

[b]Etc etc.

EVerytime someone left, server crashes. (NOT everytime, twice in hour).

I checked the kicklog and banlog, i didnt see any of those names who lefted. For example (9:2) means that ID=9 ia Kicked/Banned right?

But i make every ban and kick command Logs, so i can see why and when someone gets kicked/banned.

+ Once happened this:

Quote:

[13:25:02]
[13:25:02]
[13:25:02]
[13:25:02] USA-RP v2.4
[13:25:02]
[13:25:06] Incomming connection: 88.177.148.98:1053
[13:25:06] [join] SheepOfIce has joined the server (0:88.177.148.9
[13:25:06] [part] SheepOfIce has left the server (0:2)

----------
Loaded log file: "server_log.txt".
----------

SA:MP Dedicated Server
----------------------
v0.2X, ©2005-2008 SA:MP Team

[13:25:09]
[13:25:09] Server Plugins


Now im out of ideas...

[color=purple]
[u]Does anyone know whats the problem?
Reply
#2

show your onplayerdisconnect
Reply
#3

Quote:
Originally Posted by dice7
show your onplayerdisconnect
There should not be any problems i think.. but here:
Quote:

public OnPlayerDisconnect(playerid, reason)
{
new i2;
new sendername[MAX_PLAYER_NAME];
new string[128];
for(i2=0;i2<MAX_VEHICLES;i2++)
{
if (locked[playerid][i2] == 1)
{
new i;
for(i=0;i<MAX_PLAYERS;i++)
{
SetVehicleParamsForPlayer(i2,i, 0, 0);
}
}
locked[playerid][i2] = 0;
}

new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
switch(reason)
{
case 0: format(string, sizeof(string), "*** %s has left the server. (Timeout) ***", playername);
case 1: format(string, sizeof(string), "*** %s has left the server. (Leaving) ***", playername);
case 2: format(string, sizeof(string), "*** %s has left the server. (Kicked) ***", playername);
}
ProxDetector(40.0, playerid, string, ADMIN_RED, ADMIN_RED, ADMIN_RED, ADMIN_RED, ADMIN_RED);

playerbackup(playerid);
new weap0, ammo0, weap1, ammo1, weap2, ammo2, weap3, ammo3, weap4, ammo4, weap5, ammo5, weap6, ammo6, weap7, ammo7;
GetPlayerWeaponData(playerid,0,weap0,ammo0);
GetPlayerWeaponData(playerid,1,weap1,ammo1);
GetPlayerWeaponData(playerid,2,weap2,ammo2);
GetPlayerWeaponData(playerid,3,weap3,ammo3);
GetPlayerWeaponData(playerid,4,weap4,ammo4);
GetPlayerWeaponData(playerid,5,weap5,ammo5);
GetPlayerWeaponData(playerid,6,weap6,ammo6);
GetPlayerWeaponData(playerid,7,weap7,ammo7);
GetPlayerWeaponData(playerid,0,PlayerInfo[playerid][pGun0],PlayerInfo[playerid][pAmmo0]);
GetPlayerWeaponData(playerid,1,PlayerInfo[playerid][pGun1],PlayerInfo[playerid][pAmmo1]);
GetPlayerWeaponData(playerid,2,PlayerInfo[playerid][pGun2],PlayerInfo[playerid][pAmmo2]);
GetPlayerWeaponData(playerid,3,PlayerInfo[playerid][pGun3],PlayerInfo[playerid][pAmmo3]);
GetPlayerWeaponData(playerid,4,PlayerInfo[playerid][pGun4],PlayerInfo[playerid][pAmmo4]);
GetPlayerWeaponData(playerid,5,PlayerInfo[playerid][pGun5],PlayerInfo[playerid][pAmmo5]);
GetPlayerWeaponData(playerid,6,PlayerInfo[playerid][pGun6],PlayerInfo[playerid][pAmmo6]);
GetPlayerWeaponData(playerid,7,PlayerInfo[playerid][pGun7],PlayerInfo[playerid][pAmmo7]);
GetPlayerWeaponData(playerid,8,PlayerInfo[playerid][pGun8],PlayerInfo[playerid][pAmmo8]);
drivingtest[playerid] = 0;
drivingtestcheck[playerid] = 0;
drivingtesttime[playerid] = 0;
smokepottime[playerid] = 0;
smokecracktime[playerid] = 0;
hospitalbill[playerid] = 0;
gActivePlayers[playerid]--;
numplayers--;
PlayerInfo[playerid][pAdjustable] = 1;
TextDrawHideForPlayer ( playerid , RocketWarning );
DOO_OnPlayerDisconnect(playerid);
ResetMapIconVariables(playerid);
OnUpdatePlayer(playerid);
PingWarn[playerid] = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(TaxiAccepted[i] < 999)
{
if(TaxiAccepted[i] == playerid)
{
TaxiAccepted[i] = 999;
GameTextForPlayer(i, "~w~Taxi Caller~n~~r~Left the game", 5000, 1);
TaxiCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
}
else if(BusAccepted[i] < 999)
{
if(BusAccepted[i] == playerid)
{
BusAccepted[i] = 999;
GameTextForPlayer(i, "~w~Bus Caller~n~~r~Left the game", 5000, 1);
BusCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
}
}
}
if(TransportCost[playerid] > 0 && TransportDriver[playerid] < 999)
{
if(IsPlayerConnected(TransportDriver[playerid]))
{
TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
TransportTime[TransportDriver[playerid]] = 0;
TransportCost[TransportDriver[playerid]] = 0;
format(string, sizeof(string), "~w~Passenger left~n~~g~Earned $%d",TransportCost[playerid]);
GameTextForPlayer(TransportDriver[playerid], string, 5000, 1);
}
}
if(GotHit[playerid] > 0)
{
if(GetChased[playerid] < 999)
{
if(IsPlayerConnected(GetChased[playerid]))
{
SendClientMessage(GetChased[playerid], COLOR_YELLOW, "Your Hit has left the server.");
GoChase[GetChased[playerid]] = 999;
}
}
}
if (gLastCar[playerid] > 0)
{
gLastDriver[gLastCar[playerid]] = 300;
if(PlayerInfo[playerid][pPhousekey] != gLastCar[playerid]-1)
{
gCarLock[gLastCar[playerid]] = 0;
UnLockCar(gLastCar[playerid]);
}
}
if(PlayerBoxing[playerid] > 0)
{
if(Boxer1 == playerid)
{
if(IsPlayerConnected(Boxer2))
{
PlayerBoxing[Boxer2] = 0;
SetPlayerPos(Boxer2, 765.8433,3.2924,1000.7186);
SetPlayerInterior(Boxer2, 5);
PlayerInfo[Boxer2][pInt] = 5;
GameTextForPlayer(Boxer2, "~r~Match interupted", 5000, 1);
}
}
else if(Boxer2 == playerid)
{
if(IsPlayerConnected(Boxer1))
{
PlayerBoxing[Boxer1] = 0;
SetPlayerPos(Boxer1, 765.8433,3.2924,1000.7186);
SetPlayerInterior(Boxer1, 5);
PlayerInfo[Boxer2][pInt] = 5;
GameTextForPlayer(Boxer1, "~r~Match interupted", 5000, 1);
}
}
InRing = 0;
RoundStarted = 0;
Boxer1 = 255;
Boxer2 = 255;
TBoxer = 255;
}
if(TransportDuty[playerid] == 1)
{
TaxiDrivers -= 1;
}
else if(TransportDuty[playerid] == 2)
{
BusDrivers -= 1;
}
if(PlayerCuffed[playerid] > 0)
{
PlayerInfo[playerid][pCuffed] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "5[SERVER]: %s was autojailed for 5 minutes, Reason: Disconnected while arresting.", sendername);
ircSay(EchoConnection,EchoChan,string);
format(string, sizeof(string), "[SERVER]: %s was autojailed for 5 minutes, Reason: Disconnected while arresting.", sendername);
SendClientMessageToAll(COLOR_RED, string);
}
if(PlayerInfo[playerid][pJob] == 11)
{
if(JobDuty[playerid] == 1)
{
Medics -= 1;
}
}
else if(PlayerInfo[playerid][pJob] == 7)
{
if(JobDuty[playerid] == 1)
{
Mechanics -= 1;
}
}
if (PlayerInfo[playerid][pRoadblock] != 0)
{
RemoveRoadblock(playerid);
}
return 1;
}

Reply
#4

please help
Reply
#5

Add debug messages (printf function) to see where the problem is.
Reply
#6

Quote:
Originally Posted by Don Correlli
Add debug messages (printf function) to see where the problem is.
Where? To ALL under OnPlayerDisconnect?

I dont know how it would work anyway... Debug makes me confused...
Reply
#7

Quote:
Originally Posted by Don Correlli
Here's an example:
pawn Код:
MyFunction()
{
  printf("DEBUG: debugMsg0 - MyFunction init.");
  CallMyFunction2(playerid);
  printf("DEBUG: debugMsg1 - passed.");
  // other code.
  if(_WHATEVER_DEFINE_ == 1)
  {
    // other code.
    printf("DEBUG: debugMsg2 - _WHATEVER_DEFINE_ is 1.");
    // other code.
  }
  // other code.
  return 1;
}
Reply
#8

Quote:
Originally Posted by Don Correlli
Quote:
Originally Posted by Don Correlli
Here's an example:
pawn Код:
MyFunction()
{
  printf("DEBUG: debugMsg0 - MyFunction init.");
  CallMyFunction2(playerid);
  printf("DEBUG: debugMsg1 - passed.");
  // other code.
  if(_WHATEVER_DEFINE_ == 1)
  {
    // other code.
    printf("DEBUG: debugMsg2 - _WHATEVER_DEFINE_ is 1.");
    // other code.
  }
  // other code.
  return 1;
}
Dude.... (Thats not enough clear example sorry )

Quote:

Where? To ALL under OnPlayerDisconnect?

Reply
#9

Quote:
Originally Posted by ДitisOnHuora
Where? To ALL under OnPlayerDisconnect?
Yes.
Reply
#10

Quote:
Originally Posted by ДitisOnHuora
Quote:
Originally Posted by dice7
show your onplayerdisconnect
There should not be any problems i think.. but here:
Quote:

public OnPlayerDisconnect(playerid, reason)
{
new i2;
new sendername[MAX_PLAYER_NAME];
new string[128];
for(i2=0;i2<MAX_VEHICLES;i2++)
{
if (locked[playerid][i2] == 1)
{
new i;
for(i=0;i<MAX_PLAYERS;i++)
{
SetVehicleParamsForPlayer(i2,i, 0, 0);
}
}
locked[playerid][i2] = 0;
}

new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
switch(reason)
{
case 0: format(string, sizeof(string), "*** %s has left the server. (Timeout) ***", playername);
case 1: format(string, sizeof(string), "*** %s has left the server. (Leaving) ***", playername);
case 2: format(string, sizeof(string), "*** %s has left the server. (Kicked) ***", playername);
}
ProxDetector(40.0, playerid, string, ADMIN_RED, ADMIN_RED, ADMIN_RED, ADMIN_RED, ADMIN_RED);

playerbackup(playerid);
new weap0, ammo0, weap1, ammo1, weap2, ammo2, weap3, ammo3, weap4, ammo4, weap5, ammo5, weap6, ammo6, weap7, ammo7;
GetPlayerWeaponData(playerid,0,weap0,ammo0);
GetPlayerWeaponData(playerid,1,weap1,ammo1);
GetPlayerWeaponData(playerid,2,weap2,ammo2);
GetPlayerWeaponData(playerid,3,weap3,ammo3);
GetPlayerWeaponData(playerid,4,weap4,ammo4);
GetPlayerWeaponData(playerid,5,weap5,ammo5);
GetPlayerWeaponData(playerid,6,weap6,ammo6);
GetPlayerWeaponData(playerid,7,weap7,ammo7);
GetPlayerWeaponData(playerid,0,PlayerInfo[playerid][pGun0],PlayerInfo[playerid][pAmmo0]);
GetPlayerWeaponData(playerid,1,PlayerInfo[playerid][pGun1],PlayerInfo[playerid][pAmmo1]);
GetPlayerWeaponData(playerid,2,PlayerInfo[playerid][pGun2],PlayerInfo[playerid][pAmmo2]);
GetPlayerWeaponData(playerid,3,PlayerInfo[playerid][pGun3],PlayerInfo[playerid][pAmmo3]);
GetPlayerWeaponData(playerid,4,PlayerInfo[playerid][pGun4],PlayerInfo[playerid][pAmmo4]);
GetPlayerWeaponData(playerid,5,PlayerInfo[playerid][pGun5],PlayerInfo[playerid][pAmmo5]);
GetPlayerWeaponData(playerid,6,PlayerInfo[playerid][pGun6],PlayerInfo[playerid][pAmmo6]);
GetPlayerWeaponData(playerid,7,PlayerInfo[playerid][pGun7],PlayerInfo[playerid][pAmmo7]);
GetPlayerWeaponData(playerid,8,PlayerInfo[playerid][pGun8],PlayerInfo[playerid][pAmmo8]);
drivingtest[playerid] = 0;
drivingtestcheck[playerid] = 0;
drivingtesttime[playerid] = 0;
smokepottime[playerid] = 0;
smokecracktime[playerid] = 0;
hospitalbill[playerid] = 0;
gActivePlayers[playerid]--;
numplayers--;
PlayerInfo[playerid][pAdjustable] = 1;
TextDrawHideForPlayer ( playerid , RocketWarning );
DOO_OnPlayerDisconnect(playerid);
ResetMapIconVariables(playerid);
OnUpdatePlayer(playerid);
PingWarn[playerid] = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(TaxiAccepted[i] < 999)
{
if(TaxiAccepted[i] == playerid)
{
TaxiAccepted[i] = 999;
GameTextForPlayer(i, "~w~Taxi Caller~n~~r~Left the game", 5000, 1);
TaxiCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
}
else if(BusAccepted[i] < 999)
{
if(BusAccepted[i] == playerid)
{
BusAccepted[i] = 999;
GameTextForPlayer(i, "~w~Bus Caller~n~~r~Left the game", 5000, 1);
BusCallTime[i] = 0;
DisablePlayerCheckpoint(i);
}
}
}
}
if(TransportCost[playerid] > 0 && TransportDriver[playerid] < 999)
{
if(IsPlayerConnected(TransportDriver[playerid]))
{
TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
TransportTime[TransportDriver[playerid]] = 0;
TransportCost[TransportDriver[playerid]] = 0;
format(string, sizeof(string), "~w~Passenger left~n~~g~Earned $%d",TransportCost[playerid]);
GameTextForPlayer(TransportDriver[playerid], string, 5000, 1);
}
}
if(GotHit[playerid] > 0)
{
if(GetChased[playerid] < 999)
{
if(IsPlayerConnected(GetChased[playerid]))
{
SendClientMessage(GetChased[playerid], COLOR_YELLOW, "Your Hit has left the server.");
GoChase[GetChased[playerid]] = 999;
}
}
}
if (gLastCar[playerid] > 0)
{
gLastDriver[gLastCar[playerid]] = 300;
if(PlayerInfo[playerid][pPhousekey] != gLastCar[playerid]-1)
{
gCarLock[gLastCar[playerid]] = 0;
UnLockCar(gLastCar[playerid]);
}
}
if(PlayerBoxing[playerid] > 0)
{
if(Boxer1 == playerid)
{
if(IsPlayerConnected(Boxer2))
{
PlayerBoxing[Boxer2] = 0;
SetPlayerPos(Boxer2, 765.8433,3.2924,1000.7186);
SetPlayerInterior(Boxer2, 5);
PlayerInfo[Boxer2][pInt] = 5;
GameTextForPlayer(Boxer2, "~r~Match interupted", 5000, 1);
}
}
else if(Boxer2 == playerid)
{
if(IsPlayerConnected(Boxer1))
{
PlayerBoxing[Boxer1] = 0;
SetPlayerPos(Boxer1, 765.8433,3.2924,1000.7186);
SetPlayerInterior(Boxer1, 5);
PlayerInfo[Boxer2][pInt] = 5;
GameTextForPlayer(Boxer1, "~r~Match interupted", 5000, 1);
}
}
InRing = 0;
RoundStarted = 0;
Boxer1 = 255;
Boxer2 = 255;
TBoxer = 255;
}
if(TransportDuty[playerid] == 1)
{
TaxiDrivers -= 1;
}
else if(TransportDuty[playerid] == 2)
{
BusDrivers -= 1;
}
if(PlayerCuffed[playerid] > 0)
{
PlayerInfo[playerid][pCuffed] = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "5[SERVER]: %s was autojailed for 5 minutes, Reason: Disconnected while arresting.", sendername);
ircSay(EchoConnection,EchoChan,string);
format(string, sizeof(string), "[SERVER]: %s was autojailed for 5 minutes, Reason: Disconnected while arresting.", sendername);
SendClientMessageToAll(COLOR_RED, string);
}
if(PlayerInfo[playerid][pJob] == 11)
{
if(JobDuty[playerid] == 1)
{
Medics -= 1;
}
}
else if(PlayerInfo[playerid][pJob] == 7)
{
if(JobDuty[playerid] == 1)
{
Mechanics -= 1;
}
}
if (PlayerInfo[playerid][pRoadblock] != 0)
{
RemoveRoadblock(playerid);
}
return 1;
}

Thats the longest OnPlayerDisconnect I ever seen!!
Mine is only on 30 lines and this is about 100 lines
Not wierd your crashing..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)