Advertisement
Guest User

Untitled

a guest
Jul 9th, 2019
451
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.16 KB | None | 0 0
  1. /* [ Map Icon System - Created by Vasic - 09.07.2019 - v1.0] */
  2. /* [ CMDs: /kreirajmi & /obrisimi ] */
  3. #include < a_samp >
  4. #include < zcmd >
  5. #include < YSI\y_ini >
  6. #include < streamer >
  7. #include < sscanf2 >
  8.  
  9. #define MAX_MAPICONS 150 //'150' vam je maksimalni broj koliko mozete kreirati ikonica, mozete izmeniti
  10. #define MAPICONS_FILE "/MapIcons/%d.ini" //ime foldera u scriptfiles mora biti MapIcons, iz kog ce se kasnije ucitavati kreirani mapiconsi, mozete izmeniti
  11.  
  12. enum miInfo
  13. {
  14. Float:miX,
  15. Float:miY,
  16. Float:miZ,
  17. miType,
  18. miVW,
  19. miInt,
  20. miDistance
  21. };
  22. new MI[ MAX_MAPICONS ][ miInfo ];
  23. new Ikona[ sizeof( MI ) ];
  24.  
  25. main()
  26. {
  27. print("\n----------------------------------");
  28. print(" Blank Gamemode by your name here");
  29. print("----------------------------------\n");
  30. }
  31.  
  32. public OnGameModeInit()
  33. {
  34. for(new id = 0; id < MAX_MAPICONS; id++)
  35. {
  36. new filename[ 32 ];
  37. format( filename, sizeof( filename ), MAPICONS_FILE, id );
  38. if( fexist( filename ) )
  39. {
  40. INI_ParseFile( filename, "LoadMapIcons", .bExtra = true, .extra = id );
  41. {
  42. 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 ] );
  43. }
  44. }
  45. }
  46. return 1;
  47. }
  48. stock MINextID( )
  49. {
  50. new mifile[ 64 ];
  51. for( new mapid = 0; mapid < MAX_MAPICONS; mapid++ ) {
  52. format( mifile, sizeof( mifile ), MAPICONS_FILE, mapid );
  53. if( !fexist( mifile ) ) return mapid;
  54. }
  55. return true;
  56. }
  57.  
  58. stock GetNearestMapIcon( playerid ) {
  59. for( new b = 1; b < sizeof( MI ); b++) {
  60. if( IsPlayerInRangeOfPoint( playerid, 300.0, MI[ b ][ miX ], MI[ b ][ miY ] , MI[ b ][ miZ ] ) ) return b; }
  61. return -1;
  62. }
  63.  
  64. stock SaveMapIcons( id ) {
  65. new miFile[ 60 ];
  66. format( miFile, sizeof( miFile ), MAPICONS_FILE, id);
  67. new INI:File = INI_Open(miFile);
  68. INI_WriteFloat( File, "Pozicija_X", MI[ id ][ miX ] );
  69. INI_WriteFloat( File, "Pozicija_Y", MI[ id ][ miY ] );
  70. INI_WriteFloat( File, "Pozicija_Z", MI[ id ][ miZ ] );
  71. INI_WriteInt( File, "ViewDistance", MI[ id ][ miDistance ] );
  72. INI_WriteInt( File, "VirtualWorld", MI[ id ][ miVW ] );
  73. INI_WriteInt( File, "Interior", MI[ id ][ miInt ] );
  74. INI_WriteInt( File, "Type", MI[ id ][ miType ] );
  75. INI_Close(File);
  76. }
  77. forward LoadMapIcons( id, name[], value[] );
  78. public LoadMapIcons( id, name[], value[] ) {
  79. INI_Float( "Pozicija_X", MI[ id ][ miX ] );
  80. INI_Float( "Pozicija_Y", MI[ id ][ miY ] );
  81. INI_Float( "Pozicija_Z", MI[ id ][ miZ ] );
  82. INI_Int( "ViewDistance", MI[ id ][ miDistance ] );
  83. INI_Int( "VirtualWorld", MI[ id ][ miVW ] );
  84. INI_Int( "Interior", MI[ id ][ miInt ] );
  85. INI_Int( "Type", MI[ id ][ miType ] );
  86. return true;
  87. }
  88.  
  89. CMD:kreirajmi( playerid, params[ ] )
  90. {
  91. if(!IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1,"{f59342}[ERROR]: {FFFFFF}Morate se prijaviti kao RCON." );
  92. new mid = MINextID( ), model, vdistance, Float:x, Float:y, Float:z;
  93. if( sscanf( params, "ii", model, vdistance ) ) return SendClientMessage( playerid, -1, "{f59342}/kreirajmi {FFFFFF}[model (0-63) | visible distance (100-300)]" );
  94. if( mid >= MAX_MAPICONS) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Dostignut je maksimalan broj MapIcona." );
  95. if( model < 0 || model > 63 ) return SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Model ne moze iznositi veci broj od 63 i manji od 0." );
  96. 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" );
  97. GetPlayerPos( playerid, x, y, z );
  98. MI[ mid ][ miX ] = x;
  99. MI[ mid ][ miY ] = y;
  100. MI[ mid ][ miZ ] = z;
  101. MI[ mid ][ miVW ] = GetPlayerVirtualWorld( playerid );
  102. MI[ mid ][ miInt ] = GetPlayerInterior( playerid );
  103. MI[ mid ][ miDistance ] = vdistance;
  104. MI[ mid ][ miType ] = model;
  105. 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 ] );
  106. SaveMapIcons( mid );
  107. new str[ 140 ];
  108. format( str, sizeof str, "{f59342}[INFO]: {FFFFFF}Kreirali ste MapIcon ID = %d", mid );
  109. SendClientMessage( playerid, -1, str );
  110. return 1;
  111. }
  112. CMD:obrisimi( playerid, params[ ] )
  113. {
  114. if(!IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1,"{f59342}[ERROR]: {FFFFFF}Morate se prijaviti kao RCON." );
  115. new i, miFile[ 60 ], str[ 140 ];
  116. if( sscanf( params,"i", i ) ) return SendClientMessage( playerid, -1,"{f59342}/obrisimi {FFFFFF}[id]" );
  117. format( miFile, sizeof( miFile ), MAPICONS_FILE, i );
  118. if(fexist( miFile ) )
  119. {
  120. MI[ i ][ miX ] = 0.0;
  121. MI[ i ][ miY ] = 0.0;
  122. MI[ i ][ miZ ] = 0.0;
  123. MI[ i ][ miDistance ] = 0;
  124. DestroyDynamicMapIcon( Ikona[ i ] );
  125. format( str, sizeof( str ), "{f59342}[INFO]: {FFFFFF}Obrisali ste MapIcon ID = %d.", i );
  126. SendClientMessage( playerid, -1, str );
  127. format( miFile, sizeof(miFile), MAPICONS_FILE, i );
  128. if( fexist( miFile ) )
  129. {
  130. fremove( miFile );
  131. }
  132. }
  133. else
  134. {
  135. SendClientMessage( playerid, -1, "{f59342}[ERROR]: {FFFFFF}Uneli ste ne postojeci ID." );
  136. }
  137. return 1;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement