Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Sistem dinamično kreiranje Radara
- // Credits: Shomy
- //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…
- #include < a_samp >
- #include < YSI\y_ini >
- #include < sscanf2 >
- #include < zcmd >
- #define RADAR_FILE "/Radari/%d.ini"
- #define MAX_RADARI 60
- enum RADAR_INFO {
- Float:rdrPosX,
- Float:rdrPosY,
- Float:rdrPosZ,
- Float:rdrRotX,
- Float:rdrRotY,
- Float:rdrRotZ,
- rdrKazna,
- rdrBrzina,
- rdrID
- }
- new bool:Uslikan[ MAX_PLAYERS ], RadarInfo[ MAX_RADARI ][ RADAR_INFO ], Text3D:RadarLabel[ sizeof(RadarInfo) ], KreiraRadar[ MAX_PLAYERS ];
- public OnPlayerConnect(playerid) { KreiraRadar[ playerid ] = -1; return 1; }
- public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
- if(response == EDIT_RESPONSE_FINAL) {
- if(KreiraRadar[ playerid ] != -1) {
- new i = KreiraRadar[ playerid ], str[ 150 ];
- RadarInfo[ i ][ rdrPosX ] = fX;
- RadarInfo[ i ][ rdrPosY ] = fY;
- RadarInfo[ i ][ rdrPosZ ] = fZ;
- RadarInfo[ i ][ rdrRotX ] = fRotX;
- RadarInfo[ i ][ rdrRotY ] = fRotY;
- RadarInfo[ i ][ rdrRotZ ] = fRotZ;
- DestroyObject(RadarInfo[ i ][ rdrID ]);
- RadarInfo[ i ][ rdrID ] = CreateObject(18880, fX, fY, fZ, fRotX, fRotY, fRotZ);
- 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 ]);
- RadarLabel[ i ] = Create3DTextLabel(str, 0xFF1414FF, fX, fY, fZ+4, 25.0, 0, 0);
- SaveRadar(i);
- KreiraRadar[ playerid ] = -1;
- }
- }
- return 1;
- }
- forward OcitajRadar(id, name[], value[]);
- public OcitajRadar(id, name[], value[]) {
- INI_Float("Lokacija_X", RadarInfo[ id ][ rdrPosX ]);
- INI_Float("Lokacija_Y", RadarInfo[ id ][ rdrPosY ]);
- INI_Float("Lokacija_Z", RadarInfo[ id ][ rdrPosZ ]);
- INI_Float("Rotacija_X", RadarInfo[ id ][ rdrRotX ]);
- INI_Float("Rotacija_Y", RadarInfo[ id ][ rdrRotY ]);
- INI_Float("Rotacija_Z", RadarInfo[ id ][ rdrRotZ ]);
- INI_Int("Cena_Kazne", RadarInfo[ id ][ rdrKazna ]);
- INI_Int("Max_Brzina", RadarInfo[ id ][ rdrBrzina ]);
- return 1;
- }
- public OnFilterScriptInit() {
- for(new i; i < MAX_RADARI; i++) {
- new rFile[ 50 ], str[ 150 ];
- format(rFile, sizeof(rFile), RADAR_FILE, i);
- if(fexist(rFile)) {
- INI_ParseFile(rFile, "OcitajRadar", .bExtra = true, .extra = i);
- 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 ]);
- RadarLabel[ i ] = Create3DTextLabel(str, 0xFF1414FF,RadarInfo[ i ][ rdrPosX ], RadarInfo[ i ][ rdrPosY ], RadarInfo[ i ][ rdrPosZ ]+4, 25.0, 0, 0);
- RadarInfo[ i ][ rdrID ] = CreateObject(18880, RadarInfo[ i ][ rdrPosX ], RadarInfo[ i ][ rdrPosY ], RadarInfo[ i ][ rdrPosZ ], RadarInfo[ i ][ rdrRotX ], RadarInfo[ i ][ rdrRotY ], RadarInfo[ i ][ rdrRotZ ]);
- }
- }
- return 1;
- }
- public OnPlayerUpdate(playerid) {
- for(new i; i < MAX_RADARI; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 12.0, RadarInfo[ i ][ rdrPosX ], RadarInfo[ i ][ rdrPosY ], RadarInfo[ i ][ rdrPosZ ])) {
- if(GetSpeed(playerid) > RadarInfo[ i ][ rdrBrzina ] && !Uslikan[ playerid ]) {
- new str[ 20 ];
- Uslikan[ playerid ] = true;
- SendClientMessage(playerid, -1, "Radar Vas je uslikao !");
- format(str, sizeof(str), "Kazna iznosi %d$", RadarInfo[ i ][ rdrKazna ]);
- SendClientMessage(playerid, -1, str);
- GivePlayerMoney(playerid, -RadarInfo[ i ][ rdrKazna ]);
- SetTimerEx("UslikanTimer", 15000, false, "i", playerid);
- }
- }
- }
- return 1;
- }
- forward UslikanTimer(playerid); public UslikanTimer(playerid) return Uslikan[ playerid ] = false;
- CMD:kreirajradar(playerid, params[]) {
- new cena, brzina, i = NextRadarID(MAX_RADARI), Float:X, Float:Y, Float:Z;
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON admin.");
- if(sscanf(params, "dd", cena, brzina)) return SendClientMessage(playerid, -1, "/kreirajradar [Cena] [MAX Dozvoljena Brzina]");
- KreiraRadar[ playerid ] = i;
- RadarInfo[ i ][ rdrKazna ] = cena;
- RadarInfo[ i ][ rdrBrzina ] = brzina;
- GetPlayerPos(playerid, X,Y,Z);
- RadarInfo[ i ][ rdrID ] = CreateObject(18880, X+1.0, Y+1.0, Z, 0.0, 0.0, 0.0);
- EditObject(playerid, RadarInfo[ i ][ rdrID ]);
- return 1;
- }
- CMD:izbrisiradar(playerid, params[]) {
- new id, rFile[ 60 ];
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON admin.");
- if(sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "/izbrisiradar [ ID ]");
- format(rFile, sizeof(rFile), RADAR_FILE, id);
- if(!fexist(rFile)) return SendClientMessage(playerid, -1, "ID tog radara ne postoji.");
- DestroyObject(RadarInfo[ id ][ rdrID ]);
- Delete3DTextLabel(RadarLabel[ id ]);
- fremove(rFile);
- SendClientMessage(playerid, -1, "Uspesno ste izbrisali radar.");
- return 1;
- }
- CMD:test(playerid, params[]) {
- new Float:Pos[ 3 ], da;
- GetPlayerPos(playerid, Pos[ 0 ], Pos[ 1 ], Pos[ 2 ]);
- da = CreateVehicle(411, Pos[ 0 ], Pos[ 1 ], Pos[ 2 ], 0.0, -1, -1, -1);
- PutPlayerInVehicle(playerid, da, 0);
- return 1;
- }
- stock GetSpeed( playerid ) {
- new Float:ST[ 4 ];
- if( IsPlayerInAnyVehicle( playerid ) )
- GetVehicleVelocity( GetPlayerVehicleID( playerid ), ST[ 0 ], ST[ 1 ], ST[ 2 ] );
- else
- GetPlayerVelocity( playerid, ST[ 0 ], ST[ 1 ], ST[ 2 ] );
- ST[ 3 ] = floatsqroot(floatpower(floatabs(ST[ 0 ]), 2.0) + floatpower(floatabs(ST[ 1 ]), 2.0) + floatpower(floatabs(ST[ 2 ]), 2.0)) * 178.8617875;
- return floatround( ST[ 3 ] );
- }
- stock SaveRadar(id) {
- new rFile[ 60 ];
- format(rFile, sizeof(rFile), RADAR_FILE, id);
- new INI:File = INI_Open(rFile);
- INI_WriteFloat(File, "Lokacija_X", RadarInfo[ id ][ rdrPosX ]);
- INI_WriteFloat(File, "Lokacija_Y", RadarInfo[ id ][ rdrPosY ]);
- INI_WriteFloat(File, "Lokacija_Z", RadarInfo[ id ][ rdrPosZ ]);
- INI_WriteFloat(File, "Rotacija_X", RadarInfo[ id ][ rdrRotX ]);
- INI_WriteFloat(File, "Rotacija_Y", RadarInfo[ id ][ rdrRotY ]);
- INI_WriteFloat(File, "Rotacija_Z", RadarInfo[ id ][ rdrRotZ ]);
- INI_WriteInt(File, "Cena_Kazne", RadarInfo[ id ][ rdrKazna ]);
- INI_WriteInt(File, "Max_Brzina", RadarInfo[ id ][ rdrBrzina ]);
- INI_Close(File);
- return 1;
- }
- stock NextRadarID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), RADAR_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
Advertisement
Add Comment
Please, Sign In to add comment