Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include < a_samp >
- #include < YSI\y_ini >
- #include < Pawn.CMD >
- #include < sscanf2 >
- const MAX_STANOVI = 400;
- const MAX_ZGRADE = 150;
- #define ZGRADE_FILE "/Zgrade/%d.ini"
- #define STANOVI_FILE "/Stanovi/%d.ini"
- enum ZGRADE_INFO {
- Float:zX,
- Float:zY,
- Float:zZ,
- zTip,
- zBrojStanova,
- zVW,
- zID
- }
- enum STANOVI_INFO {
- Float:sX,
- Float:sY,
- Float:sZ,
- sTip,
- sZgrada,
- sPare,
- sVlasnik[ MAX_PLAYER_NAME ],
- bool:sKupljen,
- bool:sZakljucan,
- sVW,
- sID
- }
- new ZgradaInfo[ MAX_ZGRADE ][ ZGRADE_INFO ], StanInfo[ MAX_STANOVI ][ STANOVI_INFO ], Text3D:z3DText[ sizeof(ZgradaInfo) ], Text3D:s3DText[ sizeof(StanInfo) ],
- UlazCD[ MAX_PLAYERS ], KupioStan[ MAX_PLAYERS ];
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- if(newkeys & KEY_SECONDARY_ATTACK) {
- new trenutnovreme = gettime();
- if(trenutnovreme < (UlazCD[ playerid ] + 3)) return 1;
- for(new i; i < MAX_ZGRADE; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, ZgradaInfo[ i ][ zX ], ZgradaInfo[ i ][ zY ], ZgradaInfo[ i ][ zZ ])) {
- SetPlayerPos(playerid, 2215.454833,-1147.475585,1025.796875);
- SetPlayerInterior(playerid, 15);
- SetPlayerVirtualWorld(playerid, ZgradaInfo[ i ][ zVW ]);
- UlazCD[ playerid ] = gettime();
- }
- }
- if(IsPlayerInRangeOfPoint(playerid, 3.0, 2215.454833,-1147.475585,1025.796875)) {
- SetPlayerPos(playerid, ZgradaInfo[ GetPlayerVirtualWorld(playerid) ][ zX ], ZgradaInfo[ GetPlayerVirtualWorld(playerid) ][ zY ], ZgradaInfo[ GetPlayerVirtualWorld(playerid) ][ zZ ]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- UlazCD[ playerid ] = gettime();
- }
- for(new i; i < MAX_STANOVI; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, StanInfo[ i ][ sX ], StanInfo[ i ][ sY ], StanInfo[ i ][ sZ ])) {
- if(StanInfo[ i ][ sZakljucan ] && strlen(ImeIgraca(playerid)) != strlen(StanInfo[ i ][ sVlasnik ])) return SendClientMessage(playerid, -1, "Zakljucano.");
- switch(StanInfo[ i ][ sTip ]) {
- case 1: {
- SetPlayerPos(playerid, 271.884979,306.631988,999.148437);
- SetPlayerInterior(playerid, 2);
- }
- case 2: {
- SetPlayerPos(playerid, 2454.717041,-1700.871582,1013.515197);
- SetPlayerInterior(playerid, 2);
- }
- case 3: {
- SetPlayerPos(playerid, 2496.049804,-1695.238159,1014.742187);
- SetPlayerInterior(playerid, 3);
- }
- }
- SetPlayerVirtualWorld(playerid, StanInfo[ i ][ sVW ]);
- UlazCD[ playerid ] = gettime();
- }
- }
- if(IsPlayerInRangeOfPoint(playerid, 3.0, 271.884979,306.631988,999.148437) || IsPlayerInRangeOfPoint(playerid, 3.0, 2454.717041,-1700.871582,1013.515197) || IsPlayerInRangeOfPoint(playerid, 3.0, 2496.049804,-1695.238159,1014.742187)) {
- SetPlayerPos(playerid, StanInfo[ GetPlayerVirtualWorld(playerid) ][ sX ], StanInfo[ GetPlayerVirtualWorld(playerid) ][ sY ], StanInfo[ GetPlayerVirtualWorld(playerid) ][ sZ ]);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, 0);
- UlazCD[ playerid ] = gettime();
- }
- }
- return 1;
- }
- CMD:kreirajzgradu(playerid, params[]) {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON Admin.");
- new ztip, i = NextZgradaID(MAX_ZGRADE), str[ 150 ], Float:X, Float:Y, Float:Z;
- if(sscanf(params, "d", ztip) || ztip < 1 || ztip > 3) {
- SendClientMessage(playerid, -1, "/kreirajzgradu [Tip]");
- SendClientMessage(playerid, -1, "Tip 1 - Mala zgrada | Tip 2 - Srednja zgrada | Tip 3 - Velika zgrada");
- return 1;
- }
- GetPlayerPos(playerid, X,Y,Z);
- ZgradaInfo[ i ][ zX ] = X;
- ZgradaInfo[ i ][ zY ] = Y;
- ZgradaInfo[ i ][ zZ ] = Z;
- ZgradaInfo[ i ][ zTip ] = ztip;
- ZgradaInfo[ i ][ zBrojStanova ] = 0;
- ZgradaInfo[ i ][ zVW ] = i;
- ZgradaInfo[ i ][ zID ] = CreatePickup(19132, 1, X,Y,Z, 0);
- format(str, sizeof(str), "Zgrada [ID:%d]\n{FFFFFF}Za ulazak u zgradu pritisnite\n{0077C7}'ENTER'", i);
- z3DText[ i ] = Create3DTextLabel(str, 0x0077C7FF, X,Y,Z, 10.0, 0, 0);
- SaveZgrada(i);
- return 1;
- }
- CMD:kreirajstan(playerid, params[]) {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON Admin.");
- if(GetPlayerVirtualWorld(playerid) == 0) return SendClientMessage(playerid, -1, "Morate biti u zgradi kako biste napravili stan (/kreirajzgradu).");
- new stip, pare, i = NextStanID(MAX_STANOVI), str[ 150 ], Float:X, Float:Y, Float:Z;
- if(sscanf(params, "dd", stip, pare) || stip < 1 || stip > 3) {
- SendClientMessage(playerid, -1, "/kreirajstan [Tip] [Pare]");
- SendClientMessage(playerid, -1, "Tip 1 - Mali stan | Tip 2 - Srednji stan | Tip 3 - Veliki stan");
- return 1;
- }
- GetPlayerPos(playerid, X,Y,Z);
- StanInfo[ i ][ sX ] = X;
- StanInfo[ i ][ sY ] = Y;
- StanInfo[ i ][ sZ ] = Z;
- StanInfo[ i ][ sTip ] = stip;
- StanInfo[ i ][ sPare ] = pare;
- StanInfo[ i ][ sKupljen ] = false;
- StanInfo[ i ][ sVW ] = i;
- StanInfo[ i ][ sZgrada ] = GetPlayerVirtualWorld(playerid);
- strmid(StanInfo[ i ][ sVlasnik ], "Niko", 0, strlen("Niko"), MAX_PLAYER_NAME);
- StanInfo[ i ][ sID ] = CreatePickup(1272, 1, X,Y,Z, GetPlayerVirtualWorld(playerid));
- switch(stip) {
- case 1: format(str, sizeof(str), "Mali stan na prodaju!\nCena: %d$\nZa kupovinu koristite\n/kupistan", pare);
- case 2: format(str, sizeof(str), "Srednji stan na prodaju!\nCena: %d$\nZa kupovinu koristite\n/kupistan", pare);
- case 3: format(str, sizeof(str), "Veliki stan na prodaju!\nCena: %d$\nZa kupovinu koristite\n/kupistan", pare);
- }
- s3DText[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z, 10.0, GetPlayerVirtualWorld(playerid), 0);
- SaveStan(i);
- return 1;
- }
- CMD:kupistan(playerid, params[]) {
- if(KupioStan[ playerid ] != 0) return SendClientMessage(playerid, -1, "Vec imate stan.");
- for(new i; i < MAX_STANOVI; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, StanInfo[ i ][ sX ], StanInfo[ i ][ sY ], StanInfo[ i ][ sZ ])) {
- if(StanInfo[ i ][ sKupljen ]) return SendClientMessage(playerid, -1, "Taj stan je vec kupljen.");
- if(StanInfo[ i ][ sPare ] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Nemate dovoljno novca.");
- new str[ 60 ];
- switch(StanInfo[ i ][ sTip ]) {
- case 1: format(str, sizeof(str), "Mali stan\nVlasnik: %s", ImeIgraca(playerid));
- case 2: format(str, sizeof(str), "Srednji stan\nVlasnik: %s", ImeIgraca(playerid));
- case 3: format(str, sizeof(str), "Veliki stan\nVlasnik: %s", ImeIgraca(playerid));
- }
- strmid(StanInfo[ i ][ sVlasnik ], ImeIgraca(playerid), 0, strlen(ImeIgraca(playerid)), MAX_PLAYER_NAME);
- Update3DTextLabelText(s3DText[ i ], 0xFFFFFFFF, str);
- StanInfo[ i ][ sKupljen ] = true;
- KupioStan[ playerid ] = i;
- GivePlayerMoney(playerid, -StanInfo[ i ][ sPare ]);
- SaveStan(i);
- }
- }
- return 1;
- }
- SaveZgrada(id) {
- new sFile[ 60 ];
- format(sFile, sizeof(sFile), ZGRADE_FILE, id);
- new INI:File = INI_Open(sFile);
- INI_WriteFloat(File, "X", ZgradaInfo[ id ][ zX ]);
- INI_WriteFloat(File, "Y", ZgradaInfo[ id ][ zY ]);
- INI_WriteFloat(File, "Z", ZgradaInfo[ id ][ zZ ]);
- INI_WriteInt(File, "Broj_Stanova", ZgradaInfo[ id ][ zBrojStanova ]);
- INI_Close(File);
- return 1;
- }
- SaveStan(id) {
- new sFile[ 60 ];
- format(sFile, sizeof(sFile), STANOVI_FILE, id);
- new INI:File = INI_Open(sFile);
- INI_WriteBool(File, "Kupljen", StanInfo[ id ][ sKupljen ]);
- INI_WriteString(File, "Vlasnik", StanInfo[ id ][ sVlasnik ]);
- INI_WriteFloat(File, "X", StanInfo[ id ][ sX ]);
- INI_WriteFloat(File, "Y", StanInfo[ id ][ sY ]);
- INI_WriteFloat(File, "Z", StanInfo[ id ][ sZ ]);
- INI_WriteInt(File, "Pare", StanInfo[ id ][ sPare ]);
- INI_WriteInt(File, "Zgrada", StanInfo[ id ][ sZgrada ]);
- INI_Close(File);
- return 1;
- }
- NextZgradaID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), ZGRADE_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- NextStanID(const len) {
- new id = (-1);
- for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
- provjera = ( loop+1 );
- format( Data_, ( sizeof Data_ ), STANOVI_FILE, provjera );
- if(!fexist(Data_)) {
- id = ( provjera );
- break; } }
- return ( id );
- }
- ImeIgraca( id ) {
- new ime[ MAX_PLAYER_NAME ];
- GetPlayerName( id, ime, sizeof ime);
- return ime;
- }
Advertisement
Add Comment
Please, Sign In to add comment