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

Player preferences 1.0.7

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

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
fantom, я кстати уже с недельку думаю над связью монго и амх. Было бы довольно удобненько. Много фишек в связях вэб-амх-монго, да и без вэб
fantom, да и кс комьюнити лет через 5 загнётся, учитывая всех плагиноделов-штамповщиков третьего разряда и то, что более грамотные скриптеры , у которых можно набрать опыта - ливают, включая тебя, интересы меняются , да и работать надо
 

Limbooc

Пользователь
Регистрация
24 Июл 2017
Сообщения
15
Симпатии
-2
Код:
#include <amxmodx>
#include <reapi>
#include <player_preferences>

new const g_szKey[] = "money";

new bool:g_bLoaded[MAX_PLAYERS + 1];

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_AddAccount, "refwd_PlayerAddAccount_Post", true);
    RegisterHookChain(RH_SV_DropClient, "refwd_DropClient_Post", true);
}

public player_loaded(const id)
{
    g_bLoaded[id] = true;

    new buffer[1024], len;

    for(new i = 0; i <= 30; i++)
    {
        len += formatex(buffer, charsmax(buffer) - len, "%s_%d", g_szKey, i);
        server_print("GET %s - %d", buffer , pp_get_number(id, buffer));
        //pp_set_number(id, buffer, i);
    }
}

public refwd_PlayerAddAccount_Post(const id, iAmount, RewardType:iType, bool:bTrackChange)
{
    if(g_bLoaded[id])
    {
        pp_set_number(id, g_szKey, get_member(id, m_iAccount));

        new buffer[1024], len;

        for(new i = 0; i <= 30; i++)
        {
            len += formatex(buffer, charsmax(buffer) - len, "%s_%d", g_szKey, i);
            server_print("SET %s - %d", buffer, i);
            pp_set_number(id, buffer, i);
        }
    }
}

public refwd_DropClient_Post(const id)
{
    g_bLoaded[id] = false;
}
Код:
L 01/06/2021 - 14:15:36: [JSON] Invalid JSON object! -1
L 01/06/2021 - 14:15:36: [AMXX] Displaying debug trace (plugin "player_preferences.amxx", version "unknown")
L 01/06/2021 - 14:15:36: [AMXX] Run time error 10: native error (native "json_object_get_count")
L 01/06/2021 - 14:15:36: [AMXX]    [0] player_preferences.sma::ThreadHandler (line 475)
есть ли какой нибудь лимит в стринге?
 

Вложения

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
Limbooc,
Код:
const MAX_KEY_LENGTH = 32;
const MAX_VALUE_STRING_LENGTH = 32;
new buffer[1024], len; for(new i = 0; i <= 30; i++) { len += formatex(buffer, charsmax(buffer) - len, "%s_%d", g_szKey, i); server_print("SET %s - %d", buffer, i);
Вы устанавливаете значение ключа в огромное, явно больше 32х, не знаю зачем это вообще. но:
Код:
new buffer[1024];
formatex(buffer, charsmax(buffer), "%s_", g_szKey);
for(new i = 0; i <= 30; i++)
{
    add(buffer, charsmax(buffer), num_to_str(i));

    server_print("SET %s - %d", buffer, i);
    pp_set_number(id, buffer, i);
}
Для хранения стольких данных попробуйте увеличить
Код:
const MAX_KEY_LENGTH = 32;
const MAX_VALUE_STRING_LENGTH = 32;
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
Limbooc, на количество не ругается. На пустой жсон ругается.
Такое в логах было? :[PP] Bad format string
Limbooc, Ах, и да, забыл - new preferences[211]; так что да, лимит есть , позже сделаю регулировку
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
cpCTRL обновил(а) ресурс Player preferences новой записью:

исправления и улучшения

* Убрана проверка на то, был ли игрок загружен с бд, логика перенесена на сторону SQL
* Теперь массив JSON хранящий в себе сохраненные данные игрока не будет создаваться, если соединение с БД установлено не было
* Увеличен массив для БД, для тех у кого больший объем данных (можно хранить больше ключей, либо большие данные ключей)

Прописываем плагину дебаг режим, аля player_preferences.amxx [B]debug[/B]
Смотрим в ваши дефолтные...
Узнать больше об этом обновлении...
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
А нет похожего плагина но для хранения любых данных?

Не игроков, а абсолютно любых без ограничений?

value = getvalue([key],[key2],"readcallback")
setvalue(key,key2,"writecallback") = value
например
setvalue("STEAM_0_0:123412341234","kills", 100, "writecallback")


А то так слишком ограниченное применение :)


Хотел через модуль сделать это было бы куда производительнее но пока не могу даже научиться компилить под линукс)))
Так то все получается но на сервере модуль не работает пишет требует GLIB2.28 и т.п )))
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
742
Симпатии
393
Пол
Мужской
Telegram
@dmitry_isakow
karaulov, pds юзай и храни в памяти что хочешь.
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
d3m37r4, причем тут память :( я про MYSQL
 

karaulov

Скриптер
Постоялец
Пользователь
Регистрация
5 Май 2019
Сообщения
1.041
Симпатии
358
Пол
Мужской
И как потом в веб использовать эти данные если они хранятся в памяти, как их передать в скрипт на удаленный веб сервер?)))
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
742
Симпатии
393
Пол
Мужской
Telegram
@dmitry_isakow
karaulov, curl/grip
вообще проще норм скрипт сделать, с использованием grip и не париться с модулями мускуля и прочего на амхх.
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
karaulov, можно переделать этот плагин под хранение любых данных, но пока и этот в тестах, багрепортов нет
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
742
Симпатии
393
Пол
Мужской
Telegram
@dmitry_isakow
cpCTRL мб тут лучше не закрывать соединение?
Код:
public sql_test_init() {
    new Handle: sConnection;

    g_hTuple = SQL_MakeDbTuple(
        dbdata[host],
        dbdata[user],
        dbdata[pass],
        dbdata[db]
    );

    new errCode, error[512];
    sConnection = SQL_Connect(g_hTuple, errCode, error, charsmax(error));

    if (sConnection == Empty_Handle)    {
        SQL_FreeHandle(g_hTuple);
        log_amx("[PP] Error connecting to db '%s': #%d: %s", dbdata[db], errCode, error);

        return;
    }

    server_print("[PP] Connection to '%s' database success", dbdata[db]);

    SQL_FreeHandle(sConnection);
}
Если соединение не будет установлено после нескольких попыток, в plugin_end есть вероятность словить Invalid handle, причем указатель будет отличным от 0 (проверка на Empty_Handle пройдет).
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
d3m37r4, попробую, но вроде при тестах закрывало и все, в конце карты не ловил ничего. Сейчас проблемы по весомей - при чтении с MySQL не ловит ошибку (JSON_Invalid не отрабатывает), вроде хотфикс в виде проверки первого и последних символов работает, вроде...
 

d3m37r4

Скриптер
Постоялец
Регистрация
8 Июн 2017
Сообщения
742
Симпатии
393
Пол
Мужской
Telegram
@dmitry_isakow
d3m37r4, попробую, но вроде при тестах закрывало и все, в конце карты не ловил ничего.
Воспроизвести вроде просто. Укажи неверные данные для соединения, после безуспешной попытки подключиться можно сменить карту и всё.
 

cpCTRL

bruh
Скриптер
Постоялец
Регистрация
20 Фев 2018
Сообщения
263
Симпатии
65
Пол
Мужской
d3m37r4, вчера так делал, много играл с кодом - не было такого, закрывало соединение сразу и все тип топ. Но если же попадется такая беда придется хотфиксить булевым пластырем =(
 

georgeml

Скриптер
Постоялец
Регистрация
12 Сен 2017
Сообщения
595
Симпатии
314
SQL_MakeDbTuple нет смысла освобождать. Это не соединение.
 
Сверху Снизу