конечно стоит, я так уже третий день какую то систему квартирок сделать не могу из за этой ошибки
конечно стоит, я так уже третий день какую то систему квартирок сделать не могу из за этой ошибки
Я поговнокодил и нашёл своеобразное "решение" сей проблемы:
То бишь, если в обоих случаях использовать перечисление, в котором объявить массив - всё будет норм компилироваться.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]);
Это не решение проблемы автора (я не призываю его использовать данный метод), а просто пища для размышления.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
KrutoyKrosch (30.09.2016)
бирем значит такие суем в iApartment слово продается и се
- - - Добавлено - - -
или по стандарту в NamePlayer записывать продается
- - - Добавлено - - -
так теперь еще вопросик
лучше один глобальный 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
Последний раз редактировалось Saibot; 30.09.2016 в 21:42.
зачем 1к ячеек?
Обычно те кто создают глобальные массивы для строк, так и делают.Сообщение от KrutoyKrosch
Или Вы хотите под каждою строку создавать глобальный массив и подсчитывать кол-во символов?
Лучше использовать локальные переменные с массивом для строк, также подсчет символов.
Как известно, локальные переменные после завершения функция очищаются из памяти.
Последний раз редактировалось Saibot; 30.09.2016 в 22:16.
подсчет символов это геморрой только лишний
и ты мне так и не привел ни один пруф почему нельзя создать глобальный стринг
Ну давайте начнем с того, что я написал уже выше.Сообщение от KrutoyKrosch
Что локальные переменные очищаются из памяти, а глобальные будет инициализированные постоянным выражением.
Т.е. после первого форматирования строки Ваш глобальный массив будет уже проинициализирован.
На веду вам пример.
Допустим Вы форматируете строку для вывода информации игроку.
Все отлично, Вы форматировали строку, вывели ее, все как нужно.PHP код:
format(string, sizeof(string),"Глобальный массив");
Теперь Вам опять нужно форматировать строку.
И теперь если Вывести информацию с массива, то в место текста "Какая разница?" у Вас будет писать "Глобальный массивКакая разница?"PHP код:
format(string, sizeof(string),"Какая разница?");
Почему так? потому, что Ваш массив до, этого уже был проинициализирован.
Решение конечно есть.
Т.е. Вы инициализируете первую ячейку массива завершающим символом "\0" но, остальной массив по прежнему будет проинициализирован.PHP код:
string[0] = EOS;
Но для чего, это нубство?
Ну вот, Вы выше писали, зачем 1к ячеек, Вы же не будите создавать 100500 массивов для строк с разной длиной.Сообщение от KrutoyKrosch
Я написал, что лучше, а не почему нельзя.Сообщение от KrutoyKrosch
Последний раз редактировалось Saibot; 30.09.2016 в 22:12.
strdel есть если что, можно просто в конец каждого паблика это писать и все
опять же ты создаешь 10 стрингов в каждом паблике по 256 ячеек, вместо того что бы создать один стринг в 256 ячеек
тем более глобальный стринг не будет жрать стек и не забываем что самп это однозадачность
Ну давайте в конце каждой функции будем вызывать нативную функцию, что бы удалить часть строки.Сообщение от KrutoyKrosch
Даже придется вызывать не одну нативную функцию, а две (strlen), потому, что функция strdel удаляет часть строки и по этому Вам нужно будет узнать позицию последнего символа.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)