+REP , OnPlayerDisconnect Cause Crash - 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: +REP , OnPlayerDisconnect Cause Crash (
/showthread.php?tid=529040)
+REP , OnPlayerDisconnect Cause Crash -
SPA - 31.07.2014
I'v duel system , when player disconnecting it keep getting this msgs in crashdetect:
Код:
[16:39:54] [debug] Run time error 4: "Array index out of bounds"
[16:39:54] [debug] Accessing element at negative index -1
[16:39:54] [debug] AMX backtrace:
[16:39:54] [debug] #0 00009014 in public SSCANF_OnPlayerDisconnect (playerid=1, reason=1) at C:\Users\MaHdy\Desktop\DuelSystem.pwn:91
[16:39:54] [debug] #1 00002604 in public OnPlayerDisconnect (playerid=1, reason=1) at C:\Users\MaHdy\Desktop\SPA Orginal Build 2\pawno\include\sscanf2.inc:229
[16:39:54] [part] Mahdi has left the server (1:1)
[16:39:55] [chat] [Ry[A]n]: x8g[uo1sang
OnPlayerDisconnect
Код:
public OnPlayerDisconnect(playerid, reason)
{
new duelid = GetPVarInt(playerid, "DuelDID");
new dueler, dueler2;
dueler = dInfo[duelid][Inviter];
dueler2 = dInfo[duelid][Invitee];
if(InDuel[dueler] == 1 && InDuel[dueler2] == 1)
{
new sReason[15];
switch(reason)
{
case 0: format(sReason, sizeof(sReason), "Timeout");
case 1: format(sReason, sizeof(sReason), "Leaving");
case 2: format(sReason, sizeof(sReason), "Kicked");
}
new gBet = dInfo[duelid][BetMoney];
new gDuelSpot = dInfo[duelid][Location];
new Slot[MAX_DUEL_WEPS];
for(new i=0; i < MAX_DUEL_WEPS; i++) Slot[i] = dWeps[duelid][i];
new winner, loser;
if(dueler == playerid)
{
winner = dueler2;
loser = dueler;
}
else if(dueler2 == playerid)
{
winner = dueler;
loser = dueler2;
}
Money_GivePlayerMoney(winner, gBet);
new wepstr[200];
for(new x=0; x < MAX_DUEL_WEPS; x++)
{
if(IsValidWeapon(Slot[x])) format(wepstr, sizeof(wepstr), "%s%s ", wepstr, weaponNames(Slot[x]));
}
new str[150];
format(str, sizeof(str), "Duel | %s has left the server during a duel with %s (Reason: %s)", pName(loser), pName(winner), sReason);
SendClientMessageToAll(COLOR_DUEL, str);
format(str, sizeof(str), "Duel | %s won the duel against %s (Weapons %s) (Bet: $%d) (%s [ID %d])", pName(winner), pName(loser), wepstr, gBet, ReturnDuelNameFromID(gDuelSpot), gDuelSpot);
SendClientMessageToAll(COLOR_DUEL, str);
SetPlayerArmour(winner, 0);
RemoveFromDuel(loser);
RemoveFromDuel(winner);
ResetDuelInformation(duelid);
RemoveDuelInvite(dueler2, dueler);
SpawnPlayer(winner);
SetPlayerVirtualWorld(winner, 0);
TotalDuels--;
}
TextDrawDestroy(SpecTD[playerid][0]);
TextDrawDestroy(SpecTD[playerid][1]);
InDuel[playerid] = 0;
KillTimer(DuelTimer[playerid]);
return 1;
}
Re: +REP , OnPlayerDisconnect Cause Crash -
ThePhenix - 31.07.2014
Try:
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
new duelid = GetPVarInt(playerid, "DuelDID");
new dueler, dueler2;
dueler = dInfo[duelid][Inviter];
dueler2 = dInfo[duelid][Invitee];
if(InDuel[dueler] == 1 && InDuel[dueler2] == 1)
{
new sReason[15];
switch(reason)
{
case 0: sReason = "Timeout";
case 1: sReason = "Leaving";
case 2: sReason = "Kicked";
}
new gBet = dInfo[duelid][BetMoney];
new gDuelSpot = dInfo[duelid][Location];
new Slot[MAX_DUEL_WEPS];
for(new i=0; i < MAX_DUEL_WEPS; i++) Slot[i] = dWeps[duelid][i];
new winner, loser;
if(dueler == playerid)
{
winner = dueler2;
loser = dueler;
}
else if(dueler2 == playerid)
{
winner = dueler;
loser = dueler2;
}
Money_GivePlayerMoney(winner, gBet);
new wepstr[200];
for(new x=0; x < MAX_DUEL_WEPS; x++)
{
if(IsValidWeapon(Slot[x])) format(wepstr, sizeof(wepstr), "%s%s ", wepstr, weaponNames(Slot[x]));
}
new str[150];
format(str, sizeof(str), "Duel | %s has left the server during a duel with %s (Reason: %s)", pName(loser), pName(winner), sReason);
SendClientMessageToAll(COLOR_DUEL, str);
format(str, sizeof(str), "Duel | %s won the duel against %s (Weapons %s) (Bet: $%d) (%s [ID %d])", pName(winner), pName(loser), wepstr, gBet, ReturnDuelNameFromID(gDuelSpot), gDuelSpot);
SendClientMessageToAll(COLOR_DUEL, str);
SetPlayerArmour(winner, 0);
RemoveFromDuel(loser);
RemoveFromDuel(winner);
ResetDuelInformation(duelid);
RemoveDuelInvite(dueler2, dueler);
SpawnPlayer(winner);
SetPlayerVirtualWorld(winner, 0);
TotalDuels--;
}
TextDrawDestroy(SpecTD[playerid][0]);
TextDrawDestroy(SpecTD[playerid][1]);
InDuel[playerid] = 0;
KillTimer(DuelTimer[playerid]);
return 1;
}
Re: +REP , OnPlayerDisconnect Cause Crash -
SPA - 02.08.2014
Bump I get error:
Код:
[22:15:04] [Ban_console_log]:- metwaly_mohsen Tryed To Connect to server but was kicked as his/her account is banned from the server
[22:15:04] [debug] Run time error 4: "Array index out of bounds"
[22:15:04] [debug] Accessing element at negative index -1
[22:15:04] [debug] AMX backtrace:
[22:15:04] [debug] #0 00009014 in public SSCANF_OnPlayerDisconnect (playerid=7, reason=2) at C:\Users\MaHdy\Desktop\DuelSystem.pwn:90
[22:15:04] [debug] #1 00002604 in public OnPlayerDisconnect (playerid=7, reason=2) at C:\Users\MaHdy\Desktop\SPA Orginal Build 2\pawno\include\sscanf2.inc:229
[22:15:04] [debug] #2 00000008 in public DuelReset () at C:\Users\MaHdy\Desktop\SPA Orginal Build 2\pawno\include\zcmd.inc:62