Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <streamer>
- #include <YSI\y_iterate>
- #include <YSI\y_commands>
- // Map scale is 2000:1
- #define MAP_RESCALE 2000.0
- #define RADAR_MAP_ZOFFSET -0.6
- static RadarBlipShown[MAX_PLAYERS];
- static RadarBlip[MAX_PLAYERS];
- static Text3D:Radar3DText[MAX_PLAYERS];
- static Float:MAP_OFF_X = 0.0;
- static Float:MAP_OFF_Y = 0.0;
- static Float:MAP_OFF_Z = 0.0;
- enum RADAROBJECTOFFSETS
- {
- RadarMapObject,
- Float:RadarOffX,
- Float:RadarOffY,
- Float:RadarOffZ,
- }
- static MapPieces[8][RADAROBJECTOFFSETS];
- public OnFilterScriptInit()
- {
- new index;
- MapPieces[index++][RadarMapObject] = CreateDynamicObject(19168,-0.750,0.750,0.000,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
- MapPieces[index++][RadarMapObject] = CreateDynamicObject(19169,0.750,0.750,0.000,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
- MapPieces[index++][RadarMapObject] = CreateDynamicObject(19170,-0.750,-0.750,0.000,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
- MapPieces[index++][RadarMapObject] = CreateDynamicObject(19171,0.750,-0.750,0.000,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
- MapPieces[index][RadarMapObject] = CreateDynamicObject(19362,1.495,-0.014,-1.750,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
- SetDynamicObjectMaterial(MapPieces[index++][RadarMapObject], 0, 6056, "venice_law", "law_blue4", -10079488);
- MapPieces[index][RadarMapObject] = CreateDynamicObject(19362,-1.534,-0.014,-1.750,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
- SetDynamicObjectMaterial(MapPieces[index++][RadarMapObject], 0, 6056, "venice_law", "law_blue4", -10079488);
- MapPieces[index][RadarMapObject] = CreateDynamicObject(19362,-0.019,1.500,-1.749,0.000,0.000,89.999,-1,-1,-1,300.000,300.000);
- SetDynamicObjectMaterial(MapPieces[index++][RadarMapObject], 0, 6056, "venice_law", "law_blue4", -10079488);
- MapPieces[index][RadarMapObject] = CreateDynamicObject(19362,-0.019,-1.529,-1.749,0.000,0.000,89.999,-1,-1,-1,300.000,300.000);
- SetDynamicObjectMaterial(MapPieces[index++][RadarMapObject], 0, 6056, "venice_law", "law_blue4", -10079488);
- for(new i = 0; i < 8; i++) GetDynamicObjectPos(MapPieces[i][RadarMapObject], MapPieces[i][RadarOffX], MapPieces[i][RadarOffY], MapPieces[i][RadarOffZ]);
- SetTimer("UpdateRadar", 1000, true);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- RadarBlip[i] = CreateDynamicObject(338,0.0,0.0,-1000.0,-4.799,0.000,0.000,-1,-1,-1,300.000,300.000);
- SetDynamicObjectMaterial(RadarBlip[i], 0, 10765, "airportgnd_sfse", "white", -6750208);
- Radar3DText[i] = CreateDynamic3DTextLabel("_", 0xFF0000FF, 0.0, 0.0, 0.0, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1, 10.0);
- if(IsPlayerConnected(i))
- {
- new name[MAX_PLAYER_NAME+1];
- GetPlayerName(i, name, MAX_PLAYER_NAME+1);
- UpdateDynamic3DTextLabelText(Radar3DText[i], 0xFF0000FF, name);
- }
- }
- // SetRadarMap(0.0, 0.0, 3.0);
- return 1;
- }
- stock SetRadarMap(Float:x, Float:y, Float:z)
- {
- MAP_OFF_X = x;
- MAP_OFF_Y = y;
- MAP_OFF_Z = z;
- for(new i = 0; i < 8; i++) SetDynamicObjectPos(MapPieces[i][RadarMapObject], MapPieces[i][RadarOffX]+x, MapPieces[i][RadarOffY]+y, MapPieces[i][RadarOffZ]+z);
- return 1;
- }
- forward UpdateRadar();
- public UpdateRadar()
- {
- new Float:x, Float:y, Float:z;
- foreach(new i : Player)
- {
- GetPlayerPos(i, x, y, z);
- if( (x < 3000.0 && x > -3000.0) &&
- (y < 3000.0 && y > -3000.0) &&
- (z < 3000.0 && z > -3000.0) )
- {
- x = (x / MAP_RESCALE) + MAP_OFF_X;
- y = (y / MAP_RESCALE) + MAP_OFF_Y;
- SetDynamicObjectPos(RadarBlip[i], x, y, RADAR_MAP_ZOFFSET+MAP_OFF_Z);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[i], E_STREAMER_X, x);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[i], E_STREAMER_Y, y);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[i], E_STREAMER_Z, RADAR_MAP_ZOFFSET+MAP_OFF_Z+1.3);
- RadarBlipShown[i] = true;
- }
- else
- {
- if(RadarBlipShown[i])
- {
- SetDynamicObjectPos(RadarBlip[i], 0.0, 0.0, -1000.0);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[i], E_STREAMER_X, 0.0);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[i], E_STREAMER_Y, 0.0);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[i], E_STREAMER_Z, -1000.0);
- RadarBlipShown[i] = false;
- }
- }
- if(IsPlayerInRangeOfPoint(i, 15.0, MAP_OFF_X, MAP_OFF_Y, MAP_OFF_Z)) Streamer_Update(i);
- }
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- new name[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME+1);
- UpdateDynamic3DTextLabelText(Radar3DText[playerid], 0xFF0000FF, name);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SetDynamicObjectPos(RadarBlip[playerid], 0.0, 0.0, -1000.0);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[playerid], E_STREAMER_X, 0.0);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[playerid], E_STREAMER_Y, 0.0);
- Streamer_SetFloatData(STREAMER_TYPE_3D_TEXT_LABEL, Radar3DText[playerid], E_STREAMER_Z, -1000.0);
- RadarBlipShown[playerid] = false;
- return 1;
- }
- /* Test Command
- CMD:setradar(playerid, arg[])
- {
- new Float:x, Float:y, Float:z, Float:fa;
- GetPlayerPos(playerid, x, y, z);
- GetPlayerFacingAngle(playerid, fa);
- x = (x + 3.0 * floatsin(-fa,degrees));
- y = (y + 3.0 * floatcos(-fa,degrees));
- SetRadarMap(x, y, z);
- return 1;
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement