Иконка ресурса

Player preferences 1.0.7

Нет прав для скачивания

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
655
Симпатии
228
Кстати стандартный Init.sql выдает ошибку " Multiple primary key defined "

В save_values(const id) вызывается SQL_ThreadQuery(g_hTuple, "ThreadHandler", buffer) без данных , а в ThreadHandler читаются данные.
Не будет ошибки доступа ?

может

C++:
    new data[2];
    data[0] = -1;
    data[1] = -1;
    SQL_ThreadQuery(g_hTuple, "ThreadHandler", buffer, data, sizeof data);
в save_values

а в
ThreadHandler

C++:
public ThreadHandler(failstate, Handle: query, error[], errnum, data[], size, Float: queuetime)   {
    if (failstate)  {
        log_error(AMX_ERR_NATIVE, "[PP] [%d]: %s", errnum, error);
        return PLUGIN_HANDLED;
    }

    new id = data[0];

    if (id == -1)
    {
        return PLUGIN_HANDLED;
    }
...
 

Вложения

Последнее редактирование:

angrybot

Администратор
Модератор
Разработчик
Постоялец
Пользователь
Дизайнер
Регистрация
15 Дек 2019
Сообщения
165
Симпатии
58
Nelpsen, покажи нам как получить пустой стим ид игрока, такая ситуация возможна, возможно, но как повторить?

cpCTRL, что учтено? у тебя с использованием authorized вообще каша может получиться. сверху правильно подметили.

может проще уже в существующую конфигурацию preferences.json добавить возможность выбора типа идентификатора пользователя?
добавляйте, должна быть возможность использовать то что хочется, а не лишь то что заготовлено.
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
256
Симпатии
60
Пол
Мужской
angrybot, я уже затестил на двух серверах , пустой Стимид получить не смог никак совсем
karaulov, ошибки не будет. Но я все же вынес в хэндлер-пустышку
Зачем хэшировать имя игрока и комбинить так? Не проще создать отдельную колонку для никнейма/ипа(почти у всех динамический ип, не думаю что пригодится)
 
Последнее редактирование:

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
655
Симпатии
228
cpCTRL, потому что места меньше занимает чем весь никнейм, + не будет проблем со строками если там запрещенные символы будут. (Я не знаю как их экранировать в строке. но все же кое какая оптимизация)

Если кодер захочет сохранить никнейм сохранит сам)
 

Nelpsen

Пользователь
Регистрация
9 Июл 2017
Сообщения
51
Симпатии
19
Пол
Мужской
Последнее редактирование:

Nelpsen

Пользователь
Регистрация
9 Июл 2017
Сообщения
51
Симпатии
19
Пол
Мужской
может и чушь, хз, что будет если if (a) отработает? Тогда форвард не вызовется, как я понимаю, надо понять в какой момент проверка отработает не так, как надо.

ссылка проверка на if ((authid == 0) || (*authid == 0) || (strcmp(authid, "STEAM_ID_PENDING") == 0)) я думаю здесь не спроста, в этом случае у нас авторизация не уйдет. STEAM_ID_PENDING прилетает часто, если конечно настройками reunion не обозначено другое поведение.

Зачем в сорсах тогда C_StartFrame_Post(void) покадровый просчет на наличие сида? В нем тоже отправляется авторизация, так или иначе думаю ситуация возможна такая, что он будет пустым или STEAM_ID_PENDING - что тоже не есть хорошо
 

georgeml

Скриптер
Постоялец
Регистрация
12 Сен 2017
Сообщения
584
Симпатии
302
Nelpsen, Не ищите ответы в амхмоде. Он же все равно в метамод полезет за данными. Думаю, это со времен старых движков и эмуляторов могла быть проблема с authid
 

Nelpsen

Пользователь
Регистрация
9 Июл 2017
Сообщения
51
Симпатии
19
Пол
Мужской
angrybot, если бы он еще был, там бы не было проверок, в любом случае я лучше перестраховался бы и запросы в ClientAuthorized отправил, ничего смертельного не случится, при успешном получение данных переключаем булевую, при выходе проверяем и отправляем другие запросы если нужно, не вижу никакой каши
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
256
Симпатии
60
Пол
Мужской
Nelpsen, регулярно пользуюсь получением стимида без проверки на авторизацию, уже 3е сказали за это. Сам же никогда не замечал пустого стима, с 1.8.3 и по 1.10, лет эдак с 5 ничего подобного не было
 

Nelpsen

Пользователь
Регистрация
9 Июл 2017
Сообщения
51
Симпатии
19
Пол
Мужской
cpCTRL, у BlackSignature прилетало, со времен хлдс правда, может что и изменили с того времени, но описание(примечание) к форварду не изменили
 

angrybot

Администратор
Модератор
Разработчик
Постоялец
Пользователь
Дизайнер
Регистрация
15 Дек 2019
Сообщения
165
Симпатии
58
не путай sid со steamid не путай sid со steam ticket ты писал о sid.
 

Nelpsen

Пользователь
Регистрация
9 Июл 2017
Сообщения
51
Симпатии
19
Пол
Мужской
angrybot, а что же значит sid?
 

fl0wer

Пользователь
Регистрация
9 Июл 2017
Сообщения
10
Симпатии
21
Пол
Мужской
У вас сломана запись строкового ключа.

342 строчку
get_string(arg_value, key, charsmax(key));
заменить на
get_string(arg_value, value, charsmax(value));
 

fl0wer

Пользователь
Регистрация
9 Июл 2017
Сообщения
10
Симпатии
21
Пол
Мужской
Ну и думаю стоит протянуть натив, что игрок загружен. А так же не вызывать форвард в случае плохо джсона, либо сделать ещё один аргумент бул в форварде.
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
724
Симпатии
382
Пол
Мужской
ВКонтакте
id109544387
Telegram
@dmitry_isakow
Код:
    if (!file_exists(filePath)) {
        set_fail_state("Configuration file '%s' not found", filePath);
        return;
    }
Код:
    if (config == Invalid_JSON)    {
        set_fail_state("Configuration file '%s' read error", filePath);
        return;
    }
cpCTRL, set_fail_state не даст коду ниже выполниться, можно ретурны не писать.
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
256
Симпатии
60
Пол
Мужской
Плагином занимаюсь, медленно, но верно.
Пока имеем:
- Немного реструктуризации кода;
- Исправление записи текстовых значений ;
- натив Проверка на то, загружены ли данные с БД
Ещё немного добавок.
Как время появляется пытаюсь придумать как сделать лучше с бд, пока приоритеты в сторону отдельного плагина-аддона идущего в комплекте (реализовать MySQL, sqlite, и возможно сторонние БД через вэб скрипт), планы есть, остальное за малым
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
655
Симпатии
228
cpCTRL, привязка по "никнейм + стим, и стим" думаю достаточно будет, ну а IP это точно не надо.
Ну никнейм может лучше и хранить в чистом виде если это надо будет использовать где-то в веб интерфейсе.

Еще есть вариант, если такое возможно, генерировать пароль и записывать его в setinfo, отображая игроку при входе. То есть авторегистрация, Никнейм + пароль. Что бы можно было с другого компа зайти и играть под своим никнеймом.


cpCTRL, а есть репозиторий на гитхабе?
 

georgeml

Скриптер
Постоялец
Регистрация
12 Сен 2017
Сообщения
584
Симпатии
302
Каким образом это будет использоваться? Есть пример? На мое восприятие- слишком сложно- для каждого игрока свой массив.
C++:
g_jObject[id] = json_init_object();
g_tPlayerPreferences[id] = TrieCreate();
Я не стал бы это делать, пока не увижу, что из БД получены корректные данные, для которых это нужно

Код:
if (get_user_userid(id) != data[1]) {
От этого толку нет. Если боитесь, что на место игрока зайдет другой, успокойтесь. Для него тоже будет вызван запрос и эти, "типо не его" данные, все равно перезапишутся.
 
Последнее редактирование:
Сверху Снизу