|
|
Модератор форума: dr40 |
Форум | www.SAMP-TEAM.com » Wiki SA-MP » Вопросы по скриптингу » Real Discoteka (Дискотека, музыка из интернета, работа диджея) |
Real Discoteka |
![]()
Ребят, я вот себе сделал на пляже ЛС танцпол с диджеевским пультом, лазерами :), но я бы хотел еще что-то типа роботы диджея там сделать, чтобы там один человек, который хочет побыть диджеем, подходил к пикапу возле танцпола, ему менялся скин на диджея (например, на ID 19), и он мог подходить к своему пульту, там вводить какую-то команду (например, /playdj), ему появляется окошко, где он вводит прямую ссылку на музыку в Интернете, и эта музыка будет играть на всем танцполе. В инете нигде этого не нашел, к сожалению(( Помогите пожалуйста это сделать, буду очень-очень-очень благодарен!)
06.07.2014 в 21:01
|
![]()
Для начала создай пикап и присвой его переменной
Код new dancepick;//ко всем new new playerdj[MAX_PLAYERS];//для проверки на диджея dancepick = CreatePickup(...)//в OnGameModeInit Ко всем #define добавь это Код #define DJ_URL 2014 Далее в OnPlayerPickupPickup сделай проверку стоит ли игрок у пикапа или нет Код if(pickupid == dancepick) { SetPlayerSkin(playerid,19);//установка скина playerdj[playerid] = 1;//для проверки на диджея при вводе команды } Далее в OnPlayerCommandText Код if(strcmp(cmd, "/playdj", true) == 0) { if(IsPlayerInRangeOfPoint(playerid,Float:range, Float:x, Float:y, Float:z) && playerdj[playerid] == 1) { ShowPlayerDialog(playerid,DJ_URL,DIALOG_STYLE_INPUT,"Выбор трека","Введите URL вашего трека, чтобы его услышали все!!!\n\n","Ок","Отмена"); } } В OnDialogResponse Код if(dialogid == DJ_URL) { if(response) { for(new i=0; i<MAX_PLAYERS;i++) { if(IsPlayerInRangeOfPoint(i,Float:range, Float:x, Float:y, Float:z)) { PlayAudioStreamForPlayer(i, inputtext); } } } } В общем, система не сложная, главное понять что как работает. Если код не рабочий, пиши. 06.07.2014 в 21:59
|
![]()
У меня вот такая ошибка вылеает при компилировании:
C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(3248) : error 017: undefined symbol "range" C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(25975) : error 017: undefined symbol "range" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 2 Errors. 07.07.2014 в 21:41
|
![]()
В IsPlayerInRangeOfPoint Float:Range замени на 1.0 или 2.0
07.07.2014 в 22:14
|
![]()
хм, у меня такого паблика в павно вообще нет..
Добавлено (07.07.2014, 22:50) 07.07.2014 в 22:50
|
![]()
IsPlayerInRangeOfPoint это не паблик это функция которую я в своем примере использовал, там указано id игрока, радиус действия и коорды.
Float:Range и есть радиус действия, просто вместо Float:Range поставь 1.0 или 2.0 p.s.: В скайпе не отвечаю. 07.07.2014 в 23:09
|
![]()
Сделал так как Вы сказали, но:
C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(3248) : error 017: undefined symbol "x" C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(25975) : error 017: undefined symbol "x" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 2 Errors. 07.07.2014 в 23:23
|
![]()
Вместо Float:x,Float:y,Float:z нужно поставить свои координаты
07.07.2014 в 23:31
|
![]()
Ура, все получилось!
![]() Сделайте пожалуйста еще такое: 1) Эту музыку с танцплощадки слышно аж до мерии :), а как можно ограничить радиус звучания (чтобы звучало только в некотором радиусе от танцпола или пульта)?; 2) Когда я подхожу к пульту в обычном скине и набираю команду /playdj, то окошко, где вводится ссылка песни, всеравно выскакивает, а как сделать, чтобы оно выскакивало только у диджея, который переоделся (сменил скин) у пикапа?; 3) Какой код еще нужно вставить, чтобы человек, который на тот момент был dj-ем, снова подошел к тому же пикапу, и эму вернулся тот же скин, что был до этого? Ну и чтобы у него не было права доступа к пульту (тоесть чтобы ему не выскакивало окошко, где вводится URL песни); 4) Ну и чтобы на танцполе был только один диджей, тоесть, чтобы когда там он уже есть, то когда другой человек подходит к пикапу, ему не меняется скин на dj-я, а в чате пишет что-то типа, что там dj уже есть (или без этого). Помогите пожалуйста с этим. ![]() P.S. и еще такое: когда тот игрок, который устроился диджеем, отошел на достаточно большое расстояние от пульта и танцпола, то чтобы его работа dj-я автоматически прекрашщалась, ему на месте возвращался его скин, и чтобы другой игрок возле танцпола смог наступить на тот же пикап, и уже ему выдавался скин и работа dj-я. ![]() 08.07.2014 в 00:14
|
![]()
В OnDialogResponse Float:range надо установить примерно 15.0
Ограничение кол-ва диджеев: Ко всем new Код new bool:dj; Вместо старой команды: Код if(strcmp(cmd, "/playdj", true) == 0) { if(dj == true) { SendClientMessage(playerid,0xFF0000FF,"Место диджея уже занято!!!"); } if(playerdj[playerid] == 1) { if(IsPlayerInRangeOfPoint(playerid,Float:range, Float:x, Float:y, Float:z)) { ShowPlayerDialog(playerid,DJ_URL,DIALOG_STYLE_INPUT,"Выбор трека","Введите URL вашего трека, чтобы его услышали все!!!\n\n","Ок","Отмена"); } } } Для возврата прежнего скина: Ко всем new Код new playerskinvar[MAX_PLAYERS]; new backskinpick; В OnGameModeInit Код backskinpick = CreatePickup(...);//пикап для возврата прежнего скина В OnPlayerPickUpPickup вместо предыдущей части кода Код if(pickupid == dancepick) { playerskinvar[playerid] = GetPlayerSkin(playerid); SetPlayerSkin(playerid,19);//установка скина playerdj[playerid] = 1;//для проверки на диджея при вводе команды dj = true; } else if(pickupid == backskinpick) { SetPlayerSkin(playerid,playerskinvar[playerid]);//возврат старого скина playerdj[playerid] = 0;//игрок больше не диджей dj = false; } 08.07.2014 в 00:34
|
![]()
Все вроде бы правильно вписал, но вот:
![]() C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(18321) : error 033: array must be indexed (variable "dancepick") C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(18328) : error 033: array must be indexed (variable "backskinpick") C:\Users\D\Desktop\Real World RP\gamemodes\realworld.pwn(25993) : warning 202: number of arguments does not match definition Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 2 Errors. 08.07.2014 в 01:10
|
![]()
Этой строки вообще нету в моде, даже самого числа 25993 нет.. Тоже самое с 18321 и 18328 - этих числ нету в моде.
08.07.2014 в 16:00
|
![]() 08.07.2014 в 16:24
|
| |||
| |||