AMX MOD X
Среда, 23.09.2020, 20:36:21



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » get_user_ping
get_user_ping
hatchДата: Понедельник, 08.02.2010, 20:04:57 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 2
Статус: Не в сети
Всем доброго времени суток!

Меня интересует такой вопрос, почему вот в таком коде:

Code

public client_putinserver(id) //Тут я пробовал и client_connect(id) и client_authorized(id)
{
   get_user_ping(id, ping, loss)
     
   server_print("Ping %d", ping)
}

Пинг выдёт 0 ???

И в то же время, в этом коде (уже находясь на сервере):

Code

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_concmd("amx_test", "cmdTest", -1, " - testing the plugin")
}

public cmdTest(id)
{
   get_user_ping(id, ping, loss)
     
   client_print(id, print_console, "Ping: %d Loss: %d", ping, loss)
}

Выдаёт норм пинг. Ну т.е. отличное от нуля число.
Почему так? Не успевает определить пинг? По идее же в putinserver должен же успевать...


Ыыы...

Сообщение отредактировал hatch - Понедельник, 08.02.2010, 20:15:11
 
FreeKILLДата: Вторник, 09.02.2010, 09:13:23 | Сообщение # 2
Подполковник
Группа: Пользователи
Сообщений: 143
Репутация: 4
Статус: Не в сети
лучше через set_task, если тебе надо, чтобы при входе на сервер был виден его пинг,но потом он сразу убрался, то сделай так:
Code

public client_putinserver(id)
{
  set_task(0.2,"ping_stats",id,_,_,"b")
}
public ping_stats(id)
{
  if(is_user_alive(id) || is_user_connected(id) || 1 <= get_user_team(id) <= 2)
   {
   new ping,loss
   get_user_ping(id,ping,loss)
   client_print(id,print_chat,"You have %d ping",ping)
   remove_task(id)
   }
  return PLUGIN_HANDLED
}
  

в этом случае пинг покажется один раз, как только юзер выберет команду. Можеш добавить ещё один сет таск, чтобы показывать пинг определенное кол-во времени(я бы так и сделал). Либо убрать remove_task и пинг будет показываться все время.
 
hatchДата: Суббота, 27.02.2010, 01:30:54 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 37
Репутация: 2
Статус: Не в сети
Спасибо за ответ, но это не совсем то что я хотел. Да и я уже реализовал это почти таким же путём:
Code

public client_putinserver(id)
{    
      check_ping(id)
}

public check_ping(id)
{
      get_user_ping(id, ping, loss)    
         
      if(!ping)
      {
         set_task(0.5, "check_ping", id)
         return PLUGIN_HANDLED
      }
         
      server_print("Ping %d", ping)    
}

Кстати если выполнять такую проверку менее чем раз в 0.5 сек., то пинг может быть кривой (другими словами > 1000)

З.Ы. кстати putinserver это энтити не когда игрок выбирает команду, а когда он уже приконнектился и получает флаг UNASSIGNED.

З.Ы.Ы. У кого какие еще есть идеи, как определить пинг до момента когда уже игрок на сервере. Мне важно поймать пинг именно в момент client_connect или authorized. На край в putinserver.

Добавлено (27.02.2010, 01:30:54)
---------------------------------------------
Похоже больше никак...


Ыыы...

Сообщение отредактировал hatch - Среда, 10.02.2010, 05:44:20
 
pikeДата: Суббота, 27.02.2010, 16:09:55 | Сообщение # 4
Полковник
Группа: Пользователи
Сообщений: 207
Репутация: 4
Статус: Не в сети
Quote (hatch)
Кстати если выполнять такую проверку менее чем раз в 0.5 сек., то пинг может быть кривой (другими словами > 1000)

а если сделать три проверки ?
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » get_user_ping
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2020