|
Выдирание места игрока в статистике при коннекте на сервер
|
|
| Rockon | Дата: Четверг, 07.05.2009, 21:55:19 | Сообщение # 1 |
 Подполковник
Группа: Скриптеры
Сообщений: 137
Статус: Не в сети
| Собственно столкнулся я с проблемой: 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
Статус: Не в сети
| Quote (Rockon) get_user_stats(id,izStats,izStats) Как-то некорректно мне кажется Попробуй 2 сделать разных массива
http://romanov4400.mybrute.com
|
| |
|
|
| Rockon | Дата: Пятница, 08.05.2009, 09:42:42 | Сообщение # 3 |
 Подполковник
Группа: Скриптеры
Сообщений: 137
Статус: Не в сети
| честно говоря это никак не играет в коде. Я пробовал и так тоже, просто ещё 1 лишняя переменная. iRankPos всегда будет равен %i(номер в статистике)
|
| |
|
|
| Koka | Дата: Пятница, 08.05.2009, 18:37:22 | Сообщение # 4 |
 Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| 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
Статус: Не в сети
| стоп коннект - client_coonect а client_putinserver - это уже просмотр приветсвтия сервера(motd)! Я сделал через путина естественно, но хочется, чтобы при самом начале(как в стандартном плагине админослотов) ты подключаешся к серверу, если сервер переполнен - тебя кикает.
|
| |
|
|
| Koka | Дата: Вторник, 12.05.2009, 14:40:56 | Сообщение # 6 |
 Полковник
Группа: Пользователи
Сообщений: 169
Статус: Не в сети
| хз для меня "коннект" это полная идентификация игрока, а не только какоето событие что там ктото присоединился. поэтому тебе нужно переписать модуль 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); } вроде так 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
Статус: Не в сети
| Quote (Rockon) во втором узнать, но клиент при этом уже успевает подконнетиться к моему серверу и посмотреть на окно MOTD, что не тру ибо клиент своим подключением кушает канал и сервер немного грузит. непонятно, какое отношение это имеет к проблеме? если хочешь показать ему его же ранг, ну отправь ему еще одно motd сообщение. или откчлюи на сервере motd и рассылай его сам в нужное тебе время.
|
| |
|
|
| Rockon | Дата: Пятница, 15.05.2009, 09:02:09 | Сообщение # 8 |
 Подполковник
Группа: Скриптеры
Сообщений: 137
Статус: Не в сети
| Quote (slogic) непонятно, какое отношение это имеет к проблеме? если хочешь показать ему его же ранг, ну отправь ему еще одно motd сообщение. или откчлюи на сервере motd и рассылай его сам в нужное тебе время. я не хочу никому никакой ранг показывать, я выдаю слоты то10 игрокам. Поэтому мне надо ловить статистику на public client_connect()(когда игрок игрок только-только подключается к северу). Если наглядно - то как при входе на забитый сервер, когда у человека нет резервного слота его кикает. пс стата по нику
|
| |
|
|