PDA

View Full Version : OnPlayerDisconnected loops


AstroPoid
27/02/2018, 11:24 AM
is loops working under onplayerdisconnected callback ? , because its seems to be not working right there.

PepsiCola23
27/02/2018, 11:38 AM
what are you trying to achieve exactly?

AstroPoid
27/02/2018, 11:43 AM
I want to know why the same code of onplayerdeath that contain loops , doesn't work under onplayerdisconnect. and nothing happened after.

PepsiCola23
27/02/2018, 11:47 AM
atleast give a code

AstroPoid
27/02/2018, 12:03 PM
I don't understand why you need a code. anyways here is it

public OnPlayerDisconnect(playerid, reason) // loops didn't work while they do same functions
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if (TaxiDuty[playerid] == 1)
{
TaxiDuty[playerid] = 0;
Drivers -= 1;
}
if(TaxiDuty[i] == 1)
{
SendClientMessage(i, COLOR, "Has left the game");
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason) // worked well
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if (TaxiDuty[playerid] == 1)
{
TaxiDuty[playerid] = 0;
Drivers -= 1;
}
if(TaxiDuty[i] == 1)
{
SendClientMessage(i, COLOR, "Has left the game");
}
}
return 1;
}

Dayrion
27/02/2018, 12:27 PM
This is not OnPlayerDisconnect(playerid), it's OnPlayerDisconnect(playerid, reason)

AstroPoid
27/02/2018, 12:30 PM
This is not OnPlayerDisconnect(playerid), it's OnPlayerDisconnect(playerid, reason)
Mehhhhh. i expected that.
its just a test code to explain what i need.

kingmk
27/02/2018, 12:32 PM
I don't understand why you need a code. anyways here is it

public OnPlayerDisconnect(playerid, reason)
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if (TaxiDuty[playerid] == 1)
{
TaxiDuty[playerid] = 0;
Drivers -= 1;
}
if(TaxiDuty[i] == 1)
{
SendClientMessage(i, COLOR, "Has left the game");
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, hittype) // worked well
{
for(new i=0; i < MAX_PLAYERS; i++)
{
if (TaxiDuty[playerid] == 1)
{
TaxiDuty[playerid] = 0;
Drivers -= 1;
}
if(TaxiDuty[i] == 1)
{
SendClientMessage(i, COLOR, "Has left the game");
}
}
return 1;
}

lel, that's so wrong. You basically check MAX_PLAYERS times, if the player WHO DISSCONNECT have TaxiDuty[playerid] == 1.

I think u want something like so.


public OnPlayerDisconnect(playerid, reason)
{
new string[150];
if (TaxiDuty[playerid] == 1)
{
new name[35];
TaxiDuty[playerid] = 0;
Drivers -= 1;
for(new i=0; i < MAX_PLAYERS; i++)
{
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s has left the game", name);
SendClientMessage(i, -1, string);
}

}
return 1;
}


This can also be replace with

for(new i=0; i < MAX_PLAYERS; i++)
{
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s has left the game", name);
SendClientMessage(i, -1, string);
}



with this

GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s has left the game", name);
SendClientMessageToAll(-1, string);

AstroPoid
27/02/2018, 12:35 PM
Guys , i don't need to fix the code. its just an example.
my problem is the whole code is not responding if it putted under onplayerdisconnect also under a loop. thats all
same code with same functions on player death that worked perfectly coping and pasting them at onplayerdisconnect, but it doesn't responde at all

kingmk
27/02/2018, 12:35 PM
Guys , i don't need to fix the code. its just an example.
my problem is the whole code is not responding if it putted under onplayerdisconnect also under a loop. thats all
same code with same functions on player death coping and pasting them at onplayerdisconnect, but it doesn't responde at all

Yes loops work on OnPlayerDisconnect, u just need to put them right.

kingmk
27/02/2018, 12:49 PM
Put them on the top of the OnPlayerDisconnect. You may restore the inpubg[playerid], inturfid[playerid] and so on, with a default value before your CODES.

AstroPoid
27/02/2018, 12:55 PM
I think i found where was the bug , anyways thanks.

PepsiCola23
27/02/2018, 01:36 PM
if you found it,post the solution ..