Ув. пользователи как написать функцию:
что бы в дальнейшом использовать эту функцию, для проверки подлключён ли игрок либо нетPHP код:
new PlayerLogged[MAX_PLAYERS char];
Вид для печати
Ув. пользователи как написать функцию:
что бы в дальнейшом использовать эту функцию, для проверки подлключён ли игрок либо нетPHP код:
new PlayerLogged[MAX_PLAYERS char];
Что Вам мешает использовать стандартную функцию IsPlayerConnected? А если использовать массив то в OnPlayerConnect:
а в OnPlayerDisconnect:PHP код:
PlayerConnected{playerid} = 1; // у Вас PlayerLogged (Logged же проверка на логин)
PHP код:
PlayerConnected{playerid} = 0;
IsPlayerConnected быстрее чем массив, а если с массивом, то память используется.
Зависит от нужды. Если вам нужно проверять именно ПОДКЛЮЧЕНИЕ к серверу - лучше воспользоваться функцией. Если же вам нужно проверять авторизацию игрока, лучше сделать так:
В функцию, отвечающую за загрузку аккаунта при авторизацииPHP код:
new authorized_account[MAX_PLAYERS char];
В OnPlayerDisconectPHP код:
authorized_account{playerid} = 1;
И для удобства можно создать функцию, типаPHP код:
authorized_account{playerid} = 0;
PHP код:
stock IsPlayerLogged(playerid) return authorized_account{playerid};
//Это если с английским плохо. Я бы использовал код "authorized_account{playerid}" напрямую
Я использую для проверки авторизован ли игрок, если нет то он не может водить команды
Зачем char? Можно ведь использовать переменную типа bool
PHP код:
new bool:login[MAX_PLAYERS];
login[playerid] = true;// Игрок авторизован
login[playerid] = false;// Игрок не авторизован
if(login[playerid])// Игрок авторизован
if(!login[playerid])// Игрок не авторизован
Можешь по подробней.
И далее использовать в командахPHP код:
login[playerid] = true;// это в OnPlayerConnect
login[playerid] = false;// это вOnPlayerDisconnect
PHP код:
if(login[playerid])// Игрок авторизован
if(!login[playerid])// Игрок не авторизован
Это ставь когда игрок успешно авторизовался.
Это ставь когда игрок вышел с сервера.PHP код:
login[playerid] = true;
А, если используешь public OnPlayerCommandText, то просто в начало паблика вставьPHP код:
login[playerid] = false;
PHP код:
if(!login[playerid])) return SendClientMessage(playerid,-1,"Авторизуйтесь на сервере!");
Может наоборот? Типа bool в pawn нет (то есть он есть, но он берёт столько же памяти сколько и обычная переменная с типом integer). А char сокращает размер массива в (cellbits / charbits) раз (на данный момент 4). И установить значение ячейкам этого массива можно только от 0 до 255.
Тогда мой код подойдёт вам чуть больше, чем полностью. Просто в командах используйте проверку, типа
и всёPHP код:
if(!IsPlayerLogged(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "Ошибка: {FFFFFF}Вы не авторизированы");
bool в Pawn занимает столько же, сколько и обычная переменная (4 байта). Под char же выделяется всего 1 байт, а 1 байт может принимать одно из 256 значений (28, то бишь от 0 до 255). О байте можно почитать тут. И прописывая
мы выделяем не 2000 байт, а 500 (MAX_PLAYERS по стандарту имеет значение "500" и если работать с массивом как с ячейками - каждая ячейка будет равна 4 байта => 500*4 = 2000. С char же выделяется 1 байт, о чём я сказал выше).PHP код:
new authorized_account[MAX_PLAYERS char];
P.S. И сразу поясню для тех, кто побежит сейчас "оптимизировать" массивы. С char нужно работать с умом. Не везде можно использовать данный тип переменной. Например в таком случае%
толку от char не будет, ибо MAX_PLAYERS тут работает совсем по иному принципу. В общем, изучите сначала по подробнее вопрос, иначе размер вашего amx может вырасти раза в 2PHP код:
enum ololo {}
new ololo_ololo[MAX_PLAYERS char][ololo];