конечно стоит, я так уже третий день какую то систему квартирок сделать не могу из за этой ошибки
Вид для печати
конечно стоит, я так уже третий день какую то систему квартирок сделать не могу из за этой ошибки
Я поговнокодил и нашёл своеобразное "решение" сей проблемы:
То бишь, если в обоих случаях использовать перечисление, в котором объявить массив - всё будет норм компилироваться.PHP код:
enum fix_fix_fix
{
_fix[MAX_PLAYER_NAME]
}
new this_is_fix[fix_fix_fix] =
{
"продается"
};
format(string, sizeof(string), "| Этаж № %i | %s | Цена: %i$ |\n", i++, (iApartment[i][0][pBought]) ? (this_is_fix[_fix]) : (iApartment[i][0][pNamePlayer]), iApartment[i][0][pMoney]);
Это не решение проблемы автора (я не призываю его использовать данный метод), а просто пища для размышления.
бирем значит такие суем в iApartment слово продается и се
- - - Добавлено - - -
или по стандарту в NamePlayer записывать продается :lol:
- - - Добавлено - - -
так теперь еще вопросик
лучше один глобальный string или много локальных?
Если брать пример DeimoS`a, то не нужно ничего пихать в энуминатор iApartment.Цитата:
Сообщение от KrutoyKrosch
PHP код:
new for_sale[] = "продается";
format(string, sizeof(string)
,
"| Этаж № %i | %s | Цена: %i$ |\n"
,
i++,
(iApartment[i][0][pBought]) ? (for_sale) : (iApartment[i][0][pNamePlayer]),
iApartment[i][0][pMoney]
);
Лучше использовать локальные, и подсчитывать количество символов нежели создавать один с 1+к ячеек.Цитата:
Сообщение от KrutoyKrosch
зачем 1к ячеек?
Обычно те кто создают глобальные массивы для строк, так и делают.Цитата:
Сообщение от KrutoyKrosch
Или Вы хотите под каждою строку создавать глобальный массив и подсчитывать кол-во символов?
Лучше использовать локальные переменные с массивом для строк, также подсчет символов.
Как известно, локальные переменные после завершения функция очищаются из памяти.
подсчет символов это геморрой только лишний
и ты мне так и не привел ни один пруф почему нельзя создать глобальный стринг
Ну давайте начнем с того, что я написал уже выше.Цитата:
Сообщение от KrutoyKrosch
Что локальные переменные очищаются из памяти, а глобальные будет инициализированные постоянным выражением.
Т.е. после первого форматирования строки Ваш глобальный массив будет уже проинициализирован.
На веду вам пример.
Допустим Вы форматируете строку для вывода информации игроку.
Все отлично, Вы форматировали строку, вывели ее, все как нужно.PHP код:
format(string, sizeof(string),"Глобальный массив");
Теперь Вам опять нужно форматировать строку.
И теперь если Вывести информацию с массива, то в место текста "Какая разница?" у Вас будет писать "Глобальный массивКакая разница?"PHP код:
format(string, sizeof(string),"Какая разница?");
Почему так? потому, что Ваш массив до, этого уже был проинициализирован.
Решение конечно есть.
Т.е. Вы инициализируете первую ячейку массива завершающим символом "\0" но, остальной массив по прежнему будет проинициализирован.PHP код:
string[0] = EOS;
Но для чего, это нубство?
Ну вот, Вы выше писали, зачем 1к ячеек, Вы же не будите создавать 100500 массивов для строк с разной длиной.Цитата:
Сообщение от KrutoyKrosch
Я написал, что лучше, а не почему нельзя.Цитата:
Сообщение от KrutoyKrosch
strdel есть если что, можно просто в конец каждого паблика это писать и все
опять же ты создаешь 10 стрингов в каждом паблике по 256 ячеек, вместо того что бы создать один стринг в 256 ячеек
тем более глобальный стринг не будет жрать стек и не забываем что самп это однозадачность
Ну давайте в конце каждой функции будем вызывать нативную функцию, что бы удалить часть строки.Цитата:
Сообщение от KrutoyKrosch
Даже придется вызывать не одну нативную функцию, а две (strlen), потому, что функция strdel удаляет часть строки и по этому Вам нужно будет узнать позицию последнего символа.