PDA

Просмотр полной версии : [Вопрос] Как делаються функции с передачей массива через ссылку?



KakbeYura
02.01.2014, 19:44
GetPlayerRangName(pl, const ppo[])
{
new g = PlayerInfo[pl][GangID];
switch(PlayerInfo[pl][GangR])
{
case 1: ppo = GangInfo[g][RangName1];
case 2: format(ppo, 50, "%s", GangInfo[g][RangName2]);
case 3: format(ppo, 50, "%s", GangInfo[g][RangName3]);
case 4: format(ppo, 50, "%s", GangInfo[g][RangName4]);
case 5: format(ppo, 50, "%s", GangInfo[g][RangName5]);
case 6: format(ppo, 50, "%s", GangInfo[g][RangName6]);
}
}

Тут я пробовал по разному, везде ошибки были. Пробовал и &ppo[] - =/. Залез в a_players, посмотрел что там const name[] в GetPlayerName, в инете уроков не нашёл.

KakbeYura
02.01.2014, 19:45
Максимальная длина GangInfo[g][RangNameN] и массива по ссылке 50.

Daniel_Cortez
02.01.2014, 19:59
Присмотрись к заголовку функции.

GetPlayerRangName(pl, const ppo[])
Строка "ppo" - константа. Нельзя изменить её значение. Если хочешь что-то вернуть через неё по ссылке - просто убери ключевое слово const.

Насчёт стандартных функций (типа GetPlayerName) - там хоть const, хоть не const, компилятор Pawn не выдаст ошибки, т.к. он не может контролировать аргументы нативных функций.

Tracker1
02.01.2014, 20:04
Нельзя передавать массивы по ссылке в Pawn.

KakbeYura
02.01.2014, 20:07
Я сделал так:

new rang[50];
format(rang, 50, "%s", GetPlayerRangName(playerid));

GetPlayerRangName(pl)
{
new g = PlayerInfo[pl][GangID];
switch(PlayerInfo[pl][GangR])
{
case 1: return GangInfo[g][RangName1];
case 2: return GangInfo[g][RangName2];
case 3: return GangInfo[g][RangName3];
case 4: return GangInfo[g][RangName4];
case 5: return GangInfo[g][RangName5];
case 6: return GangInfo[g][RangName6];
}
return 0;
}
=/

KakbeYura
03.01.2014, 17:31
// close topic

KakbeYura
03.01.2014, 17:36
Присмотрись к заголовку функции.

GetPlayerRangName(pl, const ppo[])
Строка "ppo" - константа. Нельзя изменить её значение. Если хочешь что-то вернуть через неё по ссылке - просто убери ключевое слово const.

Насчёт стандартных функций (типа GetPlayerName) - там хоть const, хоть не const, компилятор Pawn не выдаст ошибки, т.к. он не может контролировать аргументы нативных функций.

Ну я так то знал о константах, но я же говорил, что посмотрел там как и думаю попробую, ну вам так и скинул.

Osetin
31.01.2014, 23:29
Закрыто