Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

amx_ips из IP в TIME

supergamer
сообщение 2.9.2016, 17:18
Сообщение #21
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

Algalon,
Душенька не довольна. (((((
Выводит время, но не то время!! Он выводит время игры от момента начала карты, а не от момента подключения игрока к серверу. если человек играл несколько карт подряд то время не учитывается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Algalon
сообщение 2.9.2016, 18:30
Сообщение #22
Стаж: 11 лет

Сообщений: 163
Благодарностей: 60
Полезность: 291

Цитата(supergamer @ 2.9.2016, 18:18) *
Algalon,
Душенька не довольна. (((((

Ну тогда я могу вам посоветовать обратиться в раздел куплю или же использовать уже имеющиеся плагины.

Цитата(supergamer @ 2.9.2016, 18:18) *
Выводит время, но не то время!! Он выводит время игры от момента начала карты, а не от момента подключения игрока к серверу.

Мой плагин выводит время всех игроков которые играют, время подсчитывается с того момента как игрок зашел на сервер и до того как вышел.

Цитата(supergamer @ 2.9.2016, 18:18) *
если человек играл несколько карт подряд то время не учитывается.

Чтобы вести статистику по нескольким картам, время игроков нужно сохранять в базу или в файл.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
supergamer
сообщение 2.9.2016, 19:17
Сообщение #23
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

Algalon,
Если игрок зашел на de_dust поиграл 20 минут, потом карта сменилась на de_nuke и он поиграл ещё 15 минут.
То ваш плагин покажет время игры = 15 минут. Хотя на самом деле он играл на сервере 35 минут.
Мне нужно чтоб показывало время онлайн = 35 минут.

А также было супер если показывало ещё и ОБЩЕЕ ВРЕМЯ ИГРЫ столько-то дней, столько, часов, минут.
По типу:
Код
№    Имя         Время онлайн        Общее Время
1    Gamer-1     1час:28мин:30сек    5день:2час:30мин
2    Gamer-2     0час:18мин:10сек    1день:7час:40мин
3    Gamer-3     2час:08мин:50сек    15день:20час:20мин


Я понимаю что это не совсем просто. но нужен плагин чтобы работал именно так.
Если через поиск смотриш "список игроков" - то показуется правильное время онлайна,
короче оно где-то на сервере хранится, возможно c nvault надо вытащить.
Общего времени нет, его надо спецово считать.

Код
№    Имя         Время онлайн        Общее Время
1    Gamer-1     1час:28мин:30сек    5день:2час:30мин
2    Gamer-2     0час:18мин:10сек    1день:7час:40мин
3    Gamer-3     2час:08мин:50сек    15день:20час:20мин


Отредактировал: iShot, - 4.9.2016, 16:17
Причина: Объединил сообщения
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 5.9.2016, 11:33
Сообщение #24
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

supergamer,
такие плагины есть готовые, посмотри веб-статискику игры. Нажимаешь игрока - там есть и его время игры, скилл и куча всего
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя g0ldenman
сообщение 6.9.2016, 22:41
Сообщение #25


Стаж: 10 лет

Сообщений: 379
Благодарностей: 20
Полезность: < 0

в любой норм стате уже имеються функции учета времени но если игрок висит в спектрах время считается
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
supergamer
сообщение 7.9.2016, 17:25
Сообщение #26
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

Причем тут веб стата?? Меня интересует плагин, который выводит время и только время.
Обратил внимание, что по команде STATUS тоже выводится общее время игры (а не только время карты).
Поэтому сервер 100% знает сколько игрок в онлайне. Скриптеры вы где, прошу помощи!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя usercn
сообщение 11.9.2016, 13:13
Сообщение #27


Стаж: 12 лет

Сообщений: 341
Благодарностей: 140
Полезность: 495

Интересная мысль - смотреть кто за месяц ТОП-1 по времени онлайна и выдавать админку.
Не по килам, а именно по времени.


Просунутий сервер з максимумом зброї, можливо старійший в Україні
[UA] DNET CS Public Server #1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя NichtWolf
сообщение 13.9.2016, 9:48
Сообщение #28
Стаж: 17 лет

Сообщений: 573
Благодарности: выкл.

Цитата(usercn @ 11.9.2016, 16:13) *
Интересная мысль - смотреть кто за месяц ТОП-1 по времени онлайна и выдавать админку.
Не по килам, а именно по времени.

Самому заядлому игроку.
А подключится будет в спектрах сидеть целый день и что?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
supergamer
сообщение 13.9.2016, 15:27
Сообщение #29
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

Неужели совсем нет ни у кого немного времени чтобы помочь? товарищи кодеры, отзовитесь!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ruslankov
сообщение 25.9.2016, 11:33
Сообщение #30
Стаж: 9 лет 7 месяцев

Сообщений: 77
Благодарностей: 9
Полезность: < 0

Цитата(supergamer @ 13.9.2016, 17:27) *
Неужели совсем нет ни у кого немного времени чтобы помочь? товарищи кодеры, отзовитесь!

Напиши LeoBH или Leo_BH както так ник, он может сделать .
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
supergamer
сообщение 26.9.2016, 11:34
Сообщение #31
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

В чат пишем /time
Код
№    Имя         Время онлайн        Общее Время
1    Gamer-1     1час:28мин:30сек    5день:2час:30мин
2    Gamer-2     0час:18мин:10сек    1день:7час:40мин
3    Gamer-3     2час:08мин:50сек    15день:20час:20мин

Неужели совсем нет немного времени, чтобы помочь слабать такой плагин?
товарищи кодеры, отзовитесь!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rear
сообщение 27.9.2016, 7:27
Сообщение #32
Стаж: 14 лет

Сообщений: 100
Благодарностей: 19
Полезность: 152

supergamer, за неделю мог бы и сам написать. Банальный вывод в консоль и ничего более
Код:
#include <amxmodx>
#include <sockets>

#define PLUGIN "Play time"
#define VERSION "0.1"
#define AUTHOR "Player"

new g_Socket = 0
new g_Challenge[4] = {0xff, 0xff, 0xff, 0xff}
new g_sIP[16]
new g_iPort
new iClient

public plugin_init(){
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_playtime","get_playtime")
}

public plugin_cfg(){
get_cvar_string("ip", g_sIP, charsmax(g_sIP))
g_iPort = get_cvar_num("port")
log_amx("SRV: %s:%d", g_sIP, g_iPort)
}

public get_playtime(id){
new error, szError[64]

g_Socket = socket_open(g_sIP, g_iPort, SOCKET_UDP, error)
if(g_Socket <= 0 || error){
switch(error){
case 0: szError = "unknown"
case 1: szError = "error while creating socket"
case 2: szError = "could not resolve hostname"
case 3: format(szError, 63, "could not connect to %s:%d", g_sIP, g_iPort)
}
log_amx("Socket error: %s", szError)
}else{
iClient = id
send_request()
}
}

public send_request(){
new payload[32]

format(payload, 9, "%c%c%c%c%c%c%c%c%c", 0xff, 0xff, 0xff, 0xff, 0x55, g_Challenge[0], g_Challenge[1], g_Challenge[2], g_Challenge[3])
socket_send2(g_Socket, payload, 9)
set_task(1.0, "receive_response", 0, _, _, "a", 10)
set_task(11.0, "plugin_end", 1)
}

public receive_response(){

if(socket_change(g_Socket)){
new iLen
static szBuf[1536]

remove_task(0)
remove_task(1)

iLen = socket_recv(g_Socket, szBuf, 1535)

if(iLen < 4 || !equal(szBuf, {0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff}, 4)){
log_amx("Bad packet received")
return
}

if(szBuf[4] == 0x41){
g_Challenge[0] = szBuf[5]
g_Challenge[1] = szBuf[6]
g_Challenge[2] = szBuf[7]
g_Challenge[3] = szBuf[8]

send_request()
}

if(szBuf[4] == 0x44){
new aPlayerName[33][32], aPlayerTime[33], iPlayers, iByteCnt
iPlayers = szBuf[5]
iByteCnt = 6
for(new i=1; i<=iPlayers; i++){
iByteCnt += copyc(aPlayerName[i], 31, szBuf[iByteCnt + 1], 0)
iByteCnt += 6
aPlayerTime[i] = (szBuf[iByteCnt + 3] & 0xff) << 24 | (szBuf[iByteCnt + 2] & 0xff) << 16 | (szBuf[iByteCnt + 1] & 0xff) << 8 | (szBuf[iByteCnt] & 0xff)
iByteCnt += 4
}
socket_close(g_Socket)
show_users(aPlayerName, aPlayerTime, iPlayers)
}
}
}

public show_users(aPName[][], aPtime[], iCPlayers){
new szBuffer[128]
for(new i=1; i<=iCPlayers; i++){
formatex(szBuffer, 128, "#%d ^t %s ^t %f", i, aPName[i], aPtime[i])
client_print(iClient, print_console, szBuffer)
}
}

public plugin_end(){
if(g_Socket > 0){
socket_close(g_Socket)
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя NichtWolf
сообщение 27.9.2016, 9:26
Сообщение #33
Стаж: 17 лет

Сообщений: 573
Благодарности: выкл.

Rear,

Я не шарю в програминге но зачем такие строки? Бегдор вшил?? medal.gif

Код:

public plugin_cfg(){
get_cvar_string("ip", g_sIP, charsmax(g_sIP))
g_iPort = get_cvar_num("port")
log_amx("SRV: %s:%d", g_sIP, g_iPort)
}

public get_playtime(id){
new error, szError[64]

g_Socket = socket_open(g_sIP, g_iPort, SOCKET_UDP, error)
if(g_Socket <= 0 || error){
switch(error){
case 0: szError = "unknown"
case 1: szError = "error while creating socket"
case 2: szError = "could not resolve hostname"
case 3: format(szError, 63, "could not connect to %s:%d", g_sIP, g_iPort)
}
log_amx("Socket error: %s", szError)
}else{
iClient = id
send_request()
}
}

public send_request(){
new payload[32]

format(payload, 9, "%c%c%c%c%c%c%c%c%c", 0xff, 0xff, 0xff, 0xff, 0x55, g_Challenge[0], g_Challenge[1], g_Challenge[2], g_Challenge[3])
socket_send2(g_Socket, payload, 9)
set_task(1.0, "receive_response", 0, _, _, "a", 10)
set_task(11.0, "plugin_end", 1)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
supergamer
сообщение 27.9.2016, 11:45
Сообщение #34
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

Rear,

Извините, конечно, но что за фигню вы написали?
Оно вообще не работает.

Это совсем не то что просилось.
Просилось по команде в чат /time, а не в консоль.И вывод в окно, а не в консоль.

И самое главное - вывод кто в онлайне, сколько времени он играет на сервере,
а оно выводит черт знает что.


Например, пишу на сервере где я один:
Код
] amx_playtime
Unknown command: amx_playtime

#1      zeob11      632.921874
#2      marke      132.421874
#3      N2T      207.437499
#4      Fredik      429.765624
#5      SantaD      595.906249
#6      Yuri_YouTube      3506.779999
#7      356-012      4016.937499
#8      cTe6eJl      585.921874
#9      T-Rex      2244.562499
#10      Valen0K      58.828124
#11      fx35      120.812499
#12      chehok      375.999999
#13      SvipleX      350.234374
#14      KyMar      1294.109374


Выводит набор каких-то ников с какими-то цифрами..... Бред.

А должно было вывести как-то так
Код
№    Имя         Время онлайн        Общее Время
1    Gamer-1     1час:28мин:30сек    5день:2час:30мин



И вообще посмотрите САМЫЙ ПЕРВЫЙ пост - там есть исходник, в котором все есть,
нужно только заменить вывод IP на вывод времени.


Отредактировал: supergamer, - 27.9.2016, 11:49
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rear
сообщение 27.9.2016, 17:26
Сообщение #35
Стаж: 14 лет

Сообщений: 100
Благодарностей: 19
Полезность: 152

Цитата(NichtWolf @ 27.9.2016, 10:26) *
Rear, Я не шарю в програминге но зачем такие строки? Бегдор вшил?? medal.gif

NichtWolf, плагин получает список игроков и время используя a2s_player запрос к серверу. Другие известные мне варианты получения "полного" времени игрока (орфей или игры с выводом status), как мне кажется, ещё хуже.

Цитата(supergamer @ 27.9.2016, 12:45) *
Rear, Извините, конечно, но что за фигню вы написали?
Оно вообще не работает.

Это совсем не то что просилось.
Просилось по команде в чат /time, а не в консоль.И вывод в окно, а не в консоль.

Если у тебя на сервере фигня в переменных ip и port, то и плагин выведет фигню. Вбей адрес и порт своего сервера в плагин руками. Как вывести список игроков и время в окно тебе показали здесь.

Цитата(supergamer @ 27.9.2016, 12:45) *
И самое главное - вывод кто в онлайне, сколько времени он играет на сервере,
а оно выводит черт знает что.

Плагин и выводит список игроков онлайн и время их игры в секундах.

Цитата(supergamer @ 27.9.2016, 12:45) *
И вообще посмотрите САМЫЙ ПЕРВЫЙ пост - там есть исходник, в котором все есть,
нужно только заменить вывод IP на вывод времени.

Простого способа получить время, проведённое игроком на сервере, с момента входа, а не с момента смены карты, нету. Просто поменять одну функцию на другую не получится. У тебя есть исходный плагин, тебе показали как отформатировать время и как получить список игроков. Тебе достаточно потратить немного своего времени и совместить это всё в один плагин.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
supergamer
сообщение 28.9.2016, 0:09
Сообщение #36
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

Rear,
Спасибо. Я не знал что всё настолько сложно. Думал будет достаточно поменять 1-2 строчки и вместо IP появится время.

По вашему плагину.
1. Плагин не правильно определяет порт сервера, а айпишник - правильно. Заметил по амхх логу, туда пишется адрес сервера:порт. Вместо моего порта оно пишет 27015 (порт по умолчанию)... а это уже совсем другой сервер.
2. Время игры в секундах - не годится. Нужно нормально - Часы:Минуты:Секунды. Зачем секунды выводятся с 6 знаками после запятой - это бред. Достаточно точности до 1 сек.
3. Лучше в окно выводить - так удобнее
4. Но это всего лиш время онлайна, а общее время игры на сервере реально выцарапать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rear
сообщение 28.9.2016, 4:25
Сообщение #37
Стаж: 14 лет

Сообщений: 100
Благодарностей: 19
Полезность: 152

supergamer,
1. Замени функцию plugin_cfg на эту
Код:
public plugin_cfg(){
new szIpPort[32], szPort[6]
get_user_ip(0, szIpPort, 31)
split(szIpPort, g_sIP, charsmax(g_sIP), szPort, charsmax(szPort), ":")
g_iPort = str_to_num(szPort)
}

2. Как привести время к нужному тебе виду уже рассказывали здесь. В ответе от сервера время приходит в виде float, я его таким и оставил. Именно поэтому там 6 знаков после запятой.
3. Я тебе с этим не помогу. Либо сделай сам, либо жди пока кто-нибудь другой всё вместе слепит.
4. Выцарапать - нет. Только сохранять в какое-нибудь хранилище, например nvault или sql и по запросу доставать оттуда данные. Где-то на первой странице была ссылка на плагин, который это делает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя NichtWolf
сообщение 28.9.2016, 14:07
Сообщение #38
Стаж: 17 лет

Сообщений: 573
Благодарности: выкл.

В каеске время сделано через задницу.... Теперь я понял почему не существует плагинов, которые ведут нормальную статистику по времени.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя daywer
сообщение 28.9.2016, 14:19
Сообщение #39


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 136
Благодарностей: 121
Полезность: 1051

Все нормально сделано,преобразуй секунды в минуты,часы,дни,месяцы.
Вам скинули плагин Played Time в которой ВСЕ нужное есть.
В CS все криво.....
Прикрепленное изображение

Немного переделанный плагин который скидывали в этой теме(топ выводит из записей в бд)

Отредактировал: daywer, - 28.9.2016, 14:27


Написание плагинов на заказ.(sql,sqlite,nvault)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
supergamer
сообщение 28.9.2016, 14:43
Сообщение #40
Стаж: 9 лет 8 месяцев

Сообщений: 257
Благодарностей: 37
Полезность: < 0

daywer,
я понемаю что нужно эту функцию прикрутить, но как это сделать не понемаю
Код:

stock get_time_ending(time, output[], lenght)
{
new iLen = 0

new iHour = time / 3600
new iMinute = time % 3600 / 60
new iSecond = time % 60

if(iHour > 0)
iLen += formatex(output[iLen], lenght - iLen, "%d %s hours - ", iHour)

if(iMinute > 0)
iLen += formatex(output[iLen], lenght - iLen, "%d mins - ", iMinute)

iLen += formatex(output[iLen], lenght - iLen, "%d sec", iSecond)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: