Guest User

Untitled

a guest
Jan 7th, 2020
808
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.30 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < Pawn.CMD >
  4. #include < sscanf2 >
  5.  
  6. const MAX_STANOVI = 400;
  7. const MAX_ZGRADE = 150;
  8. #define ZGRADE_FILE "/Zgrade/%d.ini"
  9. #define STANOVI_FILE "/Stanovi/%d.ini"
  10.  
  11. enum ZGRADE_INFO {
  12.  
  13. Float:zX,
  14. Float:zY,
  15. Float:zZ,
  16. zTip,
  17. zBrojStanova,
  18. zVW,
  19. zID
  20. }
  21. enum STANOVI_INFO {
  22.  
  23. Float:sX,
  24. Float:sY,
  25. Float:sZ,
  26. sTip,
  27. sZgrada,
  28. sPare,
  29. sVlasnik[ MAX_PLAYER_NAME ],
  30. bool:sKupljen,
  31. bool:sZakljucan,
  32. sVW,
  33. sID
  34. }
  35.  
  36. new ZgradaInfo[ MAX_ZGRADE ][ ZGRADE_INFO ], StanInfo[ MAX_STANOVI ][ STANOVI_INFO ], Text3D:z3DText[ sizeof(ZgradaInfo) ], Text3D:s3DText[ sizeof(StanInfo) ],
  37. UlazCD[ MAX_PLAYERS ], KupioStan[ MAX_PLAYERS ];
  38.  
  39. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
  40.  
  41. if(newkeys & KEY_SECONDARY_ATTACK) {
  42. new trenutnovreme = gettime();
  43. if(trenutnovreme < (UlazCD[ playerid ] + 3)) return 1;
  44. for(new i; i < MAX_ZGRADE; i++) {
  45. if(IsPlayerInRangeOfPoint(playerid, 3.0, ZgradaInfo[ i ][ zX ], ZgradaInfo[ i ][ zY ], ZgradaInfo[ i ][ zZ ])) {
  46. SetPlayerPos(playerid, 2215.454833,-1147.475585,1025.796875);
  47. SetPlayerInterior(playerid, 15);
  48. SetPlayerVirtualWorld(playerid, ZgradaInfo[ i ][ zVW ]);
  49. UlazCD[ playerid ] = gettime();
  50. }
  51. }
  52. if(IsPlayerInRangeOfPoint(playerid, 3.0, 2215.454833,-1147.475585,1025.796875)) {
  53. SetPlayerPos(playerid, ZgradaInfo[ GetPlayerVirtualWorld(playerid) ][ zX ], ZgradaInfo[ GetPlayerVirtualWorld(playerid) ][ zY ], ZgradaInfo[ GetPlayerVirtualWorld(playerid) ][ zZ ]);
  54. SetPlayerInterior(playerid, 0);
  55. SetPlayerVirtualWorld(playerid, 0);
  56. UlazCD[ playerid ] = gettime();
  57. }
  58. for(new i; i < MAX_STANOVI; i++) {
  59. if(IsPlayerInRangeOfPoint(playerid, 3.0, StanInfo[ i ][ sX ], StanInfo[ i ][ sY ], StanInfo[ i ][ sZ ])) {
  60. if(StanInfo[ i ][ sZakljucan ] && strlen(ImeIgraca(playerid)) != strlen(StanInfo[ i ][ sVlasnik ])) return SendClientMessage(playerid, -1, "Zakljucano.");
  61. switch(StanInfo[ i ][ sTip ]) {
  62. case 1: {
  63. SetPlayerPos(playerid, 271.884979,306.631988,999.148437);
  64. SetPlayerInterior(playerid, 2);
  65. }
  66. case 2: {
  67. SetPlayerPos(playerid, 2454.717041,-1700.871582,1013.515197);
  68. SetPlayerInterior(playerid, 2);
  69. }
  70. case 3: {
  71. SetPlayerPos(playerid, 2496.049804,-1695.238159,1014.742187);
  72. SetPlayerInterior(playerid, 3);
  73. }
  74. }
  75. SetPlayerVirtualWorld(playerid, StanInfo[ i ][ sVW ]);
  76. UlazCD[ playerid ] = gettime();
  77. }
  78. }
  79. 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)) {
  80. SetPlayerPos(playerid, StanInfo[ GetPlayerVirtualWorld(playerid) ][ sX ], StanInfo[ GetPlayerVirtualWorld(playerid) ][ sY ], StanInfo[ GetPlayerVirtualWorld(playerid) ][ sZ ]);
  81. SetPlayerInterior(playerid, 0);
  82. SetPlayerVirtualWorld(playerid, 0);
  83. UlazCD[ playerid ] = gettime();
  84. }
  85. }
  86. return 1;
  87. }
  88.  
  89. CMD:kreirajzgradu(playerid, params[]) {
  90.  
  91. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON Admin.");
  92. new ztip, i = NextZgradaID(MAX_ZGRADE), str[ 150 ], Float:X, Float:Y, Float:Z;
  93. if(sscanf(params, "d", ztip) || ztip < 1 || ztip > 3) {
  94. SendClientMessage(playerid, -1, "/kreirajzgradu [Tip]");
  95. SendClientMessage(playerid, -1, "Tip 1 - Mala zgrada | Tip 2 - Srednja zgrada | Tip 3 - Velika zgrada");
  96. return 1;
  97. }
  98. GetPlayerPos(playerid, X,Y,Z);
  99. ZgradaInfo[ i ][ zX ] = X;
  100. ZgradaInfo[ i ][ zY ] = Y;
  101. ZgradaInfo[ i ][ zZ ] = Z;
  102. ZgradaInfo[ i ][ zTip ] = ztip;
  103. ZgradaInfo[ i ][ zBrojStanova ] = 0;
  104. ZgradaInfo[ i ][ zVW ] = i;
  105. ZgradaInfo[ i ][ zID ] = CreatePickup(19132, 1, X,Y,Z, 0);
  106. format(str, sizeof(str), "Zgrada [ID:%d]\n{FFFFFF}Za ulazak u zgradu pritisnite\n{0077C7}'ENTER'", i);
  107. z3DText[ i ] = Create3DTextLabel(str, 0x0077C7FF, X,Y,Z, 10.0, 0, 0);
  108. SaveZgrada(i);
  109. return 1;
  110. }
  111. CMD:kreirajstan(playerid, params[]) {
  112.  
  113. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "Niste RCON Admin.");
  114. if(GetPlayerVirtualWorld(playerid) == 0) return SendClientMessage(playerid, -1, "Morate biti u zgradi kako biste napravili stan (/kreirajzgradu).");
  115. new stip, pare, i = NextStanID(MAX_STANOVI), str[ 150 ], Float:X, Float:Y, Float:Z;
  116. if(sscanf(params, "dd", stip, pare) || stip < 1 || stip > 3) {
  117. SendClientMessage(playerid, -1, "/kreirajstan [Tip] [Pare]");
  118. SendClientMessage(playerid, -1, "Tip 1 - Mali stan | Tip 2 - Srednji stan | Tip 3 - Veliki stan");
  119. return 1;
  120. }
  121. GetPlayerPos(playerid, X,Y,Z);
  122. StanInfo[ i ][ sX ] = X;
  123. StanInfo[ i ][ sY ] = Y;
  124. StanInfo[ i ][ sZ ] = Z;
  125. StanInfo[ i ][ sTip ] = stip;
  126. StanInfo[ i ][ sPare ] = pare;
  127. StanInfo[ i ][ sKupljen ] = false;
  128. StanInfo[ i ][ sVW ] = i;
  129. StanInfo[ i ][ sZgrada ] = GetPlayerVirtualWorld(playerid);
  130. strmid(StanInfo[ i ][ sVlasnik ], "Niko", 0, strlen("Niko"), MAX_PLAYER_NAME);
  131. StanInfo[ i ][ sID ] = CreatePickup(1272, 1, X,Y,Z, GetPlayerVirtualWorld(playerid));
  132. switch(stip) {
  133. case 1: format(str, sizeof(str), "Mali stan na prodaju!\nCena: %d$\nZa kupovinu koristite\n/kupistan", pare);
  134. case 2: format(str, sizeof(str), "Srednji stan na prodaju!\nCena: %d$\nZa kupovinu koristite\n/kupistan", pare);
  135. case 3: format(str, sizeof(str), "Veliki stan na prodaju!\nCena: %d$\nZa kupovinu koristite\n/kupistan", pare);
  136. }
  137. s3DText[ i ] = Create3DTextLabel(str, 0xFFFFFFFF, X,Y,Z, 10.0, GetPlayerVirtualWorld(playerid), 0);
  138. SaveStan(i);
  139. return 1;
  140. }
  141. CMD:kupistan(playerid, params[]) {
  142.  
  143. if(KupioStan[ playerid ] != 0) return SendClientMessage(playerid, -1, "Vec imate stan.");
  144. for(new i; i < MAX_STANOVI; i++) {
  145. if(IsPlayerInRangeOfPoint(playerid, 3.0, StanInfo[ i ][ sX ], StanInfo[ i ][ sY ], StanInfo[ i ][ sZ ])) {
  146. if(StanInfo[ i ][ sKupljen ]) return SendClientMessage(playerid, -1, "Taj stan je vec kupljen.");
  147. if(StanInfo[ i ][ sPare ] > GetPlayerMoney(playerid)) return SendClientMessage(playerid, -1, "Nemate dovoljno novca.");
  148. new str[ 60 ];
  149. switch(StanInfo[ i ][ sTip ]) {
  150. case 1: format(str, sizeof(str), "Mali stan\nVlasnik: %s", ImeIgraca(playerid));
  151. case 2: format(str, sizeof(str), "Srednji stan\nVlasnik: %s", ImeIgraca(playerid));
  152. case 3: format(str, sizeof(str), "Veliki stan\nVlasnik: %s", ImeIgraca(playerid));
  153. }
  154. strmid(StanInfo[ i ][ sVlasnik ], ImeIgraca(playerid), 0, strlen(ImeIgraca(playerid)), MAX_PLAYER_NAME);
  155. Update3DTextLabelText(s3DText[ i ], 0xFFFFFFFF, str);
  156. StanInfo[ i ][ sKupljen ] = true;
  157. KupioStan[ playerid ] = i;
  158. GivePlayerMoney(playerid, -StanInfo[ i ][ sPare ]);
  159. SaveStan(i);
  160. }
  161. }
  162. return 1;
  163. }
  164. SaveZgrada(id) {
  165.  
  166. new sFile[ 60 ];
  167. format(sFile, sizeof(sFile), ZGRADE_FILE, id);
  168. new INI:File = INI_Open(sFile);
  169. INI_WriteFloat(File, "X", ZgradaInfo[ id ][ zX ]);
  170. INI_WriteFloat(File, "Y", ZgradaInfo[ id ][ zY ]);
  171. INI_WriteFloat(File, "Z", ZgradaInfo[ id ][ zZ ]);
  172. INI_WriteInt(File, "Broj_Stanova", ZgradaInfo[ id ][ zBrojStanova ]);
  173. INI_Close(File);
  174. return 1;
  175. }
  176. SaveStan(id) {
  177.  
  178. new sFile[ 60 ];
  179. format(sFile, sizeof(sFile), STANOVI_FILE, id);
  180. new INI:File = INI_Open(sFile);
  181. INI_WriteBool(File, "Kupljen", StanInfo[ id ][ sKupljen ]);
  182. INI_WriteString(File, "Vlasnik", StanInfo[ id ][ sVlasnik ]);
  183. INI_WriteFloat(File, "X", StanInfo[ id ][ sX ]);
  184. INI_WriteFloat(File, "Y", StanInfo[ id ][ sY ]);
  185. INI_WriteFloat(File, "Z", StanInfo[ id ][ sZ ]);
  186. INI_WriteInt(File, "Pare", StanInfo[ id ][ sPare ]);
  187. INI_WriteInt(File, "Zgrada", StanInfo[ id ][ sZgrada ]);
  188. INI_Close(File);
  189. return 1;
  190. }
  191. NextZgradaID(const len) {
  192. new id = (-1);
  193. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  194. provjera = ( loop+1 );
  195. format( Data_, ( sizeof Data_ ), ZGRADE_FILE, provjera );
  196. if(!fexist(Data_)) {
  197. id = ( provjera );
  198. break; } }
  199. return ( id );
  200. }
  201. NextStanID(const len) {
  202. new id = (-1);
  203. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  204. provjera = ( loop+1 );
  205. format( Data_, ( sizeof Data_ ), STANOVI_FILE, provjera );
  206. if(!fexist(Data_)) {
  207. id = ( provjera );
  208. break; } }
  209. return ( id );
  210. }
  211. ImeIgraca( id ) {
  212. new ime[ MAX_PLAYER_NAME ];
  213. GetPlayerName( id, ime, sizeof ime);
  214. return ime;
  215. }
Advertisement
Add Comment
Please, Sign In to add comment