⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
⭐Kurumsal web sitesi barındırma, VDS ve sanal sunucu çözümleri. Name SSD altyapısı, yüksek performans, kesintisiz erişim ve profesyonel teknik destekle hizmetinizde.⭐
Sponsor Görsel 2
SponsorSponsor

Showkeys Plugini Değiştirilecek

Konu

#1
selamlar izleyici'ye attıgım kisiler izledikleri kisilerin klavye tuslarını goruyor fakat pluginde yapmak istediğim değişiklikler var bunları yapabilen olursa çok sevinirim. öncelikle benim kullandıgım pluginin tasarımı attıgım 2. fotoğraftaki gibi olmasını istiyorum.. ekstradan hız göstergeci ve fps göstergeci de eklenirse çok güzel olur. tesekkur ederım.

1- https://hizliresim.com/nqefksz
2- https://hizliresim.com/lhc0sed

Kod:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <reapi>

#define PLUGIN  "SpecInfo"
#define VERSION "1.0"
#define AUTHOR  "mi0"

#define LISTR 45
#define LISTG 89
#define LISTB 116
#define LISTX 0.7
#define LISTY 0.1

#define LISTFREQ 10

enum PlayerSettings
{
    Name[32],
    bool:Keys,
    bool:KeysSpec,
    KeysString[192],
    bool:List,
    bool:ListHide,
    SpectatingIndex,
    ListString[256],
    WatchingCount
}

new g_iThinkingEntity, iSyncHudListObj, iSyncHudKeysObj
new g_ePlayerSettings[MAX_PLAYERS + 1][PlayerSettings]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)

    iSyncHudListObj = CreateHudSyncObj()
    iSyncHudKeysObj = CreateHudSyncObj()

    g_iThinkingEntity = rg_create_entity("info_target")
    set_entvar(g_iThinkingEntity, var_classname, "SpecInfo_Entity")
    set_entvar(g_iThinkingEntity, var_nextthink, get_gametime() + 10.0)
    RegisterHam(Ham_Think, "info_target", "OnEntityThink")
}

public client_connect(id)
{
    get_user_name(id, g_ePlayerSettings[id][Name], charsmax(g_ePlayerSettings[][Name]))
    g_ePlayerSettings[id][List] = true
    g_ePlayerSettings[id][ListHide] = false
    g_ePlayerSettings[id][Keys] = false
    g_ePlayerSettings[id][KeysSpec] = true
    Func_ClearStorages(id)
}

public client_infochanged(id)
{
    get_user_info(id, "name", g_ePlayerSettings[id][Name], charsmax(g_ePlayerSettings[][Name]))
}

public OnEntityThink(id)
{
    if (id != g_iThinkingEntity) {
        return;
    }
    
    static iListCounter
    if (++iListCounter >= LISTFREQ)
    {
        Func_UpdateList()
        iListCounter = 0
    }

    Func_UpdateKeys()

    set_entvar(g_iThinkingEntity, var_nextthink, get_gametime() + 0.1)
}

Func_UpdateKeys()
{
    new iPlayers[MAX_PLAYERS], iPlayersNum
    get_players_ex(iPlayers, iPlayersNum)
    
    new iTargetIndex
    new bool:bNeeded[33], iSpecIndex[33]
    for (new i = 0; i < iPlayersNum; i++)
    {
        iTargetIndex = iPlayers[i]
        if (is_user_alive(iTargetIndex))
        {
            if (g_ePlayerSettings[iTargetIndex][Keys])
            {
                bNeeded[iTargetIndex] = true
            }
        }
        else
        {
            if (!g_ePlayerSettings[iTargetIndex][KeysSpec] ||
                !is_user_alive((iSpecIndex[iTargetIndex] = get_entvar(iTargetIndex, var_iuser2))) ||
                bNeeded[iSpecIndex[iTargetIndex]])
            {
                continue
            }

            bNeeded[iSpecIndex[iTargetIndex]] = true
        }
    }

    for (new i; i < iPlayersNum; i++)
    {
        iTargetIndex = iPlayers[i]
        if (!bNeeded[iTargetIndex])
        {
            continue
        }

        Func_FormatButtons(iTargetIndex)
    }

    new iObserved
    for (--iPlayersNum; iPlayersNum >= 0; iPlayersNum--)
    {
        iTargetIndex = iPlayers[iPlayersNum]

        if (is_user_alive(iTargetIndex) && g_ePlayerSettings[iTargetIndex][Keys])
        {
            iObserved = iTargetIndex
        }
        else if (g_ePlayerSettings[iTargetIndex][KeysSpec])
        {
            iObserved = iSpecIndex[iTargetIndex]
        }
        else
        {
            continue
        }

        Func_ShowKeys(iTargetIndex, iObserved)
    }
}

Func_FormatButtons(id)
{
    new iButtons = get_entvar(id, var_button)

    // definately didnt steal that HUH
    formatex(g_ePlayerSettings[id][KeysString], charsmax(g_ePlayerSettings[][KeysString]), "^n^t^t%s^t^t^t%s^n^t%s %s %s^t^t%s",
            iButtons & IN_FORWARD ? "W" : " .",
            iButtons & IN_JUMP ? "Jump" : "  -",
            iButtons & IN_MOVELEFT ? "A" : ".",
            iButtons & IN_BACK ? "S" : ".",
            iButtons & IN_MOVERIGHT ? "D" : ".",
            iButtons & IN_DUCK ? "Duck" : "  -"
        )
}

Func_ShowKeys(iObs, iObsed)
{
    set_hudmessage(0, 30, 200, 0.48, 0.40, 0, 0.0, 0.1, 0.1, 0.0)
    ShowSyncHudMsg(iObs, iSyncHudKeysObj, g_ePlayerSettings[iObsed][KeysString])
}

Func_UpdateList()
{
    new iPlayers[MAX_PLAYERS], iPlayersNum, iPlayersDead[MAX_PLAYERS], iPlayersDeadNum
    new iTargetIndex, iSpectatingIndex

    get_players_ex(iPlayers, iPlayersNum, GetPlayers_ExcludeBots | GetPlayers_ExcludeHLTV)
    for (new i; i < iPlayersNum; i++)
    {
        Func_ClearStorages(iPlayers[i])
    }

    get_players_ex(iPlayersDead, iPlayersDeadNum, GetPlayers_ExcludeAlive | GetPlayers_ExcludeBots | GetPlayers_ExcludeHLTV)
    for (new i; i < iPlayersDeadNum; i++)
    {
        iTargetIndex = iPlayersDead[i]
        if ((iSpectatingIndex = get_entvar(iTargetIndex, var_iuser2)) && iSpectatingIndex != iTargetIndex)
        {
            if (!g_ePlayerSettings[iTargetIndex][ListHide])
            {
                format(g_ePlayerSettings[iSpectatingIndex][ListString], charsmax(g_ePlayerSettings[][ListString]),
                    "%s^n^t%s", g_ePlayerSettings[iSpectatingIndex][ListString], g_ePlayerSettings[iTargetIndex][Name])
            }
            g_ePlayerSettings[iSpectatingIndex][WatchingCount]++
            g_ePlayerSettings[iTargetIndex][SpectatingIndex] = iSpectatingIndex
        }
    }

    for (new i; i < iPlayersNum; i++)
    {
        iTargetIndex = iPlayers[i]
        
        if (is_user_alive(iTargetIndex))
        {
            Func_FormatList(iTargetIndex)
        }
    }

    for (--iPlayersNum; iPlayersNum >= 0; iPlayersNum--)
    {
        iTargetIndex = iPlayers[iPlayersNum]

        if (g_ePlayerSettings[iTargetIndex][List] && g_ePlayerSettings[is_user_alive(iTargetIndex) ? iTargetIndex : g_ePlayerSettings[iTargetIndex][SpectatingIndex]][WatchingCount])
        {
            Func_ShowList(iTargetIndex, is_user_alive(iTargetIndex) ? iTargetIndex : g_ePlayerSettings[iTargetIndex][SpectatingIndex])
        }
    }
}

Func_FormatList(id)
{
    format(g_ePlayerSettings[id][ListString], charsmax(g_ePlayerSettings[][ListString]), "Watching %s [%i]:%s",
        g_ePlayerSettings[id][Name], g_ePlayerSettings[id][WatchingCount], g_ePlayerSettings[id][ListString])
}

Func_ShowList(id, iListOwner)
{
    set_hudmessage(LISTR, LISTG, LISTB, LISTX, LISTY, 0, 0.0, 1.0)
    ShowSyncHudMsg(id, iSyncHudListObj, g_ePlayerSettings[iListOwner][ListString])
}

Func_ClearStorages(id)
{
    g_ePlayerSettings[id][SpectatingIndex] = 0
    g_ePlayerSettings[id][WatchingCount] = 0
    copy(g_ePlayerSettings[id][ListString], charsmax(g_ePlayerSettings[][ListString]), "")
}

#2
Konu günceldir…..
#3
@sametcann merhabalar 24 saat gecemeden konu guncelleyemezsiniz 24 saate sadece 1 kez güncelliyebilirsiniz.
MODEL TASARIMI SİLAH TASARIMI SPREY TASARIMI EKLENTİ İŞLERİ MOD KURULUMU İÇİN DİSCORD:okan5705 veya Ts3 Domainler:flexekip,flexekib,okan,okans
#4
Konunuz çözüldüyse bildirin
亗 TEŞKİLAT-I MAHSUSA 亗

DNS :  pro.timailesi.com / ts1.timailesi.com
#5
Konunuz "Çözülmüş İsteklere" taşınmıştır.
亗 TEŞKİLAT-I MAHSUSA 亗

DNS :  pro.timailesi.com / ts1.timailesi.com

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da