Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //------------------------------------------------------------------------------
- //
- //
- // Dynamic mechanic garage system
- // by Adel
- //
- //
- //------------------------------------------------------------------------------
- #include <a_samp>
- #include <Dini>
- #define FILTERSCRIPT
- //------------------------------------------------------------------------------
- #define CREATEGARAGE 500
- #define LABELCOLOR 501
- #define FIXPRICE 502
- #define COLORPRICE 503
- #define FIX 504
- #define COLORCHANGE 505
- #define MAX_GARAGES 50
- #define OBJECTM 12929
- //------------------------------------------------------------------------------
- enum gr
- {
- Float:xgarage,
- Float:ygarage,
- Float:zgarage,
- Float:xrgarage,
- Float:yrgarage,
- Float:zrgarage,
- fixprice,
- colorprice,
- garag,
- Text3D:label,
- labelcolor,
- };
- new Garage[MAX_GARAGES][gr];
- new editing[MAX_PLAYERS];
- new repair[MAX_PLAYERS];
- //------------------------------------------------------------------------------
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- print("Dynamic mechanic garage system by Adel loaded");
- LoadG();
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- #else
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- #endif
- public OnGameModeInit()
- {
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp("/mgcreate", cmdtext, true, 9) == 0)
- {
- if(IsPlayerAdmin(playerid))
- {
- ShowPlayerDialog(playerid, CREATEGARAGE, DIALOG_STYLE_LIST, "Mechanic garage", "Create garage\nEdit garage\nDestroy garage\nChange label color\nSet fix price\nSet color change price", "Ok", "Exit");
- }
- return 1;
- }
- if(strcmp("/fix", cmdtext, true, 4) == 0)
- {
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
- {
- new s[60];
- format(s, 60, "Fix car | %d$\nChange color | %d$", Garage[i][fixprice], Garage[i][colorprice]);
- ShowPlayerDialog(playerid, FIX, DIALOG_STYLE_LIST, "Mechanic garage", s, "Ok", "Exit");
- repair[playerid] = i;
- }
- }
- return 1;
- }
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid)
- {
- return 1;
- }
- public OnRconCommand(cmd[])
- {
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- return 1;
- }
- public OnPlayerObjectMoved(playerid, objectid)
- {
- return 1;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- return 1;
- }
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- return 1;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- return 1;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- return 1;
- }
- public OnPlayerSelectedMenuRow(playerid, row)
- {
- return 1;
- }
- public OnPlayerExitedMenu(playerid)
- {
- return 1;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
- {
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- return 1;
- }
- public OnRconLoginAttempt(ip[], password[], success)
- {
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- return 1;
- }
- public OnPlayerStreamIn(playerid, forplayerid)
- {
- return 1;
- }
- public OnPlayerStreamOut(playerid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid)
- {
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == CREATEGARAGE)
- {
- if(response)
- {
- if(listitem == 0)
- {
- new id = GarageID(), s[20];
- format(s, 20, "Garages/%d.ini", id);
- if(!fexist(s))
- {
- dini_Create(s);
- GetPlayerPos(playerid, Garage[id][xgarage], Garage[id][ygarage], Garage[id][zgarage]);
- Garage[id][garag] = CreateObject(OBJECTM, Garage[id][xgarage], Garage[id][ygarage], Garage[id][zgarage], 0, 0 , 0, 96.0);
- Garage[id][label] = Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[id][xgarage], Garage[id][ygarage], Garage[id][zgarage], 40.0, 0, 0);
- EditObject(playerid, Garage[id][garag]);
- editing[playerid] = id;
- SGarage(id);
- }
- }
- else if(listitem == 1)
- {
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
- {
- editing[playerid] = i;
- EditObject(playerid,Garage[i][garag]);
- }
- }
- SendClientMessage(playerid, -1, "You are editing a mechanic garage.");
- }
- else if(listitem == 2)
- {
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
- {
- new s[30];
- format(s, 30,"Garages/%d.ini", i);
- if(fexist(s))
- {
- dini_Remove(s);
- Delete3DTextLabel(Garage[i][label]);
- DestroyObject(Garage[i][garag]);
- format(s, 30,"Mechanic garage %d destroyed.", i);
- SendClientMessage(playerid, -1, s);
- }
- }
- }
- }
- else if(listitem == 3)
- {
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
- {
- editing[playerid] = i;
- ShowPlayerDialog(playerid, LABELCOLOR, DIALOG_STYLE_LIST, "Label color", "Blue\nGreen\nRed\nYellow", "Ok", "Exit");
- }
- }
- }
- else if(listitem == 4)
- {
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
- {
- editing[playerid] = i;
- ShowPlayerDialog(playerid, FIXPRICE, DIALOG_STYLE_INPUT, "Fix price", "Input fix price:", "Ok", "Exit");
- }
- }
- }
- else if(listitem == 5)
- {
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 10.0, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage]))
- {
- editing[playerid] = i;
- ShowPlayerDialog(playerid, COLORPRICE, DIALOG_STYLE_INPUT, "Color change price", "Input color change price:", "Ok", "Exit");
- }
- }
- }
- }
- }
- if(dialogid == LABELCOLOR)
- {
- if(response)
- {
- if(listitem == 0)
- {
- Garage[editing[playerid]][labelcolor] = 0;
- Delete3DTextLabel(Garage[editing[playerid]][label]);
- Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- SGarage(editing[playerid]);
- SendClientMessage(playerid, -1, "Label color changed.");
- }
- else if(listitem == 1)
- {
- Garage[editing[playerid]][labelcolor] = 1;
- Delete3DTextLabel(Garage[editing[playerid]][label]);
- Create3DTextLabel("{00FF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- SGarage(editing[playerid]);
- SendClientMessage(playerid,-1,"Label color changed.");
- }
- else if(listitem == 2)
- {
- Garage[editing[playerid]][labelcolor] = 2;
- Delete3DTextLabel(Garage[editing[playerid]][label]);
- Create3DTextLabel("{FF0000}Mechanic garage\n/fix", 0xFFFFFFFF,Garage[editing[playerid]][xgarage],Garage[editing[playerid]][ygarage],Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- SGarage(editing[playerid]);
- SendClientMessage(playerid, -1, "Label color changed.");
- }
- else if(listitem == 3)
- {
- Garage[editing[playerid]][labelcolor] = 3;
- Delete3DTextLabel(Garage[editing[playerid]][label]);
- Create3DTextLabel("{FFFF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- SGarage(editing[playerid]);
- SendClientMessage(playerid, -1, "Label color changed.");
- }
- }
- }
- if(dialogid == FIXPRICE)
- {
- if(response)
- {
- new s[35];
- Garage[editing[playerid]][fixprice] = strval(inputtext);
- format(s, 35, "You set the fix price to %d$.", strval(inputtext));
- SendClientMessage(playerid, -1, s);
- }
- }
- if(dialogid == COLORPRICE)
- {
- if(response)
- {
- new s[42];
- Garage[editing[playerid]][colorprice] = strval(inputtext);
- format(s, 42, "You set the color change price to %d$.", strval(inputtext));
- SendClientMessage(playerid, -1, s);
- }
- }
- if(dialogid == FIX)
- {
- if(response)
- {
- if(listitem == 0)
- {
- if(GetPlayerMoney(playerid) >= Garage[repair[playerid]][fixprice])
- {
- SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
- RepairVehicle(GetPlayerVehicleID(playerid));
- GivePlayerMoney(playerid, -Garage[repair[playerid]][fixprice]);
- SendClientMessage(playerid, -1, "Car fixed.");
- }
- else return SendClientMessage(playerid, -1, "You have not money.");
- }
- else if(listitem == 1)
- {
- ShowPlayerDialog(playerid, COLORCHANGE, DIALOG_STYLE_INPUT, "Mechanic garage", "Enter vehicle color:", "Ok", "Exit");
- }
- }
- }
- if(dialogid == COLORCHANGE)
- {
- if(response)
- {
- if(GetPlayerMoney(playerid) >= Garage[repair[playerid]][colorprice])
- {
- ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(inputtext), strval(inputtext));
- SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
- RepairVehicle(GetPlayerVehicleID(playerid));
- GivePlayerMoney(playerid,-Garage[repair[playerid]][colorprice]);
- SendClientMessage(playerid,-1,"Car color changed.");
- }
- else return SendClientMessage(playerid, -1, "You have not money.");
- }
- }
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
- {
- if(response == EDIT_RESPONSE_FINAL)
- {
- if(objectid == Garage[editing[playerid]][garag])
- {
- SetObjectPos(objectid, fX, fY, fZ);
- SetObjectRot(objectid, fRotX, fRotY, fRotZ);
- Garage[editing[playerid]][xgarage] = fX;
- Garage[editing[playerid]][ygarage] = fY;
- Garage[editing[playerid]][zgarage] = fZ;
- Garage[editing[playerid]][xrgarage] = fRotX;
- Garage[editing[playerid]][yrgarage] = fRotY;
- Garage[editing[playerid]][zrgarage] = fRotZ;
- SGarage(editing[playerid]);
- Delete3DTextLabel(Garage[editing[playerid]][label]);
- if(Garage[editing[playerid]][labelcolor] == 0)
- {
- Garage[editing[playerid]][label] = Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- }
- else if(Garage[editing[playerid]][labelcolor] == 1)
- {
- Garage[editing[playerid]][label] = Create3DTextLabel("{00FF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- }
- else if(Garage[editing[playerid]][labelcolor] == 2)
- {
- Garage[editing[playerid]][label] = Create3DTextLabel("{FF0000}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- }
- else if(Garage[editing[playerid]][labelcolor] == 3)
- {
- Garage[editing[playerid]][label] = Create3DTextLabel("{FFFF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[editing[playerid]][xgarage], Garage[editing[playerid]][ygarage], Garage[editing[playerid]][zgarage], 30.0, 0, 0);
- }
- SendClientMessage(playerid, -1, "Mechanic garage edited.");
- }
- }
- }
- stock GarageID()
- {
- new s[20];
- for(new i= 0; i < MAX_GARAGES; i++)
- {
- format(s, 20, "Garages/%d.ini", i);
- if(!fexist(s)) return i;
- }
- return true;
- }
- stock SGarage(id)
- {
- new s[20];
- format(s, 20, "Garages/%d.ini", id);
- if(fexist(s))
- {
- dini_FloatSet(s, "GX", Garage[id][xgarage]);
- dini_FloatSet(s, "GY", Garage[id][ygarage]);
- dini_FloatSet(s, "GZ", Garage[id][zgarage]);
- dini_FloatSet(s, "GXR",Garage[id][xrgarage]);
- dini_FloatSet(s, "GYR",Garage[id][yrgarage]);
- dini_FloatSet(s, "GZR",Garage[id][zrgarage]);
- dini_IntSet(s, "Gprice",Garage[id][fixprice]);
- dini_IntSet(s, "Cprice",Garage[id][colorprice]);
- dini_IntSet(s, "Labelcolor",Garage[id][labelcolor]);
- }
- return 1;
- }
- stock LoadG()
- {
- new s[20];
- for(new i = 0; i < MAX_GARAGES; i++)
- {
- format(s, 20, "Garages/%d.ini", i);
- if(fexist(s))
- {
- Garage[i][xgarage] = dini_Float(s, "GX");
- Garage[i][ygarage] = dini_Float(s, "GY");
- Garage[i][zgarage] = dini_Float(s, "GZ");
- Garage[i][xrgarage] = dini_Float(s, "GXR");
- Garage[i][yrgarage] = dini_Float(s, "GYR");
- Garage[i][zrgarage] = dini_Float(s, "GZR");
- Garage[i][fixprice] = dini_Int(s, "Gprice");
- Garage[i][colorprice] = dini_Int(s, "Cprice");
- Garage[i][labelcolor] = dini_Int(s, "Labelcolor");
- Garage[i][garag] = CreateObject(OBJECTM, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], Garage[i][xrgarage], Garage[i][yrgarage], Garage[i][zrgarage], 96.0);
- if(Garage[i][labelcolor] == 0)
- {
- Garage[i][label] = Create3DTextLabel("{00BFFF}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
- }
- if(Garage[i][labelcolor] == 1)
- {
- Garage[i][label] = Create3DTextLabel("{00FF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
- }
- if(Garage[i][labelcolor] == 2)
- {
- Garage[i][label] = Create3DTextLabel("{FF0000}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
- }
- if(Garage[i][labelcolor] == 3)
- {
- Garage[i][label] = Create3DTextLabel("{FFFF00}Mechanic garage\n/fix", 0xFFFFFFFF, Garage[i][xgarage], Garage[i][ygarage], Garage[i][zgarage], 30.0, 0, 0);
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement