AMX MOD X
Пятница, 17.05.2024, 01:12:12



Приветствую Вас Гость | RSS
[ Главная ] [ обмануть client_authorized() на nosteam + linux + sv_lan 0 - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » обмануть client_authorized() на nosteam + linux + sv_lan 0 (я долго думал над этим и выдвинул 1 теорию.)
обмануть client_authorized() на nosteam + linux + sv_lan 0
He_npeTДата: Вторник, 05.06.2007, 11:57:34 | Сообщение # 1
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Вопросов тут будет много. На скоко я знаю все одинаковые 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
Репутация: 47
Статус: Не в сети
Quote (He_npeT)
Есть ли такое как is_user_authorized(index)?

Есть get_user_authid(). По моему, этого достаточно.
 
He_npeTДата: Вторник, 05.06.2007, 18:48:57 | Сообщение # 3
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Ну, тогда так последнюю.

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
Репутация: 47
Статус: Не в сети
Я вообще не понимаю, есть ли смысл менять sv_lan динамически. Ты проверял, что от этого меняется?

Я бы не парился, а задал бы таймаут на проверку авторизации. Значение подберешь эмпирическим путем (т.е. в работе). После того как клиент подключился, устанавливаешь set_task на него с заданным выше интервалом. В обработчике task делаешь проверку флага авторизации. Если его нет, значит это non-steam клиент. Делай с ним что хочешь.

Вообще ты как-то хочешь авторизовать тех, кто авторизоваться не может. Маразм какой-то. Даже если и сможешь, то система авторизации будет отличатся от той, которая применяется для оригинальной авторизации. А значит суть авторизации становится вымышленной.

 
He_npeTДата: Вторник, 05.06.2007, 22:10:37 | Сообщение # 5
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Мне это надо, так как хочу чтобы мой 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
Репутация: 47
Статус: Не в сети
Что, в твоем понимании, является фиксированием клиента? Только четко объясни.
 
He_npeTДата: Среда, 06.06.2007, 13:40:19 | Сообщение # 7
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Я имел в виду, фиксирование, как действие 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
Репутация: 45
Статус: Не в сети
Code
Есть ли такое как is_user_authorized(index)?
Нет, есть только forward client_authorized. Если она не вызвана для конкретного клиента, значит клиент не авторизован.


Сообщение отредактировал VEN - Среда, 06.06.2007, 20:00:31
 
slogicДата: Среда, 06.06.2007, 20:12:56 | Сообщение # 9
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (He_npeT)
а на linux'e non-steam client всегда остаётся STEAM_ID_PENDNING.

Значит тебе только таймаут поможет, как я писал выше. Только непонятно, если клиент не авторизован, то его сам сервер не выкидывает?
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » обмануть client_authorized() на nosteam + linux + sv_lan 0 (я долго думал над этим и выдвинул 1 теорию.)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024