BE-Shomy

BEast - Shomy

Mar 8th, 2018
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.28 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < YSI\y_commands >
  4. #include < sscanf2 >
  5.  
  6. #define TAXIACT_FILE "/TaxiActors/%d.ini"
  7. #define MAX_TAXIACTS 80
  8.  
  9. #define SCM SendClientMessage
  10.  
  11. enum taxiactInfo {
  12.  
  13. Float:tactPosX,
  14. Float:tactPosY,
  15. Float:tactPosZ,
  16. Float:tactRotA,
  17. tactSkin,
  18. tactID
  19. }
  20.  
  21. new TactInfo[ MAX_TAXIACTS ][ taxiactInfo ], TaxiCP[ MAX_PLAYERS ], KreiraniActori, PokupioActora[ MAX_PLAYERS ];
  22. new Float:RandomTaxiCP[][] = {
  23.  
  24. {1458.0573,-1029.9048,23.6563},
  25. {1481.0028,-1735.7319,13.3828},
  26. {1532.0552,-1674.4508,13.3828},
  27. {1314.8688,-920.6912,38.0454},
  28. {1222.9015,-929.8652,42.5941}
  29. };
  30.  
  31. forward KolikoKreiranihActora();
  32. public KolikoKreiranihActora() {
  33. new strFromFile[24], arrCoords[6][5], File: file = fopen("kreiraniactori.txt", io_read);
  34. if (file) {
  35. fread( file, strFromFile );
  36. razdvajanje( strFromFile, arrCoords, ',' );
  37. KreiraniActori = strval( arrCoords[0] );
  38. fclose(file);
  39. }
  40. return 1;
  41. }
  42. forward OcitajTaxi(id, name[], value[]);
  43. public OcitajTaxi(id, name[], value[]) {
  44.  
  45. INI_Float("Lokacija_X", TactInfo[ id ][ tactPosX ]);
  46. INI_Float("Lokacija_Y", TactInfo[ id ][ tactPosY ]);
  47. INI_Float("Lokacija_Z", TactInfo[ id ][ tactPosZ ]);
  48. INI_Float("Rotacija_A", TactInfo[ id ][ tactRotA ]);
  49. INI_Int("Skin_ID", TactInfo[ id ][ tactSkin ]);
  50. return 1;
  51. }
  52. forward PostavkaTaxiCP(playerid);
  53. public PostavkaTaxiCP(playerid) {
  54.  
  55. new Random = random(sizeof(RandomTaxiCP));
  56. SetPlayerCheckpoint(playerid, RandomTaxiCP[Random][0], RandomTaxiCP[Random][1], RandomTaxiCP[Random][2], 3.0);
  57. SCM(playerid, -1, "Odvezite gradjanina do nove lokacije.");
  58. return 1;
  59. }
  60.  
  61. public OnGameModeInit() {
  62.  
  63. KolikoKreiranihActora();
  64. for(new i; i < MAX_TAXIACTS; i++) { new tFile[ 60 ]; format(tFile, sizeof(tFile), TAXIACT_FILE, i); if(fexist(tFile)) { INI_ParseFile(tFile, "OcitajTaxi", .bExtra = true, .extra = i); } }
  65. return 1;
  66. }
  67.  
  68. public OnPlayerEnterCheckpoint(playerid) {
  69.  
  70. if(TaxiCP[ playerid ] != 0) {
  71. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 420) return SCM(playerid, -1, "Niste u vozilu za posao.");
  72. PokupioActora[ playerid ] = TaxiCP[ playerid ];
  73. DisablePlayerCheckpoint(playerid);
  74. DestroyActor(TactInfo[ TaxiCP[ playerid ] ][ tactID ]);
  75. TaxiCP[ playerid ] = 0;
  76. SetTimerEx("PostavkaTaxiCP", 500, false, "i", playerid);
  77. }
  78. if(PokupioActora[ playerid ] != 0) {
  79. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 420) return SCM(playerid, -1, "Niste u vozilu za posao.");
  80. DisablePlayerCheckpoint(playerid);
  81. GivePlayerMoney(playerid, 100);
  82. PokupioActora[ playerid ] = 0;
  83. SCM(playerid, -1, "Uspesno ste zavrsili posao.");
  84. }
  85. return 1;
  86. }
  87.  
  88. YCMD:kreirajtaxiactor(playerid, params[], help) {
  89.  
  90. #pragma unused help
  91.  
  92. new skin, Float:X, Float:Y, Float:Z, Float:A, i = NextTActID(MAX_TAXIACTS);
  93. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON admin.");
  94. if(sscanf(params, "d", skin)) return SCM(playerid, -1, "/kreirajtaxiactor [Skin ID]");
  95. if(KreiraniActori > MAX_TAXIACTS) return SCM(playerid, -1, "Taxi Actors limit dostignut.");
  96. GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, A);
  97. TactInfo[ i ][ tactPosX ] = X;
  98. TactInfo[ i ][ tactPosY ] = Y;
  99. TactInfo[ i ][ tactPosZ ] = Z;
  100. TactInfo[ i ][ tactRotA ] = A;
  101. TactInfo[ i ][ tactSkin ] = skin;
  102. SaveTact(i);
  103. SCM(playerid, -1, "Uspesno ste kreirali taxi aktora.");
  104. KreiraniActori++;
  105. new str[ 2 ];
  106. format(str, sizeof(str), "%d", KreiraniActori);
  107. new File: file = fopen("kreiraniactori.txt", io_write);
  108. fwrite(file, str);
  109. fclose(file);
  110. return 1;
  111. }
  112. YCMD:taxi(playerid, params[], help) {
  113.  
  114. #pragma unused help
  115. #pragma unused params
  116.  
  117. if(TaxiCP[ playerid ] != 0 && PokupioActora[ playerid ] != 0) return SCM(playerid, -1, "Vec imate zapocetu rutu, da prekinete - /stoptaxi.");
  118. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 420) return SCM(playerid, -1, "Niste u vozilu za posao.");
  119. new RandomTaxi;
  120. RandomTaxi = RandomEx(1, KreiraniActori);
  121. TaxiCP[ playerid ] = RandomTaxi;
  122. SetPlayerCheckpoint(playerid, TactInfo[ RandomTaxi ][ tactPosX ], TactInfo[ RandomTaxi ][ tactPosY ], TactInfo[ RandomTaxi ][ tactPosZ ], 4.0);
  123. TactInfo[ RandomTaxi ][ tactID ] = CreateActor(TactInfo[ RandomTaxi ][ tactSkin ], TactInfo[ RandomTaxi ][ tactPosX ], TactInfo[ RandomTaxi ][ tactPosY ], TactInfo[ RandomTaxi ][ tactPosZ ], TactInfo[ RandomTaxi ][ tactRotA ]);
  124. return 1;
  125. }
  126. YCMD:test(playerid, params[], help) {
  127.  
  128. new Float:X,Float:Y,Float:Z, da;
  129. GetPlayerPos(playerid, X,Y,Z);
  130. da = CreateVehicle(420,X,Y,Z,0.0, -1, -1, -1);
  131. PutPlayerInVehicle(playerid, da, 0);
  132. return 1;
  133. }
  134. YCMD:stoptaxi(playerid, params[], help) {
  135.  
  136. #pragma unused help
  137. #pragma unused params
  138.  
  139. if(TaxiCP[ playerid ] == 0 && PokupioActora[ playerid ] == 0) return SCM(playerid, -1, "Nemate pokrenutu rutu.");
  140. DisablePlayerCheckpoint(playerid);
  141. DestroyActor(TactInfo[ TaxiCP[ playerid ] ][ tactID ]);
  142. TaxiCP[ playerid ] = 0;
  143. SendClientMessage(playerid, -1, "Zaustavili ste rutu.");
  144. PokupioActora[ playerid ] = 0;
  145. return 1;
  146. }
  147. stock NextTActID(const len) {
  148. new id = (-1);
  149. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  150. provjera = ( loop+1 );
  151. format( Data_, ( sizeof Data_ ), TAXIACT_FILE, provjera );
  152. if(!fexist(Data_)) {
  153. id = ( provjera );
  154. break; } }
  155. return ( id );
  156. }
  157. stock SaveTact(id) {
  158. new tFile[ 60 ];
  159. format(tFile, sizeof(tFile), TAXIACT_FILE, id);
  160. new INI:File = INI_Open(tFile);
  161. INI_WriteFloat(File, "Lokacija_X", TactInfo[ id ][ tactPosX ]);
  162. INI_WriteFloat(File, "Lokacija_Y", TactInfo[ id ][ tactPosY ]);
  163. INI_WriteFloat(File, "Lokacija_Z", TactInfo[ id ][ tactPosZ ]);
  164. INI_WriteFloat(File, "Rotacija_A", TactInfo[ id ][ tactRotA ]);
  165. INI_WriteInt(File, "Skin_ID", TactInfo[ id ][ tactSkin ]);
  166. INI_Close(File);
  167. }
  168. RandomEx(min,max) {
  169. return (min+random(max));
  170. }
  171. stock razdvajanje( const asdas[], strdest[][], delimiter )
  172. {
  173. new i, li;
  174. new xNum;
  175. new xlom;
  176. while( i <= strlen(asdas))
  177. {
  178. if( asdas[ i ] == delimiter || i == strlen( asdas ))
  179. {
  180. xlom = strmid (strdest[ xNum ], asdas, li, i, 128 );
  181. strdest[ xNum ][ xlom ] = 0;
  182. li = i+1;
  183. xNum++;
  184. }
  185. i++;
  186. }
  187. return 1;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment