09.09.2012, 06:52
Is there anyway to stop the fuel from going down when the car engine is and when you turn it back on the fuel starts to go down again?
Код:
#include <a_samp> new Text:td_fuel[MAX_PLAYERS]; new Text:td_vhealth[MAX_PLAYERS]; new Text:td_vspeed[MAX_PLAYERS]; new Text:td_box[MAX_PLAYERS]; forward timer_update(); forward timer_refuel(playerid); new isrefuelling[MAX_PLAYERS] = 0; new fuel[MAX_VEHICLES]; new Float:max_vhealth[MAX_VEHICLES]; new Engine[MAX_PLAYERS]; public OnFilterScriptInit() { for(new i=0;i<MAX_VEHICLES;i++) { GetVehicleHealth(i,max_vhealth[i]); //getting max health fuel[i] = 100 + random(35); //setting fuel for vehicles } for(new i=0;i<MAX_PLAYERS;i++) { //setting up all textdraws td_fuel[i] = TextDrawCreate(478,397,"Fuel:"); td_vhealth[i] = TextDrawCreate(478,376,"Health:"); td_vspeed[i] = TextDrawCreate(478,397,"Speed:"); td_box[i] = TextDrawCreate(478.000000,328.000000,"Vehicle Stats: ~n~~n~~n~~n~"); TextDrawUseBox(td_box[i],1); TextDrawBoxColor(td_box[i],0x00000066); TextDrawTextSize(td_box[i],626.000000,21.000000); TextDrawAlignment(td_fuel[i],0); TextDrawAlignment(td_vhealth[i],0); TextDrawAlignment(td_vspeed[i],0); TextDrawAlignment(td_box[i],0); TextDrawBackgroundColor(td_fuel[i],0x000000ff); TextDrawBackgroundColor(td_vhealth[i],0x000000ff); TextDrawBackgroundColor(td_vspeed[i],0x000000ff); TextDrawBackgroundColor(td_box[i],0x000000cc); TextDrawFont(td_fuel[i],1); TextDrawLetterSize(td_fuel[i],0.699999,2.699999); TextDrawFont(td_box[i],0); TextDrawLetterSize(td_box[i],0.699999,2.899999); TextDrawColor(td_fuel[i],0xffffffff); TextDrawColor(td_vhealth[i],0xffffffff); TextDrawColor(td_vspeed[i],0xffffffff); TextDrawColor(td_box[i],0xffffffff); TextDrawSetOutline(td_fuel[i],1); TextDrawSetOutline(td_vhealth[i],1); TextDrawSetOutline(td_vspeed[i],1); TextDrawSetOutline(td_box[i],1); TextDrawSetProportional(td_fuel[i],1); TextDrawSetProportional(td_vhealth[i],1); TextDrawSetProportional(td_vspeed[i],1); TextDrawSetProportional(td_box[i],1); TextDrawSetShadow(td_fuel[i],1); TextDrawSetShadow(td_vhealth[i],1); TextDrawSetShadow(td_vspeed[i],1); TextDrawSetShadow(td_box[i],10); } SetTimer("timer_update",1000,true); return 1; } public OnFilterScriptExit() { for(new i=0;i<MAX_PLAYERS;i++) { TextDrawDestroy(td_fuel[i]); } return 1; } stock IsPlayerAtRefuelStation(playerid) { if (IsPlayerInRangeOfPoint(playerid,10,655.5993,-564.9833,16.3359)) return 1; //Dilimore if (IsPlayerInRangeOfPoint(playerid,10,4,5,6)) return 1; //random return 0; } public OnPlayerStateChange(playerid, newstate, oldstate) { if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) { TextDrawSetString(td_fuel[playerid],"Fuel:"); TextDrawShowForPlayer(playerid,td_fuel[playerid]); } else { TextDrawHideForPlayer(playerid,td_fuel[playerid]); } return 1; } public OnPlayerCommandText(playerid,cmdtext[]) { if (!strcmp("/refuel",cmdtext,true,7)) { if (!IsPlayerAtRefuelStation(playerid)) return SendClientMessage(playerid,0xFFC800FF,"You're not at an fuel station!"); if (!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFC800FF,"You are not in an vehicle!"); //if a player isnt in a vehicle, it stops here if (isrefuelling[playerid]) return SendClientMessage(playerid,0xFFC800FF,"You are already refuelling!"); //if a player is already refuelling, it stops here if (GetPlayerMoney(playerid) -2500 <0) return SendClientMessage(playerid,0xFFC800FF,"You dont have enough money!"); //if a player doesnt have $80 anymore, it stops here GivePlayerMoney(playerid, -2500); //Sets the player's cash -$80 SetCameraBehindPlayer(playerid); //Sets the camera behind the player (looks better because the player will be frozen for a few secs) isrefuelling[playerid] = 1; //setting isrefuelling to 1 so the player cant spam /refuel TextDrawSetString(td_fuel[playerid],"Refuelling..."); //changing textdraw to /refuel SetTimerEx("timer_refuel",4500,false,"i",playerid); //setting refueltimer return 1; } return 0; } public timer_update() { for(new i=0;i<MAX_PLAYERS;i++) { if (isrefuelling[i]) return 0; new vid = GetPlayerVehicleID(i); if (GetPlayerVehicleSeat(i) == 0) { fuel[vid] = fuel[vid] - 1; if (fuel[vid]<1) { fuel[vid] = 0; new veh = GetPlayerVehicleID(i); new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(veh,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective); Engine[i]=1; GameTextForPlayer(i,"~r~You are out of ~w~fuel~r~!",5000,4); } } new string[128];format(string,sizeof string,"Fuel:%i",fuel[vid] /3); TextDrawSetString(td_fuel[i],string); new Float:speed_x,Float:speed_y,Float:speed_z,Float:temp_speed,final_speed,Float:health; GetVehicleVelocity(vid,speed_x,speed_y,speed_z); temp_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*136.666667; final_speed = floatround(temp_speed,floatround_round); format(string,sizeof string,"Speed: %i",final_speed); TextDrawSetString(td_vspeed[i],string); GetVehicleHealth(vid,health); if (max_vhealth[vid] == 0)//if its an random spawned vehicle { fuel[vid] = 300; GetVehicleHealth(vid,max_vhealth[vid]); } health = (((health - max_vhealth[vid]) /max_vhealth[vid]) *100)+ 100; format(string,sizeof string,"Health: %i",floatround(health,floatround_round)); TextDrawSetString(td_vhealth[i],string); } return 1; } public timer_refuel(playerid) { new vid = GetPlayerVehicleID(playerid); if(Engine[playerid]==0) { new veh = GetPlayerVehicleID(playerid); new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(veh,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(veh,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective); Engine[playerid]=1; } fuel[vid] = fuel[vid] = 300; isrefuelling[playerid] = 0; TextDrawSetString(td_fuel[playerid],"Fuel:100"); }