SA-MP Forums Archive
Timer CMD - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Timer CMD (/showthread.php?tid=595398)



Timer CMD - StR_MaRy - 02.12.2015

hi how can i put a timer on this cmd ? i did one system but didn't work can some1 help me ?

Код HTML:
if(strcmp(cmd, "/getgift", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	   	{
	   	    if (!PlayerToPoint(3.0, playerid, 1124.2874,-1466.6426,15.7665))
			{
			    CP[playerid] = 123321;
			    SetPlayerCheckpoint(playerid,1124.2874,-1466.6426,15.7665,5.0);
				SendClientMessage(playerid, COLOR_GRAD2, "Nu esti sub bradul de craciun de langa spawn.");
				SendClientMessage(playerid, COLOR_GRAD2, "Ti-am setat un Punct rosu pe harta unde trebuie sa ajungi.");
				return 1;
			}
		    if(PlayerData[playerid][pLevel] > 3)
			{
				new gift = random(9);
	   			if(gift == 0)
			    {
			        PlayerData[playerid][pExp] += 5;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat 5 respect points-uri la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won 5 respect points at giftbox. ))",GetName(playerid));
			    	SendClientMessageToAll(COLOR_WHITE,string);
			    	format(string, sizeof(string), "UPDATE players SET Respect='%d' WHERE id=%d", PlayerData[playerid][pExp], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			    if(gift == 1)
			    {
			        new cash = random(1000000);
			        PlayerData[playerid][pCash] += cash;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat o suma de bani la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won $%s at giftbox. ))",GetName(playerid), NumberFormat(cash));
			        SendClientMessageToAll(COLOR_WHITE,string);
					format(string, sizeof(string), "UPDATE players SET Money='%d' WHERE id=%d", PlayerData[playerid][pCash], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			    if(gift == 2)
			    {
			       	PlayerData[playerid][pWarns] = 0;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat clear warns de la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won a warns clear at giftbox. ))",GetName(playerid));
			        SendClientMessageToAll(COLOR_WHITE,string);
			        format(string, sizeof(string), "UPDATE players SET Warnings='%d' WHERE id=%d", PlayerData[playerid][pWarns], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			   	}
			    if(gift == 3)
			    {
					PlayerData[playerid][pMats] += 20000;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat 20.000 materiale de la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won 20.000 materials at giftbox. ))",GetName(playerid));
			        SendClientMessageToAll(COLOR_WHITE,string);
			        format(string, sizeof(string), "UPDATE players SET Materials='%d' WHERE id=%d", PlayerData[playerid][pMats], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			    if(gift == 4)
			    {
			        PlayerData[playerid][pFpunish] = 0;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat clear FP de la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won a clear FP at giftbox. ))",GetName(playerid));
			        SendClientMessageToAll(COLOR_WHITE,string);
			        format(string, sizeof(string), "UPDATE players SET Fpunish='%d' WHERE id=%d", PlayerData[playerid][pFpunish], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			    if(gift == 5)
			    {
			        PlayerData[playerid][pLevel] ++;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat un level up de la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won a level up at giftbox. ))",GetName(playerid));
			        SendClientMessageToAll(COLOR_WHITE,string);
			        format(string, sizeof(string), "UPDATE players SET PlayerLevel='%d' WHERE id=%d", PlayerData[playerid][pLevel], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			    if(gift == 6)
			    {
			        new cash = random(70);

			        PlayerData[playerid][pDonateRank] += cash;
			        SendClientMessage(playerid, COLOR_WHITE, "Ai castigat puncte premium la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won %d premium points at giftbox. ))",GetName(playerid), cash);
			        SendClientMessageToAll(COLOR_WHITE,string);
			        format(string, sizeof(string), "UPDATE players SET DonateRank='%d' WHERE id=%d", PlayerData[playerid][pDonateRank], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			    if(gift == 7)
			    {

			        PlayerData[playerid][pDrugs] += 10000;
	          		SendClientMessage(playerid, COLOR_WHITE, "Ai castigat 10.000 droguri de la giftbox.");
			        format(string, sizeof(string), "(( AdmBot says: %s won 10.000 drugs at giftbox. ))",GetName(playerid));
			        SendClientMessageToAll(COLOR_WHITE,string);
			        format(string, sizeof(string), "UPDATE players SET Drugs='%d' WHERE id=%d", PlayerData[playerid][pDrugs], PlayerData[playerid][pSQLID]);
					mysql_query(string);
			    }
			}
			else return SendClientMessage(playerid, COLOR_GREY, "Trebuie sa ai lvl 4 pentru a folosi /getgift");
		}
		return 1;
	}



Re: Timer CMD - Crayder - 02.12.2015

What exactly are you trying to do? Limit the times a player can execute the command before a certain time? Like once per minute?

First add a "pLastGiftTime" variable to your PlayerData enum. Then in the command, before the last return, do this:
pawn Код:
PlayerData[playerid][pLastGiftTime] = GetTickCount();
        return 1;
At the top of the command do this:
pawn Код:
if(PlayerData[playerid][pLastGiftTime] + 60000 < GetTickCount())
return SendClientMessage(playerid, color, "bleh bleh, you cant get more gifts at this time... bleh");
That's it!


If you don't understand, let me know.


Re: Timer CMD - TwinkiDaBoss - 02.12.2015

better to use time stamps for cooldowns

PHP код:
if(strcmp(cmd"/getgift"true) == 0)
    {
        new 
currenttime gettime(),errorString[256];
        
format(errorString,sizeof(errorString),"Command cooldown remaining %i seconds",((GiftCooldown[playerid] + 60) - currenttime));
        if(
currenttime < (GiftCooldown[playerid] + 60)) return SendClientMessage(playerid,COLOR_RED,string);
        if(
IsPlayerConnected(playerid))
           {
               if (!
PlayerToPoint(3.0playerid1124.2874,-1466.6426,15.7665))
            {
                
CP[playerid] = 123321;
                
SetPlayerCheckpoint(playerid,1124.2874,-1466.6426,15.7665,5.0);
                
SendClientMessage(playeridCOLOR_GRAD2"Nu esti sub bradul de craciun de langa spawn.");
                
SendClientMessage(playeridCOLOR_GRAD2"Ti-am setat un Punct rosu pe harta unde trebuie sa ajungi.");
                return 
1;
            }
            if(
PlayerData[playerid][pLevel] > 3)
            {
                new 
gift random(9);
                   if(
gift == 0)
                {
                    
PlayerData[playerid][pExp] += 5;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat 5 respect points-uri la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won 5 respect points at giftbox. ))",GetName(playerid));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET Respect='%d' WHERE id=%d"PlayerData[playerid][pExp], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
                if(
gift == 1)
                {
                    new 
cash random(1000000);
                    
PlayerData[playerid][pCash] += cash;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat o suma de bani la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won $%s at giftbox. ))",GetName(playerid), NumberFormat(cash));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET Money='%d' WHERE id=%d"PlayerData[playerid][pCash], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
                if(
gift == 2)
                {
                       
PlayerData[playerid][pWarns] = 0;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat clear warns de la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won a warns clear at giftbox. ))",GetName(playerid));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET Warnings='%d' WHERE id=%d"PlayerData[playerid][pWarns], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                   }
                if(
gift == 3)
                {
                    
PlayerData[playerid][pMats] += 20000;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat 20.000 materiale de la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won 20.000 materials at giftbox. ))",GetName(playerid));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET Materials='%d' WHERE id=%d"PlayerData[playerid][pMats], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
                if(
gift == 4)
                {
                    
PlayerData[playerid][pFpunish] = 0;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat clear FP de la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won a clear FP at giftbox. ))",GetName(playerid));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET Fpunish='%d' WHERE id=%d"PlayerData[playerid][pFpunish], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
                if(
gift == 5)
                {
                    
PlayerData[playerid][pLevel] ++;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat un level up de la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won a level up at giftbox. ))",GetName(playerid));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET PlayerLevel='%d' WHERE id=%d"PlayerData[playerid][pLevel], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
                if(
gift == 6)
                {
                    new 
cash random(70);
                    
PlayerData[playerid][pDonateRank] += cash;
                    
SendClientMessage(playeridCOLOR_WHITE"Ai castigat puncte premium la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won %d premium points at giftbox. ))",GetName(playerid), cash);
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET DonateRank='%d' WHERE id=%d"PlayerData[playerid][pDonateRank], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
                if(
gift == 7)
                {
                    
PlayerData[playerid][pDrugs] += 10000;
                      
SendClientMessage(playeridCOLOR_WHITE"Ai castigat 10.000 droguri de la giftbox.");
                    
format(stringsizeof(string), "(( AdmBot says: %s won 10.000 drugs at giftbox. ))",GetName(playerid));
                    
SendClientMessageToAll(COLOR_WHITE,string);
                    
format(stringsizeof(string), "UPDATE players SET Drugs='%d' WHERE id=%d"PlayerData[playerid][pDrugs], PlayerData[playerid][pSQLID]);
                    
mysql_query(string);
                    
GiftCooldown[playerid] = gettime();
                }
            }
            else return 
SendClientMessage(playeridCOLOR_GREY"Trebuie sa ai lvl 4 pentru a folosi /getgift");
        }
        return 
1;
    } 
top of script
PHP код:
new GiftCooldown[MAX_PLAYERS]; 



Re: Timer CMD - Crayder - 02.12.2015

Actually, mine was better. Mostly because you literally use the same code over and over for absolutely no reason other than buffing up the AMX. Also because you set up a string that will not be needed in a lot of cases.