обмануть client_authorized() на nosteam + linux + sv_lan 0
|
|
He_npeT | Дата: Вторник, 05.06.2007, 11:57:34 | Сообщение # 1 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Вопросов тут будет много. На скоко я знаю все одинаковые event'ы в plugin'ах проходят с верхнего plugin'а по нижнего в plugins.ini. В non-steam linux серверах с sv_lan 0 фиксируется и steam client и nonsteam client, но у nonsteam client'ов не проводится client_authorized(). Если здкинуть такой plugin в самом начале списка plugins.ini: Code | ... public cleitn_connect() { set_cvar_num("sv_lan","1") } public client_authororized() { set_cvar_num("sv_lan","0") } | а в конце plugins.ini (если кто-то ещё в статусе connect-authorized): Code | ... public client_authorized() { new who = 0 for(new i = 1; i <= g_maxplayers; ++i) { if(is_user_authorized(i)) continue who = i } if (who) { set_cvar_num("sv_lan","1") } } | то в других plugin'ах client_authororized() функыия тоже будет действовать для nonsteam? Если будет и игрок nonsteam/steam то какой будет authid (STEAM_ID_LAN или STEAM_ID_PENDING / STEAM_*:****(****)) ? И ещё 1 вопрос ближе к сркиптингу, но думаю и тут подходит. Есть ли такое как is_user_authorized(index)?
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |
slogic | Дата: Вторник, 05.06.2007, 16:56:18 | Сообщение # 2 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (He_npeT) | Есть ли такое как is_user_authorized(index)? | Есть get_user_authid(). По моему, этого достаточно.
|
|
| |
He_npeT | Дата: Вторник, 05.06.2007, 18:48:57 | Сообщение # 3 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Ну, тогда так последнюю. Code | new bool:authorized[33] ... public client_connect(id) { new authorized[id] = false }
public client_disconnect(id) { new authorized[id] = false }
public client_authorized(id) { authorized[id] = true new who = 0 for(new i = 1; i <= g_maxplayers; ++i) { if(authorized[i] == true) continue who = i } if (who) { set_cvar_num("sv_lan","1") } } | Остальные вопросы остаются.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
Сообщение отредактировал He_npeT - Вторник, 05.06.2007, 18:49:25 |
|
| |
slogic | Дата: Вторник, 05.06.2007, 20:10:31 | Сообщение # 4 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Я вообще не понимаю, есть ли смысл менять sv_lan динамически. Ты проверял, что от этого меняется? Я бы не парился, а задал бы таймаут на проверку авторизации. Значение подберешь эмпирическим путем (т.е. в работе). После того как клиент подключился, устанавливаешь set_task на него с заданным выше интервалом. В обработчике task делаешь проверку флага авторизации. Если его нет, значит это non-steam клиент. Делай с ним что хочешь. Вообще ты как-то хочешь авторизовать тех, кто авторизоваться не может. Маразм какой-то. Даже если и сможешь, то система авторизации будет отличатся от той, которая применяется для оригинальной авторизации. А значит суть авторизации становится вымышленной.
|
|
| |
He_npeT | Дата: Вторник, 05.06.2007, 22:10:37 | Сообщение # 5 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Мне это надо, так как хочу чтобы мой server фиксировал и steam client'ов и non-steam client'ов. А такое на non-steam linux'e возможно токо при sv_lan 0, так как steam может быть зафиксирован токо по authid.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |
slogic | Дата: Среда, 06.06.2007, 12:09:50 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Что, в твоем понимании, является фиксированием клиента? Только четко объясни.
|
|
| |
He_npeT | Дата: Среда, 06.06.2007, 13:40:19 | Сообщение # 7 |
 Генерал-майор
Группа: Скриптеры
Сообщений: 292
Статус: Не в сети
| Я имел в виду, фиксирование, как действие event'a client_authorized() и на steam и на non-steam. На win32 такой проблемы нету, так как non-steam authid меняется со STEAM_ID_PENDNING на STEAM_ID_LAN/VALVE_ID_PENDING (и client_authorized() уже может дуйствовать на non-steam client, и он уже щитается зафиксированым), а на linux'e non-steam client всегда остаётся STEAM_ID_PENDNING.
My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot
|
|
| |
VEN | Дата: Среда, 06.06.2007, 19:59:54 | Сообщение # 8 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Code | Есть ли такое как is_user_authorized(index)? | Нет, есть только forward client_authorized. Если она не вызвана для конкретного клиента, значит клиент не авторизован.
Сообщение отредактировал VEN - Среда, 06.06.2007, 20:00:31 |
|
| |
slogic | Дата: Среда, 06.06.2007, 20:12:56 | Сообщение # 9 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Quote (He_npeT) | а на linux'e non-steam client всегда остаётся STEAM_ID_PENDNING. | Значит тебе только таймаут поможет, как я писал выше. Только непонятно, если клиент не авторизован, то его сам сервер не выкидывает?
|
|
| |