Работа с нативом csstats_get_user_place(id)

ApXuTekToR

Новичок
Сообщения
36
Реакции
8
Добрый день.
Использую натив
C++:
native csstats_get_user_place(id);
для получения места игрока в статистике.
C++:
// Пример:
static Place; Place = csstats_get_user_place(Id);
log_amx("begug: place = %d", Place);

почему то выводит в логе -1
C++:
L 09/15/2019 - 21:44:26: begug: place = -1

В чем может быть проблема?
 
Решение
@ApXuTekToR,
Код:
////////////
// ОШИБКИ //
////////////
#define CSSTATS_SUCCESS        1    // все нормально
#define CSSTATS_NOTCONNECT    -1    // игрок еще не загрузил статистику
#define CSSTATS_NOTVALID    -2    // не валидный игрок
#define CSSTATS_NOTWRITE    -3    // игрок не может быть записан в статистику (не сгенерирован стим айди)
#define CSSTATS_BADARG        -4    // не верный аргумент
#define CSSTATS_DISABLE        -6    // была ошибка MySQL, плагин отключен

вы пытаетесь узнать место юзера еще до того, как он загрузил свою статистику, соответственно надо вызывать натив позже, или делать проверку на коннект

Код:
// Вызывается когда игрок зашел на сервер и получил все данные
//    exists вернет true, если игрок уже...
@SKAJIbnEJIb, хм.. я Вас понял, но не совсем допер что с этим делать?
Статистику загружает Ваш плагин. Настроек в нем, когда именно загружать/обновлять статистику я не увидел.

И в таком случае, выводит у всех игроков -1.

Тогда скорее логичный вопрос, почему Ваша статистика выводит -1.
Не в коем случае не притензии.
Если Вас не затруднит, можете объяснить в каких случаях, и при каких обстоятельствах, статистика может выводить -1 у всех игроков и постоянно.

При том, что статистика считается нормально на сервере.
 
@ApXuTekToR,
Код:
////////////
// ОШИБКИ //
////////////
#define CSSTATS_SUCCESS        1    // все нормально
#define CSSTATS_NOTCONNECT    -1    // игрок еще не загрузил статистику
#define CSSTATS_NOTVALID    -2    // не валидный игрок
#define CSSTATS_NOTWRITE    -3    // игрок не может быть записан в статистику (не сгенерирован стим айди)
#define CSSTATS_BADARG        -4    // не верный аргумент
#define CSSTATS_DISABLE        -6    // была ошибка MySQL, плагин отключен

вы пытаетесь узнать место юзера еще до того, как он загрузил свою статистику, соответственно надо вызывать натив позже, или делать проверку на коннект

Код:
// Вызывается когда игрок зашел на сервер и получил все данные
//    exists вернет true, если игрок уже был в базе, false - если новый игрок
forward csstats_putinserver(id, bool:exists)
 
@SKAJIbnEJIb, я только начинаю вникать во всю эту кухню. Если Вас не затруднит, можете пожалуйста подсказать, как использовать данный форвард в case?

Вот пример кейса:
C++:
case MKT_AruTop: {
    static Place; Place = csstats_get_user_place(Id);
    static IntKey; IntKey = str_to_num(ModelData[MD_Key]);
    log_amx("begug: place = %d", Place);
    if(Place <= IntKey && Place > 0) return true;
}

В кейсе выполняется проверка на принадлежность игрока к месту в топе. И если игрок находится в даном интервале:
C++:
if(Place <= IntKey && Place > 0)
То к игроку применяются действия. В противном случае пропускаем действие.

Понимаю что не по тематике, но все же может подскажите :)
 
@ApXuTekToR, форвард это автовызываемая функция, вы можете использовать и заносить false/true ( загрузился игрко или нет ), если хотите использовать в функции проверку, то используйте
C++:
// ПВернет true, если игрок на сервере и загрузил все данные статистики
native csstats_is_user_connected(id)
// Вернет true, если игрок с нормальным стим айди и т.п.
native csstats_is_user_write(id)
 
@ApXuTekToR, вам надо делать проверку, если натив вернул -1, то функцию вашу с кейсом выполнить через секунду. Так же надо проверку сделать и на остальные ошибки
 
@SKAJIbnEJIb, спасибо за помощь! Все получилось.
При использовании:
client_putinserver
натив возвращал -1, а при использовании:
csstats_putinserver
Все нормально отображается.

Спасибо еще раз за подсказки!
 
Сверху
Назад