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

[OS] KillFeed Assister 1.1a

rgba

Участник
Сообщения
132
Реакции
14
В консоле сервера каждый раз при ассисте "Dropped Данахер + LUSA from server ()"
 

rgba

Участник
Сообщения
132
Реакции
14
ошибка:
L 06/21/2024 - 09:25:19: [SM] Exception reported: Client 3 is not connected
L 06/21/2024 - 09:25:19: [SM] Blaming: lvl/[OS]KillfeedAssister.smx
L 06/21/2024 - 09:25:19: [SM] Call stack trace:
L 06/21/2024 - 09:25:19: [SM]   [0] IsFakeClient
L 06/21/2024 - 09:25:19: [SM]   [1] Line 51, c:\Users\Nikola1x6\Desktop\ServerCSS92\cstrike\addons\sourcemod\scripting\[OS]KillfeedAssister.sp::Hook_SayText2
L 06/21/2024 - 09:25:19: [SM]   [3] PrintToChat
L 06/21/2024 - 09:25:19: [SM]   [4] Line 386, F:\Desktop\11\sm_21.09.2018\sm_21.09.2018\sourcemod-1.9.0-git6281-windows\addons\sourcemod\scripting\include\halflife.inc::PrintToChatAll
L 06/21/2024 - 09:25:19: [SM]   [5] Line 77, defaulttextreplace.sp::RefreshConfig
L 06/21/2024 - 09:25:19: [SM]   [6] Line 41, defaulttextreplace.sp::OnConfigsExecuted
1718951189971.png
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
  • Автор ресурса
  • #7
ошибка:
L 06/21/2024 - 09:25:19: [SM] Exception reported: Client 3 is not connected
L 06/21/2024 - 09:25:19: [SM] Blaming: lvl/[OS]KillfeedAssister.smx
L 06/21/2024 - 09:25:19: [SM] Call stack trace:
L 06/21/2024 - 09:25:19: [SM]   [0] IsFakeClient
L 06/21/2024 - 09:25:19: [SM]   [1] Line 51, c:\Users\Nikola1x6\Desktop\ServerCSS92\cstrike\addons\sourcemod\scripting\[OS]KillfeedAssister.sp::Hook_SayText2
L 06/21/2024 - 09:25:19: [SM]   [3] PrintToChat
L 06/21/2024 - 09:25:19: [SM]   [4] Line 386, F:\Desktop\11\sm_21.09.2018\sm_21.09.2018\sourcemod-1.9.0-git6281-windows\addons\sourcemod\scripting\include\halflife.inc::PrintToChatAll
L 06/21/2024 - 09:25:19: [SM]   [5] Line 77, defaulttextreplace.sp::RefreshConfig
L 06/21/2024 - 09:25:19: [SM]   [6] Line 41, defaulttextreplace.sp::OnConfigsExecuted
Посмотреть вложение 118276
Перекачайте плагин что бы исправить ошибку.
Из консоле сервера убирать то наверно копаться в файлах движка наверно надо, а ты 24\7 смотришь в консоль сервера?
 

rgba

Участник
Сообщения
132
Реакции
14
Перекачайте плагин что бы исправить ошибку.
Из консоле сервера убирать то наверно копаться в файлах движка наверно надо, а ты 24\7 смотришь в консоль сервера?
Частенько читаю, что люди на сервере пишут, смотрю статус о стимах, подключения, а он прямо нормально засорят
Слушай, а через Console Cleaner не убрать?
1718951782657.png
 

rgba

Участник
Сообщения
132
Реакции
14
Попробуй, не пользовался им
Эх, безуспешно(
Сообщения автоматически склеены:

Теперь у ботов начали ники меняться на "ник + ник" и их не кикает с сервера(
1718953502622.png
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Правда в CS:GO есть вот такая переменная (в файле cs_gamerules.cpp слитых исходников строка 1637):
ConVar cs_AssistDamageThreshold( "cs_AssistDamageThreshold", "40.0", FCVAR_DEVELOPMENTONLY, "cs_AssistDamageThreshold defines the amount of damage needed to score an assist" );
Т.е. ассистом считается не любой нанесённый урон. =)
 

KiKiEEKi

🏆 🥇
Сообщения
653
Реакции
513
  • Автор ресурса
  • #12
Теперь у ботов начали ники меняться на "ник + ник" и их не кикает с сервера(
Не используйте режим fill или как он там у ботов что бы выходил\заходили боты, а лучше вовсе отказаться от ботов на паблике тем более
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Чуток почистил код. И добавил проверку на версию SM (чтобы не спрашивали чего не компилится struct).
Сообщения автоматически склеены:

SM1.10:
//// [OS]KillfeedAssister 1.1.sp
//
// Code size:             6860 bytes
// Data size:             6752 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   29996 bytes
//
// Compilation Time: 0,16 sec
// ----------------------------------------

//// [OS]KillfeedAssister 1.1_fix.sp
//
// Code size:             6364 bytes
// Data size:             6468 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   29216 bytes
//
// Compilation Time: 0,16 sec
// ----------------------------------------
Сообщения автоматически склеены:

На до бы ещё как-то реализовать учёт нанесённого урона, чтобы не писало в ассист, если нанёс урона меньше, чем 40% исходного HP.
Сообщения автоматически склеены:

Изменения в 1.2 (в сравнении с 1.1_fix):
Добавил переменную sm_assist_dmg_threshold (дефолтное значение - 40, если нужно менять, то прописывать в server.cfg, чтобы не плодить конфигв с одним кваром). Эта переменная указывает сколько дамага нужно суммарно нанести игроку, чтобы после его смерти можно было попасть в киллфид в качестве помощника.
Если таких игроков будет больше одного, то будет учитываться только тот, кто нанёс больше урона (убийца при этом не учитывается).
 

Вложения

  • [OS]KillfeedAssister 1.1_fix.sp
    3.6 КБ · Просмотры: 15
Последнее редактирование:

NeLifeASkazka

Участник
Сообщения
128
Реакции
70
Почему бы не сделать через смену ника игрока ?)
code:
#include <sdktools>

int iAssist[MAXPLAYERS+1];
int iAssist_Health[MAXPLAYERS+1][MAXPLAYERS+1];
bool bSkipMsgChat;

public void OnPluginStart(){
    HookEvent("player_hurt", OnPlayerHurt);
    HookEvent("player_death", OnPlayerDeath_pre, EventHookMode_Pre);
    UserMsg msg = GetUserMessageId("SayText2");
    if(msg != INVALID_MESSAGE_ID) HookUserMessage(msg, OnTextMsg, true);
}
public Action OnTextMsg(UserMsg msg_id, BfRead msg, const int[] players, int playersNum, bool reliable, bool init){
    if(!bSkipMsgChat) return Plugin_Continue;
    BfReadByte(msg); BfReadByte(msg);
    char cMsg[128]; BfReadString(msg, cMsg, sizeof(cMsg));
    return StrContains(cMsg, "Cstrike_Name_Change") != -1 ? Plugin_Handled : Plugin_Continue;
}

public void OnPlayerHurt(Event event, const char[] name, bool db){
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    int client = GetClientOfUserId(event.GetInt("userid"));

    if(attacker == client || attacker < 1 || attacker > MaxClients) return;

    iAssist_Health[client][attacker] += event.GetInt("dmg_health");

    if(iAssist_Health[client][attacker] > 30 && iAssist[client] < 1)
        iAssist[client] = attacker;
}
public void OnPlayerDeath_pre(Event event, const char[] name, bool db){
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
    int client = GetClientOfUserId(event.GetInt("userid"));

    if(attacker == client || attacker < 1 || attacker > MaxClients || iAssist[client] < 1 || iAssist[client] == attacker || !IsClientInGame(iAssist[client])) return;

    bSkipMsgChat = true;

    event.BroadcastDisabled = true;
    
    DataPack pack = new DataPack();
    pack.WriteCell(event.GetInt("userid"));
    pack.WriteCell(event.GetInt("attacker"));
    char cGetWeapon[32]; event.GetString("weapon", cGetWeapon, sizeof(cGetWeapon));
    pack.WriteString(cGetWeapon);
    pack.WriteCell(event.GetBool("headshot"));
    pack.WriteCell(event.GetInt("dominated"));
    pack.WriteCell(event.GetInt("revenge"));
    char cGetName[32]; GetClientName(attacker, cGetName, sizeof(cGetName));
    pack.WriteString(cGetName);
    
    CreateTimer(0.065, AssistEvent, pack);

    char cSetName[64]; FormatEx(cSetName, sizeof(cSetName), "%N + %N", attacker, iAssist[client]);
    SetClientName(attacker, cSetName);

    iAssist[client] = 0;
    for(int i = 1; i <= MaxClients; i++)
        iAssist_Health[client][i] = 0;
}
public Action AssistEvent(Handle timer, DataPack pack){
    pack.Reset();
    int client = pack.ReadCell();
    int attacker = pack.ReadCell();
    char cWeapon[32]; pack.ReadString(cWeapon, sizeof(cWeapon));
    bool headshoot = view_as<bool>(pack.ReadCell());
    int dominated = pack.ReadCell();
    int revenge = pack.ReadCell();

    Event assist_event = CreateEvent("player_death");
    assist_event.SetInt("userid", client);
    assist_event.SetInt("attacker", attacker);
    assist_event.SetString("weapon", cWeapon);
    assist_event.SetBool("headshot", headshoot);
    assist_event.SetInt("dominated", dominated);
    assist_event.SetInt("revenge", revenge);

    for(int i = 1; i <= MaxClients; i++)
        if(IsClientInGame(i) && !IsFakeClient(i))
            assist_event.FireToClient(i);
    assist_event.Cancel();

    char cSetOldName[32]; pack.ReadString(cSetOldName, sizeof(cSetOldName));
    SetClientName(GetClientOfUserId(attacker), cSetOldName);

    pack.Close();
    bSkipMsgChat = false;
}
 

Mechnikoff

Участник
Сообщения
21
Реакции
6
Чуток почистил код. И добавил проверку на версию SM (чтобы не спрашивали чего не компилится struct).
Сообщения автоматически склеены:

SM1.10:
//// [OS]KillfeedAssister 1.1.sp
//
// Code size:             6860 bytes
// Data size:             6752 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   29996 bytes
//
// Compilation Time: 0,16 sec
// ----------------------------------------

//// [OS]KillfeedAssister 1.1_fix.sp
//
// Code size:             6364 bytes
// Data size:             6468 bytes
// Stack/heap size:      16384 bytes
// Total requirements:   29216 bytes
//
// Compilation Time: 0,16 sec
// ----------------------------------------
Сообщения автоматически склеены:

На до бы ещё как-то реализовать учёт нанесённого урона, чтобы не писало в ассист, если нанёс урона меньше, чем 40% исходного HP.
Сообщения автоматически склеены:

Изменения в 1.2 (в сравнении с 1.1_fix):
Добавил переменную sm_assist_dmg_threshold (дефолтное значение - 40, если нужно менять, то прописывать в server.cfg, чтобы не плодить конфигв с одним кваром). Эта переменная указывает сколько дамага нужно суммарно нанести игроку, чтобы после его смерти можно было попасть в киллфид в качестве помощника.
Если таких игроков будет больше одного, то будет учитываться только тот, кто нанёс больше урона (убийца при этом не учитывается).
Ники пропадают, возможно из-за символов или нестандартных шрифтов.

Без имени2.png
Без имени.png
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
возможно из-за символов или нестандартных шрифтов.
Вполне может быть.
Плюс максимальная длина ника в CS:S равна 64 символов, емнип (в CS:GO - 128) и имена могут обрезаться криво (символ вопросительного знака в ромбе), а тут 2 ника в один впихнуть нужно плюс ещё 3 символа между ними.

Нужно что ли попробовать выводить тест в чат ещё для проверки.
Прикреплённая версия будет писать при убийстве с ассистом ник, который должен присваиваться боту (116-я строка, потом можно удалить). Ну и увеличил количество символов в нике для киллфида с 32 до 128 символов (хз чего сразу 64 не сделал, забыл, наверное), хотя всё равно больше 63 не влезет (последний символ всегда может быть только '\0').
Сообщения автоматически склеены:

Вообще наверное надо бы ещё давать MVP за максимальное количество ассистов за раунд (правда без сообщения в конце раунда, наверное).
 

Вложения

  • [OS]KillfeedAssister 1.2_21.06.2024 test.sp
    4.5 КБ · Просмотры: 15

Mechnikoff

Участник
Сообщения
21
Реакции
6
Вполне может быть.
Плюс максимальная длина ника в CS:S равна 64 символов, емнип (в CS:GO - 128) и имена могут обрезаться криво (символ вопросительного знака в ромбе), а тут 2 ника в один впихнуть нужно плюс ещё 3 символа между ними.

Нужно что ли попробовать выводить тест в чат ещё для проверки.
Прикреплённая версия будет писать при убийстве с ассистом ник, который должен присваиваться боту (116-я строка, потом можно удалить). Ну и увеличил количество символов в нике для киллфида с 32 до 128 символов (хз чего сразу 64 не сделал, забыл, наверное), хотя всё равно больше 63 не влезет (последний символ всегда может быть только '\0').
Сообщения автоматически склеены:

Вообще наверное надо бы ещё давать MVP за максимальное количество ассистов за раунд (правда без сообщения в конце раунда, наверное).

20240621194950_1.jpg
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Mechnikoff, тут либо одного тика оказалось мало, либо я хз.
Можно попробовать менять ник убийце, как предложили выше.
Сообщения автоматически склеены:

@Mechnikoff, этот вариант будет переименовывать убийцу и через тик отправлять новое событие, после чего вернёт старое имя.
 
Последнее редактирование:

Mechnikoff

Участник
Сообщения
21
Реакции
6
@Mechnikoff, тут либо одного тика оказалось мало, либо я хз.
Можно попробовать менять ник убийце, как предложили выше.
Сообщения автоматически склеены:

@Mechnikoff, этот вариант будет переименовывать убийцу и через тик отправлять новое событие, после чего вернёт старое имя.
Ассисты иногда появляются, иногда нет. С никами вот такая тема происходит. Без ботов ещё не тестил. Через бота идея лучше как по мне.
20240622124324_1.jpg
20240622125557_1.jpg
 
Последнее редактирование:
Сверху Снизу