Фикс оверлеев

Тема в разделе "Counter-Strike: Global Offensive", создана пользователем -=Batista=-, 30 дек 2014.

  1. -=Batista=-

    -=Batista=- Просвященный

    Сообщения:
    279
    Симпатии:
    73
    Здравствуйте, господа хорошие. Имеются плагин оверлеев. Но. При убийстве ножом высвечивается оверлей простого убийства. Плюс после смерти не обнуляется количество убийств (сервер ДМ). Можно ли это как-то исправить?
     

    Вложения:

  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    [CS:GO/CS:S] sm_killmessage_overlays v1.3.1e & sm_killmessage_framework_v1.4e

    Оффтоп
    sm_killmessage_framework_v1.4e - расширенная версия "ядра" плагина. Позволяет задавать собственное время для любого из оверлеев.
    Для этого, необходимо добавить в самом конце команды показа оверлея ваше новое время (после пробела), например:
    ServerCommand("sm_killmessage_show %i %s 10.0",GetClientUserId(i),_sCTWinsOverlay);
    где 10.0 - время показа (в данном случае, оверлея победы контр-террористов).
     

    Вложения:

    Последнее редактирование: 16 июн 2015
    code++, Wodanaz, TWRP и 4 другим нравится это.
  3. -=Batista=-

    -=Batista=- Просвященный

    Сообщения:
    279
    Симпатии:
    73
    Вот, теперь сбрасывает. А по поводу ножей понял причину - в игре же не один нож, надо знать точное название. Такие ножи, как knifegg (golden), bayonet, knife_gut завести удалось. Остальные - надо узнать точное название
     
  4. -=Batista=-

    -=Batista=- Просвященный

    Сообщения:
    279
    Симпатии:
    73
    Там соображать особо-то и нечего)) Только, чувствую, намучаюсь я с поиском верного названия... Если кто-то в курсе - прошу помощи
     
  5. -=Batista=-

    -=Batista=- Просвященный

    Сообщения:
    279
    Симпатии:
    73
    Хоть убей, не пойму как...
     
  6. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Зря дал ссылку. Этот komashchenko заделался без исходников плагины выкладывать - исходника ядра нет, а там были бы все названия.
    Но, не стал заниматься ерундой, вытащил всё у нормальных людей из оригинала.
    Код:
    "weapon_bayonet"
    "weapon_knife_gut"
    "weapon_knife_flip"
    "weapon_knife_m9_bayonet"
    "weapon_knife_karambit"
    "weapon_knife_tactical"
    "weapon_knife_butterfly"
    "weapon_knife"
    "weapon_knifegg"
    По коду: проверять !strcmp для bayonet и StrContains для прочих (просто вписать knife).
     
    Dreizehnt и -=Batista=- нравится это.
  7. -=Batista=-

    -=Batista=- Просвященный

    Сообщения:
    279
    Симпатии:
    73
    Проблема решена ;) Тему можно закрывать
     
  8. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    Две проблемы:

    1 - Оверлей задирается (если быть точным, не опускается, выводится как и другие на одном уровне) при победе одной из команд происходит наложение, деффолтной таблицы и нашего оверлея.
    [​IMG]

    2 - Счёт киллов не обнуляется если игрок остался жив в предыдущем раунде, если умер то всё в порядке.
     

    Вложения:

    • spr.jpg
      spr.jpg
      Размер файла:
      68,1 КБ
      Просмотров:
      333
  9. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    Или опустить оверлей ниже(не знаю возможно ли прописать координату), или удалить вообще, т.к стандартный лучше.

    Ну не плохо было бы сбрасывать счётчик в конце каждого раунда, в остальном всё идеально, мне понравилось!
     
  10. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    421
    Есть переменная для его отключения гдето видел ее но забыл
     
  11. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    Да ну, по мне так его лучше оставить, а оверлей убрать, т.к стандартная панель несёт больше информации.

    Добавлено через 12 часов 26 минут
    Убрал оверлеи победы T\CT, но теперь таблица накладывается на оверлей последнего убийства.(предлагаю не показывать последний килл)
    PHP:
    new String:_sGrenadeOverlay[32],
        
    String:_sHeadShotOverlay[32],
        
    String:_sKnifeOverlay[32],
        
    String:_sKillOverlayNaming[32],
        
    _iMaxKillStreak,
        
    _aiKillStreak[MAXPLAYERS+1];

    public 
    Plugin:myinfo 
    {
        
    name "Kill Message Overlays Basic Triggers",
        
    author "Siang Chun & Black Haze & AlmazON edition",
        
    description "Basic Triggers for Kill Message Overlays",
        
    version "1.3e",
        
    url "bslw.co.uk & beernweed.com"
    }

    public 
    OnPluginStart()
    {
        
    HookEvent("player_death"Event_PlayerDeath);
        
    decl Handle:h;
        
    HookConVarChange(hCreateConVar("sm_killmessage_bs_grenade""kill_grenade""Name of the grenade kill overlay (no extension)"), GO);
        
    GetConVarString(h_sGrenadeOverlay32);
        
    HookConVarChange(hCreateConVar("sm_killmessage_bs_headshot""kill_headshot""Name of the headshot kill overlay (no extension)"), HO);
        
    GetConVarString(h_sHeadShotOverlay32);
        
    HookConVarChange(hCreateConVar("sm_killmessage_bs_knife""kill_knife""Name of the knife kill overlay (no extension)"), KO);
        
    GetConVarString(h_sKnifeOverlay32);
        
    HookConVarChange(hCreateConVar("sm_killmessage_bs_killnaming""kill_""Naming convention for the kill overlays (numbers are added automatically,no extension)"), KN);
        
    GetConVarString(h_sKillOverlayNaming32);
        
    HookConVarChange(hCreateConVar("sm_killmessage_bs_maxkillstreak""10""Amount of kills allowed in a killstreak (it'll restart at 1 after the end)"), KS);
        
    _iMaxKillStreak GetConVarInt(h);
        
    CloseHandle(h);
        
    AutoExecConfig(true"killmessage_basicsupport");    
    }

    public 
    OnConfigsExecuted()
    {
        
    ServerCommand("sm_killmessage_prepare %s",_sGrenadeOverlay);
        
    ServerCommand("sm_killmessage_prepare %s",_sHeadShotOverlay);
        
    ServerCommand("sm_killmessage_prepare %s",_sKnifeOverlay);
        for(new 
    i=1i<=_iMaxKillStreaki++) ServerCommand("sm_killmessage_prepare %s%i",_sKillOverlayNaming,i);
    }

    public 
    GO(Handle:cString:o[], const String:n[]) strcopy(_sGrenadeOverlay32n);
    public 
    HO(Handle:cString:o[], const String:n[]) strcopy(_sHeadShotOverlay32n);
    public 
    KO(Handle:cString:o[], const String:n[]) strcopy(_sKnifeOverlay32n);
    public 
    KN(Handle:cString:o[], const String:n[]) strcopy(_sKillOverlayNaming32n);
    public 
    KS(Handle:cString:o[], String:n[]) _iMaxKillStreak GetConVarInt(c);

    public 
    OnClientPostAdminCheck(client_aiKillStreak[client] = 0;

    public 
    Event_PlayerDeath(Handle:eventString:name[], bool:dontBroadcast)
    {
        
    decl useridplayer;
        
    _aiKillStreak[GetClientOfUserId(player=GetEventInt(event"userid"))] = 0;
        if((
    userid GetEventInt(event"attacker")) != player && (player GetClientOfUserId(userid)) && IsFakeClient(player)==false)
        {
            if(++
    _aiKillStreak[player]>_iMaxKillStreak_aiKillStreak[player] = 1;
            
    decl String:weapon[11];
            
    GetEventString(event"weapon",weapon11);
            if(
    strcmp(weapon"hegrenade")==0ServerCommand("sm_killmessage_show %i %s 2.3",userid,_sGrenadeOverlay);
            else if(
    strcmp(weapon"bayonet")==|| StrContains(weapon"knife") !=-1ServerCommand("sm_killmessage_show %i %s 2.3",userid,_sKnifeOverlay);
            else if(
    GetEventBool(event"headshot")) ServerCommand("sm_killmessage_show %i %s 1.7",userid,_sHeadShotOverlay);
            else 
    ServerCommand("sm_killmessage_show %i %s%i 1.7",userid,_sKillOverlayNaming,_aiKillStreak[player]);
        }
    }

    P.S. Естественно обнуление оверлеев если выжил не сделал.
     
    Последнее редактирование: 25 мар 2015
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    [CS:GO/CS:S] sm_killmessage_overlays v1.3.1e

    Оффтоп В этой версии оверлей побед команд вырезан, все нестандартные оверлеи будут "скрыты" в конце раунда, а также сброшены "страйки" игроков.
    P.S. Оверлей убийств после конца раунда будет отображён.
     

    Вложения:

    Последнее редактирование: 27 мар 2015
  13. trueattack

    trueattack

    Сообщения:
    148
    Симпатии:
    32
    Re: [CS:GO/CS:S] sm_killmessage_overlays v1.3e & sm_killmessage_framework_v1.4e

    Ставлю 1.3е [CSS]. Как не менял пути - все равно не скачивает. Может кто пример свой скинуть? Вот мой:

    PHP:
    #include <sdktools_stringtables>

    new Float:_dTimerLength,
        
    Handle:_atCleanTimer[MAXPLAYERS+1];

    public 
    Plugin:myinfo 
    {
        
    name "Kill Message Overlays Framework",
        
    author "Siang Chun & Black Haze & AlmazON edition",
        
    description "Framework for Kill Message Overlays",
        
    version "1.3e",
        
    url "bslw.co.uk & beernweed.com"
    }

    public 
    OnPluginStart()
    {
        
    RegServerCmd("sm_killmessage_prepare"PrepareOverlay);
        
    RegServerCmd("sm_killmessage_show"ShowKillMessage);
        
    HookConVarChange(_atCleanTimer[0]=CreateConVar("sm_killmessage_overlays_length""3.0""Length of time an overlay is showed",FCVAR_PLUGIN|FCVAR_REPLICATEDtrue1.0),OL);
        
    _dTimerLength GetConVarFloat(_atCleanTimer[0]);
    }

    public 
    OL(Handle:CString:O[], String:N[]) _dTimerLength GetConVarFloat(C);

    public 
    Action:ShowKillMessage(A)
    {
        if(
    >1)
        {
            
    decl String:sOverLay[32];
            
    GetCmdArg(1sOverLay32);
            if((
    A=GetClientOfUserId(StringToInt(sOverLay))))
            {
                if(
    _atCleanTimer[A] !=INVALID_HANDLE)
                {
                    
    CloseHandle(_atCleanTimer[A]);
                    
    ClientCommand(A"r_screenoverlay \"\"");
                }
    GetCmdArg(2sOverLay32);
                
    ClientCommand(A"r_screenoverlay \"models/trueattack/pb/overlays/killmessage/%s.vtf\"",sOverLay);
                
    _atCleanTimer[A] = CreateTimer(_dTimerLength,CleanTimer,A);
            }
        }return 
    Plugin_Handled;
    }

    public 
    Action:CleanTimer(Handle:Timerany:client)
    {
        
    _atCleanTimer[client] = INVALID_HANDLE;
        if(
    IsClientInGame(client)) ClientCommand(client"r_screenoverlay \"\"");
        return 
    Plugin_Stop;
    }

    public 
    Action:PrepareOverlay(A)
    {
        if(
    A)
        {
            
    decl String:overlays_file[59], String:sOverLay[32];
            
    GetCmdArg(1sOverLay32);
            
    FormatEx(overlays_file,59,"models/trueattack/pb/overlays/killmessage/%s.vtf",sOverLay);
            
    PrecacheDecal(overlays_file,true);
            
    FormatEx(overlays_file,59,"materials/models/trueattack/pb/overlays/killmessage/%s.vtf",sOverLay);
            
    AddFileToDownloadsTable(overlays_file);
            
    FormatEx(overlays_file,59,"models/trueattack/pb/overlays/killmessage/%s.vmt",sOverLay);
            
    PrecacheDecal(overlays_file,true);
            
    FormatEx(overlays_file,59,"materials/models/trueattack/pb/overlays/killmessage/%s.vmt",sOverLay);
            
    AddFileToDownloadsTable(overlays_file);
        }return 
    Plugin_Handled;
    }
     
  14. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    Chapaev, ты пытаешься загрузить ресурсы в папку models
    PHP:
    public Action:ShowKillMessage(A)
    {
        if(
    >1)
        {
            
    decl String:sOverLay[32];
            
    GetCmdArg(1sOverLay32);
            if((
    A=GetClientOfUserId(StringToInt(sOverLay))))
            {
                if(
    _atCleanTimer[A] !=INVALID_HANDLE)
                {
                    
    CloseHandle(_atCleanTimer[A]);
                    
    ClientCommand(A"r_screenoverlay \"\"");
                }
    GetCmdArg(2sOverLay32);
                
    ClientCommand(A"r_screenoverlay \"ТВОЯ_ПАПКА/%s.vtf\"",sOverLay);
                
    _atCleanTimer[A] = CreateTimer(GetCmdArg(3sOverLay32) ? StringToFloat(sOverLay):_dTimerLength,CleanTimer,A);
            }
        }return 
    Plugin_Handled;
    }

    public 
    Action:CleanTimer(Handle:Timerany:client)
    {
        
    _atCleanTimer[client] = INVALID_HANDLE;
        if(
    IsClientInGame(client)) ClientCommand(client"r_screenoverlay \"\"");
        return 
    Plugin_Stop;
    }

    public 
    Action:PrepareOverlay(A)
    {
        if(
    A)
        {
            
    decl String:overlays_file[59], String:sOverLay[32];
            
    GetCmdArg(1sOverLay32);
            
    FormatEx(overlays_file,59,"ТВОЯ_ПАПКА/%s.vtf",sOverLay);
            
    PrecacheDecal(overlays_file,true);
            
    FormatEx(overlays_file,59,"materials/ТВОЯ_ПАПКА/%s.vtf",sOverLay);
            
    AddFileToDownloadsTable(overlays_file);
            
    FormatEx(overlays_file,59,"ТВОЯ_ПАПКА/%s.vmt",sOverLay);
            
    PrecacheDecal(overlays_file,true);
            
    FormatEx(overlays_file,59,"materials/ТВОЯ_ПАПКА/%s.vmt",sOverLay);
            
    AddFileToDownloadsTable(overlays_file);
        }return 
    Plugin_Handled;
    }
     
  15. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    Не фига не понял! В конце раунда будут сброшены все страйки, и если игрок сделает страйк, то ему зачтётся на сдел. раунд? Т.е на след. раунде он начинает с одним страйком да?

    Добавлено через 1 минуту
    Я ещё не протестировал, я обязательно отпишусь, а то не красиво получится с моей стороны.
     
    Последнее редактирование: 27 мар 2015
  16. NiGaByte

    NiGaByte

    Сообщения:
    501
    Симпатии:
    84
    AlmazON, лучше конечно полное, а с нагрузкой разберётся ЦП.
    Кстати если учитывать тот момент что в конце раунда 50% мертвы(а как правила зачастую почти все, если это не easy win), то нагрузка отходит на второй план, она реально ничтожна!
     
  17. trueattack

    trueattack

    Сообщения:
    148
    Симпатии:
    32
    А если у меня путь до файлов с километр, то я понимаю нормально их загрузить не получится? Придется упрощать путь до materials/killmessages/ ?
     
  18. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Re: sm_killmessage_framework

    Кстати, да, я там жёстко зафиксировал) Расчёт даже самого автора плагина был на то, что будете использовать его начальный путь, а не свой.
    Если надо длиннющий, то меняй в загрузках все 59 на PLATFORM_MAX_PATH, а 32 - эдак на 64, чтобы наверняка:
    PHP:
    public Action:PrepareOverlay(A

        if(
    A
        { 
            
    decl String:overlays_file[PLATFORM_MAX_PATH], String:sOverLay[64]; 
            
    GetCmdArg(1sOverLay64); 
            
    FormatEx(overlays_file,PLATFORM_MAX_PATH,"ТВОЯ_ПАПКА/%s.vtf",sOverLay); 
            
    PrecacheDecal(overlays_file,true); 
            
    FormatEx(overlays_file,PLATFORM_MAX_PATH,"materials/ТВОЯ_ПАПКА/%s.vtf",sOverLay); 
            
    AddFileToDownloadsTable(overlays_file); 
            
    FormatEx(overlays_file,PLATFORM_MAX_PATH,"ТВОЯ_ПАПКА/%s.vmt",sOverLay); 
            
    PrecacheDecal(overlays_file,true); 
            
    FormatEx(overlays_file,PLATFORM_MAX_PATH,"materials/ТВОЯ_ПАПКА/%s.vmt",sOverLay); 
            
    AddFileToDownloadsTable(overlays_file); 
        }return 
    Plugin_Handled
    }
     
    trueattack нравится это.
  19. Alraune

    Alraune

    Сообщения:
    94
    Симпатии:
    1
    AlmazON, Я пробовала все оверлеи. Сейчас у меняSourceMod (1.6.3) by AlliedModders LLC и плагин постоянно спамит ошибками, хотя и отображается у всех игроков. В данный момент стоит https://forums.alliedmods.net/attachment.php?attachmentid=83359&d=1299585285
    [SM] Native "ClientCommand" reported: Client 10 is not connected
    L 06/15/2015 - 23:44:06: [SM] Displaying call stack trace for plugin "sm_killmessage_framework.smx":
    L 06/15/2015 - 23:44:06: [SM] [0] Line 62, /home/groups/sourcemod/upload_tmp/phpaipOjS.sp::ClearScreen
    Вот как то так...(((
    Готова заплатить за оверлей , который будет корректно работать на данном см..
     
  20. WINS

    WINS

    Сообщения:
    215
    Симпатии:
    46
    нужно добавить проверку IsClientConnected(client) в исходник и скомпилировать