Просмотр полной версии : [Вопрос] Как делаються функции с передачей массива через ссылку?
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 не выдаст ошибки, т.к. он не может контролировать аргументы нативных функций.
Ну я так то знал о константах, но я же говорил, что посмотрел там как и думаю попробую, ну вам так и скинул.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot