Advertisement
BE-Shomy

MySQL Kontejneri

Mar 17th, 2018
481
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.81 KB | None | 0 0
  1. #include < a_samp >
  2. #include < a_mysql >
  3. #include < Pawn.CMD >
  4. #include < foreach >
  5.  
  6. #define MYSQL_HOST "127.0.0.1"
  7. #define MYSQL_USER "root"
  8. #define MYSQL_PASSWORD ""
  9. #define MYSQL_DATABASE "testkont"
  10.  
  11. #define MAX_KONTEJNERI 150
  12.  
  13. #define SCM SendClientMessage
  14.  
  15. #define NOVAC_MIN 100
  16. #define NOVAC_MAX 1000
  17. #define METKOVI_MIN 1
  18. #define METKOVI_MAX 30
  19.  
  20. enum kontInfo {
  21.  
  22. Float:kontPosX,
  23. Float:kontPosY,
  24. Float:kontPosZ,
  25. Float:kontRotX,
  26. Float:kontRotY,
  27. Float:kontRotZ,
  28. kID,
  29. kontID
  30. }
  31.  
  32. new MySQL:g_SQL;
  33.  
  34. new KontInfo[ MAX_KONTEJNERI ][ kontInfo ], Text3D:KontLabel[ sizeof(KontInfo) ], EditKontejner[ MAX_PLAYERS ];
  35. new bool:PretrazujeKont[ MAX_PLAYERS ], PKontTimer[ MAX_PLAYERS ], KontCooldown[ MAX_PLAYERS ], Iterator:ServerKonts<MAX_KONTEJNERI>;
  36.  
  37. public OnPlayerConnect(playerid) { KontCooldown[ playerid ] = 0; EditKontejner[ playerid ] = -1; PretrazujeKont[ playerid ] = false; return 1; }
  38. public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ) {
  39.  
  40. if(response == EDIT_RESPONSE_FINAL) {
  41. if(EditKontejner[ playerid ] != -1) {
  42. new i = EditKontejner[ playerid ], query[ 250 ];
  43. KontInfo[ i ][ kontPosX ] = fX;
  44. KontInfo[ i ][ kontPosY ] = fY;
  45. KontInfo[ i ][ kontPosZ ] = fZ;
  46. KontInfo[ i ][ kontRotX ] = fRotX;
  47. KontInfo[ i ][ kontRotY ] = fRotY;
  48. KontInfo[ i ][ kontRotZ ] = fRotZ;
  49. DestroyObject(KontInfo[ i ][ kID ]);
  50. KontInfo[ i ][ kID ] = CreateObject(1439, fX, fY, fZ, fRotX, fRotY, fRotZ);
  51. KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, fX, fY, fZ, 10.0, 0, 0);
  52. SCM(playerid, -1, "Zavrsili ste kreiranje kontejnera.");
  53. mysql_format(g_SQL, query, sizeof query, "INSERT INTO `kontejneri` (`Lokacija_X`, `Lokacija_Y`, `Lokacija_Z`, `Rotacija_X`, `Rotacija_Y`, `Rotacija_Z`) VALUES ('%f', '%f', '%f', '%f', '%f', '%f')", KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], KontInfo[ i ][ kontRotX ], KontInfo[ i ][ kontRotY ], KontInfo[ i ][ kontRotZ ]);
  54. mysql_tquery(g_SQL, query);
  55. EditKontejner[ playerid ] = -1;
  56. }
  57. }
  58. return 1;
  59. }
  60. public OnFilterScriptInit() {
  61.  
  62. new MySQLOpt: option_id = mysql_init_options();
  63. g_SQL = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, option_id);
  64. if (g_SQL == MYSQL_INVALID_HANDLE || mysql_errno(g_SQL) != 0)
  65. {
  66. print("MySQL konekcija neuspesna. Proverite podatke i databazu");
  67. SendRconCommand("exit");
  68. return 1;
  69. }
  70.  
  71. print("MySQL konekcija, uspesna");
  72. SetupKontTable();
  73. mysql_tquery(g_SQL, "SELECT * FROM `kontejneri`", "LoadKonts", "");
  74. return 1;
  75. }
  76. public OnPlayerDeath(playerid, killerid, reason) {
  77.  
  78. if(PretrazujeKont[ playerid ]) { PretrazujeKont[ playerid ] = false; KillTimer(PKontTimer[ playerid ]); }
  79. return 1;
  80. }
  81. forward PretrazivanjeKont(playerid);
  82. public PretrazivanjeKont(playerid) {
  83.  
  84. PretrazujeKont[ playerid ] = false;
  85. TogglePlayerControllable(playerid, true);
  86.  
  87. new rand = random(3);
  88. switch( rand ) {
  89. case 1: {
  90. new metkovi, str[ 45 ];
  91. metkovi = RandomEx(METKOVI_MIN, METKOVI_MAX);
  92. format(str, sizeof(str), "Nasli ste MP5 sa %d metkova u kontejneru.", metkovi);
  93. SCM(playerid, -1, str);
  94. GivePlayerWeapon(playerid, 29, metkovi);
  95. }
  96. case 2: {
  97. new novac, str[ 45 ];
  98. novac = RandomEx(NOVAC_MIN, NOVAC_MAX);
  99. format(str, sizeof(str), "Nasli ste %d$ u kontejneru.", novac);
  100. SCM(playerid, -1, str);
  101. GivePlayerMoney(playerid, novac);
  102. }
  103. case 3: {
  104. SCM(playerid, -1, "Niste pronasli nista u kontejneru.");
  105. }
  106. }
  107. return 1;
  108. }
  109. forward LoadKonts();
  110. public LoadKonts() {
  111. new rows = cache_num_rows();
  112. if(rows) {
  113.  
  114. for(new i; i < rows; i++) {
  115.  
  116. new id = Iter_Free(ServerKonts);
  117.  
  118. cache_get_value_name_float(i, "Lokacija_X", KontInfo[ id ][ kontPosX ]);
  119. cache_get_value_name_float(i, "Lokacija_Y", KontInfo[ id ][ kontPosY ]);
  120. cache_get_value_name_float(i, "Lokacija_Z", KontInfo[ id ][ kontPosZ ]);
  121. cache_get_value_name_float(i, "Rotacija_X", KontInfo[ id ][ kontRotX ]);
  122. cache_get_value_name_float(i, "Rotacija_Y", KontInfo[ id ][ kontRotY ]);
  123. cache_get_value_name_float(i, "Rotacija_Z", KontInfo[ id ][ kontRotZ ]);
  124.  
  125. KontInfo[ i ][ kID ] = CreateObject(1439, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], KontInfo[ i ][ kontRotX ], KontInfo[ i ][ kontRotY ], KontInfo[ i ][ kontRotZ ]);
  126. KontLabel[ i ] = Create3DTextLabel("/kontejner", 0xFFFFFFFF, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ], 10.0, 0, 0);
  127.  
  128. Iter_Add(ServerKonts, id);
  129. }
  130. }
  131. return 1;
  132. }
  133.  
  134. SetupKontTable() {
  135. mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `kontejneri` (`id` int(11) NOT NULL AUTO_INCREMENT,`Lokacija_X` float NOT NULL,`Lokacija_Y` float NOT NULL,`Lokacija_Z` float NOT NULL,`Rotacija_X` float NOT NULL, `Rotacija_Y` float NOT NULL, `Rotacija_Z` float NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`))");
  136. return 1;
  137. }
  138.  
  139. cmd:kontejner(playerid, params[]) {
  140.  
  141. #pragma unused params
  142.  
  143. new vreme = gettime(), str[ 60 ];
  144. if(PretrazujeKont[ playerid ]) return SCM(playerid, -1, "Vec pretrazujete kontejner.");
  145. format(str, sizeof(str), "Nije proslo 10 minuta. Preostalo jos %d sekundi.", KontCooldown[ playerid ]+600-vreme);
  146. if(vreme < KontCooldown[ playerid ]+600) return SCM(playerid, -1, str);
  147. for(new i; i < MAX_KONTEJNERI; i++) {
  148. if(IsPlayerInRangeOfPoint(playerid, 4.0, KontInfo[ i ][ kontPosX ], KontInfo[ i ][ kontPosY ], KontInfo[ i ][ kontPosZ ])) {
  149. PKontTimer[ playerid ] = SetTimerEx("PretrazivanjeKont", 7000, false, "i", playerid);
  150. GameTextForPlayer(playerid, "Pretrazivanje kontejnera, sacekajte...", 7000, 1);
  151. PretrazujeKont[ playerid ] = true;
  152. TogglePlayerControllable(playerid, false);
  153. ApplyAnimation(playerid,"PED","IDLE_tired",3.0,1,0,0,0,0);
  154. KontCooldown[ playerid ] = gettime();
  155. }
  156. }
  157. return 1;
  158. }
  159. cmd:kreirajkontejner(playerid, params[]) {
  160.  
  161. #pragma unused params
  162.  
  163. new Float:X, Float:Y, Float:Z;
  164. new i = Iter_Free(ServerKonts);
  165. if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "Niste RCON Admin.");
  166. if(EditKontejner[ playerid ] != -1) return SCM(playerid, -1, "Vec kreirate kontejner.");
  167. GetPlayerPos(playerid, X,Y,Z);
  168. KontInfo[ i ][ kID ] = CreateObject(1439, X+1, Y+1, Z+1, 0.0, 0.0, 0.0);
  169. EditObject(playerid, KontInfo[ i ][ kID ]);
  170. EditKontejner[ playerid ] = i;
  171. KontInfo[ i ][ kontID ] = i;
  172. SCM(playerid, -1, "Zapoceli ste kreiranje kontejnera.");
  173. return 1;
  174. }
  175. RandomEx(min,max) {
  176. return (min+random(max));
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement