Advertisement
Guest User

Untitled

a guest
Jul 10th, 2019
627
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.73 KB | None | 0 0
  1. /* [ Map Icon System - Created by Vasic - 09.07.2019 - v1.0] */
  2. /* [ CMDs: /create & /delete ] */
  3.  
  4. #include < a_samp >
  5. #include < zcmd >
  6. #include < YSI\y_ini >
  7. #include < streamer >
  8. #include < sscanf2 >
  9.  
  10. #define MAX_MAPICONS 150 //'150' is the max number of map icons (limit), you can change it.
  11. #define MAPICONS_FILE "/MapIcons/%d.ini" //name of folder in scriptfiles must be MapIcons, you can change it.
  12.  
  13. enum miInfo
  14. {
  15. Float:miX,
  16. Float:miY,
  17. Float:miZ,
  18. miType,
  19. miVW,
  20. miInt,
  21. miDistance
  22. };
  23. new MI[ MAX_MAPICONS ][ miInfo ];
  24. new Icon[ sizeof( MI ) ];
  25. main()
  26. {
  27. }
  28. public OnGameModeInit()
  29. {
  30. for(new id = 0; id < MAX_MAPICONS; id++)
  31. {
  32. new filename[ 32 ];
  33. format( filename, sizeof( filename ), MAPICONS_FILE, id );
  34. if( fexist( filename ) )
  35. {
  36. INI_ParseFile( filename, "LoadMapIcons", .bExtra = true, .extra = id );
  37. {
  38. Icon[ 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 ] );
  39. }
  40. }
  41. }
  42. return 1;
  43. }
  44. stock MINextID( )
  45. {
  46. new mifile[ 64 ];
  47. for( new mapid = 0; mapid < MAX_MAPICONS; mapid++ ) {
  48. format( mifile, sizeof( mifile ), MAPICONS_FILE, mapid );
  49. if( !fexist( mifile ) ) return mapid;
  50. }
  51. return true;
  52. }
  53.  
  54. stock SaveMapIcons( id ) {
  55. new miFile[ 60 ];
  56. format( miFile, sizeof( miFile ), MAPICONS_FILE, id);
  57. new INI:File = INI_Open(miFile);
  58. INI_WriteFloat( File, "Postition_X", MI[ id ][ miX ] );
  59. INI_WriteFloat( File, "Postition_Y", MI[ id ][ miY ] );
  60. INI_WriteFloat( File, "Postition_Z", MI[ id ][ miZ ] );
  61. INI_WriteInt( File, "ViewDistance", MI[ id ][ miDistance ] );
  62. INI_WriteInt( File, "VirtualWorld", MI[ id ][ miVW ] );
  63. INI_WriteInt( File, "Interior", MI[ id ][ miInt ] );
  64. INI_WriteInt( File, "Type", MI[ id ][ miType ] );
  65. INI_Close(File);
  66. }
  67. forward LoadMapIcons( id, name[], value[] );
  68. public LoadMapIcons( id, name[], value[] ) {
  69. INI_Float( "Postition_X", MI[ id ][ miX ] );
  70. INI_Float( "Postition_Y", MI[ id ][ miY ] );
  71. INI_Float( "Postition_Z", MI[ id ][ miZ ] );
  72. INI_Int( "ViewDistance", MI[ id ][ miDistance ] );
  73. INI_Int( "VirtualWorld", MI[ id ][ miVW ] );
  74. INI_Int( "Interior", MI[ id ][ miInt ] );
  75. INI_Int( "Type", MI[ id ][ miType ] );
  76. return true;
  77. }
  78.  
  79. CMD:create( playerid, params[ ] )
  80. {
  81. if(!IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1,"{f59342}[ERROR]: {FFFFFF}You must be logged as RCON." );
  82. new mid = MINextID( ), model, vdistance, Float:x, Float:y, Float:z;
  83. if( sscanf( params, "ii", model, vdistance ) ) return SendClientMessage( playerid, -1, "{f59342}/create {FFFFFF}[model (0-63) | visible distance (100-300)]" );
  84. if( mid >= MAX_MAPICONS) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Reached limit of MapIcons." );
  85. if( model < 0 || model > 63 ) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Model of MapIcon can not be bigger than 63 and smaller than 0." );
  86. if( vdistance < 100 || vdistance > 300 ) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Visible Distance can not be bigger than 300 and smaller than 100." );
  87. GetPlayerPos( playerid, x, y, z );
  88. MI[ mid ][ miX ] = x;
  89. MI[ mid ][ miY ] = y;
  90. MI[ mid ][ miZ ] = z;
  91. MI[ mid ][ miVW ] = GetPlayerVirtualWorld( playerid );
  92. MI[ mid ][ miInt ] = GetPlayerInterior( playerid );
  93. MI[ mid ][ miDistance ] = vdistance;
  94. MI[ mid ][ miType ] = model;
  95. Icon[ 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 ] );
  96. SaveMapIcons( mid );
  97. new str[ 140 ];
  98. format( str, sizeof str, "{f59342}[INFO]: {FFFFFF}You created Map Icon ID = %d", mid );
  99. SendClientMessage( playerid, -1, str );
  100. return 1;
  101. }
  102. CMD:delete( playerid, params[ ] )
  103. {
  104. if(!IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1,"{f59342}[ERROR]: {FFFFFF}You must be logged as RCON." );
  105. new i, miFile[ 60 ], str[ 140 ];
  106. if( sscanf( params,"i", i ) ) return SendClientMessage( playerid, -1,"{f59342}/delete {FFFFFF}[id]" );
  107. format( miFile, sizeof( miFile ), MAPICONS_FILE, i );
  108. if(fexist( miFile ) )
  109. {
  110. MI[ i ][ miX ] = 0.0;
  111. MI[ i ][ miY ] = 0.0;
  112. MI[ i ][ miZ ] = 0.0;
  113. MI[ i ][ miDistance ] = 0;
  114. DestroyDynamicMapIcon( Icon[ i ] );
  115. format( str, sizeof( str ), "{f59342}[INFO]: {FFFFFF}You deleted Map Icon ID = %d.", i );
  116. SendClientMessage( playerid, -1, str );
  117. format( miFile, sizeof(miFile), MAPICONS_FILE, i );
  118. if( fexist( miFile ) )
  119. {
  120. fremove( miFile );
  121. }
  122. }
  123. else
  124. {
  125. SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}You entered invalid ID." );
  126. }
  127. return 1;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement