Guest User

Shomy - Radar System

a guest
Jun 4th, 2018
688
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.42 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < sscanf2 >
  4. #include < zcmd >
  5.  
  6. #define RADAR_FILE "/Radari/%d.ini"
  7. #define MAX_RADARI 60
  8.  
  9. enum RADAR_INFO {
  10.  
  11. Float:rdrPosX,
  12. Float:rdrPosY,
  13. Float:rdrPosZ,
  14. Float:rdrRotX,
  15. Float:rdrRotY,
  16. Float:rdrRotZ,
  17. rdrKazna,
  18. rdrBrzina,
  19. rdrID
  20. }
  21.  
  22. new bool:Uslikan[ MAX_PLAYERS ], RadarInfo[ MAX_RADARI ][ RADAR_INFO ], Text3D:RadarLabel[ sizeof(RadarInfo) ], KreiraRadar[ MAX_PLAYERS ];
  23.  
  24. public OnPlayerConnect(playerid) { KreiraRadar[ playerid ] = -1; return 1; }
  25. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  26.  
  27. if(response == EDIT_RESPONSE_FINAL) {
  28. if(KreiraRadar[ playerid ] != -1) {
  29. new i = KreiraRadar[ playerid ], str[ 150 ];
  30. RadarInfo[ i ][ rdrPosX ] = fX;
  31. RadarInfo[ i ][ rdrPosY ] = fY;
  32. RadarInfo[ i ][ rdrPosZ ] = fZ;
  33. RadarInfo[ i ][ rdrRotX ] = fRotX;
  34. RadarInfo[ i ][ rdrRotY ] = fRotY;
  35. RadarInfo[ i ][ rdrRotZ ] = fRotZ;
  36. DestroyObject(RadarInfo[ i ][ rdrID ]);
  37. RadarInfo[ i ][ rdrID ] = CreateObject(18880, fX, fY, fZ, fRotX, fRotY, fRotZ);
  38. format(str, sizeof(str), "[ RADAR [ ID %d ] ]\n{FFFFFF}Max brzina: {FF1414}%d km/h\n{FFFFFF}Cena Kazne: {FF1414}%d$", i, RadarInfo[ i ][ rdrBrzina ], RadarInfo[ i ][ rdrKazna ]);
  39. RadarLabel[ i ] = Create3DTextLabel(str, 0xFF1414FF, fX, fY, fZ+4, 25.0, 0, 0);
  40. SaveRadar(i);
  41. KreiraRadar[ playerid ] = -1;
  42. }
  43. }
  44. return 1;
  45. }
  46. forward OcitajRadar(id, name[], value[]);
  47. public OcitajRadar(id, name[], value[]) {
  48.  
  49. INI_Float("Lokacija_X", RadarInfo[ id ][ rdrPosX ]);
  50. INI_Float("Lokacija_Y", RadarInfo[ id ][ rdrPosY ]);
  51. INI_Float("Lokacija_Z", RadarInfo[ id ][ rdrPosZ ]);
  52. INI_Float("Rotacija_X", RadarInfo[ id ][ rdrRotX ]);
  53. INI_Float("Rotacija_Y", RadarInfo[ id ][ rdrRotY ]);
  54. INI_Float("Rotacija_Z", RadarInfo[ id ][ rdrRotZ ]);
  55. INI_Int("Cena_Kazne", RadarInfo[ id ][ rdrKazna ]);
  56. INI_Int("Max_Brzina", RadarInfo[ id ][ rdrBrzina ]);
  57. return 1;
  58. }
  59. public OnFilterScriptInit() {
  60. for(new i; i < MAX_RADARI; i++) {
  61. new rFile[ 50 ], str[ 150 ];
  62. format(rFile, sizeof(rFile), RADAR_FILE, i);
  63. if(fexist(rFile)) {
  64. INI_ParseFile(rFile, "OcitajRadar", .bExtra = true, .extra = i);
  65. format(str, sizeof(str), "[ RADAR [ ID %d ] ]\n{FFFFFF}Max brzina: {FF1414}%d km/h\n{FFFFFF}Cena Kazne: {FF1414}%d$", i, RadarInfo[ i ][ rdrBrzina ], RadarInfo[ i ][ rdrKazna ]);
  66. RadarLabel[ i ] = Create3DTextLabel(str, 0xFF1414FF,RadarInfo[ i ][ rdrPosX ], RadarInfo[ i ][ rdrPosY ], RadarInfo[ i ][ rdrPosZ ]+4, 25.0, 0, 0);
  67. RadarInfo[ i ][ rdrID ] = CreateObject(18880, RadarInfo[ i ][ rdrPosX ], RadarInfo[ i ][ rdrPosY ], RadarInfo[ i ][ rdrPosZ ], RadarInfo[ i ][ rdrRotZ ], RadarInfo[ i ][ rdrRotY ], RadarInfo[ i ][ rdrRotZ ]);
  68. }
  69. }
  70. return 1;
  71. }
  72. public OnPlayerUpdate(playerid) {
  73.  
  74. for(new i; i < MAX_RADARI; i++) {
  75. if(IsPlayerInRangeOfPoint(playerid, 12.0, RadarInfo[ i ][ rdrPosX ], RadarInfo[ i ][ rdrPosY ], RadarInfo[ i ][ rdrPosZ ])) {
  76. if(GetSpeed(playerid) > RadarInfo[ i ][ rdrBrzina ] && !Uslikan[ playerid ]) {
  77. new str[ 20 ];
  78. Uslikan[ playerid ] = true;
  79. SendClientMessage(playerid, -1, "Radar Vas je uslikao !");
  80. format(str, sizeof(str), "Kazna iznosi %d$", RadarInfo[ i ][ rdrKazna ]);
  81. SendClientMessage(playerid, -1, str);
  82. GivePlayerMoney(playerid, -RadarInfo[ i ][ rdrKazna ]);
  83. SetTimerEx("UslikanTimer", 15000, false, "i", playerid);
  84. }
  85. }
  86. }
  87. return 1;
  88. }
  89.  
  90. forward UslikanTimer(playerid); public UslikanTimer(playerid) return Uslikan[ playerid ] = false;
  91.  
  92. CMD:kreirajradar(playerid, params[]) {
  93.  
  94. new cena, brzina, i = NextRadarID(MAX_RADARI), Float:X, Float:Y, Float:Z;
  95. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON admin.");
  96. if(sscanf(params, "dd", cena, brzina)) return SendClientMessage(playerid, -1, "/kreirajradar [Cena] [MAX Dozvoljena Brzina]");
  97. KreiraRadar[ playerid ] = i;
  98. RadarInfo[ i ][ rdrKazna ] = cena;
  99. RadarInfo[ i ][ rdrBrzina ] = brzina;
  100. GetPlayerPos(playerid, X,Y,Z);
  101. RadarInfo[ i ][ rdrID ] = CreateObject(18880, X+1.0, Y+1.0, Z, 0.0, 0.0, 0.0);
  102. EditObject(playerid, RadarInfo[ i ][ rdrID ]);
  103. return 1;
  104. }
  105. CMD:izbrisiradar(playerid, params[]) {
  106.  
  107. new id, rFile[ 60 ];
  108. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON admin.");
  109. if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "/izbrisiradar [ ID ]");
  110. format(rFile, sizeof(rFile), RADAR_FILE, id);
  111. if(!fexist(rFile)) return SendClientMessage(playerid, -1, "ID tog radara ne postoji.");
  112. DestroyObject(RadarInfo[ id ][ rdrID ]);
  113. Delete3DTextLabel(RadarLabel[ id ]);
  114. fremove(rFile);
  115. SendClientMessage(playerid, -1, "Uspesno ste izbrisali radar.");
  116. return 1;
  117. }
  118. CMD:test(playerid, params[]) {
  119.  
  120. new Float:Pos[ 3 ], da;
  121. GetPlayerPos(playerid, Pos[ 0 ], Pos[ 1 ], Pos[ 2 ]);
  122. da = CreateVehicle(411, Pos[ 0 ], Pos[ 1 ], Pos[ 2 ], 0.0, -1, -1, -1);
  123. PutPlayerInVehicle(playerid, da, 0);
  124. return 1;
  125. }
  126.  
  127. stock GetSpeed( playerid ) {
  128. new Float:ST[ 4 ];
  129. if( IsPlayerInAnyVehicle( playerid ) )
  130. GetVehicleVelocity( GetPlayerVehicleID( playerid ), ST[ 0 ], ST[ 1 ], ST[ 2 ] );
  131. else
  132. GetPlayerVelocity( playerid, ST[ 0 ], ST[ 1 ], ST[ 2 ] );
  133.  
  134. ST[ 3 ] = floatsqroot(floatpower(floatabs(ST[ 0 ]), 2.0) + floatpower(floatabs(ST[ 1 ]), 2.0) + floatpower(floatabs(ST[ 2 ]), 2.0)) * 178.8617875;
  135. return floatround( ST[ 3 ] );
  136. }
  137. stock SaveRadar(id) {
  138. new rFile[ 60 ];
  139. format(rFile, sizeof(rFile), RADAR_FILE, id);
  140. new INI:File = INI_Open(rFile);
  141. INI_WriteFloat(File, "Lokacija_X", RadarInfo[ id ][ rdrPosX ]);
  142. INI_WriteFloat(File, "Lokacija_Y", RadarInfo[ id ][ rdrPosY ]);
  143. INI_WriteFloat(File, "Lokacija_Z", RadarInfo[ id ][ rdrPosZ ]);
  144. INI_WriteFloat(File, "Rotacija_X", RadarInfo[ id ][ rdrRotX ]);
  145. INI_WriteFloat(File, "Rotacija_Y", RadarInfo[ id ][ rdrRotY ]);
  146. INI_WriteFloat(File, "Rotacija_Z", RadarInfo[ id ][ rdrRotZ ]);
  147. INI_WriteInt(File, "Cena_Kazne", RadarInfo[ id ][ rdrKazna ]);
  148. INI_WriteInt(File, "Max_Brzina", RadarInfo[ id ][ rdrBrzina ]);
  149. INI_Close(File);
  150. return 1;
  151. }
  152. stock NextRadarID(const len) {
  153. new id = (-1);
  154. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  155. provjera = ( loop+1 );
  156. format( Data_, ( sizeof Data_ ), RADAR_FILE, provjera );
  157. if(!fexist(Data_)) {
  158. id = ( provjera );
  159. break; } }
  160. return ( id );
  161. }
Add Comment
Please, Sign In to add comment