Guest User

Untitled

a guest
Aug 31st, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.21 KB | None | 0 0
  1. /*
  2. Dinamik GPS Sistemi. Kodlayan: Zoxy
  3. */
  4. #include <a_samp>
  5. #include <a_mysql>
  6. #include <izcmd>
  7. #include <sscanf2>
  8. // -----------------------MYSQL BILGILERI --------------------------
  9. #define SQL_HOST "localhost" // Mysql host adresi.
  10. #define SQL_USER "root" // Mysql kullanici adi.
  11. #define SQL_PASS "" // Mysql sifre.
  12. #define SQL_DB "" // Mysql veritabani adi.
  13.  
  14. new MySQL:connection;
  15.  
  16. #define MAX_LOKASYON 200 // Maksimum oluşturulabilecek lokasyon sayısıdır.
  17. #define DIALOG_LOKASYONEKLE 7500 // Dialog id. Mod ile çakışırsa buradan değiştirebilirsiniz.
  18. #define DIALOG_GPS 7600 // Dialog id. Mod ile çakışırsa buradan değiştirebilirsiniz.
  19. new lokasyonsayisi;
  20.  
  21. new GPS[MAX_PLAYERS];
  22. // ----------------------------------------------------------------
  23. enum Lokasyonlar
  24. {
  25. ID,
  26. bool:Exists,
  27. Ad[32],
  28. Float:Pos[3]
  29. }
  30. new Lokasyon[MAX_LOKASYON][Lokasyonlar];
  31.  
  32. public OnFilterScriptInit()
  33. {
  34. print("\n--------------------------------------");
  35. print(" Dinamik GPS sistemi yüklenmiştir. Kodlayan: Zoxy");
  36. print("--------------------------------------\n");
  37.  
  38. connection = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
  39. if(mysql_errno(connection) == 0)
  40. {
  41. print("MySQL ile bağlantı başarılı!");
  42. LokasyonlarYukle();
  43. }
  44. else
  45. {
  46. print("MySQL ile bağlantı başarısız! Sistem çalışmayacaktır!");
  47. }
  48. return 1;
  49. }
  50.  
  51. public OnFilterScriptExit()
  52. {
  53. return 1;
  54. }
  55.  
  56. public OnPlayerConnect(playerid)
  57. {
  58. GPS[playerid] = -1;
  59. return 1;
  60. }
  61.  
  62. public OnPlayerStateChange(playerid, newstate, oldstate)
  63. {
  64. if((oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) && newstate == PLAYER_STATE_ONFOOT && GPS[playerid] != -1)
  65. {
  66. DisablePlayerCheckpoint(playerid);
  67. GPS[playerid] = -1;
  68. SendClientMessage(playerid, -1, "Araçtan indiğiniz için lokasyon işareti haritadan kaldırıldı.");
  69. }
  70. return 1;
  71. }
  72.  
  73. public OnPlayerEnterCheckpoint(playerid)
  74. {
  75. if(GPS[playerid] != -1)
  76. {
  77. DisablePlayerCheckpoint(playerid);
  78. new string[80];
  79. format(string, sizeof(string), "{00FF51}'%s' {FFFFFF}adlı lokasyona ulaştınız.",Lokasyon[GPS[playerid]][Ad]);
  80. SendClientMessage(playerid, -1, string);
  81. GPS[playerid] = -1;
  82. }
  83. return 1;
  84. }
  85.  
  86. public OnPlayerUpdate(playerid)
  87. {
  88. /*if(!IsPlayerInAnyVehicle(playerid) && GPS[playerid] != -1)
  89. {
  90. DisablePlayerCheckpoint(playerid);
  91. GPS[playerid] = -1;
  92. SendClientMessage(playerid, -1, "Araçtan indiğiniz için lokasyon işareti haritadan kaldırıldı.");
  93. }*/
  94. return 1;
  95. }
  96.  
  97. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  98. {
  99. if(dialogid == DIALOG_LOKASYONEKLE)
  100. {
  101. if(response)
  102. {
  103. if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOKASYONEKLE, DIALOG_STYLE_INPUT, "Lokasyon Ekle", "Lütfen lokasyonun adını giriniz:", "Ekle", "Kapat");
  104. if(strlen(inputtext) > 32)
  105. {
  106. SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Lokasyonun adı 32 karakteri geçemez.");
  107. return ShowPlayerDialog(playerid, DIALOG_LOKASYONEKLE, DIALOG_STYLE_INPUT, "Lokasyon Ekle", "Lütfen lokasyonun adını giriniz:", "Ekle", "Kapat");
  108. }
  109. new Float:pozisyon[3];
  110. GetPlayerPos(playerid, pozisyon[0], pozisyon[1], pozisyon[2]);
  111. new id = Lokasyon_Ekle(inputtext, pozisyon[0], pozisyon[1], pozisyon[2]);
  112. if(id != -1) return SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyon başarılı bir şekilde eklendi.");
  113. else SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Lokasyon eklenemedi.");
  114. }
  115. }
  116. if(dialogid == DIALOG_GPS)
  117. {
  118. if(response)
  119. {
  120. new id = strval(inputtext);
  121. if(Lokasyon[id][Exists])
  122. {
  123. SetPlayerCheckpoint(playerid, Lokasyon[id][Pos][0], Lokasyon[id][Pos][1], Lokasyon[id][Pos][2], 5.0);
  124. GPS[playerid] = id;
  125. SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyon haritada işaretlendi. İptal etmek için '/gpsiptal' komutunu kullanabilirsiniz.");
  126. }
  127. }
  128. }
  129. return 1;
  130. }
  131. CMD:lokasyonekle(playerid)
  132. {
  133. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin değilsiniz.");
  134. if(lokasyonsayisi >= MAX_LOKASYON) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Daha fazla lokasyon ekleyemezsiniz.");
  135. if(GetPlayerInterior(playerid) > 0) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}İnterior içerisine lokasyon ekleyemezsiniz.");
  136. ShowPlayerDialog(playerid, DIALOG_LOKASYONEKLE, DIALOG_STYLE_INPUT, "Lokasyon Ekle", "Lütfen lokasyonun adını giriniz:", "Ekle", "Kapat");
  137. return 1;
  138. }
  139. CMD:lokasyonsil(playerid, params[])
  140. {
  141. new id;
  142. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin değilsiniz.");
  143. if(sscanf(params, "i", id)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/lokasyonsil [ID]");
  144. if ((id < 0 || id >= MAX_LOKASYON) || !Lokasyon[id][Exists]) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Hatalı ID girdiniz.");
  145. Lokasyon_Sil(id);
  146. SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyon silindi.");
  147. for(new i; i<GetPlayerPoolSize(); i++)
  148. {
  149. if(IsPlayerConnected(i) && GPS[i] == id)
  150. {
  151. DisablePlayerCheckpoint(i);
  152. GPS[i] = -1;
  153. }
  154. }
  155. return 1;
  156. }
  157. CMD:lokasyonduzenle(playerid,params[])
  158. {
  159. if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin değilsiniz.");
  160. new id, islem[24], string[128];
  161. if (sscanf(params, "ds[24]S()[128]", id, islem, string))
  162. {
  163. SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/lokasyonduzenle [ID] [İşlem]");
  164. return SendClientMessage(playerid, -1, "{00FF4C}[IŞLEM]: {FFFFFF}Ad, Pozisyon");
  165. }
  166. if ((id < 0 || id >= MAX_LOKASYON) || !Lokasyon[id][Exists]) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Hatalı ID girdiniz.");
  167. new query[124];
  168. if (!strcmp(islem, "Ad", true))
  169. {
  170. new yeniisim[32];
  171. if(sscanf(string, "s[32]", yeniisim)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/lokasyonduzenle [ID] [Ad] [Yeni Isim]");
  172. format(Lokasyon[id][Ad], 32, yeniisim);
  173. format(query,sizeof(query), "UPDATE `gps` SET `Ad` = '%s' WHERE `id` = '%d'", yeniisim, Lokasyon[id][ID]);
  174. mysql_query(connection, query);
  175. SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyonun adı başarıyla değiştirildi.");
  176. }
  177. if (!strcmp(islem, "Pozisyon", true))
  178. {
  179. new Float:x, Float:y, Float:z;
  180. GetPlayerPos(playerid, x,y,z);
  181. Lokasyon[id][Pos][0] = x;
  182. Lokasyon[id][Pos][1] = y;
  183. Lokasyon[id][Pos][2] = z;
  184. format(query, sizeof(query), "UPDATE `gps` SET `PosX` = '%.4f', `PosY` = '%.4f', `PosZ` = '%.4f' WHERE `id` = '%d'", x,y,z,Lokasyon[id][ID]);
  185. mysql_query(connection, query);
  186. SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyonun pozisyonu güncellenmiştir.");
  187. }
  188. return 1;
  189. }
  190. CMD:gps(playerid)
  191. {
  192. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Araçta değilsiniz.");
  193. GPSMenu(playerid);
  194. return 1;
  195. }
  196. CMD:gpsiptal(playerid)
  197. {
  198. if(GPS[playerid] == -1) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Herhangi bir lokasyon haritada işaretli değil.");
  199. GPS[playerid] = -1;
  200. DisablePlayerCheckpoint(playerid);
  201.  
  202. return 1;
  203. }
  204. // ---------------------------- FONKSIYONLAR ----------------------------------------------
  205. stock GPSMenu(playerid)
  206. {
  207. new str[1000], string[100];
  208. strcat(str, "ID\tAd\n");
  209. for(new i; i<MAX_LOKASYON; i++) if(Lokasyon[i][Exists])
  210. {
  211. format(string,sizeof(string), "%d\t%s\n", i, Lokasyon[i][Ad]);
  212. strcat(str, string);
  213. }
  214. ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_TABLIST_HEADERS, "GPS", str, "İşaretle","Kapat");
  215. return 1;
  216. }
  217. stock LokasyonlarYukle()
  218. {
  219. mysql_query(connection, "SELECT * FROM `gps`");
  220. new rows;
  221. cache_get_row_count(rows);
  222. printf("Toplam %d lokasyon yüklenmiştir.",rows);
  223. lokasyonsayisi = rows;
  224. for(new i; i<rows; i++)
  225. {
  226. Lokasyon[i][Exists] = true;
  227. cache_get_value_name_int(i, "id", Lokasyon[i][ID]);
  228. cache_get_value_name(i, "Ad", Lokasyon[i][Ad], 32);
  229. cache_get_value_name_float(i, "PosX", Lokasyon[i][Pos][0]);
  230. cache_get_value_name_float(i, "PosY", Lokasyon[i][Pos][1]);
  231. cache_get_value_name_float(i, "PosZ", Lokasyon[i][Pos][2]);
  232. }
  233. }
  234. stock Lokasyon_Ekle(isim[], Float:x, Float:y, Float:z)
  235. {
  236. for(new i; i<MAX_LOKASYON; i++)
  237. {
  238. if(!Lokasyon[i][Exists])
  239. {
  240. Lokasyon[i][Exists] = true;
  241. format(Lokasyon[i][Ad], 32, isim);
  242. Lokasyon[i][Pos][0] = x;
  243. Lokasyon[i][Pos][1] = y;
  244. Lokasyon[i][Pos][2] = z;
  245. new query[184];
  246. format(query, sizeof(query), "INSERT INTO `gps` (`Ad`, `PosX`, `PosY`, `PosZ`) VALUES ('%s','%.4f', '%.4f', '%.4f')", isim, x, y, z);
  247. mysql_query(connection, query);
  248. Lokasyon[i][ID] = cache_insert_id();
  249. lokasyonsayisi++;
  250. return i;
  251. }
  252. }
  253. return -1;
  254. }
  255. stock Lokasyon_Sil(id)
  256. {
  257. if(Lokasyon[id][Exists] == false) return 0;
  258. Lokasyon[id][Exists] = false;
  259. format(Lokasyon[id][Ad], 32, "");
  260. Lokasyon[id][Pos][0]= 0.0;
  261. Lokasyon[id][Pos][1]= 0.0;
  262. Lokasyon[id][Pos][2]= 0.0;
  263. new query[124];
  264. format(query, sizeof(query), "DELETE FROM `gps` WHERE `id` = '%d'", Lokasyon[id][ID]);
  265. mysql_query(connection, query);
  266. lokasyonsayisi--;
  267. return 1;
  268. }
Advertisement
Add Comment
Please, Sign In to add comment