PDA

Просмотр полной версии : [Вопрос] warning 213: tag mismatch



A N D R E Y
04.01.2016, 14:26
Всем привет! Спасибо что зашли в тему. Вобщем проблема есть в названии темы:

cache_get_field_content(0,"pIp",Load_info);
format(PlayerInfo[playerid][pIp],33,"%f",Load_info); //Тут ошибка
cache_get_field_content(0,"pLastIp",Load_info);
format(PlayerInfo[playerid][pLastIp],33,"%f",Load_info); //И тут
Либо предложите альтернативу этой загрузке, либо помогите эту исправить. Я не могу понять где я ошибся.
Спасибо заранее.

VVWVV
04.01.2016, 14:35
Причина: элементы массива не являются строками; либо переменная load_info не является строкой.


format(PlayerInfo[playerid][pIp],33,"%f",Load_info);
Лучше было сделать так:

cache_get_field_content(0,"pIp",PlayerInfo[playerid][pIp]);

A N D R E Y
04.01.2016, 15:37
Причина: элементы массива не являются строками; либо переменная load_info не является строкой.


format(PlayerInfo[playerid][pIp],33,"%f",Load_info);
Лучше было сделать так:

cache_get_field_content(0,"pIp",PlayerInfo[playerid][pIp]);
Сделал так:

cache_get_field_content(0,"pIp",PlayerInfo[playerid][pIp]);
Он все-равно ругается, ошибка та-же.

$continue$
04.01.2016, 16:29
Сделал так:

cache_get_field_content(0,"pIp",PlayerInfo[playerid][pIp]);
Он все-равно ругается, ошибка та-же.

Покажите как объявленная pIP?

A N D R E Y
04.01.2016, 16:38
Покажите как объявленная pIP?
Энумератор показать?

^_^
04.01.2016, 16:39
Покажи код объявления перечисления pIp.

A N D R E Y
04.01.2016, 16:40
Покажи код объявления перечисления pIp.

Float:pIp,

VVWVV
04.01.2016, 16:43
Float:pIp,

Как я и сказал ранее: «элементы массива не являются строками».


pIp[16],pLastIp[16]

^_^
04.01.2016, 16:48
Float:pIp,
Чтобы использовать данную переменную в качестве актуального параметра функции format или функции cache_get_field_content оно должно быть одномерным массивом и иметь стандартный тэг (_:).
Правильное объявление перечисления:


pIp[16], //Тэг _: автоматически присваивается переменной/массиву если не указан любой другой

A N D R E Y
04.01.2016, 16:49
Как я и сказал ранее: «элементы массива не являются строками».


pIp[16],pLastIp[16]
Воооот, сделал так в перечислении и все скомпилировалось. Спасибо большое. Все решено.

$continue$
04.01.2016, 16:52
Как и предполагал , что Float.
IP - это string.
В include a_samp или высше его:


const MAX_SIZE_IP = 16;

Дальше в перечисление (enum):


pIp[MAX_SIZE_IP],

Ну и в загрузку:


cache_get_field_content(0,"pIp",PlayerInfo[playerid][pIp], /*переменная_отвечающия_за_подключение_к_базе_данных*/, MAX_SIZE_IP);

A N D R E Y
04.01.2016, 17:33
Как и предполагал , что Float.
IP - это string.
В include a_samp или высше его:


const MAX_SIZE_IP = 16;

Дальше в перечисление (enum):


pIp[MAX_SIZE_IP],

Ну и в загрузку:


cache_get_field_content(0,"pIp",PlayerInfo[playerid][pIp], /*переменная_отвечающия_за_подключение_к_базе_данных*/, MAX_SIZE_IP);

Я просто от не знания писал Float, мозгов туда заглянуть не хватило сразу. Спасибо за разъяснения.

Daniel_Cortez
04.01.2016, 17:51
В include a_samp или высше его:


const MAX_SIZE_IP = 16;


Модифицировать стандартный инклуд? Серьёзно?

$continue$
04.01.2016, 17:54
Модифицировать стандартный инклуд? Серьёзно?

А, почему бы и нет?
Ну, да - при обновлении SA-MP, занного добавлять константу.

Если куй, забыл добавить своими руками константу для размера IP.
Почти для всего есть константа, а для IP - нет
Не порядок, однако.

Desulaid
04.01.2016, 17:57
А, почему бы и нет?
Ну, да - при обновлении SA-MP, занного добавлять константу.

Если куй, забыл добавить своими руками константу для размера IP.
Почти для всего есть константа, а для IP - нет
Не порядок, однако.

Я ни на что не намекаю, но можно тупо после инклудов запились все это. Не? Ну или как я делать - создать один общий инклуд с подключением всех нестандартных инклудов и в нем указывать все константы и прочее.

Daniel_Cortez
04.01.2016, 18:38
А, почему бы и нет?
Ну, да - при обновлении SA-MP, занного добавлять константу.

Если куй, забыл добавить своими руками константу для размера IP.
Почти для всего есть константа, а для IP - нет
Не порядок, однако.
Ты сопровождаешь инклуды SA:MP и можешь гарантировать, что твои константы останутся в новой версии мультиплеера? Или, быть может, у них есть публичный репозиторий, в котором ты можешь предложить добавить свои изменения в новую версию SA:MP? (Конечно же, нет, это анально огороженный закрытый мультиплеер, и вопросы были чисто риторическими.)
Если нет, то можешь ли ты гарантировать, что не забудешь все модификации, которые ты сделал в этих инклудах? Ах, вспомнишь по ошибкам компилятора из-за недостающих констант?...


// В конце файла a_samp.inc
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
#undef MAX_VEHICLES
#define MAX_VEHICLES 500

В примере выше переобъявляются уже существующие константы и ничего нового не добавляется. При замене инклуда на исходную версию компилятор ни слова не скажет о необъявленных константах. Впрочем, я не удивлюсь, если это не единственный пример, и кто-нибудь ещё запостит что-нибудь получше.

Так вот, о чём я... Да, куй не добавил какие-то константы, и вряд ли собирается добавлять, но это не оправдание вмешательству в чужой код. Что лучше: один раз вынести все нестандартные модификации в свой инклуд/записать их в моде или насоздавать себе проблем, чтобы долбиться над чужим кодом при каждом переводе мода на новую версию SA:MP? (привет рьяным мазохистам с г-и)



Я ни на что не намекаю, но можно тупо после инклудов запились все это. Не? Ну или как я делать - создать один общий инклуд с подключением всех нестандартных инклудов и в нем указывать все константы и прочее.
Два чая. Удивительно, почему до сих пор никто не выступил с инициативой создания общепринятого инклуда с самыми распространёнными нестандартными константами...