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

Achievements Unlocker 1.0

Madness aka null138

Участник
Сообщения
713
Реакции
734
  • Автор ресурса
  • #1
Madness aka null138 добавил(а) новый ресурс:

Achievements Unlocker - Награждает игроков официальными Steam достижениями игры

Данный плагин в виде ядра является серверным аналогом известной программы Steam Achievement Manager (SAM), но только с возможностью полного открытие достижений без возможности сбрасывание.

Поддерживается все версии игр с достижениями на движке Source, по крайнее мере некоторые номера достижений совпадают с установленным в плагине.
Не гарантируется открытие всех достижений.
Для CS:S гарантировано открытие 142 из 147 возможных, включая старую новогоднюю достижению которую уже честным путем не открыть. А так как большинства номеров совпадают так же у CS:GO, то вполне возможен открытие свыше 80% процентов достижений.

ВАЖНО, ПРОЧИТАТЬ ПРЕЖДЕ ЧЕМ ИСПОЛЬЗОВАТЬ:
Возможно получить блокировку VAC если кто то напишет на вас репорт, такая же ситуация...

Узнать больше об этом ресурсе...
 
Последнее редактирование:

Ryancoolround

Участник
Сообщения
35
Реакции
17
Нарушение правил: пункт - 3.1.2
Самое тупое что можно было бы придумать.

Этот плагин или расширение просто обесценивает всю суть достижений.

А старую новогоднюю ачивку можно получить отдельным плагином, который допустим у меня на сервере тупо на каждый декабрь включается сам по себе (Еще один идиот на каком то сервере за деньги продает открытие этой ачивки...).
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
  • Автор ресурса
  • #3
Самое тупое что можно было бы придумать.

Этот плагин или расширение просто обесценивает всю суть достижений.

А старую новогоднюю ачивку можно получить отдельным плагином, который допустим у меня на сервере тупо на каждый декабрь включается сам по себе (Еще один идиот на каком то сервере за деньги продает открытие этой ачивки...).
у каждого свой выбор.
вас заставляют использовать ? нет. так пройдите мимо тихо.
а ваше сообщение вообще не несет никакого смысла на данный момент. не критики, а тем более не относящего к работе плагина сообщение. лишь бы написать что то.
 

xyligan

Паркетный пол трещит под моей крышкой черепной
Сообщения
900
Реакции
432
Самое тупое что можно было бы придумать.

Этот плагин или расширение просто обесценивает всю суть достижений.

А старую новогоднюю ачивку можно получить отдельным плагином, который допустим у меня на сервере тупо на каждый декабрь включается сам по себе (Еще один идиот на каком то сервере за деньги продает открытие этой ачивки...).
Сами бы взяли написали что-то не "тупое" и полезное. Автор выкладывает то, что он хочет. Если Вам не нравится ресурс, просто молчите. Кто захочет, скачает. Надеюсь, Вы поняли о чём я.
 

cssv92/AWP Убийственный

ВКонтакте: https://vk.com/awpservermrd
Сообщения
147
Реакции
343
Данная разработка по своему очень интересна! Спасибо автору за реализацию составляющей.
Такой работы нигде - нет. Продолжайте делать работы и радовать пользователей своими трудами. Скачиваний уже более 20 человек за считанные часы. Это и значит, что подходит многим. Добра!
Самое тупое что можно было бы придумать.
У Вас нет ни малейшего права такие слова говорить в адрес Автора ресурса.
 
Последнее редактирование:

toorisrael

Участник
Сообщения
4
Реакции
2
C++:
    Handle msg = StartMessageEx(GetUserMessageId("AchievementEvent"), clients, 1);
    BfWriteShort(msg, achievementID);
    BfWriteShort(msg, 10000); // should be enough?
    EndMessage();
CSGO uses protobuf:
C++:
    Handle msg = StartMessageEx(GetUserMessageId("AchievementEvent"), clients, 1);
    Protobuf pb = UserMessageToProtobuf(msg);
    pb.SetInt("achievement", achievementID);
    pb.SetInt("count", 10000);
    pb.SetInt("user_id", GetClientUserId(client));
    EndMessage();
However it doesn't work even with protobuf.
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
  • Автор ресурса
  • #8
C++:
    Handle msg = StartMessageEx(GetUserMessageId("AchievementEvent"), clients, 1);
    BfWriteShort(msg, achievementID);
    BfWriteShort(msg, 10000); // should be enough?
    EndMessage();
CSGO uses protobuf:
C++:
    Handle msg = StartMessageEx(GetUserMessageId("AchievementEvent"), clients, 1);
    Protobuf pb = UserMessageToProtobuf(msg);
    pb.SetInt("achievement", achievementID);
    pb.SetInt("count", 10000);
    pb.SetInt("user_id", GetClientUserId(client));
    EndMessage();
However it doesn't work even with protobuf.
edit* will look at it sooner as possible
upd* try setting index values and let me know did this fixed the issue or not

C-подобный:
// optional int32 achievement = 1;
// optional int32 count = 2;
// optional int32 user_id = 3;

pb.SetInt("achievement", achievementID, 1);
pb.SetInt("count", 10000, 2);
pb.SetInt("user_id", GetClientUserId(client), 3);
 
Последнее редактирование:

toorisrael

Участник
Сообщения
4
Реакции
2
I've figured this out, CSGO just ignores "count" value and always uses 1, so something like this will work:
C++:
stock void UnlockAchievementByID(int client, int achievementID, int value)
{
    intclients[2];
    clients[0] = client;
   
    for(int i = 1; i <= value; i++)
    {
        Handle msg = StartMessageEx(GetUserMessageId("AchievementEvent"), clients, 1);
        Protobuf pb = UserMessageToProtobuf(msg);
        pb.SetInt("achievement", achievementID);
        pb.SetInt("count", 1);  
        pb.SetInt("user_id", GetClientUserId(client));
        EndMessage();
    }  
}
This could possibly lag or crash server for some achievements, for example - if achievement requires 50000 damage done. I will test it at some point and let you know.

EDIT: Oh didn't see your edit xD I will try this tomorrow, thanks!
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
  • Автор ресурса
  • #10
I've figured this out, CSGO just ignores "count" value and always uses 1, so something like this will work:
C++:
stock void UnlockAchievementByID(int client, int achievementID, int value)
{
    intclients[2];
    clients[0] = client;
 
    for(int i = 1; i <= value; i++)
    {
        Handle msg = StartMessageEx(GetUserMessageId("AchievementEvent"), clients, 1);
        Protobuf pb = UserMessageToProtobuf(msg);
        pb.SetInt("achievement", achievementID);
        pb.SetInt("count", 1);
        pb.SetInt("user_id", GetClientUserId(client));
        EndMessage();
    }
}
This could possibly lag or crash server for some achievements, for example - if achievement requires 50000 damage done. I will test it at some point and let you know.

EDIT: Oh didn't see your edit xD I will try this tomorrow, thanks!
there is already an issues i faced with some achievements like money and damaging. for some reason they are not increasing and being reseted every time.
so probably the count is working and you just checked the achievement which this plugin cant unlock for now.
 

toorisrael

Участник
Сообщения
4
Реакции
2
there is already an issue i faced with some achievements like money and damaging. for some reason they are not increasing and being reset every time.
so probably the count is working and you just checked the achievement which this plugin cant unlock for now.
Yeah, that's correct. In CSGO, if achievement requires more than 1 "count", loop sending this x times will be needed. This will however work only for "count" <= 300 (more messages will get dropped due to net channel flooding). Also, it will not increase user stats on Steam, so player must get achievement before any event sending real player stats occur (for example round_end, player_death).
Probably calling this function would be a better idea, but I'm not sure it will work on server. The signature for server.so should be:
55 89 E5 53 83 EC 14 8B 5D 08 8B 03 89 1C 24 FF
EDIT: well, probably not exact this funcion, but some other AwardAchievement(), I will look more into this later.
EDIT2: maybe this
55 89 E5 5D E9 37 FF FF FF 90 8D B6 00 00 00 00
 
Последнее редактирование:
Сверху Снизу