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

[Achievements] Core 1.6

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #41
@Samoletik1337, в бд сделайте колонки userid и achivement уникальными.
Оффтоп
--- Добавлено позже ---
@Reiko1231, было бы неплохо на github увидеть проект.:ab:
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
@Samoletik1337, в бд сделайте колонки userid и achivement уникальными.
Оффтоп
--- Добавлено позже ---
@Reiko1231, было бы неплохо на github увидеть проект.:ab:
Можно по простому я не понял( Тут что-то поменять?
Оффтоп
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #43
@Samoletik1337, primary key на колонках таблицы не такой как unique. Primary key в некоторых бд допускает дублирование записей. Чтобы не было таких проблем ставят индекс на колонку с параметром UNIQUE.
 

AlfONES69

Участник
Сообщения
31
Реакции
7
Подскажите как добавить цвет в плагин, чтобы эта надпись в игре была разноцветной "{green}[Достижения] {default}Игрок {green}{1} {default}выполнил достижение {green}{2}"
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
Подскажите как добавить цвет в плагин, чтобы эта надпись в игре была разноцветной "{green}[Достижения] {default}Игрок {green}{1} {default}выполнил достижение {green}{2}"
Добавить #include <colors> в плагин, скомпилировать и в файле перевода добавить твои цвета стандартные. Мб ошибся поправьте если не так, т.к работаю только с OB CSS.
 

vio_line

Участник
Сообщения
44
Реакции
8
@Samoletik1337, primary key на колонках таблицы не такой как unique. Primary key в некоторых бд допускает дублирование записей. Чтобы не было таких проблем ставят индекс на колонку с параметром UNIQUE.
Если не сложно, поясни как это сделать? Править нужно саму базу данных? И это должен исправить сам автор плагина?
 
Последнее редактирование:

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #48
@vio_line, напишите, как получить эту ошибку и я её исправлю. Пока нет точного пути получения ошибки, я не могу исправить, поскольку не ясна причина ошибки. А бороться с последствиями, а не причиной, можно вечно.
 

vio_line

Участник
Сообщения
44
Реакции
8
Для скрытия сообщений используется спойлер, а не оффтоп
@vio_line, напишите, как получить эту ошибку и я её исправлю. Пока нет точного пути получения ошибки, я не могу исправить, поскольку не ясна причина ошибки. А бороться с последствиями, а не причиной, можно вечно.
При выполнении засчитывается достижение, то убийце, то убитому.
Одно и то же задание, а засчитывает по разному. И так многие задания.
"Assasin I"
{
"event" "player_death"
"executor" "attacker"

"condition" ""
"count" "200"

"reward" "sm_givecredits #{uid} 500"
"overlay" "achievements/ach1"
}
В чем может быть дело?

При каких обстоятельствах появляется ошибка я не знаю. Каждый раз по разному засчитывает.
И в логах такая же ошибка появлялась...
L 10/31/2016 - 00:11:22: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:23: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:23: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:23: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:23: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:25: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:25: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:25: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:25: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:43: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:43: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:43: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
L 10/31/2016 - 00:11:43: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"
 
Последнее редактирование модератором:

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #50
@vio_line, с точки зрения кода ошибок нет:
C-подобный:
public Event_ClientCallback(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast)
{
    new iClient = CID(GetEventInt(hEvent, "userid"));
    ProcessEvents(iClient, hEvent, sEventName);
}

public Event_AttackerCallback(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast)
{
    new iClient = CID(GetEventInt(hEvent, "attacker"));
    if ( iClient > 0 && iClient <= MaxClients ) {
        ProcessEvents(iClient, hEvent, sEventName);
    }
}
в зависимости от типа события в обработчик события передается либо жертва, либо атакующий. Внутри обработчика переменная клиента не меняется, следовательно, единственный вариант "то убийце, то убитому" - это что-то до события меняет значение атакующего или жертвы. Либо какой-то плагин меняет событие или же создает ложные (так вроде работают некоторые статистики).
А относительно причин ошибок с бд у меня вообще нет никаких предположений. Используется локальная бд SQLite или MySQL?
Либо есть вариант, который будет быстрее - добавьтесь в скайп, я смогу изменить плагин так, чтобы он выводил отладочную информацию, по которой можно будет определить причину ошибок.
 

vio_line

Участник
Сообщения
44
Реакции
8
@vio_line, с точки зрения кода ошибок нет:
C-подобный:
public Event_ClientCallback(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast)
{
    new iClient = CID(GetEventInt(hEvent, "userid"));
    ProcessEvents(iClient, hEvent, sEventName);
}

public Event_AttackerCallback(Handle:hEvent, const String:sEventName[], bool:bDontBroadcast)
{
    new iClient = CID(GetEventInt(hEvent, "attacker"));
    if ( iClient > 0 && iClient <= MaxClients ) {
        ProcessEvents(iClient, hEvent, sEventName);
    }
}
в зависимости от типа события в обработчик события передается либо жертва, либо атакующий. Внутри обработчика переменная клиента не меняется, следовательно, единственный вариант "то убийце, то убитому" - это что-то до события меняет значение атакующего или жертвы. Либо какой-то плагин меняет событие или же создает ложные (так вроде работают некоторые статистики).
А относительно причин ошибок с бд у меня вообще нет никаких предположений. Используется локальная бд SQLite или MySQL?
Либо есть вариант, который будет быстрее - добавьтесь в скайп, я смогу изменить плагин так, чтобы он выводил отладочную информацию, по которой можно будет определить причину ошибок.

Используется локальная бд SQLite. Так же на сервере работают сразу две статистики. LevelRanks и RankMe.
В скайпе ты меня уже добавил. Найди у себя в контактах bron5on-5586
 

Romjke1

Добрая душа
Сообщения
144
Реакции
78
Крашнуло сервер, вот что в еррорах:

L 01/08/2017 - 19:25:25: [achievements.smx] SQLT_OnUpdateProgress failure: "Driver is unloading"

--- Добавлено позже ---
Опять крашнуло сервер с этой ошибкой в логах:
[achievements.smx] SQLT_OnUpdateProgress failure: "Driver is unloading"

Что это может быть? Раньше все было нормально.

Еще иногда флудит вот это: [achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
 
Последнее редактирование:

Марина

Участник
Сообщения
144
Реакции
4
L 01/16/2017 - 00:49:53: [achievements.smx] SQLT_OnInsertProgress failure: "colu
mns userid, achivement are not unique"

Плагин может быть и хороший, но часто при возврате обратно в меню показывает по английски, это выглядит как недоработка, подожду стабильных версий
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,335
  • Автор ресурса
  • #54
@Romjke1,
L 01/08/2017 - 19:25:25: [achievements.smx] SQLT_OnUpdateProgress failure: "Driver is unloading"
Редчайшая ошибка, которую вижу впервые (не нашел в интернете ничего подобного). После изучения исходного кода SourceMod, пришел к выводу, что она вызывается, когда что-то дает команду серверу выгрузить драйвера работы с бд. Исходя из этого предположения, делаю вывод, что краш сервера был вызван иным действием (не от плагина), а ошибка была сгенерирована как следствие экстренного выключения сервера (краша), когда успели отработать деструкторы соединения с бд, отключив драйвера.

@Romjke1, @Марина,
[achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
Интересует периодичность этой ошибки, т.к. у меня ну никак не получалось её вызвать. Особый интерес представляет время этой ошибки, не вызывается ли она почти сразу и только после смены карты (если можно, логи с этими ошибками с сообщениями о смене карты).

@Марина,
Плагин может быть и хороший, но часто при возврате обратно в меню показывает по английски, это выглядит как недоработка, подожду стабильных версий
Плагин использует динамическую трансляцию фраз, что означает отсутствие контроля с моей стороны над отображаемом языком. Меню строится на основе языка клиента, и если оно неправильно определяется, то это причина сервера\SM. Вы можете переписать английский перевод как русский (в файле перевода), если вам не важна мультиязычность. Либо сообщить дополнительные данные о вашей игре, версии сурсмода, установленных плагинов.
C-подобный:
  FormatEx(SZF(sBuffer), "%t", "achievements type menu: completed");
  DrawPanelItem(hPanel, sBuffer);
Вот в таком виде осуществляется перевод текста. Как видно, здесь нет никаких языков, лишь служебная фраза, по которой берётся текст из файла achievements.phrases.txt.
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
@Romjke1,
Редчайшая ошибка, которую вижу впервые (не нашел в интернете ничего подобного). После изучения исходного кода SourceMod, пришел к выводу, что она вызывается, когда что-то дает команду серверу выгрузить драйвера работы с бд. Исходя из этого предположения, делаю вывод, что краш сервера был вызван иным действием (не от плагина), а ошибка была сгенерирована как следствие экстренного выключения сервера (краша), когда успели отработать деструкторы соединения с бд, отключив драйвера.

@Romjke1, @Марина,
Интересует периодичность этой ошибки, т.к. у меня ну никак не получалось её вызвать. Особый интерес представляет время этой ошибки, не вызывается ли она почти сразу и только после смены карты (если можно, логи с этими ошибками с сообщениями о смене карты).

@Марина,
Плагин использует динамическую трансляцию фраз, что означает отсутствие контроля с моей стороны над отображаемом языком. Меню строится на основе языка клиента, и если оно неправильно определяется, то это причина сервера\SM. Вы можете переписать английский перевод как русский (в файле перевода), если вам не важна мультиязычность. Либо сообщить дополнительные данные о вашей игре, версии сурсмода, установленных плагинов.
C-подобный:
  FormatEx(SZF(sBuffer), "%t", "achievements type menu: completed");
  DrawPanelItem(hPanel, sBuffer);
Вот в таком виде осуществляется перевод текста. Как видно, здесь нет никаких языков, лишь служебная фраза, по которой берётся текст из файла achievements.phrases.txt.
Добавил в скайпе, ник noname, хотел бы продемонстрировать как появляется ошибка. [achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
 

Марина

Участник
Сообщения
144
Реакции
4
@Reiko1231, а что если убрать проверку языка, например сделать её 1 раз при входе на сервер?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #57
Плагин использует динамическую трансляцию фраз, что означает отсутствие контроля с моей стороны над отображаемом языком. Меню строится на основе языка клиента, и если оно неправильно определяется, то это причина сервера\SM. Вы можете переписать английский перевод как русский (в файле перевода), если вам не важна мультиязычность. Либо сообщить дополнительные данные о вашей игре, версии сурсмода, установленных плагинов.
FormatEx(SZF(sBuffer), "%t", "achievements type menu: completed");
DrawPanelItem(hPanel, sBuffer);
Вот в таком виде осуществляется перевод текста. Как видно, здесь нет никаких языков, лишь служебная фраза, по которой берётся текст из файла achievements.phrases.txt.
Ты перед FormatEx(SZF(sBuffer), "%t", "achievements type menu: title", sName);
забываешь делать SetGlobalTransTarget

хотя я в последнее время всё чаще сталкиваюсь с тем что
FormatEx(..., "%T", "phrase", client);
работает намного корректнее чем
SetGlobalTransTarget(client);
FormatEx(...,"%t", "phrase");
 

Broudy Rose

Участник
Сообщения
157
Реакции
22
Присоединяюсь к теме, удалил плагин только из-за смены языков.
Заменил все "en" переводы на русский текст - вообще показывает в меню крякозябры.
А то, что 2 файла в один объединить - это и так очевидно, зачем разбивать на 2 файла то, что можно сделать 1-им.

P.S в логах пусто

CS:S v34, SM 1.6.3(можно в названии SM понизить, скомпилил на 163 идеально, всё работает)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #59
Заменил все "en" переводы на русский текст - вообще показывает в меню крякозябры.
Должно быть, потому что не в той кодировке файл сохранил?)

SM 1.6.3(можно в названии SM понизить, скомпилил на 163 идеально, всё работает)
Если автор указал версию выше Вашей, значит на то есть веские причины.
 

Broudy Rose

Участник
Сообщения
157
Реакции
22
@Kruzya,
Должно быть, потому что не в той кодировке файл сохранил?)
В той.


Если автор указал версию выше Вашей, значит на то есть веские причины.
Не всегда, изначально был плагин Bounty Hunt, который писался под v34 и SM выше 1.5, изменений в новом плагине немного. Я думаю синтаксис не сильно отличается.
В любом случае я не кодер. Я сказал, что на на SM 1.6.3 всё прекрасно работает.
 
Сверху Снизу