PDA

Просмотр полной версии : [Вопрос] GetPlayerVersion



Sersoftin
27.10.2014, 19:25
Меня уже просто выбесила эта штука. Не пойму, что за дела. Есть в общем код:

stock CheckClientVersion(playerid)
{
new client_ver[4];
GetPlayerVersion(playerid, client_ver, sizeof(client_ver));
return strcmp("0.3z", client_ver);
}

В OnPlayerConnect

if (!CheckClientVersion(playerid))
SendClientMessage(playerid, -1, "All normal! Client supported!");
else
SendClientMessage(playerid, -1, "Client not supported!");

Запускаю сервер, запускаю клиент. Захожу. Нифига в чат не выводит. Более того - дальнейшее выполнение прекращается. С КАКОГО?! Я пытался прозвонить переменные. Как только дело доходит до вывода результата сравнения - выполнение прекращается. Результат сравнения не выводится. Версия клиента выводится без проблем. Вот как так?! С другими "сравнениями" такого нет.

Daniel_Cortez
27.10.2014, 19:35
new client_ver[4];
Внимательно посмотрите на размер буфера. Выделяете 4 ячейки, когда для "0.3z" нужно 5 (4 символа + нуль-символ для обозначение конца строки). Отсюда выход за пределы массива и дальше выполнение кода обрывается.
Где гарантия, что версия у клиента именно 0.3z? Это может быть и 0.3z-R1, и R2, ..., R4.

Sersoftin
27.10.2014, 19:57
Crashdetect подключали?

Подключен по дефолту. Ничего не показывает.

- - - Добавлено - - -



Внимательно посмотрите на размер буфера. Выделяете 4 ячейки, когда для "0.3z" нужно 5 (4 символа + нуль-символ для обозначение конца строки). Отсюда выход за пределы массива и дальше выполнение кода обрывается.
Где гарантия, что версия у клиента именно 0.3z? Это может быть и 0.3z-R1, и R2, ..., R4.


1) Сейчас проверю, спасибо, не учел.
2) В примере на вики буфер 40 ячеек. Туда запихивается строка 25-26 ячеек + версия. И версия эта = 0.3z.

Sersoftin
27.10.2014, 20:12
Внимательно посмотрите на размер буфера. Выделяете 4 ячейки, когда для "0.3z" нужно 5 (4 символа + нуль-символ для обозначение конца строки). Отсюда выход за пределы массива и дальше выполнение кода обрывается.
Где гарантия, что версия у клиента именно 0.3z? Это может быть и 0.3z-R1, и R2, ..., R4.


Респект и уважуха:good: Проблема была в малом размере буфера. Спасибки :3

- - - Добавлено - - -



Хмм... :read:
http://breedpmnr.ru/i/C55EBC

:dash2: it's magic.... fucking magic... i fuck this magic!! :D

DeimoS
27.10.2014, 20:15
Только зачем эта проверка, если в клиенте она встроена по дэфолту? На сервер тупо не пустит, если версия клиента не совпадает с версией сервера.
P.S. После того, как ответишь, подчищу тему

Sersoftin
27.10.2014, 20:39
Только зачем эта проверка, если в клиенте она встроена по дэфолту? На сервер тупо не пустит, если версия клиента не совпадает с версией сервера.
P.S. После того, как ответишь, подчищу тему

Меня посетила эта мысль, но все же стало интересно, почему же так у меня было.