Connect player and country
|
|
Beelzebub
|
Дата: Понедельник, 08.10.2012, 02:08:44 | Сообщение # 1 |
![Нарушитель](http://world-source.ru/groupicon/banned_icon.jpg) |
Сообщений: 202
Репутация: 13 [ +/- ]
|
|
Описание: Показывает какой игрок подключается к серверу его страну и стим айди. Плагин без кваров. Можно использовать в качестве урока.
Гости не могут скачивать файлы
|
Сообщение отредактировал Beelzebub - Понедельник, 08.10.2012, 16:02:17 |
|
| |
_wS_
|
Дата: Понедельник, 08.10.2012, 02:55:22 | Сообщение # 2 |
|
Quote (Beelzebub) Можно использовать в качестве урока. -> (слишком много ошибок, хоть и кода мало)
Вот твой код:
Code public bool:OnClientConnect(id) { decl String:country[45]; decl String:name[MAX_NAME_LENGTH]; decl String:ip[64]; GetClientName(id, name, sizeof(name)); GetClientIP(id, ip, sizeof(ip)); GeoipCountry(ip, country, sizeof(country)); if (GetUserAdmin(id) == INVALID_ADMIN_ID) { PrintToChatAll("Игрок подключается %s из %s", name, country); } return true; } Функция "GetUserAdmin" бесполезна в событии "OnClientConnect", всегда будет INVALID_ADMIN_ID. Использовать нужно в "OnClientPostAdminCheck".
Если GetUserAdmin(id) != INVALID_ADMIN_ID, то код выше становится бесполезным. Его нужно использовать внутри условия.
Ты готовишь переменные с помощью decl, но не обезопасил их. Все эти три функции (GetClientName, GetClientIP, GeoipCountry), или какая-то из них - могут не сработать, и получится ты попробуешь вывести значение переменной, хотя в ней нет никакого значения - так и сервер упасть может.
![grust](http://world-source.ru/smiles/grust.gif)
|
|
| |
Beelzebub
|
Дата: Понедельник, 08.10.2012, 11:35:35 | Сообщение # 3 |
![Нарушитель](http://world-source.ru/groupicon/banned_icon.jpg) |
Сообщений: 202
Репутация: 13 [ +/- ]
|
|
Понятно :) Спасибо за урок.
так будет правильно?
Code public bool:OnClientConnect(client) { decl String:country[45]; decl String:name[MAX_NAME_LENGTH]; decl String:ip[64]; GetClientName(client, name, sizeof(name)); GetClientIP(client, ip, sizeof(ip)); GeoipCountry(ip, country, sizeof(country)); PrintToChatAll("Игрок подключается %s из %s", name, country); return true; }
|
|
| |
duxa
|
Дата: Понедельник, 08.10.2012, 15:07:57 | Сообщение # 4 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 1
Репутация: 0 [ +/- ]
|
|
Могу предложить такой вариант: Code public bool:OnClientConnect(client) { decl String:szCountry[45], String:szIP[16];
if(GetClientIP(client, szIP, sizeof(szIP)) && GeoipCountry(szIP, szCountry, sizeof(szCountry))) { PrintToChatAll("Игрок %N подключается из %s", client, szCountry); } return true; }
|
|
| |
Beelzebub
|
Дата: Понедельник, 08.10.2012, 16:00:01 | Сообщение # 5 |
![Нарушитель](http://world-source.ru/groupicon/banned_icon.jpg) |
Сообщений: 202
Репутация: 13 [ +/- ]
|
|
Я уже свой вариант сделал :) Новый.
|
|
| |
Vadimreal
|
Дата: Суббота, 21.03.2015, 17:25:02 | Сообщение # 6 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 13
Репутация: 0 [ +/- ]
|
|
А как сюда добавить еще Ip адресс?
|
|
| |
BarD
|
Дата: Воскресенье, 22.03.2015, 16:24:28 | Сообщение # 7 |
![Пользователь](http://world-source.ru/groupicon/user_icon.jpg) |
Сообщений: 943
Репутация: 137 [ +/- ]
|
|
Код public bool:OnClientConnect(client) { decl String:szCountry[45], String:szIP[16];
if(GetClientIP(client, szIP, sizeof(szIP)) && GeoipCountry(szIP, szCountry, sizeof(szCountry))) { PrintToChatAll("Игрок %N подключается из %s (IP: %s)", client, szCountry, szIP); } return true; }
|
|
| |