Crash when I type a command
#1

Title says all

Код:
CMD:ticket(playerid, params[])
{
	new iid, cena, razlog;
	new string[128];
	new sendername[MAX_PLAYER_NAME];
	if(PlayerInfo[playerid][Clan] == 1 && PlayerInfo[playerid][Lider] == 1) return SCM(playerid, SIVA, "Nisi Policajac!");
	    if(sscanf(params, "uds[128]", iid, cena, razlog)) return SendClientMessage(playerid, SVETLO_PLAVA, "Komanda: /kazna [IgracevID/DeoImena] [Cena] [Razlog]");
		if(cena < 1 || cena > 20000) { SendClientMessage(playerid, SIVA, "Kazna moze biti izmedju 1 i 20 000  evra"); return 1; }
  		if(iid != INVALID_PLAYER_ID) return SendClientMessage(playerid, CRVENA, "Igrac je Offline !");
  		if (!ProxDetectorS(8.0, playerid, iid)) SendClientMessage(playerid, CRVENA, "Taj igrac nije blizu vas !");
		{
			format(string, sizeof(string), "Dali ste %s kaznu od %d evra | Razlog: %s", iid, cena, razlog);
			SendClientMessage(playerid, SVETLO_PLAVA, string);
			format(string, sizeof(string), "Policajac %s vam je dao kaznu u iznosu od %d evra | Razlog: %s", sendername, cena, razlog);
			SendClientMessage(iid, SVETLO_PLAVA, string);
			SendClientMessage(iid, ZELENA, "Da prihvatite kaznu upisite '/prihvatikazna'");
			TicketOffer[iid] = playerid;
			TicketMoney[iid] = cena;
		}
		return 1;
}
What wrong?
Reply
#2

Try checking if 'iid' is an invalid player ID if it is you are indexing an array out of bounds 'TicketOffer[iid]'.

Also, not sure if you meant to do this but,
pawn Код:
if (!ProxDetectorS(8.0, playerid, iid)) SendClientMessage(playerid, CRVENA, "Taj igrac nije blizu vas !");// < should this be inside the code block below?
        {
            format(string, sizeof(string), "Dali ste %s kaznu od %d evra | Razlog: %s", iid, cena, razlog);
            SendClientMessage(playerid, SVETLO_PLAVA, string);
            format(string, sizeof(string), "Policajac %s vam je dao kaznu u iznosu od %d evra | Razlog: %s", sendername, cena, razlog);
            SendClientMessage(iid, SVETLO_PLAVA, string);
            SendClientMessage(iid, ZELENA, "Da prihvatite kaznu upisite '/prihvatikazna'");
            TicketOffer[iid] = playerid;
            TicketMoney[iid] = cena;
        }
In that statement the code block under the 'if' will always be executed because you send a message directly after the 'if'. (its valid code but i thought it may be a mistake)

EDIT: I didn't notice you did check for invalid player id my bad.
Reply
#3

https://sampwiki.blast.hk/wiki/debugging
Reply
#4

pawn Код:
CMD:ticket(playerid, params[])
{
    new iid, cena, razlog[128],
        string[128], sendername[MAX_PLAYER_NAME];
   
    if(PlayerInfo[playerid][Clan] == 1 && PlayerInfo[playerid][Lider] == 1) return SCM(playerid, SIVA, "Nisi Policajac!");
    if(sscanf(params, "uds[128]", iid, cena, razlog)) return SendClientMessage(playerid, SVETLO_PLAVA, "Komanda: /kazna [IgracevID/DeoImena] [Cena] [Razlog]");
    if(cena < 1 || cena > 20000) return SendClientMessage(playerid, SIVA, "Kazna moze biti izmedju 1 i 20 000  evra");
    if(iid != INVALID_PLAYER_ID) return SendClientMessage(playerid, CRVENA, "Igrac je Offline !");
    if(ProxDetectorS(8.0, playerid, iid))// SendClientMessage(playerid, CRVENA, "Taj igrac nije blizu vas !");
    {
        format(string, sizeof(string), "Dali ste %s kaznu od %d evra | Razlog: %s", iid, cena, razlog);
        SendClientMessage(playerid, SVETLO_PLAVA, string);
        format(string, sizeof(string), "Policajac %s vam je dao kaznu u iznosu od %d evra | Razlog: %s", sendername, cena, razlog);
        SendClientMessage(iid, SVETLO_PLAVA, string);
        SendClientMessage(iid, ZELENA, "Da prihvatite kaznu upisite '/prihvatikazna'");
        TicketOffer[iid] = playerid;
        TicketMoney[iid] = cena;
    }
    else return SendClientMessage(playerid, CRVENA, "Taj igrac nije blizu vas !");
    return 1;
}
What about that? Same thing?
Reply
#5

[ABK]Antonio, thanks, work!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)