Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Dinamik GPS Sistemi. Kodlayan: Zoxy
- */
- #include <a_samp>
- #include <a_mysql>
- #include <izcmd>
- #include <sscanf2>
- // -----------------------MYSQL BILGILERI --------------------------
- #define SQL_HOST "localhost" // Mysql host adresi.
- #define SQL_USER "root" // Mysql kullanici adi.
- #define SQL_PASS "" // Mysql sifre.
- #define SQL_DB "" // Mysql veritabani adi.
- new MySQL:connection;
- #define MAX_LOKASYON 200 // Maksimum oluşturulabilecek lokasyon sayısıdır.
- #define DIALOG_LOKASYONEKLE 7500 // Dialog id. Mod ile çakışırsa buradan değiştirebilirsiniz.
- #define DIALOG_GPS 7600 // Dialog id. Mod ile çakışırsa buradan değiştirebilirsiniz.
- new lokasyonsayisi;
- new GPS[MAX_PLAYERS];
- // ----------------------------------------------------------------
- enum Lokasyonlar
- {
- ID,
- bool:Exists,
- Ad[32],
- Float:Pos[3]
- }
- new Lokasyon[MAX_LOKASYON][Lokasyonlar];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Dinamik GPS sistemi yüklenmiştir. Kodlayan: Zoxy");
- print("--------------------------------------\n");
- connection = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
- if(mysql_errno(connection) == 0)
- {
- print("MySQL ile bağlantı başarılı!");
- LokasyonlarYukle();
- }
- else
- {
- print("MySQL ile bağlantı başarısız! Sistem çalışmayacaktır!");
- }
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- GPS[playerid] = -1;
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if((oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER) && newstate == PLAYER_STATE_ONFOOT && GPS[playerid] != -1)
- {
- DisablePlayerCheckpoint(playerid);
- GPS[playerid] = -1;
- SendClientMessage(playerid, -1, "Araçtan indiğiniz için lokasyon işareti haritadan kaldırıldı.");
- }
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- if(GPS[playerid] != -1)
- {
- DisablePlayerCheckpoint(playerid);
- new string[80];
- format(string, sizeof(string), "{00FF51}'%s' {FFFFFF}adlı lokasyona ulaştınız.",Lokasyon[GPS[playerid]][Ad]);
- SendClientMessage(playerid, -1, string);
- GPS[playerid] = -1;
- }
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- /*if(!IsPlayerInAnyVehicle(playerid) && GPS[playerid] != -1)
- {
- DisablePlayerCheckpoint(playerid);
- GPS[playerid] = -1;
- SendClientMessage(playerid, -1, "Araçtan indiğiniz için lokasyon işareti haritadan kaldırıldı.");
- }*/
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == DIALOG_LOKASYONEKLE)
- {
- if(response)
- {
- if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOKASYONEKLE, DIALOG_STYLE_INPUT, "Lokasyon Ekle", "Lütfen lokasyonun adını giriniz:", "Ekle", "Kapat");
- if(strlen(inputtext) > 32)
- {
- SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Lokasyonun adı 32 karakteri geçemez.");
- return ShowPlayerDialog(playerid, DIALOG_LOKASYONEKLE, DIALOG_STYLE_INPUT, "Lokasyon Ekle", "Lütfen lokasyonun adını giriniz:", "Ekle", "Kapat");
- }
- new Float:pozisyon[3];
- GetPlayerPos(playerid, pozisyon[0], pozisyon[1], pozisyon[2]);
- new id = Lokasyon_Ekle(inputtext, pozisyon[0], pozisyon[1], pozisyon[2]);
- if(id != -1) return SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyon başarılı bir şekilde eklendi.");
- else SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Lokasyon eklenemedi.");
- }
- }
- if(dialogid == DIALOG_GPS)
- {
- if(response)
- {
- new id = strval(inputtext);
- if(Lokasyon[id][Exists])
- {
- SetPlayerCheckpoint(playerid, Lokasyon[id][Pos][0], Lokasyon[id][Pos][1], Lokasyon[id][Pos][2], 5.0);
- GPS[playerid] = id;
- SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyon haritada işaretlendi. İptal etmek için '/gpsiptal' komutunu kullanabilirsiniz.");
- }
- }
- }
- return 1;
- }
- CMD:lokasyonekle(playerid)
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin değilsiniz.");
- if(lokasyonsayisi >= MAX_LOKASYON) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Daha fazla lokasyon ekleyemezsiniz.");
- if(GetPlayerInterior(playerid) > 0) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}İnterior içerisine lokasyon ekleyemezsiniz.");
- ShowPlayerDialog(playerid, DIALOG_LOKASYONEKLE, DIALOG_STYLE_INPUT, "Lokasyon Ekle", "Lütfen lokasyonun adını giriniz:", "Ekle", "Kapat");
- return 1;
- }
- CMD:lokasyonsil(playerid, params[])
- {
- new id;
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin değilsiniz.");
- if(sscanf(params, "i", id)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/lokasyonsil [ID]");
- if ((id < 0 || id >= MAX_LOKASYON) || !Lokasyon[id][Exists]) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Hatalı ID girdiniz.");
- Lokasyon_Sil(id);
- SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyon silindi.");
- for(new i; i<GetPlayerPoolSize(); i++)
- {
- if(IsPlayerConnected(i) && GPS[i] == id)
- {
- DisablePlayerCheckpoint(i);
- GPS[i] = -1;
- }
- }
- return 1;
- }
- CMD:lokasyonduzenle(playerid,params[])
- {
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin değilsiniz.");
- new id, islem[24], string[128];
- if (sscanf(params, "ds[24]S()[128]", id, islem, string))
- {
- SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/lokasyonduzenle [ID] [İşlem]");
- return SendClientMessage(playerid, -1, "{00FF4C}[IŞLEM]: {FFFFFF}Ad, Pozisyon");
- }
- if ((id < 0 || id >= MAX_LOKASYON) || !Lokasyon[id][Exists]) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Hatalı ID girdiniz.");
- new query[124];
- if (!strcmp(islem, "Ad", true))
- {
- new yeniisim[32];
- if(sscanf(string, "s[32]", yeniisim)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/lokasyonduzenle [ID] [Ad] [Yeni Isim]");
- format(Lokasyon[id][Ad], 32, yeniisim);
- format(query,sizeof(query), "UPDATE `gps` SET `Ad` = '%s' WHERE `id` = '%d'", yeniisim, Lokasyon[id][ID]);
- mysql_query(connection, query);
- SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyonun adı başarıyla değiştirildi.");
- }
- if (!strcmp(islem, "Pozisyon", true))
- {
- new Float:x, Float:y, Float:z;
- GetPlayerPos(playerid, x,y,z);
- Lokasyon[id][Pos][0] = x;
- Lokasyon[id][Pos][1] = y;
- Lokasyon[id][Pos][2] = z;
- format(query, sizeof(query), "UPDATE `gps` SET `PosX` = '%.4f', `PosY` = '%.4f', `PosZ` = '%.4f' WHERE `id` = '%d'", x,y,z,Lokasyon[id][ID]);
- mysql_query(connection, query);
- SendClientMessage(playerid, 0xFFFFFFFF, "Lokasyonun pozisyonu güncellenmiştir.");
- }
- return 1;
- }
- CMD:gps(playerid)
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Araçta değilsiniz.");
- GPSMenu(playerid);
- return 1;
- }
- CMD:gpsiptal(playerid)
- {
- if(GPS[playerid] == -1) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Herhangi bir lokasyon haritada işaretli değil.");
- GPS[playerid] = -1;
- DisablePlayerCheckpoint(playerid);
- return 1;
- }
- // ---------------------------- FONKSIYONLAR ----------------------------------------------
- stock GPSMenu(playerid)
- {
- new str[1000], string[100];
- strcat(str, "ID\tAd\n");
- for(new i; i<MAX_LOKASYON; i++) if(Lokasyon[i][Exists])
- {
- format(string,sizeof(string), "%d\t%s\n", i, Lokasyon[i][Ad]);
- strcat(str, string);
- }
- ShowPlayerDialog(playerid, DIALOG_GPS, DIALOG_STYLE_TABLIST_HEADERS, "GPS", str, "İşaretle","Kapat");
- return 1;
- }
- stock LokasyonlarYukle()
- {
- mysql_query(connection, "SELECT * FROM `gps`");
- new rows;
- cache_get_row_count(rows);
- printf("Toplam %d lokasyon yüklenmiştir.",rows);
- lokasyonsayisi = rows;
- for(new i; i<rows; i++)
- {
- Lokasyon[i][Exists] = true;
- cache_get_value_name_int(i, "id", Lokasyon[i][ID]);
- cache_get_value_name(i, "Ad", Lokasyon[i][Ad], 32);
- cache_get_value_name_float(i, "PosX", Lokasyon[i][Pos][0]);
- cache_get_value_name_float(i, "PosY", Lokasyon[i][Pos][1]);
- cache_get_value_name_float(i, "PosZ", Lokasyon[i][Pos][2]);
- }
- }
- stock Lokasyon_Ekle(isim[], Float:x, Float:y, Float:z)
- {
- for(new i; i<MAX_LOKASYON; i++)
- {
- if(!Lokasyon[i][Exists])
- {
- Lokasyon[i][Exists] = true;
- format(Lokasyon[i][Ad], 32, isim);
- Lokasyon[i][Pos][0] = x;
- Lokasyon[i][Pos][1] = y;
- Lokasyon[i][Pos][2] = z;
- new query[184];
- format(query, sizeof(query), "INSERT INTO `gps` (`Ad`, `PosX`, `PosY`, `PosZ`) VALUES ('%s','%.4f', '%.4f', '%.4f')", isim, x, y, z);
- mysql_query(connection, query);
- Lokasyon[i][ID] = cache_insert_id();
- lokasyonsayisi++;
- return i;
- }
- }
- return -1;
- }
- stock Lokasyon_Sil(id)
- {
- if(Lokasyon[id][Exists] == false) return 0;
- Lokasyon[id][Exists] = false;
- format(Lokasyon[id][Ad], 32, "");
- Lokasyon[id][Pos][0]= 0.0;
- Lokasyon[id][Pos][1]= 0.0;
- Lokasyon[id][Pos][2]= 0.0;
- new query[124];
- format(query, sizeof(query), "DELETE FROM `gps` WHERE `id` = '%d'", Lokasyon[id][ID]);
- mysql_query(connection, query);
- lokasyonsayisi--;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment