AMX MOD X
Понедельник, 28.09.2020, 16:08:44



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

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Выдирание места игрока в статистике при коннекте на сервер
Выдирание места игрока в статистике при коннекте на сервер
RockonДата: Четверг, 07.05.2009, 21:55:19 | Сообщение # 1
Подполковник
Группа: Скриптеры
Сообщений: 137
Репутация: 1
Статус: Не в сети
Собственно столкнулся я с проблемой:
Code
public client_authorized(id)
{
         new iRankPos
        new izStats[8]
      iRankPos = get_user_stats(id,izStats,izStats)
}

в первом случае статистику не узнать

Code
public client_putinserver(id)
{
         new iRankPos
        new izStats[8]
      iRankPos = get_user_stats(id,izStats,izStats)
}

во втором узнать, но клиент при этом уже успевает подконнетиться к моему серверу и посмотреть на окно MOTD, что не тру ибо клиент своим подключением кушает канал и сервер немного грузит.
Мне же надо, чтобы статистика выуживалась именно при подключении игрока к серверу. Как это реализовать?

пс у меня не работает так же join ip - он не отображает место игрока в статистике, пишет

Quote
Rockon (RANK: 0 of 100) is connecting to server.

вобщем не знаю что делать, подскажите если можно(

ппс порядок такой?:
client_authorized
client_connect
client_putinserver

Добавлено (2009-05-07, 9:55 Pm)
---------------------------------------------
поднимаю тему)

Сообщение отредактировал Rockon - Суббота, 02.05.2009, 02:18:07
 
PomanoBДата: Четверг, 07.05.2009, 22:24:42 | Сообщение # 2
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Quote (Rockon)
get_user_stats(id,izStats,izStats)

Как-то некорректно мне кажется
Попробуй 2 сделать разных массива


http://romanov4400.mybrute.com
 
RockonДата: Пятница, 08.05.2009, 09:42:42 | Сообщение # 3
Подполковник
Группа: Скриптеры
Сообщений: 137
Репутация: 1
Статус: Не в сети
честно говоря это никак не играет в коде. Я пробовал и так тоже, просто ещё 1 лишняя переменная. iRankPos всегда будет равен %i(номер в статистике)
 
KokaДата: Пятница, 08.05.2009, 18:37:22 | Сообщение # 4
Полковник
Группа: Пользователи
Сообщений: 169
Репутация: 1
Статус: Не в сети
Code

public client_putinserver(id)
{
        set_task(0.1, "postPutin", id)
}

public postPutin(id)
{
        if(is_user_connected(id))
        {
              new izStats[8]
              new iRankPos = get_user_stats(id,izStats,izStats)
        }
}

т.к. только через 0.1 сек после конекта он уже определился в стате =)


стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...

Сообщение отредактировал Koka - Пятница, 08.05.2009, 18:37:52
 
RockonДата: Суббота, 09.05.2009, 19:04:30 | Сообщение # 5
Подполковник
Группа: Скриптеры
Сообщений: 137
Репутация: 1
Статус: Не в сети
стоп коннект - client_coonect
а client_putinserver - это уже просмотр приветсвтия сервера(motd)!
Я сделал через путина естественно, но хочется, чтобы при самом начале(как в стандартном плагине админослотов) ты подключаешся к серверу, если сервер переполнен - тебя кикает.
 
KokaДата: Вторник, 12.05.2009, 14:40:56 | Сообщение # 6
Полковник
Группа: Пользователи
Сообщений: 169
Репутация: 1
Статус: Не в сети
хз для меня "коннект" это полная идентификация игрока, а не только какоето событие что там ктото присоединился.

поэтому тебе нужно переписать модуль csx :)

meta_api.cpp
195 строка

Code

void ClientPutInServer_Post( edict_t *pEntity ) {
    GET_PLAYER_POINTER(pEntity)->PutInServer();
    RETURN_META(MRES_IGNORED);
}

вот эту GET_PLAYER_POINTER(pEntity)->PutInServer(); надо вставить в бул на 176 линии:

Code
BOOL ClientConnect_Post( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ]  ){
    CPlayer *pPlayer = GET_PLAYER_POINTER(pEntity);
       
    if (pPlayer->pEdict == NULL)
    {
     pPlayer->Init(ENTINDEX(pEntity), pEntity);
    }
       
    pPlayer->Connect(pszAddress);

    RETURN_META_VALUE(MRES_IGNORED, TRUE);
}

вроде так blush

ps: PutInServer() это CMisc.cpp на 78 линии

Code
void CPlayer::PutInServer(){

  //if ( ignoreBots(pEdict) )
  if ( (int)csstats_rankbots->value == 0 &&
    IsBot() )
   return;

  restartStats();
  const char* name = STRING(pEdict->v.netname);
  const char* unique = name;
  bool isip = false;
  switch((int)csstats_rank->value) {
  case 1:  
   if ( (unique = GETPLAYERAUTHID(pEdict)) == 0 )
    unique = name; // failed to get authid
   break;
  case 2:
   unique = ip;
   isip = true;
  }
  rank = g_rank.findEntryInRank( unique , name , isip);
}


стал ощущать рефлексы тоньше, оставаясь как всегда с идеей той же...

Сообщение отредактировал Koka - Вторник, 12.05.2009, 15:04:51
 
slogicДата: Четверг, 14.05.2009, 20:38:00 | Сообщение # 7
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (Rockon)
во втором узнать, но клиент при этом уже успевает подконнетиться к моему серверу и посмотреть на окно MOTD, что не тру ибо клиент своим подключением кушает канал и сервер немного грузит.

непонятно, какое отношение это имеет к проблеме? если хочешь показать ему его же ранг, ну отправь ему еще одно motd сообщение. или откчлюи на сервере motd и рассылай его сам в нужное тебе время.
 
RockonДата: Пятница, 15.05.2009, 09:02:09 | Сообщение # 8
Подполковник
Группа: Скриптеры
Сообщений: 137
Репутация: 1
Статус: Не в сети
Quote (slogic)
непонятно, какое отношение это имеет к проблеме? если хочешь показать ему его же ранг, ну отправь ему еще одно motd сообщение. или откчлюи на сервере motd и рассылай его сам в нужное тебе время.

я не хочу никому никакой ранг показывать, я выдаю слоты то10 игрокам. Поэтому мне надо ловить статистику на public client_connect()(когда игрок игрок только-только подключается к северу).
Если наглядно - то как при входе на забитый сервер, когда у человека нет резервного слота его кикает.
пс стата по нику
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Выдирание места игрока в статистике при коннекте на сервер
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2020