@giSh5297, @Kruzya, Просто не хочется поддерживать в34 в плагине. А так вполне может работать и на более низких версиях сурсмода, т.к. плагин "абстрактный".Если автор указал версию выше Вашей, значит на то есть веские причины.
44 строка файла sql.sp заменить:
CREATE TABLE IF NOT EXISTS `progress` (`userid` INTEGER, `achivement` VARCHAR(64), `count` INTEGER, PRIMARY KEY(`userid`, `achivement`));
CREATE TABLE IF NOT EXISTS `progress` (`userid` INTEGER, `achivement` VARCHAR(64), `count` INTEGER, UNIQUE(`userid`, `achivement`));
"achievements"
{
"Exterminator"
{
"Exterminator I" // название достижения (берется из файла перевода в трех видах: название, описание, награда)
{
"event" "player_death" // событие, при котором можно получить это достижение
"executor" "attacker" // кто должен выполнить это событие (userid или attacker)
"condition" "" // условие получения этого достижения
"count" "50" // сколько раз необходимо сделать
"reward" "sm_givecredits #{uid} 5" // награда. алиасы:
// {cid} - индекс клиента,
// {uid} - юзерайди клиента,
// {name} - имя игрока
}
"Exterminator II"
{
"event" "player_death"
"executor" "attacker"
"condition" ""
"count" "500"
"reward" "sm_givecredits #{uid} 50"
}
"Exterminator III"
{
"event" "player_death"
"executor" "attacker"
"condition" ""
"count" "5000"
"reward" "sm_givecredits #{uid} 500"
}
}
"Headhunter"
{
"Headhunter I"
{
"event" "player_death"
"executor" "attacker"
"condition" "headshot"
"count" "50"
"reward" "sm_givecredits #{uid} 10"
}
"Headhunter II"
{
"event" "player_death"
"executor" "attacker"
"condition" "headshot"
"count" "500"
"reward" "sm_givecredits #{uid} 100"
}
"Headhunter III"
{
"event" "player_death"
"executor" "attacker"
"condition" "headshot"
"count" "5000"
"reward" "sm_givecredits #{uid} 1000"
}
}
}
Со всеми возможными.С какими модами он работает?
Со всеми возможными.
Ясно, спасибо.А по теме, сильно не должен.
Есть решение ошибки sql?@White Wolf, причина куда глубже - пока грузятся данные из бд, игрок успевает получить +1 к прогрессу достижения. Происходит попытка сохранить данные для игрока с айди (внутренним для плагина) 0, а такая запись с этим достижением уже есть (была записана первым игроком, который не успел загрузиться). Чтобы правильно её исправить, нужно запоминать запросы, которые не прошли, или задерживать их до тех пор, пока айди не станет нормальным (будет взят из бд).
[achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
Кумулятивные - это типо "counter" "dmg_health" ?Пока выкладываю сюда промежуточную версию. Изменения:
Исправлена ошибка
Добавлено два квара:Добавлен ключ "silent", при получении достижения с этим ключом игроку не будет выведено сообщение об его получении.
sm_achievements_min_players - сколько игроков должно быть онлайн, чтобы подсчитывались достижения.
sm_achievements_notification_type - тип сообщения игроку при получении достижения, 2 - всем пишется что игрок получил достижение, 1 - только самому игроку, получившему достижение, 0 - никому.
Добавлена возможность создавать кумулятивные достижения, т.е. достижения по типу "нанести 5000 урона с гранаты", "нанести 100 урона в голову".
Добавлены примеры достижений.
Осталась на месте:Пока выкладываю сюда промежуточную версию. Изменения:
Исправлена ошибка
Добавлено два квара:Добавлен ключ "silent", при получении достижения с этим ключом игроку не будет выведено сообщение об его получении.
sm_achievements_min_players - сколько игроков должно быть онлайн, чтобы подсчитывались достижения.
sm_achievements_notification_type - тип сообщения игроку при получении достижения, 2 - всем пишется что игрок получил достижение, 1 - только самому игроку, получившему достижение, 0 - никому.
Добавлена возможность создавать кумулятивные достижения, т.е. достижения по типу "нанести 5000 урона с гранаты", "нанести 100 урона в голову".
Добавлены примеры достижений.
[achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
Забыл написать return, поэтому ошибка осталась (но уже просто в виде сообщения, прогресс игрока сохранялся).
В этой версии return дописан.
L 06/05/2017 - 21:38:34: [SM] Exception reported: Invalid Handle 0 (error 4)
L 06/05/2017 - 21:38:34: [SM] Blaming: achievements/achievements.smx
L 06/05/2017 - 21:38:34: [SM] Call stack trace:
L 06/05/2017 - 21:38:34: [SM] [0] GetTrieValue
L 06/05/2017 - 21:38:34: [SM] [1] Line 40, achievements/events.sp::ProcessEvents
L 06/05/2017 - 21:38:34: [SM] [2] Line 4, achievements/events.sp::Event_ClientCallback
L 06/05/2017 - 21:38:34: [achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
L 06/05/2017 - 21:38:34: [achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
L 06/05/2017 - 21:38:34: [achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
L 06/05/2017 - 21:38:34: [achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
L 06/05/2017 - 21:38:34: [achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"
L 06/05/2017 - 21:38:34: [achievements/achievements.smx] SQLT_OnInsertProgress failure: "columns userid, achivement are not unique"