Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < YSI\y_ini >
- #include < YSI\y_commands >
- #include < sscanf2 >
- #define TAXIACT_FILE "/TaxiActors/%d.ini"
- #define MAX_TAXIACTS 80
- #define SCM SendClientMessage
- enum taxiactInfo {
- Float:tactPosX,
- Float:tactPosY,
- Float:tactPosZ,
- Float:tactRotA,
- tactSkin,
- tactID
- }
- new TactInfo[ MAX_TAXIACTS ][ taxiactInfo ], TaxiCP[ MAX_PLAYERS ], KreiraniActori, PokupioActora[ MAX_PLAYERS ];
- new Float:RandomTaxiCP[][] = {
- {1458.0573,-1029.9048,23.6563},
- {1481.0028,-1735.7319,13.3828},
- {1532.0552,-1674.4508,13.3828},
- {1314.8688,-920.6912,38.0454},
- {1222.9015,-929.8652,42.5941}
- };
- forward KolikoKreiranihActora();
- public KolikoKreiranihActora() {
- new strFromFile[24], arrCoords[6][5], File: file = fopen("kreiraniactori.txt", io_read);
- if (file) {
- fread( file, strFromFile );
- razdvajanje( strFromFile, arrCoords, ',' );
- KreiraniActori = strval( arrCoords[0] );
- fclose(file);
- }
- return 1;
- }
- forward OcitajTaxi(id, name[], value[]);
- public OcitajTaxi(id, name[], value[]) {
- INI_Float("Lokacija_X", TactInfo[ id ][ tactPosX ]);
- INI_Float("Lokacija_Y", TactInfo[ id ][ tactPosY ]);
- INI_Float("Lokacija_Z", TactInfo[ id ][ tactPosZ ]);
- INI_Float("Rotacija_A", TactInfo[ id ][ tactRotA ]);
- INI_Int("Skin_ID", TactInfo[ id ][ tactSkin ]);
- return 1;
- }
- forward PostavkaTaxiCP(playerid);
- public PostavkaTaxiCP(playerid) {
- new Random = random(sizeof(RandomTaxiCP));
- SetPlayerCheckpoint(playerid, RandomTaxiCP[Random][0], RandomTaxiCP[Random][1], RandomTaxiCP[Random][2], 3.0);
- SCM(playerid, -1, "Odvezite gradjanina do nove lokacije.");
- return 1;
- }
- public OnGameModeInit() {
- KolikoKreiranihActora();
- 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); } }
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid) {
- if(TaxiCP[ playerid ] != 0) {
- if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 420) return SCM(playerid, -1, "Niste u vozilu za posao.");
- PokupioActora[ playerid ] = TaxiCP[ playerid ];
- DisablePlayerCheckpoint(playerid);
- DestroyActor(TactInfo[ TaxiCP[ playerid ] ][ tactID ]);
- TaxiCP[ playerid ] = 0;
- SetTimerEx("PostavkaTaxiCP", 500, false, "i", playerid);
- }
- if(PokupioActora[ playerid ] != 0) {
- if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 420) return SCM(playerid, -1, "Niste u vozilu za posao.");
- DisablePlayerCheckpoint(playerid);
- GivePlayerMoney(playerid, 100);
- PokupioActora[ playerid ] = 0;
- SCM(playerid, -1, "Uspesno ste zavrsili posao.");
- }
- return 1;
- }
- YCMD:kreirajtaxiactor(playerid, params[], help) {
- #pragma unused help
- new skin, Float:X, Float:Y, Float:Z, Float:A, i = NextTActID(MAX_TAXIACTS);
- if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON admin.");
- if(sscanf(params, "d", skin)) return SCM(playerid, -1, "/kreirajtaxiactor [Skin ID]");
- if(KreiraniActori > MAX_TAXIACTS) return SCM(playerid, -1, "Taxi Actors limit dostignut.");
- GetPlayerPos(playerid, X,Y,Z); GetPlayerFacingAngle(playerid, A);
- TactInfo[ i ][ tactPosX ] = X;
- TactInfo[ i ][ tactPosY ] = Y;
- TactInfo[ i ][ tactPosZ ] = Z;
- TactInfo[ i ][ tactRotA ] = A;
- TactInfo[ i ][ tactSkin ] = skin;
- SaveTact(i);
- SCM(playerid, -1, "Uspesno ste kreirali taxi aktora.");
- KreiraniActori++;
- new str[ 2 ];
- format(str, sizeof(str), "%d", KreiraniActori);
- new File: file = fopen("kreiraniactori.txt", io_write);
- fwrite(file, str);
- fclose(file);
- return 1;
- }
- YCMD:taxi(playerid, params[], help) {
- #pragma unused help
- #pragma unused params
- if(TaxiCP[ playerid ] != 0 && PokupioActora[ playerid ] != 0) return SCM(playerid, -1, "Vec imate zapocetu rutu, da prekinete - /stoptaxi.");
- if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 420) return SCM(playerid, -1, "Niste u vozilu za posao.");
- new RandomTaxi;
- RandomTaxi = RandomEx(1, KreiraniActori);
- TaxiCP[ playerid ] = RandomTaxi;
- SetPlayerCheckpoint(playerid, TactInfo[ RandomTaxi ][ tactPosX ], TactInfo[ RandomTaxi ][ tactPosY ], TactInfo[ RandomTaxi ][ tactPosZ ], 4.0);
- TactInfo[ RandomTaxi ][ tactID ] = CreateActor(TactInfo[ RandomTaxi ][ tactSkin ], TactInfo[ RandomTaxi ][ tactPosX ], TactInfo[ RandomTaxi ][ tactPosY ], TactInfo[ RandomTaxi ][ tactPosZ ], TactInfo[ RandomTaxi ][ tactRotA ]);
- return 1;
- }
- YCMD:test(playerid, params[], help) {
- new Float:X,Float:Y,Float:Z, da;
- GetPlayerPos(playerid, X,Y,Z);
- da = CreateVehicle(420,X,Y,Z,0.0, -1, -1, -1);
- PutPlayerInVehicle(playerid, da, 0);
- return 1;
- }
- YCMD:stoptaxi(playerid, params[], help) {
- #pragma unused help
- #pragma unused params
- if(TaxiCP[ playerid ] == 0 && PokupioActora[ playerid ] == 0) return SCM(playerid, -1, "Nemate pokrenutu rutu.");
- DisablePlayerCheckpoint(playerid);
- DestroyActor(TactInfo[ TaxiCP[ playerid ] ][ tactID ]);
- TaxiCP[ playerid ] = 0;
- SendClientMessage(playerid, -1, "Zaustavili ste rutu.");
- PokupioActora[ playerid ] = 0;
- return 1;
- }
- stock NextTActID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), TAXIACT_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- stock SaveTact(id) {
- new tFile[ 60 ];
- format(tFile, sizeof(tFile), TAXIACT_FILE, id);
- new INI:File = INI_Open(tFile);
- INI_WriteFloat(File, "Lokacija_X", TactInfo[ id ][ tactPosX ]);
- INI_WriteFloat(File, "Lokacija_Y", TactInfo[ id ][ tactPosY ]);
- INI_WriteFloat(File, "Lokacija_Z", TactInfo[ id ][ tactPosZ ]);
- INI_WriteFloat(File, "Rotacija_A", TactInfo[ id ][ tactRotA ]);
- INI_WriteInt(File, "Skin_ID", TactInfo[ id ][ tactSkin ]);
- INI_Close(File);
- }
- RandomEx(min,max) {
- return (min+random(max));
- }
- stock razdvajanje( const asdas[], strdest[][], delimiter )
- {
- new i, li;
- new xNum;
- new xlom;
- while( i <= strlen(asdas))
- {
- if( asdas[ i ] == delimiter || i == strlen( asdas ))
- {
- xlom = strmid (strdest[ xNum ], asdas, li, i, 128 );
- strdest[ xNum ][ xlom ] = 0;
- li = i+1;
- xNum++;
- }
- i++;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment