16.11.2013, 16:59
Hey people! I was editing a FS and I realised it has a bug that I don't know how to fix It's a car radio system, just imagine: I get out of the car while I am listening to a selected station (radio isn`t off), the problem comes when I get in the car, the station's textraw is showed. buf the "radio off" textraw is also showed and it doesn't disappear :S Here's the FS, thanks!
Код:
#include <a_samp> #undef MAX_PLAYERS #define MAX_PLAYERS 120 forward PlayVehicleRadioForPlayer(playerid,online); forward NonChangeRadio(playerid); forward IsAVel(vehicleid); forward HideStationTitle(playerid,numberid); new VehRadio[MAX_VEHICLES]; new PassengerInCar[MAX_VEHICLES][8]; new bool:WaitForBuf[MAX_PLAYERS]; new PassengerSeat[MAX_PLAYERS]; new OldCar[MAX_PLAYERS]; enum params { Float:X,Float:Y,Title[64],URL[200] }; new RadioParams[15][params] = { {220.0,20.0,"Radio OFF","none"},// 1 {220.0,20.0,"MiamiBiza 1","http://mp3plate.com/audio/176601577/-43188317/David_Guetta_feat_Taped_Rai-Just_One_Last_Time_Extended_Mix(mp3plate.com).mp3"},// 2 {220.0,20.0,"MiamiBiza 2","http://ru-fm.ru/files/mp3/78dcdb72aabb68706426d9eec59d4578.mp3"},// 3 {220.0,20.0,"MiamiBiza 3","http://8tracks.s3.amazonaws.com/tf/028/073/025/45168.mp3"},// 4 {220.0,20.0,"MiamiBiza 4","http://www.deejaycee.com/wp-content/uploads/2012/09/David-Guetta-Alesso-Feat.-Tegan-Sara-Every-Chance-We-Get-We-Run.mp3"},// 5 {220.0,20.0,"MiamiBiza 5","http://houseanthems.com/wp-content/uploads/2012/09/In-My-Head.mp3"},// 6 {220.0,20.0,"MiamiBiza 6","http://mp3.wapos.ru/base/b/0/6/2480/wapos101980.mp3"},// 7 {220.0,20.0,"MiamiBiza 7","http://a.tumblr.com/tumblr_luvh5ePzX61qepmsko1.mp3"},// 8 {220.0,20.0,"MiamiBiza 8","http://www.audiblecoffee.com/mp3/Coldplay_Paradise_Tiesto_Remix.mp3"},// 9 {220.0,20.0,"MiamiBiza 9","http://www.myndal.com/smileforcamera/audio/d/Deadmau5%20feat%20Kaskade%20-%20I%20Remember.mp3"},// 10 {220.0,20.0,"MiamiBiza 10","http://www.missls.net/wp-content/uploads/2010/05/Swedish-House-Mafia-ft.-Pharrell-One-Your-Name.mp3"},// 11 {220.0,20.0,"MiamiBiza 11","http://www.rollingtuff.com/wp-content/uploads/2011/12/04-Internet-Friends.mp3"},// 12 {220.0,20.0,"MiamiBiza 12","http://thissongissick.com/blog/wp-content/uploads/2012/05/Knife-Party-Bonfire-Original-Mix.mp3"},// 13 {220.0,20.0,"MiamiBiza 13","http://tiobiloute59.free.fr/tiesto/DJ%20Tiesto%20-%20Sunset%20on%20Ibiza.mp3"},// 14 {220.0,20.0,"MiamiBiza 14","http://freshmp3music.ru/music/08.2011/David_Guetta_-_Paris_%28www.freshmp3music.ru%29.mp3"}// 15 }; new Text:StationText[17]; public OnFilterScriptInit() { for(new i = 0; i < MAX_VEHICLES; i++) { VehRadio[i] = 2; for(new s = 1; s < 8; s++) PassengerInCar[i][s] = INVALID_PLAYER_ID; } for(new t = 0; t < sizeof(StationText); t++) { StationText[t] = TextDrawCreate(RadioParams[t][X],RadioParams[t][Y],RadioParams[t][Title]); TextDrawAlignment(StationText[t],0); TextDrawBackgroundColor(StationText[t],0x000000ff); TextDrawFont(StationText[t],2); TextDrawLetterSize(StationText[t],0.4,1.6); TextDrawColor(StationText[t],0x906010ff); TextDrawSetOutline(StationText[t],1); TextDrawSetProportional(StationText[t],2); TextDrawSetShadow(StationText[t],1); } return 1; } public OnFilterScriptExit() { for(new t = 0; t < sizeof(StationText); t++) TextDrawDestroy(StationText[t]); return 1; } public OnPlayerConnect(playerid) { WaitForBuf[playerid] = false; OldCar[playerid] = INVALID_VEHICLE_ID; PassengerSeat[playerid] = 0; return 0; } public OnPlayerDisconnect(playerid) { if(OldCar[playerid] != INVALID_VEHICLE_ID) PassengerInCar[OldCar[playerid]][PassengerSeat[playerid]] = INVALID_PLAYER_ID; return 0; } public OnPlayerStateChange(playerid,newstate,oldstate) { if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) { new veh = GetPlayerVehicleID(playerid); if(IsAVel(veh)) return 0; new seat = GetPlayerVehicleSeat(playerid); if(seat != 0) { PassengerInCar[veh][seat] = playerid; PassengerSeat[playerid] = seat; OldCar[playerid] = veh; TextDrawHideForPlayer(playerid, StationText[0]); } PlayVehicleRadioForPlayer(playerid,VehRadio[veh]); } if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) { new veh = GetPlayerVehicleID(playerid); if(IsAVel(veh)) return 0; StopAudioStreamForPlayer(playerid); if(OldCar[playerid] != INVALID_VEHICLE_ID) { PassengerInCar[OldCar[playerid]][PassengerSeat[playerid]] = INVALID_PLAYER_ID; OldCar[playerid] = INVALID_VEHICLE_ID; } } return 0; } public PlayVehicleRadioForPlayer(playerid,online) { if(online == 0) { StopAudioStreamForPlayer(playerid); TextDrawShowForPlayer(playerid,StationText[16]); WaitForBuf[playerid] = true; SetTimerEx("NonChangeRadio",1000,false,"i",playerid); SetTimerEx("HideStationTitle",3500,false,"id",playerid,16); return 1; } StopAudioStreamForPlayer(playerid); PlayAudioStreamForPlayer(playerid,RadioParams[online - 2][URL]); TextDrawHideForPlayer(playerid,StationText[16]); TextDrawShowForPlayer(playerid,StationText[online - 2]); WaitForBuf[playerid] = true; SetTimerEx("NonChangeRadio",1000,false,"i",playerid); SetTimerEx("HideStationTitle",5000,false,"id",playerid,online - 2); return 1; } public OnPlayerKeyStateChange(playerid,newkeys,oldkeys) { if(newkeys == KEY_YES) { if(!IsPlayerInAnyVehicle(playerid)) return 0; if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 0; new veh = GetPlayerVehicleID(playerid); if(IsAVel(veh)) return 0; if(WaitForBuf[playerid]) return SendClientMessage(playerid,0xFF0000FF,"* Conectando con la radio..."); VehRadio[veh]++; if(VehRadio[veh] == 17) VehRadio[veh] = 0; PlayVehicleRadioForPlayer(playerid,VehRadio[veh]); for(new s = 1; s < 8; s++) { if(PassengerInCar[veh][s] != INVALID_PLAYER_ID) PlayVehicleRadioForPlayer(PassengerInCar[veh][s],VehRadio[veh]); } } if(newkeys == KEY_NO) { if(!IsPlayerInAnyVehicle(playerid)) return 0; if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 0; new veh = GetPlayerVehicleID(playerid); if(IsAVel(veh)) return 0; if(WaitForBuf[playerid]) return SendClientMessage(playerid,0xFF0000FF,"* Conectando con la radio..."); VehRadio[veh]--; if(VehRadio[veh] == -1) VehRadio[veh] = 16; PlayVehicleRadioForPlayer(playerid,VehRadio[veh]); for(new s = 1; s < 8; s++) { if(PassengerInCar[veh][s] != INVALID_PLAYER_ID) PlayVehicleRadioForPlayer(PassengerInCar[veh][s],VehRadio[veh]); } } return 0; } public NonChangeRadio(playerid) return WaitForBuf[playerid] = false; public HideStationTitle(playerid,numberid) return TextDrawHideForPlayer(playerid,StationText[numberid]); public IsAVel(vehicleid) { new model = GetVehicleModel(vehicleid); if(model == 481 || model == 509 || model == 510) return 1; return 0; }