23.04.2017, 12:22
How to stop a task?
For ex. task blabla[10000]()
For ex. task blabla[10000]()
/* Set all cells to -1 */ new Timer:myTimer[MAX_PLAYERS] = {Timer:-1, ...}; /* Start the timer */ CMD:mycommand(playerid, params[]) { myTimer[playerid] = repeat MyOwnFunction(playerid); /* MyOwnFunction will be called 1 second after we type the command, due the delay parameter from timer, that's how it works. */ return 1; } /* Declare MyOwnFunction as a timer */ timer MyOwnFunction[1000](playerid) { printf("The player who started timer %d has the ID %d.", _:myTimer[playerid], playerid); // This function will print the same message every second. } /* Stop the timer */ COMMAND:stoptimer(playerid, params[]) { if(myTimer[playerid] != Timer:-1) { stop myTimer[playerid]; myTimer[playerid] = Timer:-1; } else { // The timer isn't running. } return 1; }
task autoMoneyBag[1200000]()
{
if(Moneybagid != -1)
{
new MoneybagID = Moneybagid;
DestroyPickup(moneyBagInfo[MoneybagID][bagID]);
//DestroyDynamic3DTextLabel(moneyBagInfo[MoneybagID][bagLabel]);
Moneybagid = -1;
MessageAll(-1, "{cafca6}[Moneybag] {FFFFFF}Shit! The event has ended, no one found the Moneybag");
}
else
{
new randomBag = random(MAX_BAG_LOCATIONS), world = moneyBagInfo[randomBag][bagWorld];
moneyBagInfo[randomBag][bagID] = CreatePickup(1550, 23, moneyBagInfo[randomBag][bagXYZ][0], moneyBagInfo[randomBag][bagXYZ][1], moneyBagInfo[randomBag][bagXYZ][2], world);
//moneyBagInfo[randomBag][bagLabel] = CreateDynamic3DTextLabel("[Moneybag]", COLOR_YELLOW, moneyBagInfo[randomBag][bagXYZ][0], moneyBagInfo[randomBag][//bagXYZ][1], moneyBagInfo[randomBag][bagXYZ][2] - 0.1, 40.0, .worldid = 5, .interiorid = 13);
Moneybagid = randomBag;
MessageAll(-1, "{cafca6}[Moneybag] {FFFFFF} A Moneybag is hidden inside {FFDC2E}%s{FFFFFF}!", moneyBagInfo[randomBag][bagTitle]);
}
}
/* Place this at the top of yo' script */ new Timer:AutoMoneyBag = {Timer:-1, ...}; /* Place this where you want the timer to start */ AutoMoneyBag = repeat autoMoneyBagTimer(); /* Replace this with your old function */ timer autoMoneyBagTimer[TIME HERE IN MS]() { if(Moneybagid != -1) { new MoneybagID = Moneybagid; DestroyPickup(moneyBagInfo[MoneybagID][bagID]); //DestroyDynamic3DTextLabel(moneyBagInfo[MoneybagID][bagLabel]); Moneybagid = -1; MessageAll(-1, "{cafca6}[Moneybag] {FFFFFF}Shit! The event has ended, no one found the Moneybag"); } else { new randomBag = random(MAX_BAG_LOCATIONS), world = moneyBagInfo[randomBag][bagWorld]; moneyBagInfo[randomBag][bagID] = CreatePickup(1550, 23, moneyBagInfo[randomBag][bagXYZ][0], moneyBagInfo[randomBag][bagXYZ][1], moneyBagInfo[randomBag][bagXYZ][2], world); //moneyBagInfo[randomBag][bagLabel] = CreateDynamic3DTextLabel("[Moneybag]", COLOR_YELLOW, moneyBagInfo[randomBag][bagXYZ][0], moneyBagInfo[randomBag][//bagXYZ][1], moneyBagInfo[randomBag][bagXYZ][2] - 0.1, 40.0, .worldid = 5, .interiorid = 13); Moneybagid = randomBag; MessageAll(-1, "{cafca6}[Moneybag] {FFFFFF} A Moneybag is hidden inside {FFDC2E}%s{FFFFFF}!", moneyBagInfo[randomBag][bagTitle]); } } /* Place this where you want to stop said timer */ if(AutoMoneyBag!= Timer:-1) { stop AutoMoneyBag; AutoMoneyBag= Timer:-1; } else { printf("The timer is already long gone!") }
To my knowledge I don't think you can stop tasks so you will need to convert it into a timer, I have done this below for ya'
Код:
/* Place this at the top of yo' script */ new Timer:AutoMoneyBag = {Timer:-1, ...}; /* Place this where you want the timer to start */ AutoMoneyBag = repeat autoMoneyBagTimer(); /* Replace this with your old function */ timer autoMoneyBagTimer[TIME HERE IN MS]() { if(Moneybagid != -1) { new MoneybagID = Moneybagid; DestroyPickup(moneyBagInfo[MoneybagID][bagID]); //DestroyDynamic3DTextLabel(moneyBagInfo[MoneybagID][bagLabel]); Moneybagid = -1; MessageAll(-1, "{cafca6}[Moneybag] {FFFFFF}Shit! The event has ended, no one found the Moneybag"); } else { new randomBag = random(MAX_BAG_LOCATIONS), world = moneyBagInfo[randomBag][bagWorld]; moneyBagInfo[randomBag][bagID] = CreatePickup(1550, 23, moneyBagInfo[randomBag][bagXYZ][0], moneyBagInfo[randomBag][bagXYZ][1], moneyBagInfo[randomBag][bagXYZ][2], world); //moneyBagInfo[randomBag][bagLabel] = CreateDynamic3DTextLabel("[Moneybag]", COLOR_YELLOW, moneyBagInfo[randomBag][bagXYZ][0], moneyBagInfo[randomBag][//bagXYZ][1], moneyBagInfo[randomBag][bagXYZ][2] - 0.1, 40.0, .worldid = 5, .interiorid = 13); Moneybagid = randomBag; MessageAll(-1, "{cafca6}[Moneybag] {FFFFFF} A Moneybag is hidden inside {FFDC2E}%s{FFFFFF}!", moneyBagInfo[randomBag][bagTitle]); } } /* Place this where you want to stop said timer */ if(AutoMoneyBag!= Timer:-1) { stop AutoMoneyBag; AutoMoneyBag= Timer:-1; } else { printf("The timer is already long gone!") } |