CNR:Ticket command bugged
#1

Hi guys

My ticket command is bugged.

When I die it says "You have 25 seconds to pay your ticket until your wanted level increases."
There is a timer so that after 25 seconds your wanted level increases.

Here is the public for the timer:

Код:
public PayTicketTimer(playerid)
{
	new name[24], string[40];
	SendClientMessage(playerid, COLOR_ORANGE, "You have 25 seconds to pay your ticket until your wanted level increases.");
	GameTextForPlayer(playerid, "~y~PAY YOUR ~r~TICKET", 3000, 6);
	SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)+3);
	GetPlayerName(playerid, name, 24);
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
	    if(gTeam[i] == POL && SECSRV && ARMY && SWAT)
	    {
			format(string, 40, "%s has not paid their ticket!", name);
			SendClientMessage(playerid, COLOR_YELLOW, string);
		}
	}
	return 1;
}
Here is the ticket command:
Код:
CMD:ticket(playerid, params[])
{
	new string[50], string2[100], string3[50], string4[100], targetid, tReason[128], targetname[24], officername[24];
	if(sscanf(params, "us[128]", targetid, tReason)) return SendClientMessage(playerid, COLOR_RED, "USAGE: /ticket [ID] [REASON]");
	{
	    if(gTeam[playerid] != POL && gTeam[playerid] != SECSRV && gTeam[playerid] != ARMY && gTeam[playerid] != SWAT) return SendClientMessage(playerid, COLOR_RED, "You are not a Law Enforcement Officer!");
	    if(targetid == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot ticket yourself!");
	    if(5.0 < GetDistanceBetweenPlayers(playerid, targetid) < 20.0)
	    {
			if(isTicketed[targetid] == 0)
			{
				TIMER_PayTicket[targetid] = SetTimerEx("PayTicketTimer", 25000, false, "i", targetid); //Starting the timer for them to pay their ticket before getting their wanted level increased.

				GetPlayerName(playerid, officername, 24);
				GetPlayerName(targetid, targetname, 24);

				format(string, 50, "You have received a ticket from officer %s!", officername);
				format(string2, 100, "Reason for Ticket: %s", tReason);
				format(string3, 50, "[TICKET] Officer %s has given %s a ticket.", officername, targetname);
				format(string4, 100, "Reason for ticket: %s", tReason);
				
				isTicketed[targetid] = 1;

				TicketIssuer[targetid] = playerid;

				SendClientMessage(targetid, COLOR_ORANGE, string);
				SendClientMessage(targetid, COLOR_RED, string2);
				
				for(new i = 0; i < MAX_PLAYERS; i++)
				{
					if(gTeam[playerid] == POL || SECSRV || ARMY || SWAT)
					{
					    SendClientMessage(playerid, COLOR_ORANGE, string3);
						SendClientMessage(playerid, COLOR_PINK, string4);
					}
				}
			}
			else
			{
			    SendClientMessage(playerid, COLOR_RED, "That player has already been ticketed!");
			}
		}
	}
	return 1;
}
Here is the Pay Ticket command:

Код:
CMD:payticket(playerid, params[])
{
	new string[60], PayerName[24];
	
	if(isTicketed[playerid] == 1)
	{
	    if(GetPlayerMoney(playerid) >= 1000)
	    {
	        GivePlayerMoney(playerid, -1000);
	        isTicketed[playerid] = 0;
			SendClientMessage(playerid, COLOR_GREEN, "You have paid your ticket. Your wanted level is now restored back to 0.");
			SetPlayerWantedLevel(playerid, 0);
			GivePlayerMoney(TicketIssuer[playerid], 2000);
			TicketPaid[playerid] = 1;
			SendClientMessage(playerid, COLOR_BLUE, "You receive a ticket collection bonus of $2000! Good work!");
			KillTimer(TIMER_PayTicket[playerid]);
			TicketIssuer[playerid] = -1;
			for(new i = 0; i < MAX_PLAYERS; i++)
			{
			    if(gTeam[i] == POL || SECSRV || ARMY || SWAT)
			    {
					GetPlayerName(playerid, PayerName, 24);
					format(string, 60, "%s has paid their ticket.", PayerName);
					SendClientMessage(playerid, COLOR_YELLOW, string);
				}
			}
		}
	}
	else
	{
	    SendClientMessage(playerid, COLOR_RED, "You have not been given a ticket!");
	}
	return 1;
}
It also says that when I am in the server when I GMX it.

Here's where the KillTimers are located:

PayTicket
OnPlayerDeath
OnPlayerConnect
OnPlayerDisconnect


Thank you for the help.
Reply
#2

pawn Код:
public PayTicketTimer(playerid)
{
    new name[24], string[40];
   
    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)+3);
    GetPlayerName(playerid, name, 24);
SendClientMessage(playerid, COLOR_RED,"Yor wanted level has been increased due to not paying tickets.");//added this
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(gTeam[i] == POL || SECSRV || ARMY || SWAT && IsPlayerConnected(i))
        {
            format(string, 40, "%s has not paid their ticket!", name);
            SendClientMessage(playerid, COLOR_YELLOW, string);
        }
    }
    return 1;
}



CMD:ticket(playerid, params[])
{
    new string[50], string2[100], string3[50], string4[100], targetid, tReason[128], targetname[24], officername[24];
    if(sscanf(params, "us[128]", targetid, tReason)) return SendClientMessage(playerid, COLOR_RED, "USAGE: /ticket [ID] [REASON]");
    {
        if(gTeam[playerid] != POL && gTeam[playerid] != SECSRV && gTeam[playerid] != ARMY && gTeam[playerid] != SWAT) return SendClientMessage(playerid, COLOR_RED, "You are not a Law Enforcement Officer!");
        if(targetid == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot ticket yourself!");
        if(5.0 < GetDistanceBetweenPlayers(playerid, targetid) < 20.0)
        {
            if(isTicketed[targetid] == 0)
            {
                TIMER_PayTicket[targetid] = SetTimerEx("PayTicketTimer", 25000, false, "i", targetid); //Starting the timer for them to pay their ticket before getting their wanted level increased.
 
GameTextForPlayer(targetid, "~y~PAY YOUR ~r~TICKET", 3000, 6);//added this
                GetPlayerName(playerid, officername, 24);
                GetPlayerName(targetid, targetname, 24);

                format(string, 50, "You have received a ticket from officer %s!", officername);
                format(string2, 100, "Reason for Ticket: %s", tReason);
                format(string3, 50, "[TICKET] Officer %s has given %s a ticket.", officername, targetname);
                format(string4, 100, "Reason for ticket: %s", tReason);
               
                isTicketed[targetid] = 1;

                TicketIssuer[targetid] = playerid;
                               SendClientMessage(targetid, COLOR_ORANGE, "You have 25 seconds to pay your ticket until your wanted level increases.");//added this
                SendClientMessage(targetid, COLOR_ORANGE, string);
                SendClientMessage(targetid, COLOR_RED, string2);
               
                for(new i = 0; i < MAX_PLAYERS; i++)
                {
                    if(gTeam[playerid] == POL || SECSRV || ARMY || SWAT)
                    {
                        SendClientMessage(playerid, COLOR_ORANGE, string3);
                        SendClientMessage(playerid, COLOR_PINK, string4);
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_RED, "That player has already been ticketed!");
            }
        }
    }
    return 1;
Reply
#3

I'll give this a try. Thank you.
Reply
#4

Ok so I tried that and when I type /ticket ID REASON there is no response. nothing comes up.
Reply
#5

pawn Код:
CMD:ticket(playerid, params[])
{
    new string[50], string2[100], string3[50], string4[100], targetid, tReason[128], targetname[24], officername[24];
    if(sscanf(params, "us[128]", targetid, tReason)) return SendClientMessage(playerid, COLOR_RED, "USAGE: /ticket [ID] [REASON]");
   
        if(gTeam[playerid] != POL && gTeam[playerid] != SECSRV && gTeam[playerid] != ARMY && gTeam[playerid] != SWAT) return SendClientMessage(playerid, COLOR_RED, "You are not a Law Enforcement Officer!");
        if(targetid == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot ticket yourself!");
        if(5.0 < GetDistanceBetweenPlayers(playerid, targetid) < 20.0)return SendClientMesage(playerid, COLOR_RED,"The player you requested is not near you.");
       
            if(isTicketed[targetid] != 0)return SendClientMessage(playerid, COLOR_RED, "That player has already been ticketed!");
           
                TIMER_PayTicket[targetid] = SetTimerEx("PayTicketTimer", 25000, false, "i", targetid); //Starting the timer for them to pay their ticket before getting their wanted level increased.
 
GameTextForPlayer(targetid, "~y~PAY YOUR ~r~TICKET", 3000, 6);//added this
                GetPlayerName(playerid, officername, 24);
                GetPlayerName(targetid, targetname, 24);

                format(string, 50, "You have received a ticket from officer %s!", officername);
                format(string2, 100, "Reason for Ticket: %s", tReason);
                format(string3, 50, "[TICKET] Officer %s has given %s a ticket.", officername, targetname);
                format(string4, 100, "Reason for ticket: %s", tReason);
               
                isTicketed[targetid] = 1;

                TicketIssuer[targetid] = playerid;
                               SendClientMessage(targetid, COLOR_ORANGE, "You have 25 seconds to pay your ticket until your wanted level increases.");//added this
                SendClientMessage(targetid, COLOR_ORANGE, string);
                SendClientMessage(targetid, COLOR_RED, string2);
               
                for(new i = 0; i < MAX_PLAYERS; i++)
                {
                    if(gTeam[playerid] == POL || SECSRV || ARMY || SWAT)
                    {
                        SendClientMessage(playerid, COLOR_ORANGE, string3);
                        SendClientMessage(playerid, COLOR_PINK, string4);
                    }
                }
           
return 1;
}
try this
Reply
#6

pawn Код:
CMD:ticket(playerid, params[])
{
    new targetid, tReason[80];
    if(sscanf(params, "us[80]", targetid, tReason)) return SendClientMessage(playerid, COLOR_RED, "USAGE: /ticket [ID] [REASON]");
    if(!IsPlayerConnected(targetid) || targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "Player is not connected.");
    if(targetid == playerid) return SendClientMessage(playerid, COLOR_RED, "You cannot ticket yourself!");
    if(isTicketed[targetid]) return SendClientMessage(playerid, COLOR_RED, "That player has already been ticketed!");
    if(GetDistanceBetweenPlayers(playerid, targetid) > 20.0) return 1;
    switch(gTeam[playerid])
    {
        case POL, SECSRV, ARMY, SWAT:
        {
            new officername[MAX_PLAYER_NAME], targetname[MAX_PLAYER_NAME], string[90], string2[100];
            TIMER_PayTicket[targetid] = SetTimerEx("PayTicketTimer", 25000, false, "i", targetid);
            GetPlayerName(playerid, officername, sizeof(officername));
            GetPlayerName(targetid, targetname, sizeof(targetname));
            format(string, sizeof(string), "You have received a ticket from officer %s!", officername);
            format(string2, sizeof(string2), "Reason for Ticket: %s", tReason);
            SendClientMessage(targetid, COLOR_ORANGE, string);
            SendClientMessage(targetid, COLOR_RED, string2);
            isTicketed[targetid] = 1;
            TicketIssuer[targetid] = playerid;
            SendClientMessage(targetid, COLOR_ORANGE, "You have 25 seconds to pay your ticket until your wanted level increases.");
            GameTextForPlayer(targetid, "~y~PAY YOUR ~r~TICKET", 3000, 6);
            format(string, sizeof(string), "[TICKET] Officer %s has given %s a ticket.", officername, targetname);
            for(new i = 0; i < MAX_PLAYERS; i++)
            {
                if(!IsPlayerConnected(i)) continue;
                switch(gTeam[i])
                {
                    case POL, SECSRV, ARMY, SWAT:
                    {
                        SendClientMessage(i, COLOR_ORANGE, string);
                        SendClientMessage(i, COLOR_PINK, string2);
                    }
                    default: continue;
                }
            }
        }
        default: return SendClientMessage(playerid, COLOR_RED, "You are not a Law Enforcement Officer!");
    }
    return 1;
}

CMD:payticket(playerid, params[])
{
    if(!isTicketed[playerid]) return SendClientMessage(playerid, COLOR_RED, "You have not been given a ticket!");
    if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, COLOR_RED, "You do not have enough money to pay the ticket!");
    GivePlayerMoney(playerid, -1000);
    isTicketed[playerid] = 0;
    SendClientMessage(playerid, COLOR_GREEN, "You have paid your ticket. Your wanted level is now restored back to 0.");
    SetPlayerWantedLevel(playerid, 0);
    GivePlayerMoney(TicketIssuer[playerid], 2000);
    TicketPaid[playerid] = 1;
    SendClientMessage(playerid, COLOR_BLUE, "You receive a ticket collection bonus of $2000! Good work!");
    KillTimer(TIMER_PayTicket[playerid]);
    TicketIssuer[playerid] = -1;
    new name[MAX_PLAYER_NAME], string[40];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "%s has paid their ticket.", name);
    SendLawMessage(COLOR_YELLOW, string);
    return 1;
}

public PayTicketTimer(playerid)
{
    SendClientMessage(playerid, COLOR_ORANGE, "You have failed to pay your ticket and your wanted level has increased!");
    SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 3);
    new name[MAX_PLAYER_NAME], string[55];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "%s has not paid their ticket!", name);
    SendLawMessage(COLOR_YELLOW, string);
    return 1;
}

SendLawMessage(color, const string[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        switch(gTeam[i])
        {
            case POL, SECSRV, ARMY, SWAT: SendClientMessage(i, color, string);
            default: continue;
        }
    }
    return 1;
}
I've also added 'SendLawMessage' to make the looping through law enforcement players easier.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)