Вам на сервер добавляет ауди в формате "mp3" другие форматы не поддерживаются .. Команды:
Code
/createsong [ID] [url] [название] (RCON ADMIN) (Для прослушивание песни введите /mp3) /changesong [ID] [url] [название] (RCON ADMIN) (Для измение песни не удаляя их) /mp3 [ID] (Показывает список песен.) /stopmusic (Остановить музыку) /nowplaying (показывает песню, которую вы играете, если вы играете песню)
Для устоновки этого урока у вас должнен быть обезательно сайт с MySQL базами. Для добавление своей песни у вас должно быть в конце обезательно .mp3 . И так начнем уроку: Верху мода:
Code
#include <a_mysql>
#define MAX_SONGS 100 //Вы можете добавить больше песен. #define main 0x9ACD32AA
#pragma tabsize 0 #define MYSQL_HOST "hostname" #define MYSQL_NAME "name" #define MYSQL_DATABASE "databse" #define MYSQL_PASS "pass" new field[128][32],row[128]; new isitplayingrudy[MAX_PLAYERS];
Ищем public OnGameModeInit() и туда вставляем:
Code
mysql_connect(MYSQL_HOST,MYSQL_NAME,MYSQL_DATABASE,MYSQL_PASS); if(mysql_ping() != -1) { print(" "); print("Подключение к базе данных MySQL..."); print(" "); } else { print(" "); print("Невозможно подключиться к базе данных MySQL..."); print("Вы можете иметь проблемы со скриптом..."); print("Проверьте подключенние MySQL базы.."); print(" "); return 1; } Loadsongs();
Примерно так должен быть public:
Code
public OnGameModeInit() { mysql_connect(MYSQL_HOST,MYSQL_NAME,MYSQL_DATABASE,MYSQL_PASS); if(mysql_ping() != -1) { print(" "); print("Подключение к базе данных MySQL..."); print(" "); } else { print(" "); print("Невозможно подключиться к базе данных MySQL..."); print("Вы можете иметь проблемы со скриптом..."); print("Проверьте подключенние MySQL базы.."); print(" "); return 1; } Loadsongs(); return 1; }
После этого ищем public OnPlayerDisconnect(playerid) и туда вставляем:
Code
isitplayingrudy[playerid] = -1;
Примерно так должен выглядеть public:
Code
new String[256]; new songname[MAX_SONGS]; new songlink[MAX_SONGS]; public OnPlayerDisconnect(playerid) { isitplayingrudy[playerid] = -1; return 1; }
После этого ищем public OnPlayerConnect и туда вставляем:
Code
isitplayingrudy[playerid] = -1;
Примерно так должен быть public:
Code
public OnPlayerConnect(playerid) { isitplayingrudy[playerid] = -1; return 1; }
После этого ищем public OnPlayerCommandText и туда вставляем:
Code
new cmd[128], idx; cmd = strtok(cmdtext, idx); if (strcmp("/nowplaying", cmdtext, true, 10) == 0) { if(isitplayingrudy[playerid] == 0) return SendClientMessage(playerid,main,"Не чего не играет....."); format(String,sizeof(String),"Сейчас играет: %s",isitplayingrudy[playerid]); SendClientMessage(playerid,main,String); return 1; } if (strcmp("/mp3", cmdtext, true, 10) == 0) { new count; new tmp[128]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ for(new i = 0;i<MAX_SONGS;i++) { if(DoesSongExist(i)) { format(String,128,"%s - ID: %d",songname[i],i); SendClientMessage(playerid,main,String); } } SendClientMessage(playerid,main,"Использование: /mp3 [ID]"); return 1; } if(count == 0) return SendClientMessage(playerid,main,"Нет песни добавлены в данный момент."); if(count > 0) { // ShowPlayerDialog(playerid, 1912, DIALOG_STYLE_LIST, "MP3 Player",String,"Играть","Выйти"); for(new i = 0;i<MAX_SONGS;i++) { if(DoesSongExist(i)) { StopAudioStreamForPlayer(playerid); PlayAudioStreamForPlayer(playerid, songlink[i]); format(String,sizeof(String),"Сейчас играет: %s",songname[i]); SendClientMessage(playerid,main,String); isitplayingrudy[playerid] = i; } } } return 1; } if (strcmp("/stopmusic", cmdtext, true, 10) == 0) { StopAudioStreamForPlayer(playerid); return 1; } if (strcmp("/changesong", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new tmp[128],tmp2[128]; tmp = strtok(cmdtext, idx); tmp2 = strtok(cmdtext, idx); if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, 0xFFFFFFFF, "Использование: /changesong [ID] [ссылка] [Название]"); new songid = strval(tmp); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } if(!DoesSongExist(songid)) return SendClientMessage(playerid, main, "ID песни не существует. Для создания песни введите /createsong [id] [ссылку на песню] [Название]"); format(String,sizeof(String),"Песня (ID,Название,ссылка) ценности (%d,%s,%s)",songid,result,tmp2); mysql_query(String); format(String,sizeof(String),"Песня была изменена что-бы проверить введите /mp3 . ID: %d , Название: %s & ссылка: %s",songid,result,tmp2); SendClientMessage(playerid,main,String); return 1; } if (strcmp("/createsong", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new tmp[128],tmp2[128]; tmp = strtok(cmdtext, idx); tmp2 = strtok(cmdtext, idx); if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, 0xFFFFFFFF, "Использование: /createsong [ID] [Ссылка] [Название]"); new songid = strval(tmp); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
if(DoesSongExist(songid)) return SendClientMessage(playerid, main, "ID песни не существует. Для создания песни введите /createsong [id] [ссылку на песню] [Название]"); format(String,sizeof(String),"Песня (ID,Название,ссылка) ценности (%d,%s,%s)",songid,result,tmp2); mysql_query(String); format(String,sizeof(String),"Песня была изменена что-бы проверить введите /mp3 . ID: %d , Название: %s & ссылка: %s",songid,result,tmp2); SendClientMessage(playerid,main,String); return 1; }
Примерно так должен быть public:
Code
public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[128], idx; cmd = strtok(cmdtext, idx); if (strcmp("/nowplaying", cmdtext, true, 10) == 0) { if(isitplayingrudy[playerid] == 0) return SendClientMessage(playerid,main,"Не чего не играет....."); format(String,sizeof(String),"Сейчас играет: %s",isitplayingrudy[playerid]); SendClientMessage(playerid,main,String); return 1; } if (strcmp("/mp3", cmdtext, true, 10) == 0) { new count; new tmp[128]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ for(new i = 0;i<MAX_SONGS;i++) { if(DoesSongExist(i)) { format(String,128,"%s - ID: %d",songname[i],i); SendClientMessage(playerid,main,String); } } SendClientMessage(playerid,main,"Использование: /mp3 [ID]"); return 1; } if(count == 0) return SendClientMessage(playerid,main,"Нет песни добавлены в данный момент."); if(count > 0) { // ShowPlayerDialog(playerid, 1912, DIALOG_STYLE_LIST, "MP3 Player",String,"Играть","Выйти"); for(new i = 0;i<MAX_SONGS;i++) { if(DoesSongExist(i)) { StopAudioStreamForPlayer(playerid); PlayAudioStreamForPlayer(playerid, songlink[i]); format(String,sizeof(String),"Сейчас играет: %s",songname[i]); SendClientMessage(playerid,main,String); isitplayingrudy[playerid] = i; } } } return 1; } if (strcmp("/stopmusic", cmdtext, true, 10) == 0) { StopAudioStreamForPlayer(playerid); return 1; } if (strcmp("/changesong", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new tmp[128],tmp2[128]; tmp = strtok(cmdtext, idx); tmp2 = strtok(cmdtext, idx); if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, 0xFFFFFFFF, "Использование: /changesong [ID] [ссылка] [Название]"); new songid = strval(tmp); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } if(!DoesSongExist(songid)) return SendClientMessage(playerid, main, "ID песни не существует. Для создания песни введите /createsong [id] [ссылку на песню] [Название]"); format(String,sizeof(String),"Песня (ID,Название,ссылка) ценности (%d,%s,%s)",songid,result,tmp2); mysql_query(String); format(String,sizeof(String),"Песня была изменена что-бы проверить введите /mp3 . ID: %d , Название: %s & ссылка: %s",songid,result,tmp2); SendClientMessage(playerid,main,String); return 1; } if (strcmp("/createsong", cmdtext, true, 10) == 0) { if(!IsPlayerAdmin(playerid)) return 0; new tmp[128],tmp2[128]; tmp = strtok(cmdtext, idx); tmp2 = strtok(cmdtext, idx); if(!strlen(tmp) || !strlen(tmp2)) return SendClientMessage(playerid, 0xFFFFFFFF, "Использование: /createsong [ID] [Ссылка] [Название]"); new songid = strval(tmp); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
if(DoesSongExist(songid)) return SendClientMessage(playerid, main, "ID песни не существует. Для создания песни введите /createsong [id] [ссылку на песню] [Название]"); format(String,sizeof(String),"Песня (ID,Название,ссылка) ценности (%d,%s,%s)",songid,result,tmp2); mysql_query(String); format(String,sizeof(String),"Песня была изменена что-бы проверить введите /mp3 . ID: %d , Название: %s & ссылка: %s",songid,result,tmp2); SendClientMessage(playerid,main,String); return 1; } return 0; }
После этого ищем public OnDialogResponse и туда вставляем:
Прикольно) Думаю применение технологие найти легко 1. Вы сейчас в интернете. 2. Вы на сайте www.forum-pawno.net.ru. 3. Вы читаете это. 5. Вы не заметили что отсутствует пункт 4. 6. Вы сейчас это проверили. 7. Вы улыбаетесь.
Как я понял, MySQL, это такая ерунда, которая читает файлы с компьютера, а не строчки из мода? AddPlayerClass(За компьтером); P.S Люблю набивать посты! =)