Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* [ Map Icon System - Created by Vasic - 09.07.2019 - v1.0] */
- /* [ CMDs: /kreirajmi & /obrisimi ] */
- #include < a_samp >
- #include < zcmd >
- #include < YSI\y_ini >
- #include < streamer >
- #include < sscanf2 >
- #define MAX_MAPICONS 150 //'150' vam je maksimalni broj koliko mozete kreirati ikonica, mozete izmeniti
- #define MAPICONS_FILE "/MapIcons/%d.ini" //ime foldera u scriptfiles mora biti MapIcons, iz kog ce se kasnije ucitavati kreirani mapiconsi, mozete izmeniti
- enum miInfo
- {
- Float:miX,
- Float:miY,
- Float:miZ,
- miType,
- miVW,
- miInt,
- miDistance
- };
- new MI[ MAX_MAPICONS ][ miInfo ];
- new Ikona[ sizeof( MI ) ];
- main()
- {
- print("\n----------------------------------");
- print(" Blank Gamemode by your name here");
- print("----------------------------------\n");
- }
- public OnGameModeInit()
- {
- for(new id = 0; id < MAX_MAPICONS; id++)
- {
- new filename[ 32 ];
- format( filename, sizeof( filename ), MAPICONS_FILE, id );
- if( fexist( filename ) )
- {
- INI_ParseFile( filename, "LoadMapIcons", .bExtra = true, .extra = id );
- {
- Ikona[ id ] = CreateDynamicMapIcon( MI[ id ][ miX ],MI[ id ][ miY ],MI[ id ][ miZ ], MI[ id ][ miType ], -1, MI[ id ][ miVW ], MI[ id ][ miInt ], -1, MI[ id ][ miDistance ] );
- }
- }
- }
- return 1;
- }
- stock MINextID( )
- {
- new mifile[ 64 ];
- for( new mapid = 0; mapid < MAX_MAPICONS; mapid++ ) {
- format( mifile, sizeof( mifile ), MAPICONS_FILE, mapid );
- if( !fexist( mifile ) ) return mapid;
- }
- return true;
- }
- stock GetNearestMapIcon( playerid ) {
- for( new b = 1; b < sizeof( MI ); b++) {
- if( IsPlayerInRangeOfPoint( playerid, 300.0, MI[ b ][ miX ], MI[ b ][ miY ] , MI[ b ][ miZ ] ) ) return b; }
- return -1;
- }
- stock SaveMapIcons( id ) {
- new miFile[ 60 ];
- format( miFile, sizeof( miFile ), MAPICONS_FILE, id);
- new INI:File = INI_Open(miFile);
- INI_WriteFloat( File, "Pozicija_X", MI[ id ][ miX ] );
- INI_WriteFloat( File, "Pozicija_Y", MI[ id ][ miY ] );
- INI_WriteFloat( File, "Pozicija_Z", MI[ id ][ miZ ] );
- INI_WriteInt( File, "ViewDistance", MI[ id ][ miDistance ] );
- INI_WriteInt( File, "VirtualWorld", MI[ id ][ miVW ] );
- INI_WriteInt( File, "Interior", MI[ id ][ miInt ] );
- INI_WriteInt( File, "Type", MI[ id ][ miType ] );
- INI_Close(File);
- }
- forward LoadMapIcons( id, name[], value[] );
- public LoadMapIcons( id, name[], value[] ) {
- INI_Float( "Pozicija_X", MI[ id ][ miX ] );
- INI_Float( "Pozicija_Y", MI[ id ][ miY ] );
- INI_Float( "Pozicija_Z", MI[ id ][ miZ ] );
- INI_Int( "ViewDistance", MI[ id ][ miDistance ] );
- INI_Int( "VirtualWorld", MI[ id ][ miVW ] );
- INI_Int( "Interior", MI[ id ][ miInt ] );
- INI_Int( "Type", MI[ id ][ miType ] );
- return true;
- }
- CMD:kreirajmi( playerid, params[ ] )
- {
- if(!IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1,"{f59342}[ERROR]: {FFFFFF}Morate se prijaviti kao RCON." );
- new mid = MINextID( ), model, vdistance, Float:x, Float:y, Float:z;
- if( sscanf( params, "ii", model, vdistance ) ) return SendClientMessage( playerid, -1, "{f59342}/kreirajmi {FFFFFF}[model (0-63) | visible distance (100-300)]" );
- if( mid >= MAX_MAPICONS) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Dostignut je maksimalan broj MapIcona." );
- if( model < 0 || model > 63 ) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Model ne moze iznositi veci broj od 63 i manji od 0." );
- if( vdistance < 100 || vdistance > 300 ) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}View Distance ne moze iznositi veci broj od 300 i manji od 100" );
- GetPlayerPos( playerid, x, y, z );
- MI[ mid ][ miX ] = x;
- MI[ mid ][ miY ] = y;
- MI[ mid ][ miZ ] = z;
- MI[ mid ][ miVW ] = GetPlayerVirtualWorld( playerid );
- MI[ mid ][ miInt ] = GetPlayerInterior( playerid );
- MI[ mid ][ miDistance ] = vdistance;
- MI[ mid ][ miType ] = model;
- Ikona[ mid ] = CreateDynamicMapIcon( MI[ mid ][ miX ],MI[ mid ][ miY ],MI[ mid ][ miZ ], MI[ mid ][ miType ], -1, MI[ mid ][ miVW ], MI[ mid ][ miInt ], -1, MI[ mid ][ miDistance ] );
- SaveMapIcons( mid );
- new str[ 140 ];
- format( str, sizeof str, "{f59342}[INFO]: {FFFFFF}Kreirali ste MapIcon ID = %d", mid );
- SendClientMessage( playerid, -1, str );
- return 1;
- }
- CMD:obrisimi( playerid, params[ ] )
- {
- if(!IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1,"{f59342}[ERROR]: {FFFFFF}Morate se prijaviti kao RCON." );
- new i, miFile[ 60 ], str[ 140 ];
- if( sscanf( params,"i", i ) ) return SendClientMessage( playerid, -1,"{f59342}/obrisimi {FFFFFF}[id]" );
- format( miFile, sizeof( miFile ), MAPICONS_FILE, i );
- if(fexist( miFile ) )
- {
- MI[ i ][ miX ] = 0.0;
- MI[ i ][ miY ] = 0.0;
- MI[ i ][ miZ ] = 0.0;
- MI[ i ][ miDistance ] = 0;
- DestroyDynamicMapIcon( Ikona[ i ] );
- format( str, sizeof( str ), "{f59342}[INFO]: {FFFFFF}Obrisali ste MapIcon ID = %d.", i );
- SendClientMessage( playerid, -1, str );
- format( miFile, sizeof(miFile), MAPICONS_FILE, i );
- if( fexist( miFile ) )
- {
- fremove( miFile );
- }
- }
- else
- {
- SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Uneli ste ne postojeci ID." );
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement