| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- /*
- _____ _ _____ ____
- / ____| | | / ____| | _ \
- | (___ _ __ ___ ___ __| | | | __ _ _ __ ___ ___ _ __ __ _ ___ | |_) |_ _
- \___ \| '_ \ / _ \/ _ \/ _` | | | / _` | '_ ` _ \ / _ \ '__/ _` / __| | _ <| | | |
- ____) | |_) | __/ __/ (_| | | |___| (_| | | | | | | __/ | | (_| \__ \ | |_) | |_| |
- |_____/| .__/ \___|\___|\__,_| \_____\__,_|_| |_| |_|\___|_| \__,_|___/ |____/ \__, |
- | | __/ |
- _____ |_| _ _____ |___/
- | __ \ | | ___ / ____| | |
- | | | | ___ ___ _ __ ___ ___ _ __ __| | ( _ ) | (___ _ __ __ _ _ __| | _____
- | | | |/ _ \/ __| '_ ` _ \ / _ \| '_ \ / _` | / _ \/\ \___ \| '_ \ / _` | '__| |/ / _ \
- | |__| | __/\__ \ | | | | | (_) | | | | (_| | | (_> < ____) | |_) | (_| | | | < __/
- |_____/ \___||___/_| |_| |_|\___/|_| |_|\__,_| \___/\/ |_____/| .__/ \__,_|_| |_|\_\___|
- | |
- |_|
- */
- #define MAX_CAMS (50)
- #define CAM_OBJ (18880)
- enum SpeedCams {
- speedID,
- bool:speedPlaced, // Varible we used to see if the speed cam is created/placed
- Float:speedPosition[3],
- Float:speedRotation[3],
- speedSpeed, // Speed limit
- speedCreator[MAX_PLAYER_NAME + 1],
- speedObject,
- Text3D:speed3D
- };
- new Cams[MAX_CAMS][SpeedCams];
- Hook:speedcams_OnGameModeInit()
- {
- LoadSpeed();
- return 1;
- }
- stock SaveSpeed(creator[], speed, Float:x, Float:y, Float:z, Float: rotx, Float: roty, Float: rotz, id)
- {
- new filename[50];
- format(filename, sizeof(filename), "Speed%i.ini", id);
- if(!dini_Exists(filename))
- {
- dini_Create(filename);
- dini_Set(filename, "Creator", creator);
- dini_FloatSet(filename, "X", x);
- dini_FloatSet(filename, "Y", y);
- dini_FloatSet(filename, "Z", z);
- dini_FloatSet(filename, "RX", rotx);
- dini_FloatSet(filename, "RY", roty);
- dini_FloatSet(filename, "RZ", rotz);
- dini_IntSet(filename, "speed", speed);
- }
- else
- {
- dini_Set(filename, "Creator", creator);
- dini_FloatSet(filename, "X", x);
- dini_FloatSet(filename, "Y", y);
- dini_FloatSet(filename, "Z", z);
- dini_FloatSet(filename, "RX", rotx);
- dini_FloatSet(filename, "RY", roty);
- dini_FloatSet(filename, "RZ", rotz);
- dini_IntSet(filename, "speed", speed);
- }
- return 1;
- }
- stock LoadSpeed()
- {
- new filename[50];
- for(new i = 0; i < MAX_CAMS; i++)
- {
- format(filename, sizeof(filename), "Speed%i.ini", i);
- if(!dini_Exists(filename)) continue;
- if(dini_Exists(filename))
- {
- format(Cams[i][speedCreator], MAX_PLAYER_NAME+1, "%s", dini_Get(filename, "Creator"));
- Cams[i][speedPlaced] = true;
- Cams[i][speedPosition][0] = dini_Float(filename, "X");
- Cams[i][speedPosition][1] = dini_Float(filename, "Y");
- Cams[i][speedPosition][2] = dini_Float(filename, "Z");
- Cams[i][speedRotation][0] = dini_Float(filename, "RX");
- Cams[i][speedRotation][1] = dini_Float(filename, "RY");
- Cams[i][speedRotation][2] = dini_Float(filename, "RZ");
- Cams[i][speedSpeed] = dini_Int(filename, "speed");
- Cams[i][speedObject] = CreateDynamicObject(CAM_OBJ, Cams[i][speedPosition][0], Cams[i][speedPosition][1], Cams[i][speedPosition][2], Cams[i][speedRotation][0], Cams[i][speedRotation][1], Cams[i][speedRotation][2]);
- new strmsg[128];
- format(strmsg, sizeof(strmsg), "Speed Camera\nSpeed limit: %i MPH.", Cams[i][speedSpeed]);
- Cams[i][speed3D] = Create3DTextLabel(strmsg, COLOR_ENTRANCE, Cams[i][speedPosition][0], Cams[i][speedPosition][1], Cams[i][speedPosition][2]+4, 5, 0, 0);
- }
- }
- return 1;
- }
- CMD:createspeed(playerid, params[])
- {
- if(PlayerInfo[playerid][pAdmin] > 2 || PlayerInfo[playerid][pDev] >= 2)
- {
- new speed;
- if(sscanf(params, "i", speed)) return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /createspeed [speedlimit in MPH]");
- if(speed > 150 || speed < 50) return SendClientMessage(playerid, COLOR_GREY, "The speed limit must be between 50 and 150 MPH.");
- new strmsg[128], Float:Position[3];
- GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
- for(new i = 0; i < MAX_CAMS; i++)
- {
- if(Cams[i][speedPlaced] == false)
- {
- format(strmsg, sizeof(strmsg), "You've created camera ID %i.", i);
- SendClientMessage(playerid, COLOR_LIGHTBLUE, strmsg);
- GetPlayerName(playerid, Cams[i][speedCreator], 25);
- Cams[i][speedPlaced] = true;
- Cams[i][speedPosition][0] = Position[0];
- Cams[i][speedPosition][1] = Position[1];
- Cams[i][speedPosition][2] = Position[2];
- Cams[i][speedSpeed] = speed;
- Cams[i][speedObject] = CreateDynamicObject(CAM_OBJ, Position[0], Position[1], Position[2], 0, 0, 0);
- format(strmsg, sizeof(strmsg), "Speed Camera\nSpeed limit: %i MPH.", speed);
- Cams[i][speed3D] = Create3DTextLabel(strmsg, COLOR_ENTRANCE, Cams[i][speedPosition][0], Cams[i][speedPosition][1], Cams[i][speedPosition][2]+4, 5, 0, 0);
- EditDynamicObject(playerid, Cams[i][speedObject]);
- SaveSpeed(Cams[i][speedCreator], Cams[i][speedSpeed], Cams[i][speedPosition][0], Cams[i][speedPosition][1], Cams[i][speedPosition][2], Cams[i][speedRotation][0], Cams[i][speedRotation][1], Cams[i][speedRotation][2], i);
- new Float: temppos[3];
- GetPlayerPos(playerid, temppos[0], temppos[1], temppos[2]);
- SetPlayerPos(playerid, temppos[0]+2, temppos[1], temppos[2]);
- break;
- }
- }
- }
- return 1;
- }
- CMD:editspeed(playerid, params[])
- {
- if(PlayerInfo[playerid][pAdmin] < 3 && PlayerInfo[playerid][pDev] < 2) return AdmErrorMsg;
- new camid, action[30], valuevar;
- if(!sscanf(params, "is[30]i", camid, action, valuevar))
- {
- if(camid < 0 || camid > 49) return SendClientMessage(playerid, COLOR_GREY, "The camera id must be between 0 and 49.");
- new tempmsg[80];
- if(!strcmp(action, "pos", true))
- {
- format(tempmsg, sizeof(tempmsg), "You are now editing speed camera ID %i's position.", camid);
- SendClientMessage(playerid, COLOR_LIGHTBLUE, tempmsg);
- EditDynamicObject(playerid, Cams[camid][speedObject]);
- }
- else if(!strcmp(action, "speed", true))
- {
- if(valuevar < 50 || valuevar > 150) return SendClientMessage(playerid, COLOR_GREY, "The speed limit must be between 50 and 150 MPH.");
- Cams[camid][speedSpeed] = valuevar;
- format(tempmsg, sizeof(tempmsg), "You have edited speed camera ID %i's speed limit to %i.", camid, valuevar);
- SendClientMessage(playerid, COLOR_LIGHTBLUE, tempmsg);
- format(tempmsg, sizeof(tempmsg), "Speed Camera\nSpeed limit: %i MPH.", valuevar);
- Update3DTextLabelText(Cams[camid][speed3D], COLOR_ENTRANCE, tempmsg);
- }
- SaveSpeed(Cams[camid][speedCreator], Cams[camid][speedSpeed], Cams[camid][speedPosition][0], Cams[camid][speedPosition][1], Cams[camid][speedPosition][2], Cams[camid][speedRotation][0], Cams[camid][speedRotation][1], Cams[camid][speedRotation][2], camid);
- }
- else return SendClientMessage(playerid, -1, "{00BFFF}Usage:{FFFFFF} /editspeed [cameraid] [pos/speed] [0/value]");
- return 1;
- }
- CMD:deletespeed(playerid, params[])
- {
- if(PlayerInfo[playerid][pAdmin] > 2 || PlayerInfo[playerid][pDev] >= 2)
- {
- new camid;
- if(sscanf(params, "i", camid)) return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /deletespeed [camid]");
- if(Cams[camid][speedPlaced] == false) return SendClientMessage(playerid, COLOR_GREY, "That camera id is not used.");
- if(camid < 0 || camid > 49) return SendClientMessage(playerid, COLOR_GREY, "The camera id must be between 0 and 49.");
- Cams[camid][speedPlaced] = false;
- Cams[camid][speedPosition][0] = 0;
- Cams[camid][speedPosition][1] = 0;
- Cams[camid][speedPosition][2] = 0;
- Cams[camid][speedRotation][0] = 0;
- Cams[camid][speedRotation][1] = 0;
- Cams[camid][speedRotation][2] = 0;
- Cams[camid][speedSpeed] = 0;
- DestroyDynamicObjectEx(Cams[camid][speedObject]);
- Delete3DTextLabel(Cams[camid][speed3D]);
- new filename[50];
- format(filename, sizeof(filename), "Speed%i.ini", camid);
- dini_Remove(filename);
- new strmsg[50];
- format(strmsg, sizeof(strmsg), "You have deleted speed camera ID %i.", camid);
- SendClientMessage(playerid, COLOR_LIGHTBLUE, strmsg);
- }
- return 1;
- }
- CMD:closeestcams(playerid, params[])
- {
- if(PlayerInfo[playerid][pAdmin] < 3 && PlayerInfo[playerid][pDev] < 2) return AdmErrorMsg;
- new strmsg[128];
- for(new i = 0; i < MAX_CAMS; i++)
- {
- if(Cams[i][speedPlaced] == true)
- {
- if(IsPlayerInRangeOfPoint(playerid, 10.0, Cams[i][speedPosition][0], Cams[i][speedPosition][1], Cams[i][speedPosition][2]))
- {
- format(strmsg, sizeof(strmsg), "Camera ID: %i | Camera Placer: %s | Max Speed: %i",
- i, Cams[i][speedCreator], Cams[i][speedSpeed]);
- SendClientMessage(playerid, COLOR_LIGHTBLUE, strmsg);
- }
- }
- }
- return 1;
- }
|