BE-Shomy

INI Kontejneri

Mar 17th, 2018
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.19 KB | None | 0 0
  1. #include < a_samp >
  2. #include < YSI\y_ini >
  3. #include < YSI\y_commands >
  4.  
  5. #define MAX_KONTEJNERI 150
  6. #define KONTEJNER_FILE "/Kontejneri/%d.ini"
  7.  
  8. #define SCM SendClientMessage
  9.  
  10. #define NOVAC_MIN 100
  11. #define NOVAC_MAX 1000
  12. #define METKOVI_MIN 1
  13. #define METKOVI_MAX 30
  14.  
  15. enum kontInfo {
  16.  
  17. Float:kontPosX,
  18. Float:kontPosY,
  19. Float:kontPosZ,
  20. Float:kontRotX,
  21. Float:kontRotY,
  22. Float:kontRotZ
  23. }
  24.  
  25. new KontInfo[ MAX_KONTEJNERI ][ kontInfo ], KontC[ sizeof(KontInfo) ], Text3D:KontLabel[ sizeof(KontInfo) ], EditKontejner[ MAX_PLAYERS ];
  26. new bool:PretrazujeKont[ MAX_PLAYERS ], PKontTimer[ MAX_PLAYERS ], KontCooldown[ MAX_PLAYERS ];
  27.  
  28. public OnPlayerConnect(playerid) { EditKontejner[ playerid ] = -1; return 1; }
  29. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  30.  
  31. if(response == EDIT_RESPONSE_FINAL) {
  32. if(EditKontejner[ playerid ] != -1) {
  33. new i = EditKontejner[ playerid ];
  34. KontInfo[ i ][ kontPosX ] = fX;
  35. KontInfo[ i ][ kontPosY ] = fY;
  36. KontInfo[ i ][ kontPosZ ] = fZ;
  37. KontInfo[ i ][ kontRotX ] = fRotX;
  38. KontInfo[ i ][ kontRotY ] = fRotY;
  39. KontInfo[ i ][ kontRotZ ] = fRotZ;
  40. DestroyObject(KontC[ i ]);
  41. KontC[ i ] = CreateObject(1439, fX, fY, fZ, fRotX, fRotY, fRotZ);
  42. KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, fX, fY, fZ, 10.0, 0, 0);
  43. SCM(playerid, -1, "Zavrsili ste kreiranje kontejnera.");
  44. SaveKontejner(i);
  45. EditKontejner[ playerid ] = -1;
  46. }
  47. }
  48. return 1;
  49. }
  50. forward LoadKont(id, name[], value[]);
  51. public LoadKont(id, name[], value[]) {
  52.  
  53. INI_Float("Lokacija_X", KontInfo[ id ][ kontPosX ]);
  54. INI_Float("Lokacija_Y", KontInfo[ id ][ kontPosY ]);
  55. INI_Float("Lokacija_Z", KontInfo[ id ][ kontPosZ ]);
  56. INI_Float("Rotacija_X", KontInfo[ id ][ kontRotX ]);
  57. INI_Float("Rotacija_Y", KontInfo[ id ][ kontRotY ]);
  58. INI_Float("Rotacija_Z", KontInfo[ id ][ kontRotZ ]);
  59. return 1;
  60. }
  61. public OnFilterScriptInit() {
  62.  
  63. for(new i; i < MAX_KONTEJNERI; i++) {
  64. new kFile[ 50 ];
  65. format(kFile, sizeof(kFile), KONTEJNER_FILE, i);
  66. if(fexist(kFile)) {
  67. INI_ParseFile(kFile, "LoadKont", .bExtra = true, .extra = i);
  68. KontC[ i ] = CreateObject(1439, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], KontInfo[ i ][ kontRotX ], KontInfo[ i ][ kontRotY ], KontInfo[ i ][ kontRotZ ]);
  69. KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], 10.0, 0, 0);
  70. }
  71. }
  72. return 1;
  73. }
  74. public OnPlayerDeath(playerid, killerid, reason) {
  75.  
  76. if(PretrazujeKont[ playerid ]) { PretrazujeKont[ playerid ] = false; KillTimer(PKontTimer[ playerid ]); }
  77. return 1;
  78. }
  79. forward PretrazivanjeKont(playerid);
  80. public PretrazivanjeKont(playerid) {
  81.  
  82. PretrazujeKont[ playerid ] = false;
  83. TogglePlayerControllable(playerid, true);
  84.  
  85. new rand = random(3);
  86. switch( rand ) {
  87. case 1: {
  88. new metkovi, str[ 45 ];
  89. metkovi = RandomEx(METKOVI_MIN, METKOVI_MAX);
  90. format(str, sizeof(str), "Nasli ste MP5 sa %d metkova u kontejneru.", metkovi);
  91. SCM(playerid, -1, str);
  92. GivePlayerWeapon(playerid, 29, metkovi);
  93. }
  94. case 2: {
  95. new novac, str[ 45 ];
  96. novac = RandomEx(NOVAC_MIN, NOVAC_MAX);
  97. format(str, sizeof(str), "Nasli ste %d$ u kontejneru.", novac);
  98. SCM(playerid, -1, str);
  99. GivePlayerMoney(playerid, novac);
  100. }
  101. case 3: { SCM(playerid, -1, "Niste pronasli nista u kontejneru."); }
  102. }
  103. return 1;
  104. }
  105.  
  106. YCMD:kontejner(playerid, params[], help) {
  107.  
  108. #pragma unused params
  109. #pragma unused help
  110.  
  111. new vreme = gettime(), str[ 60 ];
  112. if(PretrazujeKont[ playerid ]) return SCM(playerid, -1, "Vec pretrazujete kontejner.");
  113. format(str, sizeof(str), "Nije proslo 10 minuta. Preostalo jos %d sekundi.", KontCooldown[ playerid ]+600-vreme);
  114. if(vreme < KontCooldown[ playerid ]+600) return SCM(playerid, -1, str);
  115. for(new i; i < MAX_KONTEJNERI; i++) {
  116. if(IsPlayerInRangeOfPoint(playerid, 4.0, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ])) {
  117. PKontTimer[ playerid ] = SetTimerEx("PretrazivanjeKont", 7000, false, "i", playerid);
  118. GameTextForPlayer(playerid, "Pretrazivanje kontejnera, sacekajte...", 7000, 1);
  119. PretrazujeKont[ playerid ] = true;
  120. TogglePlayerControllable(playerid, false);
  121. ApplyAnimation(playerid,"PED","IDLE_tired",3.0,1,0,0,0,0);
  122. KontCooldown[ playerid ] = gettime();
  123. }
  124. }
  125. return 1;
  126. }
  127. YCMD:kreirajkontejner(playerid, params[], help) {
  128.  
  129. #pragma unused params
  130. #pragma unused help
  131.  
  132. new Float:X, Float:Y, Float:Z, i = NextKontejnerID( MAX_KONTEJNERI );
  133. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  134. if(EditKontejner[ playerid ] != -1) return SCM(playerid, -1, "Vec kreirate kontejner.");
  135. GetPlayerPos(playerid, X,Y,Z);
  136. KontC[ i ] = CreateObject(1439, X+1, Y+1, Z+1, 0.0, 0.0, 0.0);
  137. EditObject(playerid, KontC[ i ]);
  138. EditKontejner[ playerid ] = i;
  139. SCM(playerid, -1, "Zapoceli ste kreiranje kontejnera.");
  140. return 1;
  141. }
  142. stock SaveKontejner(id) {
  143.  
  144. new kFile[ 60 ];
  145. format(kFile, sizeof(kFile), KONTEJNER_FILE, id);
  146. new INI:File = INI_Open(kFile);
  147. INI_WriteFloat(File, "Lokacija_X", KontInfo[ id ][ kontPosX ]);
  148. INI_WriteFloat(File, "Lokacija_Y", KontInfo[ id ][ kontPosY ]);
  149. INI_WriteFloat(File, "Lokacija_Z", KontInfo[ id ][ kontPosZ ]);
  150. INI_WriteFloat(File, "Rotacija_X", KontInfo[ id ][ kontRotX ]);
  151. INI_WriteFloat(File, "Rotacija_Y", KontInfo[ id ][ kontRotY ]);
  152. INI_WriteFloat(File, "Rotacija_Z", KontInfo[ id ][ kontRotZ ]);
  153. INI_Close(File);
  154. }
  155.  
  156. stock NextKontejnerID(const len) {
  157. new id = (-1);
  158. for( new loop = ( 0 ), provjera = ( -1 ), Data_[ 64 ] = "\0"; loop != len; ++ loop ) {
  159. provjera = ( loop+1 );
  160. format( Data_, ( sizeof Data_ ), KONTEJNER_FILE, provjera );
  161. if(!fexist(Data_)) {
  162. id = ( provjera );
  163. break; } }
  164. return ( id );
  165. }
  166. RandomEx(min,max) {
  167. return (min+random(max));
  168. }
Add Comment
Please, Sign In to add comment