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

Player Preferences 1.0.14

Нет прав для скачивания
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
karaulov добавил(а) новый ресурс:

Player Preferences - Увеличены лимиты, добавлены новые нативы, новый метод сохранения и ...

Отличия от оригинальной версии:

  • Позволяет хранить настройки для игроков, а так же отдельно глобальные.
  • Возможность хранить данные по Username/SteamID/SteamID+Username
  • Сильно увеличены лимиты. (key - 256, value - 1024, а основной буфер 100кб)
(То есть можно не беспокоится что не хватит места, и можно использовать сразу в нескольких плагинах не боясь что какая-то часть данных будет обрезана)
  • Не требуется загрузка init.sql, создание...
Узнать больше об этом ресурсе...
 
Сообщения
649
Реакции
556
Помог
9 раз(а)
Опять кэширование коннекта. Откуда вы берётесь? Экономия в спичках ради чего? Что будет ваша мегаоптимизацией при plugin_pause/unpause (игрок мог выйти)
 
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
Vaqtincha, я тут не причем, можно убрать конечно же :)
11 Янв 2023
Опять кэширование коннекта. Откуда вы берётесь? Экономия в спичках ради чего? Что будет ваша мегаоптимизацией при plugin_pause/unpause (игрок мог выйти)
Как бы в любом случае ничего хорошего не будет
11 Янв 2023
Опять кэширование коннекта. Откуда вы берётесь? Экономия в спичках ради чего? Что будет ваша мегаоптимизацией при plugin_pause/unpause (игрок мог выйти)
Стоять, а что будет без кэширования, просвятишь? :)

Допустим в это время вошел другой игрок, функция вернет true, и что это даст?

Будет еще хуже :)

Может есть способ отключать плагин навсегда при установке его на паузу? (считать это критической ошибкой)
 

ArKaNeMaN

Квалифицированный специалист по VipModular
Сообщения
431
Реакции
293
Помог
5 раз(а)
C-like:
new temp[128];

json_object_get_string(config, "sql_table", temp, charsmax(temp));
copy(dbdata[table], charsmax(dbdata[table]), temp);

json_object_get_string(config, "sql_host", temp, charsmax(temp));
copy(dbdata[host], charsmax(dbdata[host]), temp);

json_object_get_string(config, "sql_user", temp, charsmax(temp));
copy(dbdata[user], charsmax(dbdata[user]), temp);

json_object_get_string(config, "sql_password", temp, charsmax(temp));
copy(dbdata[pass], charsmax(dbdata[pass]), temp);

json_object_get_string(config, "sql_db", temp, charsmax(temp));
copy(dbdata[db], charsmax(dbdata[db]), temp);
Почему бы сразу не записывать значение куда надо? Зачем это лишнее копирование?

C-like:
json_object_get_string(config, "save_type", temp, charsmax(temp));
g_iSaveType = str_to_num(temp);
А json_object_get_number для кого?)
 
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
Думаю еще стоит просто немного переписать плагин, что бы при снятии с паузы, сохранять данные, а затем проверять список игроков заново.

Если игроки могут случайно поменяться пока плагин стоит на паузе :(
 
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
ArKaNeMaN, исправил в новой версии.

Vaqtincha добавил поддержку паузы (после снятия, все данные загружаются в бд и список игроков перезагружается)


Кто тут есть из серьезных кодеров, проверьте есть ли в последней версии ошибки какие-то :)
 
Последнее редактирование:
Сообщения
672
Реакции
242
Помог
11 раз(а)
думаю стоит пересмотреть логику g_iSaveType, оставив сохранение по дефолту Steam+NickName, а дальше по значение уже парсить с помощью explode_string | string_stocks | AMX X Documentation | Dev-CS.ru

Код:
if(explode_string(g_aDataMoreS[M_DOPCFG], "-", s_ItemSplit_1, 2, 128))
{
    format(Menu_P_VIP[id][model_tt],31,"%s",s_ItemSplit_1[0]);
    format(Menu_P_VIP[id][model_ct],31,"%s",s_ItemSplit_1[1]);
}
убираеться запрос на REPLACE в save_values и заменить на UPDATE


не вижу запрос в Хандлере на
1673447540465.png

и на
1673447555687.png

он у тебя отрабатывается?
 
Последнее редактирование:
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
Limbooc, не знаю как сейчас, но я когда тестировал все работало, не должно? :)

Вроде как REPLACE должно создавать и обновлять если уже создано, а UPDATE умеет только обновлять, нет? зачем тогда лишний запрос делать на INSERT?
11 Янв 2023
думаю стоит пересмотреть логику g_iSaveType, оставив сохранение по дефолту Steam+NickName, а дальше по значение уже парсить с помощью explode_string | string_stocks | AMX X Documentation | Dev-CS.ru
Наверное не выйдет, ведь значений USERNAME+STEAM будет достаточно много в бд, как же при переключении обратно, понимать где чей STEAM где чей USERNAME ?

Если по username то в базе будут только хэши юзернеймов
Если по steam то только стимайди
Если и то и то то steam + хэш никнейма (что бы не экранировать ники, или не помню уже для чего я хэш делал)
 
Последнее редактирование:
Сообщения
672
Реакции
242
Помог
11 раз(а)
Limbooc, не знаю как сейчас, но я когда тестировал все работало, не должно? :)
не тестировал, просто прошелся по коду
возможно все тут отрабатывается , что не есть хорошо, лучше разделить где для data[1] == 1 и где для data[1] == -2
1673448855558.png




также не понял логику, два раза загрузить? один global другой для data? собственно зачем глобал для индекса игрока?
1673448984508.png


Хоть бы API описание сделал бы более читабельным, а то гадаю)


Запрос корректный?WHERE auth = 'global'
1673449207411.png

Опять логику не вижу?
Загрузить данные БД после их сохранение?
1 шаг save_values(i);
2 шаг client_putinserver(i); => load_player(id);

1673449656215.png
 
Последнее редактирование:
Сообщения
672
Реакции
242
Помог
11 раз(а)
Наверное не выйдет, ведь значений USERNAME+STEAM будет достаточно много в бд, как же при переключении обратно, понимать где чей STEAM где чей USERNAME ?
так хэшируется то как раз таки UserName; разве нет:xDD)))))
1673450438519.png

целесобразно конечно дергать два отдельными столбцами, стим и нэйм, на последний хранить такое себе удоволствие, т.к. смена ника хэши поменяется
11 Янв 2023
Limbooc, Вроде как REPLACE должно создавать и обновлять если уже создано, а UPDATE умеет только обновлять, нет? зачем тогда лишний запрос делать на INSERT?
Так весь кайф то и в этом же, у тебя с помощью REPLACE данные игрока полюбому перезапишеться, а так через UPDATE обновил бы исключительно если бы STEAMID и НИК игрока были ИСТИНЫ, а так у тебя всегда истина, сколько бы не менял ник, ник будет менять и в таблица, а собственно зачем тогда "Save type 1 is steam+username, 2 is Steam, 3 username",

Save type 3 username, вообще бы убрал бы, т.к. Player, TOP-MS | Player, и тд от всяких мониторингов
 
Последнее редактирование:
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
Limbooc, не вижу логики если заменить на UPDATE, то придется добавлять и INSERT, разве нет?

UPDATE - обновляет уже существующую запись
INSERT - добавляет новую
REPLACE - делает то же что INSERT + UPDATE в одном (УДАЛЯЕТ старую запись и добавляет новую)
11 Янв 2023
Опять логику не вижу?
Загрузить данные БД после их сохранение?
1 шаг save_values(i);
2 шаг client_putinserver(i); => load_player(id);
ну я посчитал что если плагин выходит с паузы, есть возможность записать уже сохраненные данные.
потом перебрать всех игроков и перезагрузить заново их, но не тестировал т.к пока не могу
11 Янв 2023
целесобразно конечно дергать два отдельными столбцами, стим и нэйм, на последний хранить такое себе удоволствие, т.к. смена ника хэши поменяется
ну так в этом и есть смысл, что бы могли играть с одного steamid но с разными никнеймами
11 Янв 2023
также не понял логику, два раза загрузить? один global другой для data? собственно зачем глобал для индекса игрока?
0 индекс это глобальные данные, серверные, показалось логичным, или мне надо было 100500 индекс для серверных данных использовать?))
11 Янв 2023
Javekson, во во, может лучше выйдет, я просто выложил обновленную версию и если кто-то может улучшить то это только плюс :)
 
Последнее редактирование:
Сообщения
672
Реакции
242
Помог
11 раз(а)
Limbooc, напиши свой уже просто )
Была перспектива взяться за работу , но искомый автор плагина остановился на версии 1.0.7, если не ошибаюсь там был баг, долго ждал фикса, так и не дождался))
 
Сообщения
1,041
Реакции
206
Предупреждения
1
Помог
6 раз(а)
karaulov, REPLACE удаляет запись если PRIMARY KEY или UNIQUE совпадает по индексам и создает новую, а так просто запись обновляется.
 
Сообщения
672
Реакции
242
Помог
11 раз(а)
karaulov,
0 индекс это глобальные данные, серверные, показалось логичным, или мне надо было 100500 индекс для серверных данных использовать?))
global нету, схапаешь ошибку в консоле о не достоющем столбце))
Код:
new Handle:query = SQL_PrepareQuery(sConnection,"CREATE TABLE IF NOT EXISTS `%s` (`auth` varchar(128) NOT NULL PRIMARY KEY,`data` text NOT NULL,UNIQUE(`auth`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;",dbdata[table]);
 

Вложения

Сообщения
1,556
Реакции
651
Помог
5 раз(а)
global нету, схапаешь ошибку в консоле о не достоющем столбце))
Но я как бы проверял плагин, и глобальные данные работали, я в этом почти уверен...

Я ближайшее время проверить не могу, но если кто-то может посмотрите все ли работает что бы не гадать на кофейной гуще, гляньте пожалуйста :)
12 Янв 2023
BiZaJe, но если записи нет, то она тоже создаётся (без INSERT), иначе плагин точно не должен был работать
 
Последнее редактирование:
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
А json_object_get_number для кого?)
Подставил гад меня только :(
Из-а тебя сломалось все :)
В обнове 1.0.11 вернул назад json_object_get_string
видно автор исходного плагина лучше знал что там надо :)
12 Янв 2023

Почему бы сразу не записывать значение куда надо? Зачем это лишнее копирование?
Это да, я сам не уверен зачем там это копирование было :) убрал!
 
Последнее редактирование:
Сообщения
1,556
Реакции
651
Помог
5 раз(а)
убираеться запрос на REPLACE в save_values и заменить на UPDATE
Не знаю, я проверил сейчас и с REPLACE все отлично работает, только AUTH в global записывает, и похоже это единственный прикол непонятный :)

Ну то есть небольшую строку мусорную данных хранит в global.

В 1.0.11 и в 1.0.12 многое исправил, ожидайте кому интересно :)
 
Последнее редактирование:

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу