Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Dynamic vehicle system with ORM created by justice96
- Date created: 05/08/2015
- Last updated: 07/08/2015
- Note: Do not remove my name on credits!
- */
- // Includes
- #include <a_samp>
- #include <a_mysql>
- #include <sscanf2>
- #include <YSI/y_iterate>
- #include <izcmd>
- // MySQL connection details
- #define HOST "localhost"
- #define USER "root"
- #define PASS ""
- #define DATABASE "Database"
- // Function (forward & public) > (function)
- #define function%0(%1) \
- forward%0(%1); public%0(%1)
- #define SEM(%0,%1); SendClientMessage(%0,COLOR_GREY,%1); // thanks to Tianmetal
- #define forex(%0,%1) for(new %0 = 0; %0 < %1; %0++)
- #define delstr(%0) strdel(%0,0,strlen(%0))
- #define IsNull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1])))) // updated function.
- // Main Colors
- #define COLOR_LIGHTBLUE 0x33CCFFAA
- #define COLOR_GREY 0xAFAFAFAA
- // Vehicle Func Define
- #define MAX_SERVER_VEHICLES 100
- #define MAX_PLATE_NAME 30
- // Iterator
- new Iterator:Vehicles<MAX_SERVER_VEHICLES>;
- // Enumrators
- enum server_veh
- {
- ORM:ORM_ID,
- ID,
- Model,
- Color[2],
- Plate[MAX_PLATE_NAME],
- Float:Spawn[4]
- };
- new ServerVehicle[MAX_SERVER_VEHICLES][server_veh];
- new VehicleID[MAX_SERVER_VEHICLES];
- new Database;
- #if defined FILTERSCRIPT
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" [Debug]: justice96 (Dynamic Vehicle ORM) loaded.");
- print("--------------------------------------\n");
- Database = mysql_connect(HOST, USER, DATABASE, PASS);
- mysql_log(LOG_ERROR | LOG_WARNING);
- mysql_pquery(Database,"SELECT * FROM `server_vehicles` ORDER BY `veh_id` ASC","Vehicle_Load",""); // Load _ Vehicles by ascending
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- #else
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- #endif
- public OnGameModeInit()
- {
- // Don't use these lines if it's a filterscript
- SetGameModeText("Blank Script");
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- 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;
- }
- // SSCANF Menu (cmd)
- SSCANF:servervehiclemenu(string[])
- {
- if(!strcmp(string,"create",true)) return 1;
- else if(!strcmp(string,"add",true)) return 1;
- else if(!strcmp(string,"make",true)) return 1;
- else if(!strcmp(string,"remove",true)) return 2;
- else if(!strcmp(string,"delete",true)) return 2;
- else if(!strcmp(string,"destroy",true)) return 2;
- else if(!strcmp(string,"park",true)) return 3;
- else if(!strcmp(string,"parkvehicle",true)) return 3;
- else if(!strcmp(string,"plate",true)) return 4;
- else if(!strcmp(string,"setplate",true)) return 4;
- else if(!strcmp(string,"color",true)) return 5;
- else if(!strcmp(string,"colour",true)) return 5;
- else if(!strcmp(string,"setcolour",true)) return 5;
- else if(!strcmp(string,"setcolor",true)) return 5;
- return 0;
- }
- function Vehicle_Load()
- {
- new rows = cache_get_row_count(Database);
- if(rows != 0)
- {
- forex(row,rows)
- {
- new vehicleid = cache_get_row_int(row,0,Database);
- new ORM:ormid = ServerVehicle[vehicleid][ORM_ID] = orm_create("server_vehicles",Database);
- orm_addvar_int(ormid,ServerVehicle[vehicleid][ID],"veh_id");
- orm_addvar_string(ormid,ServerVehicle[vehicleid][Plate],MAX_PLATE_NAME,"veh_plate");
- orm_addvar_int(ormid,ServerVehicle[vehicleid][Model],"veh_model");
- orm_addvar_int(ormid,ServerVehicle[vehicleid][Color][0],"veh_color_1");
- orm_addvar_int(ormid,ServerVehicle[vehicleid][Color][1],"veh_color_2");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][0],"veh_x");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][1],"veh_y");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][2],"veh_z");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][3],"veh_a");
- orm_apply_cache(ormid,row);
- orm_setkey(ormid,"veh_id");
- Vehicle_Create(vehicleid,INVALID_PLAYER_ID);
- }
- }
- return 1;
- }
- function Vehicle_Create(vehicleid,playerid)
- {
- new string[144];
- VehicleID[vehicleid] = CreateVehicle(ServerVehicle[vehicleid][Model],ServerVehicle[vehicleid][Spawn][0],ServerVehicle[vehicleid][Spawn][1],ServerVehicle[vehicleid][Spawn][2],ServerVehicle[vehicleid][Spawn][3],ServerVehicle[vehicleid][Color][0],ServerVehicle[vehicleid][Color][1],-1);
- SetVehicleNumberPlate(ServerVehicle[vehicleid][ID],ServerVehicle[vehicleid][Plate]);
- Iter_Add(Vehicles,vehicleid);
- if(playerid != INVALID_PLAYER_ID)
- {
- format(string,sizeof(string),"<VEHICLEINFO>: {ffffff}(Server) Vehicle has been created with ({ffff00}id:%d{ffffff})({ffff00}plate:%s{ffffff})",vehicleid,ServerVehicle[vehicleid][Plate]);
- SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
- }
- return 1;
- }
- CMD:vehicle(playerid,params[])
- {
- new action,string[128];
- if(sscanf(params,"k<servervehiclemenu>S()[128]",action,string)) return SEM(playerid,"<USAGE>: /vehicle [create/delete/park/plate/color]");
- else
- {
- switch(action)
- {
- case 1:
- {
- new model,color1,color2,vehplate[MAX_PLATE_NAME];
- if(sscanf(string,"ddds["#MAX_PLATE_NAME"]",model,color1,color2,vehplate)) return SEM(playerid,"<USAGE>: /vehicle create [modelid] [color 1] [color 2] [plate name (max 30 chars)]");
- if(model < 400 || model > 611) return SEM(playerid,"<ERROR>: You have entered an invalid modelid !");
- if(Iter_Free(Vehicles) == -1) return SEM(playerid,"<ERROR>: No free vehicle slot available !");
- if(color1 < 0 || color1 > 255 || color2 < 0 || color2 > 255) return SEM(playerid,"<ERROR>: You have entered an invalid colorid !");
- new vehicleid = Iter_Free(Vehicles);
- ServerVehicle[vehicleid][Model] = model;
- ServerVehicle[vehicleid][ID] = vehicleid;
- ServerVehicle[vehicleid][Color][0] = color1;
- ServerVehicle[vehicleid][Color][1] = color2;
- strmid(ServerVehicle[vehicleid][Plate],vehplate,0,strlen(vehplate),MAX_PLATE_NAME);
- GetPlayerPos(playerid,ServerVehicle[vehicleid][Spawn][0],ServerVehicle[vehicleid][Spawn][1],ServerVehicle[vehicleid][Spawn][2]);
- GetPlayerFacingAngle(playerid,ServerVehicle[vehicleid][Spawn][3]);
- new ORM:ormid = ServerVehicle[vehicleid][ORM_ID] = orm_create("server_vehicles",Database);
- orm_addvar_int(ormid,ServerVehicle[vehicleid][ID],"veh_id");
- orm_addvar_string(ormid,ServerVehicle[vehicleid][Plate],MAX_PLATE_NAME,"veh_plate");
- orm_addvar_int(ormid,ServerVehicle[vehicleid][Model],"veh_model");
- orm_addvar_int(ormid,ServerVehicle[vehicleid][Color][0],"veh_color_1");
- orm_addvar_int(ormid,ServerVehicle[vehicleid][Color][1],"veh_color_2");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][0],"veh_x");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][1],"veh_y");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][2],"veh_z");
- orm_addvar_float(ormid,ServerVehicle[vehicleid][Spawn][3],"veh_a");
- orm_insert(ormid,"Vehicle_Create","dd",vehicleid,playerid);
- orm_setkey(ormid,"veh_id");
- }
- case 2:
- {
- if(IsNull(string)) return SEM(playerid,"<USAGE>: /vehicle delete [vehicleid]");
- new vehicleid = strval(string);
- if(Iter_Contains(Vehicles,vehicleid))
- {
- format(string,sizeof(string),"<VEHICLEINFO>: {ffffff}(Server) Vehicle with {ffff00}id %d {ffffff}has been deleted!",vehicleid);
- SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
- DestroyVehicle(VehicleID[vehicleid]);
- orm_delete(ServerVehicle[vehicleid][ORM_ID],true);
- Iter_Remove(Vehicles,vehicleid);
- }
- else SEM(playerid,"<ERROR>: Invalid vehicleid !");
- }
- case 3:
- {
- if(IsNull(string)) return SEM(playerid,"<USAGE>: /vehicle park [vehicleid]");
- new vehicleid = strval(string);
- if(Iter_Contains(Vehicles,vehicleid))
- {
- GetPlayerPos(playerid,ServerVehicle[vehicleid][Spawn][0],ServerVehicle[vehicleid][Spawn][1],ServerVehicle[vehicleid][Spawn][2]);
- GetPlayerFacingAngle(playerid,ServerVehicle[vehicleid][Spawn][3]);
- format(string,sizeof(string),"<VEHICLEINFO>: {ffffff}(Server) Vehicle with {ffff00}id %d {ffffff}has been parked!",vehicleid);
- SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
- orm_update(ServerVehicle[vehicleid][ORM_ID]);
- }
- else SEM(playerid,"<ERROR>: Invalid vehicleid !");
- }
- case 4:
- {
- new vehicleid,newplate[MAX_PLATE_NAME];
- if(sscanf(string,"ds["#MAX_PLATE_NAME"]",vehicleid,newplate)) return SEM(playerid,"<USAGE>: /vehicle plate [modelid/vehicleid] [plate name (max 30 chars)]");
- if(Iter_Contains(Vehicles,vehicleid))
- {
- strmid(ServerVehicle[vehicleid][Plate],newplate,0,strlen(newplate),MAX_PLATE_NAME);
- format(string,sizeof(string),"<VEHICLEINFO>: {ffffff}You have changed the vehicle name to '{ffff00}%s{ffffff}'",newplate);
- SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
- orm_update(ServerVehicle[vehicleid][ORM_ID]);
- }
- else SEM(playerid,"<ERROR>: Invalid vehicleid !");
- }
- case 5:
- {
- new vehicleid,color1,color2;
- if(sscanf(string,"ddd",vehicleid,color1,color2)) return SEM(playerid,"<USAGE>: /vehicle color [modelid/vehicleid] [color 1] [color 2]");
- if(Iter_Contains(Vehicles,vehicleid))
- {
- ServerVehicle[vehicleid][Color][0] = color1;
- ServerVehicle[vehicleid][Color][1] = color2;
- format(string,sizeof(string),"<VEHICLEINFO>: {ffffff}You have changed the vehicle color with '{ffff00}id %d{ffffff}'",vehicleid);
- SendClientMessage(playerid,COLOR_LIGHTBLUE,string);
- orm_update(ServerVehicle[vehicleid][ORM_ID]);
- }
- else SEM(playerid,"<ERROR>: Invalid vehicleid !");
- }
- default: SEM(playerid,"<USAGE>: /vehicle [create/delete/park/plate/color]");
- }
- }
- return CMD_SUCCESS;
- }
- 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[])
- {
- return 1;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement