AMX MOD X
Четверг, 01.01.2026, 21:52:17



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Как опознать игрока по USERID
CLLlAgOBДата: Понедельник, 07.01.2008, 03:41:48 | Сообщение # 1
Полковник
Группа: Скриптеры
Сообщений: 217
Репутация: 14
Статус: Не в сети
Вот часть кода:
Code
register_concmd("myac_kick","kick_now",ADMIN_LEVEL_A,"[USER_ID] [REASON]")
---------------------------------------------------------------
   
public kick_now(id,level,cid)
{
  if (!cmd_access(id, level, cid, 2))
   return PLUGIN_HANDLED
   
  new num[10], reas[32]
  read_argv(1,num,9)
  read_argv(2, reas, 31)
  remove_quotes(reas)
  new numb=str_to_num(num)
  new Frags
  Frags = get_user_frags(id)
  if(Frags >= get_cvar_num("myac_fraglimit"))
   {
   server_cmd("kick #%d ^"%s^"",numb, reas)
   }  
  return PLUGIN_CONTINUE  
}

Проблема в следующем:
Не работает фраглимит (myac_fraglimit "") тк команда посылаеться на сервер через ркон и он берет тут Frags = get_user_frags(id) Айди сервера тоесть 0 и считает его фраги а у сервера всегда 0 фрагов.
как сделать чтобы он считал фраги игрока номер которого отсылаеться коммандой myac_kick 3223 (пример (решетка не нужна))


Сообщение отредактировал CLLlAgOB - Понедельник, 07.01.2008, 03:43:21
 
AlModДата: Понедельник, 07.01.2008, 09:18:50 | Сообщение # 2
Сонный кодер
Группа: Админы
Сообщений: 600
Репутация: 27
Статус: Не в сети
если игрок идет первым (в параметрах команды), то он определяется так:

Code
    read_argv(1, arg, 31)  
  new player = cmd_target(id, arg, 6)


 
CLLlAgOBДата: Понедельник, 07.01.2008, 15:42:43 | Сообщение # 3
Полковник
Группа: Скриптеры
Сообщений: 217
Репутация: 14
Статус: Не в сети
Дело все в том что античит myac отсылает myac_kick 4 reason - В таком виде(Номер айди без решетки!)
И если ставить :
Code
read_argv(1, arg, 31)   
   new player = cmd_target(id, arg, 6)

То он попросту пишет что не находит игрока стаким айди / именем я так понял нужно ковярять include?
Или можно както обработать комманду добавив к ней решетку как я это сделал тут:
Code
server_cmd("kick #%d ^"%s^"",numb, reas)

Да разговаривал с разработчиком античита он упераеться и говорит что легко обработать полученое число и подставить решетку если нужно.
 
slogicДата: Понедельник, 07.01.2008, 22:18:05 | Сообщение # 4
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (CLLlAgOB)
То он попросту пишет что не находит игрока стаким айди / именем я так понял нужно ковярять include?

угу, ничего старшного нет. мне же пришлось сделать свой cmd_target в плагине Bot Marker, чтобы по #ip искал.
 
CLLlAgOBДата: Среда, 09.01.2008, 08:20:03 | Сообщение # 5
Полковник
Группа: Скриптеры
Сообщений: 217
Репутация: 14
Статус: Не в сети
Ну подскажите что нужно конкретно менять чтобы он только принимал user id и без решетки
я так понял ковырять нужно amxmisc.inc

Добавлено (2008-01-09, 7:34 Am)
---------------------------------------------
Спасибо вот сделал без решетки понимает только user id

Code
//-----------------------------------------------------------------------------
/* Flags:
*  1 - obey immunity
*  2 - allow yourself
*  4 - must be alive
*  8 - can't be bot */
stock cmd_target_id(id,const arg[],flags = 1) // extended cmd_target() to support ip
{
  new player = find_player("bl", arg);
  if(player)
  {
   if (player != find_player("blj",arg))  
   {
#if defined AMXMOD_BCOMPAT
    console_print(id, SIMPLE_T("There are more clients matching to your argument"));
#else
    console_print(id,"%L",id,"MORE_CL_MATCHT");
#endif
    return 0;
   }
  }
  // NOTE: there is implicit search by authid!
  else if((player = find_player("c", arg)) == 0 && arg[0])
  {
   player = find_player("k", str_to_num(arg[0])); // search by userid
  }
  if (!player)
  {
#if defined AMXMOD_BCOMPAT
   console_print(id, SIMPLE_T("Client with that name, userid not found"));
#else
   //console_print(id,"%L",id,"CL_NOT_FOUND");
   console_print(id,"Client with that name, userid not found");
#endif
   return 0;
  }
  if(flags & 1)
  {
   if ((get_user_flags(player)&ADMIN_IMMUNITY) && ((flags&2)?(id!=player):true) )  
   {
    new imname[32];
    get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
    console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname);
#else
    console_print(id,"%L",id,"CLIENT_IMM",imname);
#endif
    return 0;
   }
  }
  if(flags & 4)
  {
   if (!is_user_alive(player))  
   {
    new imname[32];
    get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
    console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname);
#else
    console_print(id,"%L",id,"CANT_PERF_DEAD",imname);
#endif
    return 0;
   }
  }
  if(flags & 8)
  {
   if (is_user_bot(player))  
   {
    new imname[32];
    get_user_name(player,imname,31);
#if defined AMXMOD_BCOMPAT
    console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname);
#else
    console_print(id,"%L",id,"CANT_PERF_BOT",imname);
#endif
    return 0;
   }
  }
  return player;
}
//-----------------------------------------------------------------------------

Добавлено (2008-01-09, 8:20 Am)
---------------------------------------------
Да спасибо вам все я рад что я нашел Этот портал )

 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026