· 7 years ago · Sep 03, 2018, 09:10 AM
1/*
2 Dinamik Müzik Sistemi. Kodlayan: Zoxy
3
4 Version: 1.0
5*/
6#include <a_samp>
7#include <a_mysql>
8#include <sscanf2>
9#include <zcmd>
10#include <MV_Youtube>
11// -------------------------- MYSQL BILGILERI -------------------------
12#define SQL_HOST "localhost"
13#define SQL_USER "root"
14#define SQL_PASS ""
15#define SQL_DB ""
16
17new MySQL:sqlconnection;
18
19#define MAX_MUSIC 500 // Maksimum oluşturulabilecek müzik sayısıdır.
20#define DIALOG_MUZIKADD 9541
21#define DIALOG_MUZIKMENU 9115
22#define DIALOG_MUZIKLER 9531
23#define DIALOG_ARA 8555
24// --------------------------------------------------------------------
25
26enum Music
27{
28 mID,
29 bool:mExists,
30 mIsim[40],
31 mLink[100]
32}
33new Muzik[MAX_MUSIC][Music];
34
35new MuzikAd[MAX_PLAYERS][40];
36public OnFilterScriptInit()
37{
38 print("\n--------------------------------------");
39 print(" Dinamik Müzik Sistemi yüklenmiştir. Kodlayan: Zoxy");
40 print("--------------------------------------\n");
41
42 sqlconnection = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
43 if(mysql_errno(sqlconnection) == 0)
44 {
45 print("MySQL ile bağlantı başarılı!");
46 mysql_query(sqlconnection, "CREATE TABLE IF NOT EXISTS `muzikler` (`mid` int(12) NOT NULL AUTO_INCREMENT, `Ad` varchar(40) NOT NULL, `Link` varchar(100) NOT NULL, PRIMARY KEY(`mid`))");
47 MuzikYukle();
48 }
49 else
50 {
51 print("MySQL ile bağlantı başarısız!");
52 }
53 return 1;
54}
55
56public OnFilterScriptExit()
57{
58 return 1;
59}
60public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
61{
62 if(dialogid == DIALOG_MUZIKADD)
63 {
64 if(response)
65 {
66 if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_MUZIKADD, DIALOG_STYLE_INPUT, "Müzik Ekle","Lütfen müziğin youtube linkini girin:", "Ekle", "Kapat");
67 if(strlen(inputtext) < 10) return ShowPlayerDialog(playerid, DIALOG_MUZIKADD, DIALOG_STYLE_INPUT, "Müzik Ekle","Lütfen müziğin youtube linkini girin:", "Ekle", "Kapat");
68 if(!IsValidYoutubeURL(inputtext))
69 {
70 SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Bu youtube linki hatalı.");
71 return ShowPlayerDialog(playerid, DIALOG_MUZIKADD, DIALOG_STYLE_INPUT, "Müzik Ekle","Lütfen müziğin youtube linkini girin:", "Ekle", "Kapat");
72 }
73 new id = Muzik_Ekle(MuzikAd[playerid], inputtext);
74 new string[50];
75 if(id == -1) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Müzik oluşturulamadı, daha sonra tekrar deneyiniz."), format(MuzikAd[playerid], 32, "");
76 else format(string, sizeof(string), "Müzik başarıyla oluşturuldu, ID: %d", id), SendClientMessage(playerid, 0x00FF4CFF, string);
77 }
78 }
79 if(dialogid == DIALOG_MUZIKMENU)
80 {
81 if(response)
82 {
83 if(listitem == 0)
84 {
85 ShowPlayerDialog(playerid, DIALOG_ARA, DIALOG_STYLE_INPUT, "Ara", "Lütfen aratmak istediğiniz müziğin adını giriniz:", "Ara", "Geri");
86 }
87 if(listitem == 1)
88 {
89 MuzikListele(playerid, 1);
90 }
91 }
92 }
93 if(dialogid == DIALOG_ARA)
94 {
95 if(!response) return ShowPlayerDialog(playerid, DIALOG_MUZIKMENU, DIALOG_STYLE_LIST, "Müzik", "{D0AEEB}» {FFFFFF}Ad ile ara\n{D0AEEB}» {FFFFFF}Müzikleri Listele", "Seç","Kapat");
96 if(response)
97 {
98 if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_ARA, DIALOG_STYLE_INPUT, "Ara", "Lütfen aratmak istediğiniz müziğin adını giriniz:", "Ara", "Geri");
99 if(strlen(inputtext) < 3)
100 {
101 SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Yazı çok kısa, 3 karakterden fazla olmalı!");
102 return ShowPlayerDialog(playerid, DIALOG_ARA, DIALOG_STYLE_INPUT, "Ara", "Lütfen aratmak istediğiniz müziğin adını giriniz:", "Ara", "Geri");
103 }
104 MuzikListele(playerid, 0, inputtext);
105 }
106 }
107 if(dialogid == DIALOG_MUZIKLER)
108 {
109 if(response)
110 {
111 new id = strval(inputtext);
112 if(Muzik[id][mExists])
113 {
114 new str[184];
115 PlayYoutubeVideoFor(Muzik[id][mLink], playerid);
116 format(str, sizeof(str), "{FFFFFF}Şuanda {00FF4C}'%s' {FFFFFF}adlı şarkı çalıyor. Kapatmak için '/mkapat' komutunu kullanabilirsiniz.", Muzik[id][mIsim]);
117 SendClientMessage(playerid, -1, str);
118 }
119 }
120 }
121 return 1;
122}
123CMD:muzikekle(playerid, params[])
124{
125 new muzikad[40];
126 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin deÄŸilsiniz.");
127 if(sscanf(params, "s[40]", muzikad)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/muzikekle [isim]");
128 format(MuzikAd[playerid], 40, muzikad);
129 ShowPlayerDialog(playerid, DIALOG_MUZIKADD, DIALOG_STYLE_INPUT, "Müzik Ekle","Lütfen müziğin youtube linkini girin:", "Ekle", "Kapat");
130 return 1;
131}
132CMD:muziksil(playerid, params[])
133{
134 new id;
135 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin deÄŸilsiniz.");
136 if(sscanf(params, "i", id)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/muziksil [ID]");
137 if ((id < 0 || id >= MAX_MUSIC) || !Muzik[id][mExists]) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Hatalı ID girdiniz.");
138 Muzik_Sil(id);
139 SendClientMessage(playerid, 0x00FF4CFF, "Müzik silindi.");
140 return 1;
141}
142CMD:muzikler(playerid)
143{
144 ShowPlayerDialog(playerid, DIALOG_MUZIKMENU, DIALOG_STYLE_LIST, "Müzik", "{D0AEEB}» {FFFFFF}Ad ile ara\n{D0AEEB}» {FFFFFF}Müzikleri Listele", "Seç","Kapat");
145 return 1;
146}
147CMD:muzikduzenle(playerid, params[])
148{
149 new id, islem[5], string[128];
150 if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}RCON Admin deÄŸilsiniz.");
151 if(sscanf(params, "is[5]S()[128]",id, islem, string))
152 {
153 SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/muzikduzenle [ID] [İşlem]");
154 return SendClientMessage(playerid, -1, "{00FF4C}[IÅžLEM]: {FFFFFF}Ad, Link");
155 }
156 if((id < 0 || id >= MAX_MUSIC) || !Muzik[id][mExists]) return SendClientMessage(playerid, -1, "{FF0000}[HATA]: {FFFFFF}Hatalı ID girdiniz.");
157 new query[224];
158 if (!strcmp(islem, "Ad", true))
159 {
160 new yeniisim[40];
161 if(sscanf(string, "s[40]", yeniisim)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/muzikduzenle [ID] [Ad] [Yeni Isim]");
162 format(Muzik[id][mIsim], 40, yeniisim);
163 format(query,sizeof(query), "UPDATE `muzikler` SET `Ad` = '%s' WHERE `mid` = '%d'", yeniisim, Muzik[id][mID]);
164 mysql_query(sqlconnection, query);
165 SendClientMessage(playerid, 0x00FF4CFF, "Müzik adı başarıyla değiştirilmiştir.");
166 }
167 if (!strcmp(islem, "Link", true))
168 {
169 new newlink[100];
170 if(sscanf(string, "s[100]", newlink)) return SendClientMessage(playerid, -1, "{00FF4C}[KULLANIM]: {FFFFFF}/muzikduzenle [ID] [Link] [Yeni Link]");
171 format(Muzik[id][mLink], 100, newlink);
172 format(query,sizeof(query), "UPDATE `muzikler` SET `Link` = '%s' WHERE `mid` = '%d'", newlink, Muzik[id][mID]);
173 mysql_query(sqlconnection, query);
174 SendClientMessage(playerid, 0x00FF4CFF, "Müzik linki başarıyla değiştirilmiştir.");
175 }
176 return 1;
177}
178CMD:mkapat(playerid)
179{
180 StopAudioStreamForPlayer(playerid);
181 SendClientMessage(playerid, 0x00FF4CFF, "Müzik kapatıldı.");
182 return 1;
183}
184// ************************ FONKSIYONLAR ****************************************
185stock MuzikListele(playerid, sec = 1, arama[] = "")
186{
187 new str[1024], string[100], muziksayisi;
188 strcat(str, "ID\tIsim\n");
189 if(sec == 1)
190 {
191 for(new i; i<MAX_MUSIC; i++)
192 {
193 if(Muzik[i][mExists])
194 {
195 format(string, sizeof(string), "%d\t%s\n", i, Muzik[i][mIsim]);
196 strcat(str, string);
197 muziksayisi++;
198 if(muziksayisi >= 50) break;
199 }
200 }
201 ShowPlayerDialog(playerid, DIALOG_MUZIKLER, DIALOG_STYLE_TABLIST_HEADERS, "Müzikler", str, "Çal","Geri");
202 }
203 else if(sec == 0)
204 {
205 for(new i; i<MAX_MUSIC; i++)
206 {
207 if(Muzik[i][mExists])
208 {
209 if(strfind(Muzik[i][mIsim], arama, true) != -1)
210 {
211 format(string, sizeof(string), "%d\t%s\n", i, Muzik[i][mIsim]);
212 strcat(str, string);
213 muziksayisi++;
214 if(muziksayisi >= 10) break;
215 }
216 }
217 }
218 ShowPlayerDialog(playerid, DIALOG_MUZIKLER, DIALOG_STYLE_TABLIST_HEADERS, "Arama Sonuçları", str, "Çal","Geri");
219 }
220}
221stock MuzikYukle()
222{
223 mysql_query(sqlconnection, "SELECT * FROM `muzikler`");
224 new rows;
225 cache_get_row_count(rows);
226 for(new i; i<rows; i++)
227 {
228 Muzik[i][mExists] = true;
229 cache_get_value_name_int(i, "mid", Muzik[i][mID]);
230 cache_get_value_name(i, "Ad",Muzik[i][mIsim], 40);
231 cache_get_value_name(i, "Link",Muzik[i][mLink], 100);
232 }
233}
234stock Muzik_Ekle(ad[], link[])
235{
236 if(!strlen(ad) || !strlen(link)) return -1;
237 for(new i; i<MAX_MUSIC; i++)
238 {
239 if(!Muzik[i][mExists])
240 {
241 Muzik[i][mExists] = true;
242 format(Muzik[i][mIsim], 40, ad);
243 format(Muzik[i][mLink], 100, link);
244 new query[300];
245 format(query, sizeof(query), "INSERT INTO `muzikler` (`Ad`, `Link`) VALUES ('%s', '%s')",SQL_ReturnEscaped(ad), SQL_ReturnEscaped(link));
246 mysql_query(sqlconnection, query);
247 Muzik[i][mID] = cache_insert_id();
248 return i;
249 }
250 }
251 return -1;
252}
253stock Muzik_Sil(muzikid)
254{
255 if(Muzik[muzikid][mExists] == false) return -1;
256 Muzik[muzikid][mExists] = false;
257 format(Muzik[muzikid][mIsim], 40, "");
258 format(Muzik[muzikid][mLink], 100, "");
259 new query[80];
260 format(query, sizeof(query), "DELETE FROM `muzikler` WHERE `mid` = '%d'", Muzik[muzikid][mID]);
261 mysql_query(sqlconnection, query);
262 return 1;
263}
264stock SQL_ReturnEscaped(const string[])
265{
266 new
267 entry[256];
268
269 mysql_escape_string(string, entry, sizeof(entry) , sqlconnection);
270 return entry;
271}