Ловить игроков при отмене загрузки файлов

Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Доброго! Необходимо ловить игроков которые вышли с сервера не дождавшихся закачки файлов, или иными словами ловить client_disconnected до client_putinserver, но есть один нюанс, игрок может получить/докачать все файлы затем происходит disconnected/connect и он так или иначе попадает под запись, как можно это момент учитывать?
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
fl0wer, ну лично мне что бы смотреть сколько отказов, что бы понимать ситуацию о процентом соотношении дошедших и вышедших игроков при загрузки. Да не суть в общем )
 
Сообщения
1,698
Реакции
1,510
Помог
26 раз(а)
Сообщения
198
Реакции
16
Помог
1 раз(а)
может костылями? создать переменную, присваивать тру при вызове путина
путин позже вызывается, соответственно в дисконнекте проверять, равнялся ли путин 1
 
Сообщения
673
Реакции
242
Помог
11 раз(а)
Мэйби так?

Код:
new bool:g_iBitUserConnected[33];


//Вызывается самый первый при заходе игрока на сервере
public client_connect(pId)
{
    g_iBitUserConnected[pId] = true;
}

//Обнуляем бит если игрок зашел на сервер и  видит MOTD
public client_putinserver(pId)
{
    g_iBitUserConnected[pId] = false;
}

public client_disconnected(pId)
{
    if(g_iBitUserConnected[pId])
    {
        log_amx("Игрок отсоединился не докочав файлы")
        g_iBitUserConnected[pId] = false;
    }
}
 

ssx

Сообщения
291
Реакции
78
А может докачал но завис на прекеше ресурсов.

Там же идёт так: клиент подключается - его дропает - качает с быстрой закачки - переподключает на сервер.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
kucklovod, Limbooc, игрок запишется все ровно, так-как после загрузки файлов происходит реконнект еще не доходя до путина, поэтому сработает проверка на дисконнекте и игрок типа того ушел, хотя он наоборот зашел после удачной загрузки файлов
17 Янв 2020
ssx, пусть даже так, не важно
17 Янв 2020
kucklovod, возможно если только как-то делать таск на n секунд при дисконнекте, дабы после таска проверить зашел ли игрок снова или нет
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Ладно, костыли мое все походу )))))

Работаем только в связки ip-адреса/никнейма в надежде что за 2 секунды они не изменятся.
С id, userid, не работаем - меняются, а sid работать опасно, может еще не авторизоваться

Как происходит загрузка файлов: сonnect - loading - disconnect - сonnect
Поэтому работаем с таском, последние два этапа уже после загрузки( disconnect - сonnect ) проходят быстро, поэтому 2 секунды было более чем.

С учетом таска структура будет такая сonnect - loading - disconnect - сonnect - task(уже по окончанию 2 сек)

1. Connect - записываем IP/Имя
2. Disconnect - отправляем task
3. Connect - записываем IP/Имя, понимаем что уже есть дубль
4. Task - если есть дубль, пропускаем, иначе запись

На 3 этапе снова может быть disconnect, учитываем )
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу