23.10.2014, 13:29
Hello, I recently experienced an unknown problem for me where the values and some timers get mixed up in my script. When I was using SetTimer and I was ID 1, the function activated for my friend with ID 0. I tried using SetTimerEx, but what that did, it now sets isabletoscrap[playerid] to be 0 for one of us, despite me writing new isabletoscrap[MAX_PLAYERS] = 1; in the top of the script. I have absolutely no idea what causes this, although it might be staring me right in the face... as always. So, here's the code:
I would greatly appreciate any help regarding this issue! Thanks very much for reading!
Код:
new smaterials[MAX_PLAYERS] = 0; new isabletoscrap[MAX_PLAYERS] = 1; forward scrapTimer(playerid); public scrapTimer(playerid) { new scrapvehicle = GetPlayerVehicleID(playerid); smaterials[playerid] += 40; SendClientMessage(playerid,0x03D687FF,"You scrapped a car for 40 materials!"); SetTimerEx("waitscrapTimer", 900000, false, "i", playerid); SendClientMessage(playerid,0x03D687FF,"You can scrap again in 15 minutes!"); TogglePlayerControllable(playerid,1); SetVehicleToRespawn(scrapvehicle); isabletoscrap[playerid] = 0; } forward waitscrapTimer(playerid); public waitscrapTimer(playerid) { SendClientMessage(playerid,COLOR_GREEN,"You can now scrap again!"); isabletoscrap[playerid] = 1; } CMD:scrapcar(playerid, params[]) { new scrapvehicle = GetPlayerVehicleID(playerid); if(GetVehicleModel(scrapvehicle) == 604 || GetVehicleModel(scrapvehicle) == 605) { if (isabletoscrap[playerid] == 0) return SendClientMessage(playerid,0x03D687FF,"You can scrap again after 15 minutes have passed!"); if(IsPlayerInRangeOfPoint(playerid, 10.0, 4.1837700,1345.4106400,8.5145000)) { SendClientMessage(playerid, 0xC9FF78FF, "You have started scrapping your vehicle, please wait 10 seconds.."); //SetTimer("scrapTimer", 6000, false); SetTimerEx("scrapTimer", 10000, false, "i", playerid); SetVehicleToRespawn(scrapvehicle); RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid,0); } else return SendClientMessage(playerid,COLOR_RED,"You aren't near the /scrapcar checkpoint!"); } else return SendClientMessage(playerid,COLOR_RED,"You must be in a scrappable vehicle! ((Broken Sadler and Broken Glendale))"); return 1; }