Adding a timer to this...
#1

pawn Код:
command(advert, playerid, params[])
{
    new message[128], string[256];
    if(sscanf(params, "s[128]", message))
    {
        SendClientMessage(playerid, WHITE, "Server: /advert [advertisement]");
        SendClientMessage(playerid, GREY, "Example: '/advert Selling my Blista Compact. 15k miles, just been serviced.'");
        SendClientMessage(playerid, GREY, "Will show: [ADVERT] Selling my Blista Compact. 15k miles, just been serviced. [Callum Getty - Phone: 1241231]");
    }
    else
    {
        format(string, sizeof(string), "[ADVERT] %s [%s - Call: %d]", message, RemoveUnderScore(playerid), Player[playerid][CellPhoneNumber]);
        SendClientMessageToAll(ADVERT, string);
    }
    return 1;
}
I've never done a timer before, can someone explain it to me please?
Reply
#2

Anyone? Would be much appreciated, usually if I have a question I take a shot at scripting what I'm asking about, but I literally have no clue
Reply
#3

it's not that hard. Look:
pawn Код:
new bool:GloabalAdvertisement=true;
OnGameModeInit()
{
    GloabalAdvertisement=true;
    return 1;
}
command(advert, playerid, params[])
{
    new message[128], string[256];
    if(sscanf(params, "s[128]", message))
    {
        if(GloabalAdvertisement){
        GloabalAdvertisement=false;
        SetTimer("MakeGloabalAdverisementTrue",5000/* 5 seconds*/,false);
        SendClientMessage(playerid, WHITE, "Server: /advert [advertisement]");
        SendClientMessage(playerid, GREY, "Example: '/advert Selling my Blista Compact. 15k miles, just been serviced.'");
        SendClientMessage(playerid, GREY, "Will show: [ADVERT] Selling my Blista Compact. 15k miles, just been serviced. [Callum Getty - Phone: 1241231]");
        }
        else SendClientMessage(MORE TO WAIT);
    }
    else
    {
        format(string, sizeof(string), "[ADVERT] %s [%s - Call: %d]", message, RemoveUnderScore(playerid), Player[playerid][CellPhoneNumber]);
        SendClientMessageToAll(ADVERT, string);
    }
    return 1;
}
forward public MakeGloabalAdverisementTrue();
public MakeGloabalAdverisementTrue()
{
    GloabalAdvertisement=true;
}
Need explanation?
Reply
#4

I get it, thanks. Say if I wanted to make it so our VIP's only had to wait 30 seconds, would I do this...

pawn Код:
command(advert, playerid, params[])
{
    new message[128], string[256];
    if(sscanf(params, "s[128]", message))
    {
        if(GloabalAdvertisement){
        GloabalAdvertisement=false;
        SetTimer("MakeGloabalAdverisementTrue",60000/,false);
        {
            if(Player[playerid][DonateRank] >=2)
            SetTimer("MakeGlobalAdvertisementTrue",30000,false);
        }
        SendClientMessage(playerid, WHITE, "Server: /advert [advertisement]");
        SendClientMessage(playerid, GREY, "Example: '/advert Selling my Blista Compact. 15k miles, just been serviced.'");
        SendClientMessage(playerid, GREY, "Will show: [ADVERT] Selling my Blista Compact. 15k miles, just been serviced. [Callum Getty - Phone: 1241231]");
        }
        else SendClientMessage(playerid, WHITE, "You must wait 60 seconds (30 seconds for VIP's) between advertisements!");
    }
    else
    {
        format(string, sizeof(string), "[ADVERT] %s [%s - Call: %d]", message, RemoveUnderScore(playerid), Player[playerid][CellPhoneNumber]);
        SendClientMessageToAll(ADVERT, string);
    }
    return 1;
}
Reply
#5

Why everybody makes so much timers:P I only use one timer for the whole server.
Reply
#6

Try this:
pawn Код:
command(advert, playerid, params[])
{
    new message[128], string[256];
    if (sscanf(params, "s[128]", message) || isnull(params))
    {
        SendClientMessage(playerid, WHITE, "Server: /advert [advertisement]");
        SendClientMessage(playerid, GREY, "Example: '/advert Selling my Blista Compact. 15k miles, just been serviced.'");
        SendClientMessage(playerid, GREY, "Will show: [ADVERT] Selling my Blista Compact. 15k miles, just been serviced. [Callum Getty - Phone: 1241231]")
        SendClientMessage(playerid, WHITE, "You must wait 60 seconds (30 seconds for VIP's) between advertisements!");
        return 1;
    }
    else
    {
        format(string, sizeof(string), "[ADVERT] %s [%s - Call: %d]", message, RemoveUnderScore(playerid), Player[playerid][CellPhoneNumber]);
        SendClientMessageToAll(ADVERT, string);
    }
    if (GloabalAdvertisement)
    {
        GloabalAdvertisement = false;
        if (Player[playerid][DonateRank] >= 2) SetTimer("MakeGlobalAdvertisementTrue", 30000, false);
        else SetTimer("MakeGloabalAdverisementTrue", 60000, false);
    }
    return 1;
}
Reply
#7

It compiled fine when I used the above one;

pawn Код:
command(advert, playerid, params[])
{
    new message[128], string[256];
    if(sscanf(params, "s[128]", message))
    {
        if(GloabalAdvertisement){
        GloabalAdvertisement=false;
        SetTimer("MakeGloabalAdverisementTrue",60000/,false);
        {
            if(Player[playerid][DonateRank] >=2)
            SetTimer("MakeGlobalAdvertisementTrue",30000,false);
        }
        SendClientMessage(playerid, WHITE, "Server: /advert [advertisement]");
        SendClientMessage(playerid, GREY, "Example: '/advert Selling my Blista Compact. 15k miles, just been serviced.'");
        SendClientMessage(playerid, GREY, "Will show: [ADVERT] Selling my Blista Compact. 15k miles, just been serviced. [Callum Getty - Phone: 1241231]");
        }
        else SendClientMessage(playerid, WHITE, "You must wait 60 seconds (30 seconds for VIP's) between advertisements!");
    }
    else
    {
        format(string, sizeof(string), "[ADVERT] %s [%s - Call: %d]", message, RemoveUnderScore(playerid), Player[playerid][CellPhoneNumber]);
        SendClientMessageToAll(ADVERT, string);
    }
    return 1;
}
Reply
#8

Hmm no one said that you can also make it timerless, use GetTickCount..
pawn Код:
new CmdDelayadvert[MAX_PLAYERS];
command(advert, playerid, params[])
{
    new message[128], string[256];
    if (CmdDelayadvert[playerid]<GetTickCount())//checks if the players time is up
    {
        if(sscanf(params, "s[128]", message))
        {
            SendClientMessage(playerid, WHITE, "Server: /advert [advertisement]");
            SendClientMessage(playerid, GREY, "Example: '/advert Selling my Blista Compact. 15k miles, just been serviced.'");
            SendClientMessage(playerid, GREY, "Will show: [ADVERT] Selling my Blista Compact. 15k miles, just been serviced. [Callum Getty - Phone: 1241231]");
        }
        else
        {
            format(string, sizeof(string), "[ADVERT] %s [%s - Call: %d]", message, RemoveUnderScore(playerid), Player[playerid][CellPhoneNumber]);
            SendClientMessageToAll(ADVERT, string);
            CmdDelayadvert[playerid] = GetTickCount()+30000; //30000 = 30 seconds
        }
    }
    else
    {
        SendClientMessage(playerid,GREY,"You Can only use this command every 30 seconds!!!");
    }
    return 1;
}
Reply
#9

Does this delay the command for all players, or just the player that did it?
Reply
#10

Quote:
Originally Posted by Luke_James
Посмотреть сообщение
Does this delay the command for all players, or just the player that did it?
Just the player that did it.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)