PDA

Просмотр полной версии : [Native] NetStats_GetConnectedTime



L0ndl3m
30.01.2014, 23:14
Функция возвращает время (в миллисекундах), проведённое игроком на сервере.

Параметры:

playerid - ID игрока

Возвращаемое значение: Количество тиков сервера с момента подключения игрока к серверу.

Пример использования:



new
lifetime_str[45];

format(lifetime_str, sizeof (lifetime_str), "Ваше время пребывания на сервере: %d сек.",
NetStats_GetConnectedTime(playerid) / 1000);

SendClientMessage(playerid, -1, lifetime_str);



Автор статьи: L0ndl3m (https://pro-pawn.ru/member.php?2057-L0ndl3m)

Специально для: Pro-Pawn.Ru (http://pro-pawn.ru)

Копирование данной статьи без разрешения автора запрещено!

Salvacore
30.01.2014, 23:39
Спасибо,будут использовать)

[ForD]
30.01.2014, 23:48
Good

#Vito
31.01.2014, 01:05
Ваах, красавец))

wAx
12.02.2014, 15:07
Nice!

V[a]mPiR
02.03.2014, 16:22
теперь можно будет сделать нормальную систему lvl

DeimoS
02.03.2014, 16:34
mPiR;30184']теперь можно будет сделать нормальную систему lvl

И его можно будет набивать сидя в окне авторизации :) Функция отсчитывает время с самого подключения к серверу.
И что до этого мешало UNIX Time использовать? :)

Avertus
02.03.2014, 16:44
Возвращаемое значение: Количество тиков сервера, с момента подключения игрока к серверу.

// Делим на 1000, так как функция возвращает время не в секундах, а в количестве милисекунд

Дак функция возвращает количество тиков или миллисекунд? Разве количество тиков сервера в секунду на зависит от серверной машины?

^_^
02.03.2014, 17:47
Думаю для обычных систем (вроде системы лвл) данная функция бесполезна:
1) Она показывает время с момента подключения, собственно на серверов с системой логина, она неэффективна.
2) Её можно легко заскриптовать обычным глобальным массивом, в котором при подключение возвращается функция gettime(), таким образом узнать время подключение игрока можно так:"текучая ячейка игрока в массиве - gettime()"...
Плюс, учитывая что Калкор почти никогда не добавляет фиксы или функции которые можно заскриптовать, предполагаю что функцию сделали с другой целью...

V[a]mPiR
02.03.2014, 18:15
^_^, ну тут ты прав, можно конечно сделать велосипед, после авторизации записать в переменную а потом в когда надо вычитать, но не удобно.

Deimos, я первый раз пишу мод с new.pwn, до этого был мод mafia с которым я работал, вот по этому у меня такая дикая тяга к динамическим системам и системе lvl по времени а не по респектам

DeimoS
02.03.2014, 18:22
mPiR;30198']^_^, ну тут ты прав, можно конечно сделать велосипед, после авторизации записать в переменную а потом в когда надо вычитать, но не удобно.
В чём велосипед? В том, что мы получаем возможность записывать не фактическое время подключения, а время авторизации? Или что? :scratch_one-s_head:

mPiR;30198']Deimos, я первый раз пишу мод с new.pwn, до этого был мод mafia с которым я работал, вот по этому у меня такая дикая тяга к динамическим системам и системе lvl по времени а не по респектам
Так никаких претензий нет, но гораздо практичнее использовать UNIX время. Лично у меня на Unix времени завязано отображение времени, которое игрок пожил с момента последнего спавна и проблем никаких.

V[a]mPiR
02.03.2014, 18:28
в общем смысл я имел таков, что игрок авторизируется на сервере, записывается количество его тиков, а потом когда он вызывает например статистику свою, то от текущего кол-ва тиков отнимается то значение которое записано после авторизации, при выходе происходит тоже самое, только значение записывается в столбец в таблице, и так при каждом заходе, но мне кажется что этот метод не самый лучший, есть методы на много проще моего, только я не знаю какие

DeimoS
03.03.2014, 11:43
mPiR;30204']в общем смысл я имел таков, что игрок авторизируется на сервере, записывается количество его тиков, а потом когда он вызывает например статистику свою, то от текущего кол-ва тиков отнимается то значение которое записано после авторизации, при выходе происходит тоже самое, только значение записывается в столбец в таблице, и так при каждом заходе, но мне кажется что этот метод не самый лучший, есть методы на много проще моего, только я не знаю какие

Вот сейчас ты и правда изобретаешь велосипед. Функция gettime возвращает UNIX время в секундах. Что тебе мешает записать его при авторизации и уже потом проворачивать то же самое, что ты хотел и с этой функцией делать? Либо ты записываешь количество тиков с МОМЕНТА ВХОДА на сервер (не авторизация, а с момента начала сессии между клиентом и сервером) и проводишь различные вычисления, либо ты записываешь время в секундах и потом от этого времени отнимаешь время, полученное в момент повторного вызова функции.
В общем, почитай о UNIX времени. Это самый оптимальный и наиболее точный способ не только для создания подобных систем, но и для создания кучи других систем, требующих высокую точность

V[a]mPiR
03.03.2014, 12:51
Deimos, ок, спс

user.a1z1
18.11.2018, 18:29
Согласно моим расчётом, если игрок проведён 24 с небольшим дня - количество секунд уйдёт в минус.

2_147_483_647 мс

2147483 сек

35791 минут часов и 20 с чем-то сек

596 час и 30 с чем-то минут

24 дня

24 с небольшим дня

Daniel_Cortez
18.11.2018, 21:00
Для начала нужно, чтобы игрок ещё продержался на сервере все эти 24.86 дня и сервер обходился без рестарта. Впрочем, если игрок подключится к серверу, затем выйдет, вместо 0 функция всё ещё будет возвращать время с момента его подключения (http://wiki.pro-pawn.ru/wiki/NetStats_GetConnectedTime), и это время как раз может перескочить через INT32_MAX. Но это ещё спорный вопрос, следует ли считать багами баги внутри багов.