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

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@Wanderer, никак: цвет в HUDе задаётся сразу для всего канала, а не для его отдельных частей
Вот здесь прописывается цвет: SetHudTextParams(POS_X, POS_Y, UPDATE_INTERVAL + 0.1, 191, 191, 191, 255, 0, 0.0, 0.1, 0.1);
 

Wanderer

Шизофреник
Сообщения
171
Реакции
27
@Wanderer, никак: цвет в HUDе задаётся сразу для всего канала, а не для его отдельных частей
Вот здесь прописывается цвет: SetHudTextParams(POS_X, POS_Y, UPDATE_INTERVAL + 0.1, 191, 191, 191, 255, 0, 0.0, 0.1, 0.1);
Понял,Спасибо.
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749
Может помочь кто изменить стандартный mapchooser от (сурс мода) чтобы он карты давал не по списку а перемешивал?
 

x330122

Участник
Сообщения
357
Реакции
152
Можно ли через плагин убрать доступ к команде администраторам, Чтобы их могли использовать игроки без админ прав ?
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749
Можно ли через плагин убрать доступ к команде администраторам, Чтобы их могли использовать игроки без админ прав ?
Может просто присваивать игрокам любой флаг и на этот флаг через админ овверидес привязать что нужно?
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749
Надо именно сделать чтобы все могли использовать
Встречал плагины автовыдачи флага при заходе на сервер.Если найдете его,дело за малым присвоить нужные команды на этот флаг и все.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Можно ли через плагин убрать доступ к команде администраторам, Чтобы их могли использовать игроки без админ прав ?
Есть несколько путей выхода из этой ситуации:
1. Как писал @Oligarx1488, можно через addons\sourcemod\configs\admin_overrides.cfg выставить на нужные команды флаги (пустые) для доступа игрокам:
PHP:
Overrides
{
//    Команда                        Флаг
    "sm_ungag"                      ""
    "sm_unmute"                   ""
    "sm_unsilence"                ""
    "sm_ballset"                     ""
    "sm_balL_reload"           ""
    "sm_ballsetcredits"         ""
    "sm_respawnsk"              ""
    "sm_respawntype"          ""
    "sm_respawntimer"        ""
    "sm_respawnlives"         ""
    "sm_ballset"                     ""
    "sm_respawntimer"       ""
    "sm_respawnlives"         ""
}
2. Через файл addons\sourcemod\configs\admin_groups.cfg (не проверено) , вставляя нужные флаги доступа
PHP:
Groups
{
    "Default"
    {
        "flags"        ""  // Сюда нужные флаги
        "immunity"        "1"
    }
}
 

skaeN

Участник
Сообщения
204
Реакции
108
Нашел на просторах интернета, плагин под CS:S.
Из данного плагина нужна возможность перемещать игроков в спектора.
Можно ли изменить под CS:GO?
 

Вложения

  • spectatorswitch.sp
    3.7 КБ · Просмотры: 6

x330122

Участник
Сообщения
357
Реакции
152
Есть несколько путей выхода из этой ситуации:
1. Как писал @Oligarx1488, можно через addons\sourcemod\configs\admin_overrides.cfg выставить на нужные команды флаги (пустые) для доступа игрокам:
PHP:
Overrides
{
//    Команда                        Флаг
    "sm_ungag"                      ""
    "sm_unmute"                   ""
    "sm_unsilence"                ""
    "sm_ballset"                     ""
    "sm_balL_reload"           ""
    "sm_ballsetcredits"         ""
    "sm_respawnsk"              ""
    "sm_respawntype"          ""
    "sm_respawntimer"        ""
    "sm_respawnlives"         ""
    "sm_ballset"                     ""
    "sm_respawntimer"       ""
    "sm_respawnlives"         ""
}
2. Через файл addons\sourcemod\configs\admin_groups.cfg (не проверено) , вставляя нужные флаги доступа
PHP:
Groups
{
    "Default"
    {
        "flags"        ""  // Сюда нужные флаги
        "immunity"        "1"
    }
}

Можно ли как-то временно прописать игроку админа если у него его нету ? И потом забрать ? Просто эта махинация с админ флагами через плагин не понятна
 

Truyn

King of clowns
Сообщения
1,591
Реакции
749
Можно ли как-то временно прописать игроку админа если у него его нету ? И потом забрать ? Просто эта махинация с админ флагами через плагин не понятна
1 вариант повнимательнее ознакомься,это не махинации
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Можно ли как-то временно прописать игроку админа если у него его нету ? И потом забрать ? Просто эта махинация с админ флагами через плагин не понятна
Для добавления нужного игрока в админы, пропишите его в admins.cfg, там можете и убирать когда понадобится...
Узнать Steam_id по стим-профилю - Как узнать STEAM ID, steamID 64, стим айди конвертор.
Или если игрок на сервере, то пропишите в консоль status и найдите ник нужного вам игрока и рядом будет его Steam_id.

После измененния файла перезагрузите сервер или же список администрации sm_reloadadmins
--- Добавлено позже ---
Мне надо прописать временного админа, чтобы игрок после выхода перестал быть админом автоматически. Мне что нужно то. Мне надо чтобы чудом команды которые требуют админ права, игрок мог выполнить вообще не находясь в админах и не перекомпилируя сами плагины с командами, прописывать overrides
Перекомпилировать плагин не требуется, просто в overrides пропишите те команды, которые нужно открыть в свободный доступ, игрок при этом не становится админом!
Не вижу смысла делать плагин для автовыдачи и автоотбирания по выходу/заходу игрока на сервер. Для это требуется как миннимум два плагина, которые будут давать нагрузку, это плагин с командой для выдачи флага (он будет добавлять в файл admins), и плагин для автоматизации выдачи при заходе и отбирания при выходе игрока. Оффтоп
 
Последнее редактирование:

wightjeck

Костыли заказывали?
Сообщения
472
Реакции
154
Ребят, может кто переписать данный плагин. Он отключает полностью музыку, но с задержкой. Например выключил музыку, после запуска другого трека на карте идет 1-2 секунды проигрывания, после чего отключение. Может кто сделать так, чтобы он сразу отключал, без проигрывания?
PHP:
#pragma semicolon 1

#include <sourcemod>
#include <sdktools>
#include <csgo_colors>

#define PLUGIN_NAME     "Stop Map Music"
#define PLUGIN_VERSION     "1.0.0"

#define MAX_EDICTS        2048

new Float:g_fCmdTime[MAXPLAYERS+1];
new g_iSoundEnts[MAX_EDICTS];
new g_iNumSounds;
new bool:disabled[MAXPLAYERS + 1];

public Plugin:myinfo =
{
    name = PLUGIN_NAME,
    author = "GoD-Tony [Fixed by The Count]",
    description = "Allows clients to stop ambient sounds played by the map",
    version = PLUGIN_VERSION,
    url = "http://www.sourcemod.net/"
};

public OnPluginStart()
{
    CreateConVar("sm_stopmusic_version", PLUGIN_VERSION, "Stop Map Music", FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD);
    HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
    RegConsoleCmd("sm_music", Command_StopMusic, "Toggles map music");
    CreateTimer(10.0, Post_Start, _, TIMER_REPEAT);
}

public OnClientDisconnect_Post(client)
{
    g_fCmdTime[client] = 0.0;
    disabled[client] = false;
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
    g_iNumSounds = 0;
 
    UpdateSounds();
    CreateTimer(0.8, Post_Start);
}

public OnEntityCreated(entity, const String:classname[]){
    if(!StrEqual(classname, "ambient_generic", false)){
        return;
    }
    new String:sSound[PLATFORM_MAX_PATH];
    GetEntPropString(entity, Prop_Data, "m_iszSound", sSound, sizeof(sSound));
    new len = strlen(sSound);
    if (len > 4 && (StrEqual(sSound[len-3], "mp3") || StrEqual(sSound[len-3], "wav"))){
        g_iSoundEnts[g_iNumSounds++] = EntIndexToEntRef(entity);
    }else{
        return;
    }
    new ent = -1;
    for(new i=1;i<=MaxClients;i++){
        if(!disabled[i] || !IsClientInGame(i)){ continue; }
        for (new u=0; u<g_iNumSounds; u++){
            ent = EntRefToEntIndex(g_iSoundEnts[u]);
            if (ent != INVALID_ENT_REFERENCE){
                GetEntPropString(ent, Prop_Data, "m_iszSound", sSound, sizeof(sSound));
                Client_StopSound(i, ent, SNDCHAN_STATIC, sSound);
            }
        }
    }
}

UpdateSounds(){
    new String:sSound[PLATFORM_MAX_PATH];
    new entity = INVALID_ENT_REFERENCE;
    while ((entity = FindEntityByClassname(entity, "ambient_generic")) != INVALID_ENT_REFERENCE)
    {
        GetEntPropString(entity, Prop_Data, "m_iszSound", sSound, sizeof(sSound));
    
        new len = strlen(sSound);
        if (len > 4 && (StrEqual(sSound[len-3], "mp3") || StrEqual(sSound[len-3], "wav")))
        {
            g_iSoundEnts[g_iNumSounds++] = EntIndexToEntRef(entity);
        }
    }
}

public Action:Post_Start(Handle:timer){
    if(GetClientCount() <= 0){
        return Plugin_Continue;
    }
    new String:sSound[PLATFORM_MAX_PATH];
    new entity = INVALID_ENT_REFERENCE;
    for(new i=1;i<=MaxClients;i++){
        if(!disabled[i] || !IsClientInGame(i)){ continue; }
        for (new u=0; u<g_iNumSounds; u++){
            entity = EntRefToEntIndex(g_iSoundEnts[u]);
            if (entity != INVALID_ENT_REFERENCE){
                GetEntPropString(entity, Prop_Data, "m_iszSound", sSound, sizeof(sSound));
                Client_StopSound(i, entity, SNDCHAN_STATIC, sSound);
            }
        }
    }
    return Plugin_Continue;
}

public Action:Command_StopMusic(client, args)
{
    if (!client || g_fCmdTime[client] > GetGameTime())
        return Plugin_Handled;
 
    if(disabled[client]){
        disabled[client] = false;
        CGOPrintToChat(client, "[SM]: Музыка {GREEN}включиться {DEFAULT}на следующем треке...");
        return Plugin_Handled;
    }
 
    g_fCmdTime[client] = GetGameTime() + 5.0;
 
    CGOPrintToChat(client, "[SM]: Музыка на карте {RED}выключена{DEFAULT}...");
 
    new String:sSound[PLATFORM_MAX_PATH], entity;
 
    for (new i = 0; i < g_iNumSounds; i++)
    {
        entity = EntRefToEntIndex(g_iSoundEnts[i]);
    
        if (entity != INVALID_ENT_REFERENCE)
        {
            GetEntPropString(entity, Prop_Data, "m_iszSound", sSound, sizeof(sSound));
            Client_StopSound(client, entity, SNDCHAN_STATIC, sSound);
        }
    }
    disabled[client] = true;
    return Plugin_Handled;
}

stock Client_StopSound(client, entity, channel, const String:name[])
{
    EmitSoundToClient(client, name, entity, channel, SNDLEVEL_NONE, SND_STOP, 0.0, SNDPITCH_NORMAL, _, _, _, true);
}
 
Последнее редактирование:

temON4ik

Участник
Сообщения
65
Реакции
2
Ребят,есть ли плагин отключает игрокам чат и оставляют право писать в чат только админу с флагом a?
 

x330122

Участник
Сообщения
357
Реакции
152
Ребят,есть ли плагин отключает игрокам чат и оставляют право писать в чат только админу с флагом a?
C-подобный:
#pragma semicolon 1

#define DEBUG


#include <sourcemod>
#include <sdktools>

//#pragma newdecls required


public void OnPluginStart()
{
    
}
public Action:OnClientSayCommand(author, const String:command[], const String:message[])
{
    if (!CheckAdminChar(author, "a")){
        PrintToChat(author, "Говорить может только администратор");
        return Plugin_Handled;
    }
}
stock bool CheckAdminChar(int client, const char[] cflag)
{
    if(GetUserAdmin(client)==INVALID_ADMIN_ID)
        return false;
    new AdminFlag:flag;
    if(FindFlagByChar(cflag[0], flag))
        return GetAdminFlag(GetUserAdmin(client), flag);
    return false;
}
 

temON4ik

Участник
Сообщения
65
Реакции
2
C-подобный:
#pragma semicolon 1

#define DEBUG


#include <sourcemod>
#include <sdktools>

//#pragma newdecls required


public void OnPluginStart()
{
  
}
public Action:OnClientSayCommand(author, const String:command[], const String:message[])
{
    if (!CheckAdminChar(author, "a")){
        PrintToChat(author, "Говорить может только администратор");
        return Plugin_Handled;
    }
}
stock bool CheckAdminChar(int client, const char[] cflag)
{
    if(GetUserAdmin(client)==INVALID_ADMIN_ID)
        return false;
    new AdminFlag:flag;
    if(FindFlagByChar(cflag[0], flag))
        return GetAdminFlag(GetUserAdmin(client), flag);
    return false;
}
Работает,спасибо большое =)
 

Afro

Участник
Сообщения
63
Реакции
11
Кто может чутка переписать плагин, по дефолту чтобы включить показ хп нужно прописать команду !bhud, нужно чтобы по умолчанию она уже была включена без прописывания команды.
 

Вложения

  • bhud_2.4.1.sp
    12.8 КБ · Просмотры: 13
Сверху Снизу