[warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
MayaEU - 28.06.2016
Why is this command making my game freeze?
pawn Код:
if (strcmp(cmd, "/checkcars", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if (PlayerInfo[playerid][pAdmin] & ADMIN_LOWLEVEL)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, ""COL_SZR"Usage:"COL_WHITE" /checkcars [playerid/PartOfName]");
return 1;
}
//giveplayerid = strval(tmp);
giveplayerid = ReturnUser(tmp);
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
for (new i = 0; i < sizeof(CarInfo); i++) {
if (PlayerInfo[giveplayerid][pCarkey] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey2] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey3] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey4] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey5] == SCRIPT_CARS) {
SendClientMessage(playerid, COLOR_GREY, "No vehicles found.");
return 1;
}
new carkey = PlayerInfo[giveplayerid][pCarkey],
carkey2 = PlayerInfo[giveplayerid][pCarkey2],
carkey3 = PlayerInfo[giveplayerid][pCarkey3],
carkey4 = PlayerInfo[giveplayerid][pCarkey4],
carkey5 = PlayerInfo[giveplayerid][pCarkey5];
if (PlayerInfo[giveplayerid][pCarkey] != SCRIPT_CARS) {
format(string, sizeof(string), ""COL_GREY"1. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey][cDescription], CarInfo[carkey][cValue], CarInfo[carkey][cDestroys], CarInfo[carkey][cInsure], CarInfo[carkey][cPlate], CarInfo[carkey][cImpounded], CarInfo[carkey][cImpoundedPrice]);
SendClientMessage(playerid, COLOR_GREY, string);
}
if (PlayerInfo[giveplayerid][pCarkey2] != SCRIPT_CARS) {
format(string, sizeof(string), ""COL_GREY"2. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey2][cDescription], CarInfo[carkey2][cValue], CarInfo[carkey2][cDestroys], CarInfo[carkey2][cInsure], CarInfo[carkey2][cPlate], CarInfo[carkey2][cImpounded], CarInfo[carkey2][cImpoundedPrice]);
SendClientMessage(playerid, COLOR_GREY, string);
}
if (PlayerInfo[giveplayerid][pCarkey3] != SCRIPT_CARS) {
format(string, sizeof(string), ""COL_GREY"3. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey3][cDescription], CarInfo[carkey3][cValue], CarInfo[carkey3][cDestroys], CarInfo[carkey3][cInsure], CarInfo[carkey3][cPlate], CarInfo[carkey3][cImpounded], CarInfo[carkey3][cImpoundedPrice]);
SendClientMessage(playerid, COLOR_GREY, string);
}
if (PlayerInfo[giveplayerid][pCarkey4] != SCRIPT_CARS) {
format(string, sizeof(string), ""COL_GREY"4. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey4][cDescription], CarInfo[carkey4][cValue], CarInfo[carkey4][cDestroys], CarInfo[carkey4][cInsure], CarInfo[carkey4][cPlate], CarInfo[carkey4][cImpounded], CarInfo[carkey4][cImpoundedPrice]);
SendClientMessage(playerid, COLOR_GREY, string);
}
if (PlayerInfo[giveplayerid][pCarkey5] != SCRIPT_CARS) {
format(string, sizeof(string), ""COL_GREY"5. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey5][cDescription], CarInfo[carkey5][cValue], CarInfo[carkey5][cDestroys], CarInfo[carkey5][cInsure], CarInfo[carkey5][cPlate], CarInfo[carkey5][cImpounded], CarInfo[carkey5][cImpoundedPrice]);
SendClientMessage(playerid, COLOR_GREY, string);
}
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " No Such Player");
}
}
else
{
SendClientMessage(playerid, GREY, AdminOnly);
}
}
return 1;
}
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
AaronJ - 28.06.2016
Quote:
Originally Posted by MayaEU
Why is this command making my game freeze?
pawn Код:
if (strcmp(cmd, "/checkcars", true) == 0) { if(IsPlayerConnected(playerid)) { if (PlayerInfo[playerid][pAdmin] & ADMIN_LOWLEVEL) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, ""COL_SZR"Usage:"COL_WHITE" /checkcars [playerid/PartOfName]"); return 1; } //giveplayerid = strval(tmp); giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { for (new i = 0; i < sizeof(CarInfo); i++) { if (PlayerInfo[giveplayerid][pCarkey] == SCRIPT_CARS) if (PlayerInfo[giveplayerid][pCarkey2] == SCRIPT_CARS) if (PlayerInfo[giveplayerid][pCarkey3] == SCRIPT_CARS) if (PlayerInfo[giveplayerid][pCarkey4] == SCRIPT_CARS) if (PlayerInfo[giveplayerid][pCarkey5] == SCRIPT_CARS) { SendClientMessage(playerid, COLOR_GREY, "No vehicles found."); return 1; }
new carkey = PlayerInfo[giveplayerid][pCarkey], carkey2 = PlayerInfo[giveplayerid][pCarkey2], carkey3 = PlayerInfo[giveplayerid][pCarkey3], carkey4 = PlayerInfo[giveplayerid][pCarkey4], carkey5 = PlayerInfo[giveplayerid][pCarkey5];
if (PlayerInfo[giveplayerid][pCarkey] != SCRIPT_CARS) { format(string, sizeof(string), ""COL_GREY"1. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey][cDescription], CarInfo[carkey][cValue], CarInfo[carkey][cDestroys], CarInfo[carkey][cInsure], CarInfo[carkey][cPlate], CarInfo[carkey][cImpounded], CarInfo[carkey][cImpoundedPrice]); SendClientMessage(playerid, COLOR_GREY, string); } if (PlayerInfo[giveplayerid][pCarkey2] != SCRIPT_CARS) { format(string, sizeof(string), ""COL_GREY"2. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey2][cDescription], CarInfo[carkey2][cValue], CarInfo[carkey2][cDestroys], CarInfo[carkey2][cInsure], CarInfo[carkey2][cPlate], CarInfo[carkey2][cImpounded], CarInfo[carkey2][cImpoundedPrice]); SendClientMessage(playerid, COLOR_GREY, string); } if (PlayerInfo[giveplayerid][pCarkey3] != SCRIPT_CARS) { format(string, sizeof(string), ""COL_GREY"3. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey3][cDescription], CarInfo[carkey3][cValue], CarInfo[carkey3][cDestroys], CarInfo[carkey3][cInsure], CarInfo[carkey3][cPlate], CarInfo[carkey3][cImpounded], CarInfo[carkey3][cImpoundedPrice]); SendClientMessage(playerid, COLOR_GREY, string); } if (PlayerInfo[giveplayerid][pCarkey4] != SCRIPT_CARS) { format(string, sizeof(string), ""COL_GREY"4. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey4][cDescription], CarInfo[carkey4][cValue], CarInfo[carkey4][cDestroys], CarInfo[carkey4][cInsure], CarInfo[carkey4][cPlate], CarInfo[carkey4][cImpounded], CarInfo[carkey4][cImpoundedPrice]); SendClientMessage(playerid, COLOR_GREY, string); } if (PlayerInfo[giveplayerid][pCarkey5] != SCRIPT_CARS) { format(string, sizeof(string), ""COL_GREY"5. {FF6347}%s"COL_GREY" Value[%d] Dest[%d] Insure[%d] Plate[%s] Impounded[%d] Impound Price[%d]", CarInfo[carkey5][cDescription], CarInfo[carkey5][cValue], CarInfo[carkey5][cDestroys], CarInfo[carkey5][cInsure], CarInfo[carkey5][cPlate], CarInfo[carkey5][cImpounded], CarInfo[carkey5][cImpoundedPrice]); SendClientMessage(playerid, COLOR_GREY, string); } } } } else { SendClientMessage(playerid, COLOR_GRAD1, " No Such Player"); } } else { SendClientMessage(playerid, GREY, AdminOnly); } } return 1; }
|
First of all why do you check twice "if(IsPlayerConnected(playerid))"?
PHP код:
if (PlayerInfo[giveplayerid][pCarkey] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey2] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey3] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey4] == SCRIPT_CARS)
if (PlayerInfo[giveplayerid][pCarkey5] == SCRIPT_CARS) {
SendClientMessage(playerid, COLOR_GREY, "No vehicles found.");
return 1;
}
this will return the message only with the last if!
You need to declare the Message and the return for each if condition or use the && to write only one if condition.
And after that you create always 5 new vars and check again each car.
Why don't you make an else after each if to send the information?
P.S.
Why don't you create a field to store how many cars the player has? if is 0 skip everything, if is >0 you can use a while statement to send the data without checking things that are not needed...
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
MayaEU - 28.06.2016
the second one checks if the return user is connected, but i dont really understand what you mean.
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
AaronJ - 28.06.2016
_Updated the post
Ok, understood what you do with the player check but i think you can skip the check to know if who is using the command is connected..
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
MayaEU - 28.06.2016
I fixed it already
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
Vince - 28.06.2016
This entire piece of code is so confusing and repetitive.
- The player that executes the command is always connected (duh) so that check is completely redundant to begin with.
- If giveplayerid is connected then giveplayerid is obviously not INVALID_PLAYER_ID so that check is also completely redundant.
- You start a loop for sizeof(CarInfo) times, but I have no idea why. The iterating variable (i) isn't even being used.
- Use an array for pCarkey instead of creating five separate attributes.
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
AaronJ - 28.06.2016
Quote:
Originally Posted by Vince
This entire piece of code is so confusing and repetitive. - The player that executes the command is always connected (duh) so that check is completely redundant to begin with.
- If giveplayerid is connected then giveplayerid is obviously not INVALID_PLAYER_ID so that check is also completely redundant.
- You start a loop for sizeof(CarInfo) times, but I have no idea why. The iterating variable (i) isn't even being used.
- Use an array for pCarkey instead of creating five separate attributes.
|
But he fixed it..
How we'll never know
Re: [warning] client exceeded 'ackslimit' IP (4323) limit: 3000/sec -
MayaEU - 28.06.2016
I just forgot return 1;