Написание плагинов

Мотыга

сила в силе духа ☠️☠️☠️
Сообщения
84
Реакции
49

Jedi qLux

Участник
Сообщения
187
Реакции
42
@Jedi qLux, если не надо чтоб через стены и т.д видно было, убери параметр "$ignorez" "1" в marker.vmt
Братан, у меня почему-то не получилась. Нельзя ли как-то его исправить и размер поменьше сделать, примерно, как на второй фотографии?
 

Вложения

  • 8B1F778B-4CA0-4020-99D0-2E0AFD3374BE.jpeg
    8B1F778B-4CA0-4020-99D0-2E0AFD3374BE.jpeg
    87.8 КБ · Просмотры: 62
  • 51A9DC63-3EC4-4C07-88F8-1A9CDF996D83.jpeg
    51A9DC63-3EC4-4C07-88F8-1A9CDF996D83.jpeg
    102.5 КБ · Просмотры: 60

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
@Jedi qLux, Попробуйте, и покажите как вы спавните ее. Можно в ЛС
 

Вложения

  • marker_new.rar
    1.4 КБ · Просмотры: 10

sibiryak54

Участник
Сообщения
43
Реакции
9
Ребят привет всем, помогите пожалуйста переделать ARMY RANKS HUD INFO... CSS V91, заранее всем спасибо! Нужно переделать чтоб было как на скриншоте.. И сделать чтоб когда смотришь за другим игроком, тебе показывало его звание как на скриншоте
 

Вложения

  • army_ranks_hud_info.sp
    2.4 КБ · Просмотры: 11
  • army_ranks.inc
    3.8 КБ · Просмотры: 4
  • army_ranks_hud_info.sp
    2.4 КБ · Просмотры: 6
  • menu.phrases.txt
    4.2 КБ · Просмотры: 7
  • ARMY.png
    ARMY.png
    688.6 КБ · Просмотры: 78

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
По поводу Army Ranks (и всего что с ним связано) скажу сразу, плагин давно заброшен, и заниматься его поддержкой у меня нет ни желания, ни времени.
Человеку выше про это уже написал в ВК, так что если кто-то хотел сделать, но подумал дак есть же автор, хочу обрадовать, автор НЕ поддерживает данный плагин уже несколько лет. А также более не помогает с настройкой и редактированием мода!

Возможно в будущем я и возрожу его, когда это произойдет, тогда и будет разговор о поддержке!

Оффтоп
 

garry

blink-182
Сообщения
122
Реакции
111
Привет, друзья.
1. sm_autoalltalk
2. Нужен плагин, который будет отключать общий чат, когда на сервере играют 20 человек (не считая наблюдателей). Когда набирается 20 человек - будет выполнена команда sm_alltalk 5 и показано сообщение в чате, что общий чат выключен. Когда меньше 20 человек - то sm_alltalk 2 и сообщение в чате, что общий чат включен.

Не актуально
 
Последнее редактирование:

mnoxl

Участник
Сообщения
66
Реакции
32
Привет всем, нужна помощь с плагином. В общем, нужно сделать команду, чтобы не выдавало шприц
#include <sourcemod>
#include <sdktools>


public OnPluginStart()
{
HookEvent("player_spawn", Event_PlayerSpawn);
}
public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
CreateTimer(3.0, WelcomePlayer, GetClientSerial(client));
}

public Action WelcomePlayer(Handle timer, int client)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));

if (IsClientInGame(client) && IsPlayerAlive(client))
{
GivePlayerItem(client, "weapon_healthshot");
}
}
 

RudikS

Участник
Сообщения
130
Реакции
61
Привет всем, нужна помощь с плагином. В общем, нужно сделать команду, чтобы не выдавало шприц
#include <sourcemod>
#include <sdktools>


public OnPluginStart()
{
HookEvent("player_spawn", Event_PlayerSpawn);
}
public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
CreateTimer(3.0, WelcomePlayer, GetClientSerial(client));
}

public Action WelcomePlayer(Handle timer, int client)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));

if (IsClientInGame(client) && IsPlayerAlive(client))
{
GivePlayerItem(client, "weapon_healthshot");
}
}

C-подобный:
#include <sourcemod>
#include <sdktools>

bool bHealthshot = true;

public OnPluginStart()
{
    HookEvent("player_spawn", Event_PlayerSpawn);

    RegAdminCmd("sm_hs", HealthshotCallBack, ADMFLAG_ROOT);
}

public Action HealthshotCallBack(int iClient, int args)
{
    if(IsClientInGame(iClient))
    {
        bHealthshot = !bHealthshot;
        PrintToChat(iClient, "Шприц %s", bHealthshot? "включен":"выключен");
    }
}

public void Event_PlayerSpawn(Event event, const char []name, bool dontBroadcast)
{
    CreateTimer(3.0, WelcomePlayer, GetEventInt(event, "userid"));
}

public Action WelcomePlayer(Handle timer, any UserID)
{
    if(bHealthshot)
    {
        int iClient = GetClientOfUserId(UserID);

        if (iClient != 0 && IsClientInGame(iClient) && IsPlayerAlive(iClient))
        {
            GivePlayerItem(iClient, "weapon_healthshot");
        }
    }

    return Plugin_Stop;
}
 

HenryTownshand

Чел ты
Сообщения
255
Реакции
140
Привет всем, нужна помощь с плагином. В общем, нужно сделать команду, чтобы не выдавало шприц
#include <sourcemod>
#include <sdktools>


public OnPluginStart()
{
HookEvent("player_spawn", Event_PlayerSpawn);
}
public Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
CreateTimer(3.0, WelcomePlayer, GetClientSerial(client));
}

public Action WelcomePlayer(Handle timer, int client)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));

if (IsClientInGame(client) && IsPlayerAlive(client))
{
GivePlayerItem(client, "weapon_healthshot");
}
}

Типо так?
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <clientprefs>

bool g_bHS;
Handle g_hCookie;

public OnPluginStart()
{
    RegAdminCmd("sm_hs", GHS, ADMFLAG_BAN, "Give HealthShot");
    HookEvent("player_spawn", Event_PlayerSpawn);
    g_hCookie = RegClientCookie("GiveHealthShot", "Статус", CookieAccess_Public);
}

public void OnClientCookiesCached(int iClient)
{
    char szValue[4];
    GetClientCookie(iClient, g_hCookie, szValue, sizeof(szValue));
    if (szValue[0])g_bHS = view_as<bool>(StringToInt(szValue));
    else g_bHS = true;
}

public Action GHS(int iClient, int iArg)
{
    if((g_bHS = !g_bHS))
    {
        SetClientCookie(iClient, g_hCookie, "1");
        PrintToChat(iClient, "[GHS] Выдача включена");
    }else{
        SetClientCookie(iClient, g_hCookie, "0");
        PrintToChat(iClient, "[GHS] Выдача выключена");
    }
}

public void Event_PlayerSpawn(Event hEvent, const char[] sName, bool bDontBroadcast)
{
    if(g_bHS) CreateTimer(3.0, WelcomePlayer, GetClientOfUserId(GetEventInt(hEvent, "userid")));
}

public Action WelcomePlayer(Handle hTimer, int iClient)
{
    if (iClient != 0 && IsClientInGame(iClient) && IsPlayerAlive(iClient)) GivePlayerItem(iClient, "weapon_healthshot");
}
Сообщения автоматически склеены:

а, уже ответили
 

mnoxl

Участник
Сообщения
66
Реакции
32
@HenryTownshand, @RudikS Спасибо обоим <3
Сообщения автоматически склеены:

Можно ещё чтобы он выдавал только один шприц при возрождение. И, если отключен плагин, то он удалял у всех шприцы
 
Последнее редактирование:

Harsh USSR ☭

Участник
Сообщения
104
Реакции
2
Привет ребят помогите немного изменить плагин сейчас он сделан так что бы только когда в спектрах можно было включить вх а я хочу что бы он и в спектрах включался и когда админ мертвый сервер css steam
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);
    
}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1)
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1)
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}
 

DeeperSpy

Гений, миллиардер, плейбой, филантроп, майнкрафтер
Сообщения
588
Реакции
362
Привет ребят помогите немного изменить плагин сейчас он сделан так что бы только когда в спектрах можно было включить вх а я хочу что бы он и в спектрах включался и когда админ мертвый сервер css steam
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);
   
}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1)
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1)
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);
    
}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1)
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}
 

xstage

🏹
Сообщения
726
Реакции
754
C-подобный:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <smlib>
#pragma semicolon 1

new bool:Walling[MAXPLAYERS+1];
new Handle:cv_walltex;

public Plugin:myinfo =
{
    name = "[ANY] Wallhack For Specs",
    author = "Arthurdead",
    description = "Wallhack For Specs",
    version = "0.3",
    url = "http://steamcommunity.com/id/Arthurdead"
}

public OnPluginStart()
{
    RegConsoleCmd("sm_wallhack", Command_Wallhack);
    cv_walltex = CreateConVar("sm_wallhack_tex", "ggwp/wh/redlight.vmt", "Wallhack Texture", 0|FCVAR_NOTIFY);
    HookEvent("player_spawn", Event_Spawn);
   
}

public Action:Command_Wallhack(client, args)
{
    if(CheckCommandAccess(client, "sm_wallhack_access", ADMFLAG_GENERIC))
    {
        if(GetClientTeam(client) == 1 || !IsPlayerAlive(client))
        {
            if(Walling[client] == false)
            {
                Walling[client] = true;
                PrintToChat(client, "Wallhack Enabled");
            }
            else if(Walling[client] == true)
            {
                Walling[client] = false;
                PrintToChat(client, "Wallhack Disabled");
            }
        }
        else ReplyToCommand(client, "[SM] You Must Be An Spectator To Use This Command");
    }
    return Plugin_Handled;
}

public Action:Event_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"));
    SDKHook(client, SDKHook_PreThink, PreThinkHook);
}

public PreThinkHook(client)
{
    if(IsValidClient(client))
    {
        if(Walling[client] == true)
        {
            if(GetClientTeam(client) == 1)
            {
                decl Float:clientEyes[3];
                GetClientEyePosition(client, clientEyes);
                Client_GetClosest(clientEyes, client);
            }
        }
    }
}

bool:IsValidClient( client )
{
    if(!(1 <= client <= MaxClients ) || !IsClientInGame(client))
        return false;
    return true;
}

stock Client_GetClosest(Float:vecOrigin_center[3], const client)
{
    decl Float:vecOrigin_edict[3];
    new Float:distance = -1.0;
    new closestEdict = -1;
    new String:Tex[PLATFORM_MAX_PATH];
    GetConVarString(cv_walltex, Tex, PLATFORM_MAX_PATH);
    new mdl = PrecacheModel(Tex);
    new target = Client_GetObserverTarget(client);
    for (new i = 1; i < MaxClients; ++i)
    {
        if(!IsClientInGame(i) || !IsPlayerAlive(i) || (i == client))
            continue;
        GetEntPropVector(i, Prop_Data, "m_vecOrigin", vecOrigin_edict);
        GetClientEyePosition(i, vecOrigin_edict);
        if(GetClientTeam(i) != GetClientTeam(target))
        {
            TE_SetupGlowSprite(vecOrigin_edict, mdl, 0.1, 1.0, 255);
            TE_SendToClient(client);
            if(IsPointVisible(vecOrigin_center, vecOrigin_edict))
            {
                new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict);
                if((edict_distance < distance) || (distance == -1.0))
                {
                    distance = edict_distance;
                    closestEdict = i;
                }
            }
        }
    }
    return closestEdict;
}

stock bool:IsPointVisible(const Float:start[3], const Float:end[3])
{
    TR_TraceRayFilter(start, end, MASK_PLAYERSOLID, RayType_EndPoint, TraceEntityFilterStuff);
    return TR_GetFraction() >= 0.9;
}

public bool:TraceEntityFilterStuff(entity, mask)
{
    return entity > MaxClients;
}
Проверки на админа не хватает
 
Сверху Снизу