Guest User

By: Nodze

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