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

[Achievements] Core 1.6

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

Reiko1231

AlexTheRegent
Сообщения
437
Реакции
1,106
Пользователь Reiko1231 разместил новый ресурс:

[Achievements] Core - Достижения для игроков на сервер.

Описание:
Достижения для игроков.

Дополнительная информация:
- Поддержка всех стандартных событий сурсмода.
- В configs/achievements.txt показаны шесть примеров достижений. Больше примеров вы можете найти в плагине Bounty Hunt (конфиги немного отличаются, но показаны примеры заполнения поля event, executor (в Bounty Hunt поле называется performer) и...
Узнать больше об этом ресурсе...
 
Сообщения
788
Реакции
138
@Reiko1231, а можно ли такое достижение реализовать: 100 раз прошел карту первый?
 
Сообщения
788
Реакции
138
Чет еррорит Оффтоп
 
Сообщения
174
Реакции
17
Плагин классный , но я думаю
Лучше было бы объединить файл перерода и конфиг
не удобно туда сюда лазить
--- Добавлено позже ---
Возможно что-то не так написал , но когда убиваю с 1 раза ножа , достижение сразу засчитывается.


"Knife 2"
{
"event" "player_hurt"
"executor" "attacker"

"condition" "weapon = knife"
"count" "4"

"reward" "sm_givecredits #{uid} 10"
}
 
Последнее редактирование:

xMaZax

Заблокирован
Сообщения
971
Реакции
303
Плагин классный , но я думаю
Лучше было бы объединить файл перерода и конфиг
не удобно туда сюда лазить
--- Добавлено позже ---
Возможно что-то не так написал , но когда убиваю с 1 раза ножа , достижение сразу засчитывается.


"Knife 2"
{
"event" "player_hurt"
"executor" "attacker"

"condition" "weapon = knife"
"count" "4"

"reward" "sm_givecredits #{uid} 10"
}
Попробуй так.
Код:
"Knife 2"
{
"event" "player_death"
"executor" "attacker"

"condition" "weapon = knife"
"count" "4"

"reward" "sm_givecredits #{uid} 10"
}
 

Reiko1231

AlexTheRegent
Сообщения
437
Реакции
1,106
@AlmazON, исправил, спасибо.
@skolobes, как часто возникает ошибка? За всё время при тестировании была один раз, и причина не была до конца ясна.
@666pro, файл перевода и конфиг объединить без потери мультиязычности нельзя.
 
Сообщения
133
Реакции
58
@Reiko1231, скорее всего еррорит так как не успевает создать Handle для игрока,который зашел и резко вышел
--- Добавлено позже ---
Кароче в LoadProgress(iClient)

ClientLoaded[iClient] = true;

public OnClientDisconnect(iClient)
{
if (ClientLoaded[iClient]) CloseHandle(g_hTrie_ClientProgress[iClient]);
}
 
Последнее редактирование:

Reiko1231

AlexTheRegent
Сообщения
437
Реакции
1,106
@Крабос, спасибо, упустил это из вида. Добавлю вас в раздел благодарностей, если вы не против.
Эту ошибку можно исправить проще. В SourceMod некоторые форварды являются парными, т.е. если был вызван один, то второй будет гарантированно вызван. Для OnClientDisconnect парным является форвард OnClientConnected. Поэтому исправление будет выглядеть примерно так:
PHP:
public OnClientConnected(iClient)
{ 
    // allocate memory
    g_hTrie_ClientProgress[iClient] = CreateTrie();
}

public OnClientPutInServer(iClient)
{
    // load client data
    LoadClient(iClient);
}

public OnClientDisconnect(iClient)
{
    // free memory
    CloseHandle(g_hTrie_ClientProgress[iClient]);
}
Пока не буду заливать версию 1.5, подожду до вечера, может ещё какие ошибки пропустил.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,146
Реакции
2,523
Так то оно так (вызовы парные), но больше согласен с @Крабос, т.к. вызовов уже больше нужного (3 вместо 2), да ещё столь ранний будет постоянно использоваться от каждого "чиха" любого игрока, чуть ли не забаненного, что ни есть хорошо. Лучше уж тогда:
PHP:
public OnClientPutInServer(iClient)
{
    // allocate memory
    g_hTrie_ClientProgress[iClient] = CreateTrie();
    // load client data
    LoadClient(iClient);
}

public OnClientDisconnect_Post(iClient)
{
    // free memory
    if(g_hTrie_ClientProgress[iClient])
    {
        CloseHandle(g_hTrie_ClientProgress[iClient]);
        g_hTrie_ClientProgress[iClient] = INVALID_HANDLE;
    }
}
Проверка "в игре" не требуется, лучше OnClientDisconnect_Post.
В итоге: ни дополнительная память не нужна, ни бесполезные (сверх ранние) вызовы.
 
Последнее редактирование:

Крузяра

Супермодератор
Сообщения
7,262
Реакции
5,534
Файл перевода и конфиг объединить без потери мультиязычности нельзя.
Можно, только если служебные фразы плагина оставить в файле переводов и это будут натуральные костыли. Ничто не мешает получать язык клиента ручками, а потом по нему искать перевод в конфиге, и если такого нет, то выдать фразу на дефолт языке.
 

Reiko1231

AlexTheRegent
Сообщения
437
Реакции
1,106
@AlmazON, довольно спорное суждение. Все форварды, как я понимаю, SourceMod объединяет между собой, вызывая последовательно. А вот "сверх ранние вызовы" для забаненных или им подобных игроков довольно редкое событие, чтобы обращать на него внимание. Тем более, где лишняя нагрузка это всего лишь создание и удаление Trie. В то время как для нормального игрока вообще никакой лишней нагрузки нет, а соотношение "нормальный игрок - забаненный", как мне кажется, как минимум 100 к 1.
@CrazyHackGUT, нет смысла делать костыли такого уровня ради удобства. Поэтому и нельзя сделать без потери мультиязычности. Оффтоп
 
Сообщения
174
Реакции
17
L 10/22/2016 - 16:25:33: SourceMod error session started
L 10/22/2016 - 16:25:33: Info (map "de_dust2_night") (file "errors_20161022.log")
L 10/22/2016 - 16:25:33: [SM] Exception reported: Handle 65610cd9 is invalid (error 3)
L 10/22/2016 - 16:25:33: [SM] Blaming: achievements.smx
L 10/22/2016 - 16:25:33: [SM] Call stack trace:
L 10/22/2016 - 16:25:33: [SM] [0] CloseHandle
L 10/22/2016 - 16:25:33: [SM] [1] Line 172, achievements.sp::OnClientDisconnect
L 10/22/2016 - 16:49:57: Error log file session closed.
 

Drumanid

Не все так как мы 'думаем'
Сообщения
1,715
Реакции
1,304
L 10/22/2016 - 16:25:33: SourceMod error session started
L 10/22/2016 - 16:25:33: Info (map "de_dust2_night") (file "errors_20161022.log")
L 10/22/2016 - 16:25:33: [SM] Exception reported: Handle 65610cd9 is invalid (error 3)
L 10/22/2016 - 16:25:33: [SM] Blaming: achievements.smx
L 10/22/2016 - 16:25:33: [SM] Call stack trace:
L 10/22/2016 - 16:25:33: [SM] [0] CloseHandle
L 10/22/2016 - 16:25:33: [SM] [1] Line 172, achievements.sp::OnClientDisconnect
L 10/22/2016 - 16:49:57: Error log file session closed.
@Крабос, спасибо, упустил это из вида. Добавлю вас в раздел благодарностей, если вы не против.
Эту ошибку можно исправить проще. В SourceMod некоторые форварды являются парными, т.е. если был вызван один, то второй будет гарантированно вызван. Для OnClientDisconnect парным является форвард OnClientConnected. Поэтому исправление будет выглядеть примерно так:
PHP:
public OnClientConnected(iClient)
{
    // allocate memory
    g_hTrie_ClientProgress[iClient] = CreateTrie();
}

public OnClientPutInServer(iClient)
{
    // load client data
    LoadClient(iClient);
}

public OnClientDisconnect(iClient)
{
    // free memory
    CloseHandle(g_hTrie_ClientProgress[iClient]);
}
Пока не буду заливать версию 1.5, подожду до вечера, может ещё какие ошибки пропустил.
 

R1KO

всё тлен
Супермодератор
Сообщения
8,439
Реакции
5,879
@Reiko1231, есть пара мыслей

PHP:
decl String:sGameName[32];
    GetGameFolderName(SZF(sGameName));
    if ( strcmp(sGameName, "csgo") == 0 ) {
->
PHP:
if(GetEngineVersion() == Engine_CSGO)
PHP:
decl String:sQuery[256];
    FormatEx(SZF(sQuery), "CREATE TABLE IF NOT EXISTS `clients` (`auth` VARCHAR(32), `userid` INTEGER, `last_connection` INTEGER, PRIMARY KEY(`userid`));");
    SQL_TQuery(g_hSQLdb, SQLT_OnCreateTables, sQuery);
   
    FormatEx(SZF(sQuery), "CREATE TABLE IF NOT EXISTS `progress` (`userid` INTEGER, `achivement` VARCHAR(64), `count` INTEGER, PRIMARY KEY(`userid`, `achivement`));");
    SQL_TQuery(g_hSQLdb, SQLT_OnCreateTables, sQuery);
а зачем формат? нет же параметров для подстановки.

может в
PHP:
GetClientAuthId(iClient, AuthId_Steam2, g_sAuth[iClient], sizeof(g_sAuth[]));
Использовать AuthId_Engine ?

@Reiko1231, а можно ли такое достижение реализовать: 100 раз прошел карту первый?
плагин поддерживает только стандартные события.
Но есть предложения:
Либо создать свое событие (не помню возможно ли, надо проверить) либо добавить в плагин api позволяющее использовать функционал плагина в своих событиях.
 

Reiko1231

AlexTheRegent
Сообщения
437
Реакции
1,106
Пользователь Reiko1231 обновил ресурс [Achievements] Core новой записью:

Обновление до версии 1.5

Что нового:
  • Исправлена ошибка при выходе игрока до захода на сервер (например, при загрузке файлов).
  • Небольшая оптимизация кода.
  • Исправлена ошибка неверного отображения прогресса достижений при нулевом прогрессе.
  • Добавлен .inc файл для написания модулей к плагину (примеры модулей выйдут позже).
Обновляйте плагин строго по инструкции, иначе потеряете все достижения и файл перевода достижений!
Узнать больше об этом обновлении...
 
Сообщения
44
Реакции
4
@Reiko1231, а какая короткая команда вызова менюшки плагина?
Оффтоп
Спасибо. Уже нашел в исходнике. "!ach"
 
Последнее редактирование:
Сообщения
338
Реакции
119
Можно ли добавить достижение "получить все достижения" или получить определенное кол-во достижений?
Еще на оверлее почему-то у меня не пишет название достижения, как на видео. Или для этого только английский клиент нужен?
 
Сообщения
75
Реакции
17
Ребята, а подскажите, может на финальный звук от shop ball можно прикрутить достижение?
Или на EndZone от shavit's simple bhop timer ?
P.s по счет звука я походу зря сказал:D
 
Все изображения и файлы загружайте только на наш сервер! Для этого используйте кнопку Прикрепить файлы, расположенную ниже или просто перетащите необходимые файлы/изображения со своего компьютера в окно редактора.
Сверху