AMX MOD X
Пятница, 09.01.2026, 20:53:48



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
почему не обновляются данные в данном скрипте
BruteДата: Вторник, 05.08.2008, 05:35:30 | Сообщение # 1
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
сабж...

Code
#include <amxmodx>

#define PLUGIN "Show Players Info for CS-Infinity.Ru"
#define VERSION "1.5.0.1"
#define AUTHOR "Brute"

#define MAX_BUFFER_LENGTH 2047
                      
public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_cvar("amx_show_ip", "1")
   register_clcmd("all","PrintAllToConsole")
   register_clcmd("say", "Check_Command_PlayerListTOMotd")
   register_clcmd("say_team", "Check_Command_PlayerListTOMotd")
}
public Check_Command_PlayerListTOMotd(id)
{
   if(get_cvar_num("amx_show_ip") == 1)
   {
    new arg[32]
    read_argv(1, arg, 31)
      
    if(equali(arg, "/all")
     || equali(arg, " /all")
     || equali(arg, "/all ")
     || equali(arg, " /all "))
    {
     set_task(1.0, "PlayerListTOMotd", id)
    }
   }
   else
   {
    client_print(id, print_chat, "[Brute]: This plugin is switched off")
   }
   return PLUGIN_CONTINUE
}

public PlayerListTOMotd(id)
{
   if(get_cvar_num("amx_show_ip") == 1)
   {
    new szMotdBody[MAX_BUFFER_LENGTH+1], len = 0, number = 0
    len = format(szMotdBody, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>")
    len += format(szMotdBody[len], MAX_BUFFER_LENGTH-len, "Player list^n")
      
    new name[32], authid[32], address[32], players[32], pnum;

    get_players(players, pnum, "h")
    for(new i=0; i<pnum; i++)
    {
     new iPlayer = get_user_userid(players[i])
     if(is_user_connected(iPlayer))
      continue

     number++
     get_user_name(players[i], name, 31);
     get_user_authid(players[i], authid, 31);
     get_user_ip(players[i], address, 31);
     len += format(szMotdBody[len], MAX_BUFFER_LENGTH-len, "^n^n[%d]----^nname: %s^nauthid: %s^naddress: %s", number, name, authid, address);
    }
    show_motd(id, szMotdBody, "MOTD:PLAYERS INFO");
   }
}

public PrintAllToConsole(id)
{
   if(get_cvar_num("amx_show_ip") == 1)
   {
    new number = 0
    client_print(id, print_console, "Player list")
    new name[32], authid[32], address[32], players[32], pnum;
    get_players(players, pnum, "h")
    for(new i=0; i<pnum; i++)
    {
     new iPlayer = get_user_userid(players[i])
     if(is_user_connected(iPlayer))
      continue
     number++
     get_user_name(players[i], name, 31)
     get_user_authid(players[i], authid, 31)
     get_user_ip(players[i], address, 31, 1)

     client_print(id, print_console, "[%d]----", number)
     client_print(id, print_console, "name: %s", name)
     client_print(id, print_console, "authid: %s", authid)
     client_print(id, print_console, "address: %s", address)
    }
   }
   return PLUGIN_HANDLED
}

Больше всего волнует эта процедура.
Code
public PrintAllToConsole(id)
{
  if(get_cvar_num("amx_show_ip") == 1)
  {
   new number = 0
   client_print(id, print_console, "Player list")
   new name[32], authid[32], address[32], players[32], pnum;
   get_players(players, pnum, "h")
   for(new i=0; i<pnum; i++)
   {
    new iPlayer = get_user_userid(players[i])
    if(is_user_connected(iPlayer))
     continue
    number++
    get_user_name(players[i], name, 31)
    get_user_authid(players[i], authid, 31)
    get_user_ip(players[i], address, 31, 1)

    client_print(id, print_console, "[%d]----", number)
    client_print(id, print_console, "name: %s", name)
    client_print(id, print_console, "authid: %s", authid)
    client_print(id, print_console, "address: %s", address)
   }
  }
  return PLUGIN_HANDLED
}
Прикрепления: show_players_in.sma (2.5 Kb)


Сообщение отредактировал Brute - Вторник, 05.08.2008, 05:36:30
 
slogicДата: Вторник, 05.08.2008, 13:49:03 | Сообщение # 2
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Тут ошибка:
Quote (Brute)
 new iPlayer = get_user_userid(players[i])
    if(is_user_connected(iPlayer))

players[i] - и есть id игрока, который надо передавать во все функции amx/x.
 
BruteДата: Вторник, 05.08.2008, 13:55:52 | Сообщение # 3
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Quote (slogic)
new iPlayer = get_user_userid(players[i])
if(is_user_connected(iPlayer))

если эту операцию не делать-то вообще по нолям будет, сам попробуй-я сам не втыкаю, что за...
 
marikcoolДата: Вторник, 05.08.2008, 15:05:52 | Сообщение # 4
Подполковник
Группа: Пользователи
Сообщений: 139
Репутация: 1
Статус: Не в сети
)) счас поковыряю)

Сообщение отредактировал marikcool - Вторник, 05.08.2008, 15:09:40
 
slogicДата: Среда, 06.08.2008, 12:59:51 | Сообщение # 5
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Ну пойдем дальше:
Code

      if(is_user_connected(iPlayer))   
       continue

Вопросы еще есть по своему собственному коду?

 
BruteДата: Среда, 06.08.2008, 13:04:39 | Сообщение # 6
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Короче я эту проверку на подключенность клиента к серверу кинул в топку. И всё работает, думаю ошибок плагин кидать не будет. Т.к. get_players(players, pnum, "h") - эта штука итак проверяет подключен ли клиент или нет.
 
slogicДата: Среда, 06.08.2008, 22:43:13 | Сообщение # 7
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
То условие делало вот что - если клиент подключен, то дальше НИЧЕГО НЕ ВЫПОЛНЯЛОСЬ, что и происходило всегда.
 
BruteДата: Четверг, 07.08.2008, 08:14:37 | Сообщение # 8
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Quote (slogic)
То условие делало вот что - если клиент подключен, то дальше НИЧЕГО НЕ ВЫПОЛНЯЛОСЬ, что и происходило всегда.

Очень интересно, т.е. я не хрена не понимаю huh , может пояснить, плз.
 
slogicДата: Четверг, 07.08.2008, 12:50:19 | Сообщение # 9
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Оператор continue прерывает выполнение остатка тела цикла и начинает новую итерацию (новый цикл).
 
BruteДата: Четверг, 07.08.2008, 13:33:42 | Сообщение # 10
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
Quote (slogic)
Оператор continue прерывает выполнение остатка тела цикла и начинает новую итерацию (новый цикл).

тоесть цикл прервётся... И как же делать, чтобы не рвать цикл?
 
slogicДата: Четверг, 07.08.2008, 14:48:19 | Сообщение # 11
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Выкинуть то условие, что ты и сделал или поменять логику на обратную, чтобы остаток цикла НЕ выполнялся, если клиент НЕ подключен.
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026