Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ================================================================================
- Phanto's Script
- 2011
- ________________________________________________________________________________
- •Script: PFuel&Engine&Lights •Scripter: Phanto90
- •Type: FS •File size: 15 Kb(.pwn) / 18 Kb(.amx)
- •Lines: 353 •Version: 1.0v
- ________________________________________________________________________________
- * Description *
- (As always, sorry for my bad way of writing english :D)
- This week I decided to script a simple & nice fuel system, and in one hour of
- work and few tests here it is.
- I decided to use Incognito's Streamer for the TextLabel. Actually it is pretty
- useless for the Filterscript itself, but i thought a lot of Gamemodes uses it.
- If you don't use Incognito's streamer, simply modify the script.
- System:
- •Fuel System
- •Engine System (Press ALT SX to turn on/off)
- •Lights System (Press 2 to turn on/off)
- •Some Fuel Station added (I don't think i added every fuel station in San Andreas,
- but you can modify that by increasing/decreasing MAX_STATIONS and coords)
- •If your vehicle run out of fuel you can buy some tanks and refill it by typing
- /refuel when you are in it.
- Credits:
- •Thanks to Incognito for his Streamer.
- Faq:
- -The Server do not run when I load PFuel. What should I do?
- •Be sure to have Incognito's Streamer Plugin loaded. You can find it on forum-samp.
- Note: -Be sure not to have other Fuel System loaded on your server.
- -I noticed that if it is loaded Zamaroth's Textdraws Editor, the FS does
- not work properly. Be sure not to have it loaded when using PFuel.
- Thanks for choosing Pawnoscripter!
- http://pawnoscripter.forumfree.it
- Phanto90
- ________________________________________________________________________________
- Do not remove credits.
- ================================================================================
- */
- #include <a_samp>
- #include <streamer>
- //===============DIALOGS
- #define MAINDIALOG 12056
- #define FUELDIALOG 12057
- #define TANKDIALOG 12058
- //===============FOR KEYS
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- //================VAR
- new Float:VFuel[MAX_VEHICLES];
- new Tank[MAX_PLAYERS];
- new engine,lights,alarm,doors,bonnet,boot,objective;
- //================FUEL_STATIONS
- #define MAX_STATIONS 26
- new Float:Station[MAX_STATIONS][3]={
- {1944.3717,-1772.7307,13.3906},
- {1939.1682,-1772.8269,13.3828},
- {-99.0707,-1173.1080,2.4191},
- {-93.8733,-1160.8280,2.1795},
- {-87.3328,-1164.6559,2.2693},
- {-91.9832,-1176.1752,2.1985},
- {-1668.9750,407.6899,7.1797},
- {-1675.1237,413.9737,7.1797},
- {-1681.9315,420.2315,7.1797},
- {-2407.6882,976.9827,45.2969},
- {-1609.0656,-2718.9431,48.5391},
- {-1605.5094,-2714.2961,48.5335},
- {-1602.4349,-2709.7388,48.5391},
- {-1465.0649,1866.5117,32.6328},
- {-1477.5488,1865.7651,32.6398},
- {-1477.4956,1858.0613,32.6398},
- {-1464.8992,1858.6085,32.6328},
- {-1328.7679,2671.9915,50.0625},
- {-1328.3496,2677.5759,50.0625},
- {-1327.6848,2682.9897,50.0625},
- {2205.7717,2474.5010,10.8203},
- {2199.0620,2474.8723,10.8203},
- {2639.7009,1102.9178,10.8203},
- {2639.8220,1109.6555,10.8203},
- {1381.3658,457.4052,19.9383},
- {1383.1332,461.8247,20.1210}
- };
- //================TEXT
- new Text:Background0,Text:Background1,Text:Fuel[MAX_VEHICLES],Text:FuelLvl;
- //=====================================================================LOADPFUEL
- public OnFilterScriptInit()
- {
- print("*______________________*");
- print(" PFuel 1.0v by Phanto90 ");
- print("*______________________*");
- for(new i=0;i<MAX_STATIONS;i++)
- {
- CreateDynamic3DTextLabel("[{C14124}Fuel Station{FFFFFF}]\n Press SPACE", 0xFFFFFFFF, Station[i][0], Station[i][1], Station[i][2], 100, INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0, -1, -1,-1);
- }
- SetTimer("FuelTimer",10000,true);
- SetTimer("TextDraw",500,true);
- ManualVehicleEngineAndLights();
- Background0 = TextDrawCreate(504.000000, 130.000000, "Background");
- TextDrawBackgroundColor(Background0, 0);
- TextDrawFont(Background0, 1);
- TextDrawLetterSize(Background0, 0.500000, 1.000000);
- TextDrawColor(Background0, 0);
- TextDrawSetOutline(Background0, 0);
- TextDrawSetProportional(Background0, 1);
- TextDrawSetShadow(Background0, 1);
- TextDrawUseBox(Background0, 1);
- TextDrawBoxColor(Background0, 255);
- TextDrawTextSize(Background0, 602.000000, 0.000000);
- Background1 = TextDrawCreate(506.000000, 133.000000, "Background2");
- TextDrawBackgroundColor(Background1, 0);
- TextDrawFont(Background1, 1);
- TextDrawLetterSize(Background1, 0.500000, 0.399999);
- TextDrawColor(Background1, 0);
- TextDrawSetOutline(Background1, 0);
- TextDrawSetProportional(Background1, 1);
- TextDrawSetShadow(Background1, 1);
- TextDrawUseBox(Background1, 1);
- TextDrawBoxColor(Background1, 2018514120);
- TextDrawTextSize(Background1, 600.000000, 0.000000);
- FuelLvl = TextDrawCreate(502.000000, 114.000000, "Fuel level");
- TextDrawBackgroundColor(FuelLvl, 255);
- TextDrawFont(FuelLvl, 0);
- TextDrawLetterSize(FuelLvl, 0.549999, 1.800000);
- TextDrawColor(FuelLvl, -1);
- TextDrawSetOutline(FuelLvl, 0);
- TextDrawSetProportional(FuelLvl, 1);
- TextDrawSetShadow(FuelLvl, 1);
- for(new i=1;i<MAX_VEHICLES;i++)
- {
- VFuel[i]=random(100);
- Fuel[i] = TextDrawCreate(506.000000, 133.000000, "Fuel");
- TextDrawBackgroundColor(Fuel[i], 0);
- TextDrawFont(Fuel[i], 1);
- TextDrawLetterSize(Fuel[i], 0.500000, 0.399999);
- TextDrawColor(Fuel[i], 0);
- TextDrawSetOutline(Fuel[i], 0);
- TextDrawSetProportional(Fuel[i], 1);
- TextDrawSetShadow(Fuel[i], 1);
- TextDrawUseBox(Fuel[i], 1);
- TextDrawBoxColor(Fuel[i], -932962561);
- TextDrawTextSize(Fuel[i], 600.000000, 0.000000);
- }
- }
- //=====================================================================FUELTIMER
- forward FuelTimer();
- public FuelTimer()
- {
- for(new i=1;i<MAX_VEHICLES;i++)
- {
- TextDrawTextSize(Fuel[i], 500.0+VFuel[i], 0.000000);
- GetVehicleParamsEx(i,engine,lights,alarm,doors,bonnet,boot,objective);
- if(engine==1 && IsAValidVehicle(i))
- {
- VFuel[i]=VFuel[i]-0.1;
- if(VFuel[i]<=0)
- {
- SetVehicleParamsEx(i,0,0,alarm,doors,bonnet,boot,objective);
- VFuel[i]=0;
- }
- }
- }
- return 1;
- }
- //===========================================================ONPLAYERSTATECHANGE
- public OnPlayerStateChange(playerid,newstate,oldstate)
- {
- if(newstate==PLAYER_STATE_DRIVER)
- {
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
- if(!IsAValidVehicle(GetPlayerVehicleID(playerid))) return SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,alarm,doors,bonnet,boot,objective);
- if(engine==1) SendClientMessage(playerid,0xFFFFFFFF,"[ENGINE:] The engine is on. To turn it off press {C14124}ALT SX");
- else SendClientMessage(playerid,0xFFFFFFFF,"[ENGINE:] The engine is off. To turn it on press {C14124}ALT SX");
- TextDrawShowForPlayer(playerid,Background0);
- TextDrawShowForPlayer(playerid,Background1);
- TextDrawShowForPlayer(playerid,FuelLvl);
- TextDrawShowForPlayer(playerid,Fuel[GetPlayerVehicleID(playerid)]);
- return 1;
- }
- if(newstate==PLAYER_STATE_ONFOOT)
- {
- TextDrawHideForPlayer(playerid,Fuel[playerid]);
- TextDrawHideForPlayer(playerid,Background0);
- TextDrawHideForPlayer(playerid,Background1);
- TextDrawHideForPlayer(playerid,FuelLvl);
- return 1;
- }
- return 1;
- }
- //===========================================================ONPLAYEREXITVEHICLE
- public OnPlayerExitVehicle(playerid)
- {
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
- if(!IsAValidVehicle(GetPlayerVehicleID(playerid))) SetVehicleParamsEx(GetPlayerVehicleID(playerid),0,lights,alarm,doors,bonnet,boot,objective);
- return 1;
- }
- //========================================================ONPLAYERKEYSTATECHANGE
- public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
- {
- if(PRESSED(KEY_SUBMISSION) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
- {
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
- if(lights==1)
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,0,alarm,doors,bonnet,boot,objective);
- else
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,1,alarm,doors,bonnet,boot,objective);
- return 1;
- }
- //=====================================================KEYFIRE
- if(PRESSED(KEY_FIRE))
- {
- //==================ENGINE ON
- if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER && IsAValidVehicle(GetPlayerVehicleID(playerid)))
- {
- GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective);
- if(VFuel[GetPlayerVehicleID(playerid)]<=0) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}The vehicle run out of fuel.");
- if(engine<=0)
- {
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),1,lights,alarm,doors,bonnet,boot,objective);
- SendClientMessage(playerid,0xFFFFFFFF,"[ENGINE:] You turn on the engine.");
- return 1;
- }
- else
- {
- SetVehicleParamsEx(GetPlayerVehicleID(playerid),0,lights,alarm,doors,bonnet,boot,objective);
- SendClientMessage(playerid,0xFFFFFFFF,"[ENGINE:] You turn off the engine.");
- return 1;
- }
- }
- }
- //=======================================================KEYBRAKE
- if(PRESSED(KEY_HANDBRAKE) || PRESSED(KEY_SPRINT))
- {
- //================FUEL STATION
- for(new i=0;i<MAX_STATIONS;i++)
- {
- if(IsPlayerInRangeOfPoint(playerid,3,Station[i][0],Station[i][1],Station[i][2]))
- {
- if(!IsPlayerInAnyVehicle(playerid) && PRESSED(KEY_SPRINT))
- return ShowPlayerDialog(playerid,TANKDIALOG,0,"Tank menù","{DEDEDE}Do you want to buy a {c14124}Fuel Tank{DEDEDE} of 10 lt. \nfor {89FF56}40${DEDEDE}?","Yes","No");
- else if(GetPlayerState(playerid)==PLAYER_STATE_DRIVER && IsAValidVehicle(GetPlayerVehicleID(playerid)) && PRESSED(KEY_HANDBRAKE))
- return ShowPlayerDialog(playerid,MAINDIALOG,DIALOG_STYLE_LIST,"Station menù","{c14124}Refuel {DEDEDE} your vehicle.\nBuy a {c14124}Fuel Tank{DEDEDE} of 10 lt.","Select","Exit");
- }
- }
- }
- return 1;
- }
- //==============================================================ONDIALOGRESPONSE
- public OnDialogResponse(playerid,dialogid,response,listitem,inputtext[])
- {
- //=========================TANKDIALOG
- if(dialogid==TANKDIALOG && response)
- {
- GivePlayerMoney(playerid,-40);
- SendClientMessage(playerid,0xFFFFFFFF,"[TANK:]You buyied a {C14124}fuel tank{FFFFFF}.");
- Tank[playerid]+=1;
- return 1;
- }
- //=========================MAINDIALOG
- if(dialogid==MAINDIALOG && response)
- {
- if (listitem==0)
- return ShowPlayerDialog(playerid,FUELDIALOG,DIALOG_STYLE_INPUT,"Fuel menu","{DEDEDE}Welcome to the gas station!\nPlease inserit the number of gallons you want to refill to your vehicle.\n {C14124}1 gallon {DEDEDE}= {C14124}2$","Refuel","Exit");
- if (listitem==1)
- return ShowPlayerDialog(playerid,TANKDIALOG,0,"Tank menù","{DEDEDE}Do you want to buy a {c14124}Fuel Tank{DEDEDE} of 10 lt. \nfor {89FF56}40${DEDEDE}?","Yes","No");
- }
- //=========================FUELDIALOG
- if(dialogid==FUELDIALOG && response)
- {
- if(VFuel[GetPlayerVehicleID(playerid)]>=100) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}Your vehicle is full of fuel");
- if(strval(inputtext)<=0 || strval(inputtext)>100) return ShowPlayerDialog(playerid,FUELDIALOG,DIALOG_STYLE_INPUT,"Fuel menu","{C14124}Error: inserit a number between 0 and 100 gallons.\n\n{DEDEDE}Welcome to the gas station!\nPlease inserit the number of gallons you want to refill to your vehicle.\n {C14124}1 gallon {DEDEDE}= {C14124}2$","Refuel","Exit");
- if(VFuel[GetPlayerVehicleID(playerid)]+ strval(inputtext) > 100.0) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}You can't refill your vehicle with so many gallons");
- VFuel[GetPlayerVehicleID(playerid)]=VFuel[GetPlayerVehicleID(playerid)]+strval(inputtext);
- GivePlayerMoney(playerid,-strval(inputtext)*2);
- new stringa[256];
- format(stringa,sizeof(stringa),"[FUEL:] You filled your vehicle with {C14124}%d {FFFFFF}gallons for {C14124}%d$",strval(inputtext),strval(inputtext)*2);
- SendClientMessage(playerid,0xFFFFFFFF,stringa);
- return 1;
- }
- return 1;
- }
- //===============================================================ISAVALIDVEHICLE
- stock IsAValidVehicle(vehicleid)
- {
- new x=GetVehicleModel(vehicleid);
- if(x>=400 && x!=509 && x!=481 && x!=510 && x!=548 && x!=425 && x!=417 && x!=487 && x!=488 && x!=497 && x!=563 && x!=447 && x!=469 && x!=592 && x!=577 && x!=511 && x!=512 && x!=593 && x!=520 && x!=553 && x!=476 && x!= 519 &&
- x!=460 && x!=513 && x!=472 && x!=473 && x!=493 && x!=595 && x!=484 && x!=430 && x!=453 && x!=452 && x!=446 && x!=454 && x!=449 && x!=537 && x!=538)
- return 1;
- else return 0;
- }
- //================================================================ONPLAYERUPDATE
- forward TextDraw();
- public TextDraw()
- {
- for(new i=0;i<MAX_PLAYERS;i++)
- {
- if(GetPlayerState(i)==PLAYER_STATE_DRIVER && GetPlayerState(i)!=PLAYER_STATE_EXIT_VEHICLE && IsAValidVehicle(GetPlayerVehicleID(i)))
- {
- TextDrawHideForPlayer(i,Fuel[GetPlayerVehicleID(i)]);
- TextDrawTextSize(Fuel[GetPlayerVehicleID(i)], 500.0+VFuel[i], 0.000000);
- TextDrawShowForPlayer(i,Fuel[GetPlayerVehicleID(i)]);
- }
- }
- return 1;
- }
- //================================================================ONVEHICLESPAWN
- public OnVehicleSpawn(vehicleid)
- {
- VFuel[vehicleid]=random(100);
- return 1;
- }
- //===========================================================ONPLAYERCOMMANDTEXT
- public OnPlayerCommandText(playerid,cmdtext[])
- {
- if(!strcmp("/refuel",cmdtext,true))
- {
- if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}You are not driving a vehicle.");
- if(!IsAValidVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}This type of vehicle does not need to be refilled with fuel");
- if(!Tank[playerid]) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}You have no tank to refuel the vehicle");
- if(VFuel[GetPlayerVehicleID(playerid)]>90) return SendClientMessage(playerid,0xFF0000FF,"[ERROR:] {FFFFFF}You have enough fuel for now.");
- Tank[playerid]--;
- VFuel[GetPlayerVehicleID(playerid)]+=10;
- SendClientMessage(playerid,0x00FF00FF,"[VEHICLE:] {FFFFFF}You refilled successfully your vehicle.");
- return 1;
- }
- return 0;
- }
- //=====================================================================ISNUMERIC
- stock isNumeric(const string[])
- {
- new length=strlen(string);
- if (length==0) return false;
- for (new i = 0; i < length; i++) {
- if (
- (string[i] > '9' || string[i] < '0' && string[i]!='-' && string[i]!='+')
- || (string[i]=='-' && i!=0)
- || (string[i]=='+' && i!=0)
- ) return false;
- }
- if (length==1 && (string[0]=='-' || string[0]=='+')) return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement