PDA

Просмотр полной версии : [Вопрос] Проблемма с диалогом



Andrik851
12.09.2019, 19:36
Помогите пожалуйста у меня вот такая проблемма у меня имеется воспроизведение радиостанций для всех игроков посредством потоковой ссылки хочу переделать на диалог чтобы постоянно не вводить ссылки а просто их сразу прописать но когда начинаю создавать case 0: case 1:
и так далее у меня сразу вылетает ошибка на case 0:


вот команда для включения


CMD:amusic(playerid, params[])
{
if(!PlayerLogged[playerid]) return true;
if(PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false) return true;
ShowPlayerDialog(playerid, 2631, DIALOG_STYLE_INPUT, "{FFCD00}Музыка", "{FFFFFF}Функция позволяет включать музыку всем игрокам\nВведите URL аудиофайла или потока", "Принять", "Отмена");
return true;
}



и сам диалог



case 2631:
{
if(response)
{
foreach(Player, i)
{
case 0:PlayAudioStreamForPlayer(i,"http://s0.radioheart.ru:8000/rostov");
case 1:PlayAudioStreamForPlayer(i,"http://s0.radioheart.ru:8000/rostov");
case 2:PlayAudioStreamForPlayer(i,"http://s0.radioheart.ru:8000/rostov");
case 3:PlayAudioStreamForPlayer(i,"http://s0.radioheart.ru:8000/rostov");
}
}
}

execution
12.09.2019, 20:24
Без сто грамм не разберёшь, что ты пытаешься сделать. Я так понял, ты хочешь не вводить в поле ссылку, а сразу воспроизводить из списка.
new
const LIST_OF_RADIO_STATIONS[][] =
{
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov"
//etc
};

CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

static
string[sizeof(LIST_OF_RADIO_STATIONS)*sizeof(LIST_OF_RADIO_STATIONS[])];
string[0] = '\0';
for (new i = 0; i < sizeof(LIST_OF_RADIO_STATIONS); i++)
{
strcat(string, LIST_OF_RADIO_STATIONS[i]);
strcat(string, "\n");
}

return ShowPlayerDialog(
playerid,
2631,
DIALOG_STYLE_LIST,
!"{FFCD00}Музыка",
string,
!"Принять", !"Отмена");
}

case 2631:
{
if (!response)
return 1;

foreach(new i : Player)
{
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[listitem]);
}
}

DeimoS
12.09.2019, 20:46
Без сто грамм не разберёшь, что ты пытаешься сделать. Я так понял, ты хочешь не вводить в поле ссылку, а сразу воспроизводить из списка.
new
const LIST_OF_RADIO_STATIONS[][] =
{
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov"
//etc
};

CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

static
string[sizeof(LIST_OF_RADIO_STATIONS)*sizeof(LIST_OF_RADIO_STATIONS[])];
string[0] = '\0';
for (new i = 0; i < sizeof(LIST_OF_RADIO_STATIONS); i++)
{
strcat(string, LIST_OF_RADIO_STATIONS[i]);
strcat(string, "\n");
}

return ShowPlayerDialog(
playerid,
2631,
DIALOG_STYLE_LIST,
!"{FFCD00}Музыка",
string,
!"Принять", !"Отмена");
}

case 2631:
{
if (!response)
return 1;

foreach(new i : Player)
{
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[i]);
}
}

Только, наверное, не
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[i]);
а
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[listitem]);

Andrik851
12.09.2019, 21:21
Без сто грамм не разберёшь, что ты пытаешься сделать. Я так понял, ты хочешь не вводить в поле ссылку, а сразу воспроизводить из списка.
new
const LIST_OF_RADIO_STATIONS[][] =
{
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov",
"http://s0.radioheart.ru:8000/rostov"
//etc
};

CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

static
string[sizeof(LIST_OF_RADIO_STATIONS)*sizeof(LIST_OF_RADIO_STATIONS[])];
string[0] = '\0';
for (new i = 0; i < sizeof(LIST_OF_RADIO_STATIONS); i++)
{
strcat(string, LIST_OF_RADIO_STATIONS[i]);
strcat(string, "\n");
}

return ShowPlayerDialog(
playerid,
2631,
DIALOG_STYLE_LIST,
!"{FFCD00}Музыка",
string,
!"Принять", !"Отмена");
}

case 2631:
{
if (!response)
return 1;

foreach(new i : Player)
{
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[listitem]);
}
}

спасибо ща протестим

Andrik851
12.09.2019, 22:03
Только, наверное, не
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[i]);
а
PlayAudioStreamForPlayer(i, LIST_OF_RADIO_STATIONS[listitem]);

с этими ссылками которые сейчас работает нормально а вот попытался ссылки изменить выдпло кучу ошибок и все они в 2 строках команды

ошибки


D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : warning 224: indeterminate array size in "sizeof" expression (symbol "")
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : error 009: invalid array size (negative, zero or out of bounds)
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : warning 217: loose indentation
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : error 036: empty statement
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : warning 217: loose indentation
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : error 017: undefined symbol "string"
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : warning 215: expression has no effect
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : error 001: expected token: ";", but found "]"
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : error 029: invalid expression, assumed zero
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : fatal error 107: too many error messages on one line

Compilation aborted.

Pawn compiler 3.10.8 Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.



команда с ошибками


CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

static
string[sizeof(LIST_OF_RADIO_STATIONS)*sizeof(LIST_OF_RADIO_STATIONS[])];// ошибка
string[0] = '\0';// ошибка
for (new i = 0; i < sizeof(LIST_OF_RADIO_STATIONS); i++)
{
strcat(string, LIST_OF_RADIO_STATIONS[i]);
strcat(string, "\n");
}

return ShowPlayerDialog(playerid, 2631, DIALOG_STYLE_LIST, !"{FFCD00}Музыка", string, !"Принять", !"Отмена");
}


- - - Добавлено - - -


с этими ссылками которые сейчас работает нормально а вот попытался ссылки изменить выдпло кучу ошибок и все они в 2 строках команды

ошибки


D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : warning 224: indeterminate array size in "sizeof" expression (symbol "")
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : error 009: invalid array size (negative, zero or out of bounds)
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : warning 217: loose indentation
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39830) : error 036: empty statement
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : warning 217: loose indentation
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : error 017: undefined symbol "string"
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : warning 215: expression has no effect
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : error 001: expected token: ";", but found "]"
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : error 029: invalid expression, assumed zero
D:\ÌÎÉ ÑÅÐÂÅÐ\ëîêàëüíûé ñåðâåð\gamemodes\mrpv1.pwn(39831) : fatal error 107: too many error messages on one line

Compilation aborted.

Pawn compiler 3.10.8 Copyright (c) 1997-2006, ITB CompuPhase


6 Errors.



команда с ошибками


CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

static
string[sizeof(LIST_OF_RADIO_STATIONS)*sizeof(LIST_OF_RADIO_STATIONS[])];// ошибка
string[0] = '\0';// ошибка
for (new i = 0; i < sizeof(LIST_OF_RADIO_STATIONS); i++)
{
strcat(string, LIST_OF_RADIO_STATIONS[i]);
strcat(string, "\n");
}

return ShowPlayerDialog(playerid, 2631, DIALOG_STYLE_LIST, !"{FFCD00}Музыка", string, !"Принять", !"Отмена");
}


да и еще как прописать название радиостанций а то светятся в диалоге одни ссылки а где какая не понятно

DeimoS
12.09.2019, 22:18
#define MAX_RADIO_STATION_NAME 9
#define MAX_RADIO_URL 36
enum e_RADIO_STATION_LIST
{
rsStationName[MAX_RADIO_STATION_NAME],
rsUrl[MAX_RADIO_URL]
};
new const RadioStationList[][e_RADIO_STATION_LIST] =
{
{"Название", "http://s0.radioheart.ru:8000/rostov"},
{"Название", "http://s0.radioheart.ru:8000/rostov"},
{"Название", "http://s0.radioheart.ru:8000/rostov"},
{"Название", "http://s0.radioheart.ru:8000/rostov"}
};

CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

new string[(MAX_RADIO_STATION_NAME+1)*sizeof(RadioStationList)];
for (new i = 0; i < sizeof(RadioStationList); i++)
{
strcat(string, RadioStationList[i][rsStationName]);
strcat(string, "\n");
}

ShowPlayerDialog(playerid, 2631, DIALOG_STYLE_LIST, "{FFCD00}Музыка", string, "Принять", "Отмена");
return 1;
}

case 2631:
{
if (!response)
return 1;

foreach(new i : Player)
{
PlayAudioStreamForPlayer(i, RadioStationList[listitem][rsUrl]);
}
return 1;
}

Andrik851
12.09.2019, 22:33
#define MAX_RADIO_STATION_NAME 9
#define MAX_RADIO_URL 36
enum e_RADIO_STATION_LIST
{
rsStationName[MAX_RADIO_STATION_NAME],
rsUrl[MAX_RADIO_URL]
};
new const RadioStationList[][e_RADIO_STATION_LIST] =
{
{"Название", "http://s0.radioheart.ru:8000/rostov"},
{"Название", "http://s0.radioheart.ru:8000/rostov"},
{"Название", "http://s0.radioheart.ru:8000/rostov"},
{"Название", "http://s0.radioheart.ru:8000/rostov"}
};

CMD:amusic(playerid)
{
if (!PlayerLogged[playerid] || PlayerInfo[playerid][pAdmin] < 6 || AdminLogged[playerid] == false)
return true;

new string[(MAX_RADIO_STATION_NAME+1)*sizeof(RadioStationList)];
for (new i = 0; i < sizeof(RadioStationList); i++)
{
strcat(string, RadioStationList[i][rsStationName]);
strcat(string, "\n");
}

ShowPlayerDialog(playerid, 2631, DIALOG_STYLE_LIST, "{FFCD00}Музыка", string, "Принять", "Отмена");
return 1;
}

case 2631:
{
if (!response)
return 1;

foreach(new i : Player)
{
PlayAudioStreamForPlayer(i, RadioStationList[listitem][rsUrl]);
}
return 1;
}

выдает ошибку чтото связанное с enum



D:\МОЙ СЕРВЕР\локальный сервер\gamemodes\mrpv1.pwn(1163) : warning 228: length of initialler exceeds size of the enum field
D:\МОЙ СЕРВЕР\локальный сервер\gamemodes\mrpv1.pwn(1163) : error 018: initialization data exceeds declared size
Pawn compiler 3.10.8 Copyright (c) 1997-2006, ITB CompuPhase


1 Error.

здесь ошибка


new const RadioStationList[][e_RADIO_STATION_LIST] =
{
{"Радио Rostov", "http://s0.radioheart.ru:8000/rostov"},// ошибка
{"Радио Тихий Дон", "http://skycast.su:2007/3749"},
{"Радио MIX", "http://air.radiorecord.ru:8102/rus_320"},
{"Супер дискотека 90", "http://air.radiorecord.ru:8102/sd90_320"}
};

Pa4enka
12.09.2019, 22:42
Немного увеличь дефайны.

Andrik851
12.09.2019, 22:45
Немного увеличь дефайны.

ок ща попробую