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

DarklSide

Участник
Сообщения
931
Реакции
468
эту функцию ещё не ввёл
не возможно, а нет ее. Она даже не объявлена в AskPluginLoad.

Имелось ввиду что она была введена, затем удалена #11, и возможно не будет добавлена.

и так должен быть по умолчанию включен, если доступ прописан.
должно, но он выключен, и хз почему
До введения в VIP_RegisterFeature @param bDefStatus, по умолчанию Status у клиента был вкл., после - значение по-умолчанию в vip_core.inc bool bDefStatus = false.

@kleuser,
Пропусти не нужные параметры, либо вставь их дефолтные значения.
PHP:
VIP_RegisterFeature(g_sFeature, BOOL, _, _, _, _, true);
VIP_RegisterFeature(g_sFeature, BOOL, TOGGLABLE, _, _, _, true);
VIP_RegisterFeature(g_sFeature, BOOL, TOGGLABLE, INVALID_FUNCTION, INVALID_FUNCTION, INVALID_FUNCTION, true);
 
Последнее редактирование:
A

Altaj

Сделали мне плагин для cs:go.
В первом раунде новой карты должен проигрываться звук. Звук при заходе на сервер качается, но в папке с игрой не появляется и на сервере не проигрывается. Что не так?
PHP:
#include <sourcemod>
#include <sdkhooks>
#include <emitsoundany>
#include <autoexecconfig>

ConVar g_path;

public void OnPluginStart()
{
    AutoExecConfig_SetFile("music");
    AutoExecConfig_SetCreateFile(true);
    
    g_path=AutoExecConfig_CreateConVar("music", "sound/music/example.mp3", "Choose the path of the music");
    
    AutoExecConfig_ExecuteFile();
    AutoExecConfig_CleanFile();
}

public OnMapStart()
{
    char dl_path[32];
    char path[32];
    g_path.GetString(path, sizeof(path));
    Format(dl_path, sizeof(dl_path), "sound/%s", path);
    AddFileToDownloadsTable(dl_path);
    PrecacheSoundAny(path);
    EmitSoundToAll(path);
}
 

BenjaminPaul

Code is poetry
Сообщения
177
Реакции
220
Сделали мне плагин для cs:go.
В первом раунде новой карты должен проигрываться звук. Звук при заходе на сервер качается, но в папке с игрой не появляется и на сервере не проигрывается. Что не так?
PHP:
#include <sourcemod>
#include <sdkhooks>
#include <emitsoundany>
#include <autoexecconfig>

ConVar g_path;

public void OnPluginStart()
{
    AutoExecConfig_SetFile("music");
    AutoExecConfig_SetCreateFile(true);
  
    g_path=AutoExecConfig_CreateConVar("music", "sound/music/example.mp3", "Choose the path of the music");
  
    AutoExecConfig_ExecuteFile();
    AutoExecConfig_CleanFile();
}

public OnMapStart()
{
    char dl_path[32];
    char path[32];
    g_path.GetString(path, sizeof(path));
    Format(dl_path, sizeof(dl_path), "sound/%s", path);
    AddFileToDownloadsTable(dl_path);
    PrecacheSoundAny(path);
    EmitSoundToAll(path);
}
ну если вкратце то всё.
тут даже события "начала раунда" нету) :biggrin:
кидалово в общем.

а не качается потому что смотри.
к "кваре" указано "sound/music/example.mp3"
а в добавлении на скачивание уже добавляется /sound
получается путь /sound/sound/music/example.mp3
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Altaj, попробуй так:
у меня нет инклюда emitsoundany, так что скомпилить не могу

По идее должен запускаться звук в начале первого раунда на карте (можно, конечно, сделать чтобы он запускался в начале каждого матча).
Возможно нужно будет ещё добавить таймер на несколько секунд, если звук будет проигрываться слишком рано.
 
Последнее редактирование:
A

Altaj

@Altaj, попробуй так:
PHP:
#include <emitsoundany>
#include <sdktools_stringtables>
#include <autoexecconfig>

ConVar g_path;
bool bUsed;

public void OnPluginStart()
{
    AutoExecConfig_SetFile("music");
    AutoExecConfig_SetCreateFile(true);

    g_path=AutoExecConfig_CreateConVar("music", "sound/music/example.mp3", "Choose the path of the music");

    AutoExecConfig_ExecuteFile();
    AutoExecConfig_CleanFile();

    HookEvent("round_start", Event_RoundStart);
}

public void OnMapStart()
{
    char dl_path[32];
    char path[32];
    g_path.GetString(path, sizeof(path));
    Format(dl_path, sizeof(dl_path), "sound/%s", path);
    AddFileToDownloadsTable(dl_path);
    PrecacheSoundAny(path);
    bUsed = false;
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    if(!bUsed) EmitSoundToAll(path);
    bUsed = true;
}
у меня нет инклюда emitsoundany, так что скомпилить не могу
Безымянный.jpg
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Altaj, пробуй так:
PHP:
#include <emitsoundany>

#include <sdktools_stringtables>
#include <autoexecconfig>

ConVar g_path;
bool bUsed;

public void OnPluginStart()
{
    AutoExecConfig_SetFile("music");
    AutoExecConfig_SetCreateFile(true);

    g_path=AutoExecConfig_CreateConVar("music", "music/example.mp3", "Choose the path of the music");

    AutoExecConfig_ExecuteFile();
    AutoExecConfig_CleanFile();

    HookEvent("round_start", Event_RoundStart);
}

public void OnMapStart()
{
    char dl_path[32];
    char path[32];
    g_path.GetString(path, sizeof(path));
    Format(dl_path, sizeof(dl_path), "sound/%s", path);
    AddFileToDownloadsTable(dl_path);
    PrecacheSoundAny(path);
    bUsed = false;
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    if(bUsed) return Plugin_Continue;

    char path[32];
    g_path.GetString(path, sizeof(path));
    EmitSoundToAll(path);
    bUsed = true;
    return Plugin_Continue;
}
 
A

Altaj

@Altaj, пробуй так:
PHP:
#include <emitsoundany>

#include <sdktools_stringtables>
#include <autoexecconfig>

ConVar g_path;
bool bUsed;

public void OnPluginStart()
{
    AutoExecConfig_SetFile("music");
    AutoExecConfig_SetCreateFile(true);

    g_path=AutoExecConfig_CreateConVar("music", "music/example.mp3", "Choose the path of the music");

    AutoExecConfig_ExecuteFile();
    AutoExecConfig_CleanFile();

    HookEvent("round_start", Event_RoundStart);
}

public void OnMapStart()
{
    char dl_path[32];
    char path[32];
    g_path.GetString(path, sizeof(path));
    Format(dl_path, sizeof(dl_path), "sound/%s", path);
    AddFileToDownloadsTable(dl_path);
    PrecacheSoundAny(path);
    bUsed = false;
}

public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    if(bUsed) return Plugin_Continue;

    char path[32];
    g_path.GetString(path, sizeof(path));
    EmitSoundToAll(path);
    bUsed = true;
    return Plugin_Continue;
}
При заходе на сервер, видно, что звук скачивается, но не проигрывается и в паке с игрой не появляется.
Причем путь скачивания у него такой: sound/sound/map_start/play.mp3
В исходнике у меня прописано так
PHP:
g_path=AutoExecConfig_CreateConVar("music", "map_start/play.mp3", "Choose the path of the music");
Создал у себя все папки вручную и закинул туда звук - все равно не проигрывается.
--- Добавлено позже ---
По идее должен запускаться звук в начале первого раунда на карте
Мне так и нужно.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
При заходе на сервер, видно, что звук скачивается, но не проигрывается и в паке с игрой не появляется.
Причем путь скачивания у него такой: sound/sound/map_start/play.mp3
В исходнике у меня прописано так
PHP:
g_path=AutoExecConfig_CreateConVar("music", "map_start/play.mp3", "Choose the path of the music");
Создал у себя все папки вручную и закинул туда звук - все равно не проигрывается.
--- Добавлено позже ---

Мне так и нужно.
В CS:GO нужно указывать "*" перед звуком. Ты подключаешь <emitsoundany>, но не используешь его.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
PHP:
g_path=AutoExecConfig_CreateConVar("music", "*map_start/play.mp3", "Choose the path of the music");
Так?
PHP:
Format(dl_path, sizeof(dl_path), "*sound/%s", path);
Или так?
Попробуй так:
PHP:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_stringtables>
#include <sdktools_sound>

char g_sPath[PLATFORM_MAX_PATH];
bool bUsed;

public void OnPluginStart()
{
    ConVar CVAR;
    CVAR = CreateConVar("music", "music/example.mp3", "Choose the path of the music");
    CVAR.GetString(g_sPath, sizeof(g_sPath));
    Format(g_sPath, sizeof(g_sPath), "*%s", g_sPath);
    
    AutoExecConfig(true, "mapstart_music");
    HookEvent("round_start", Event_RoundStart);
}

public void OnMapStart()
{
    char dl_path[PLATFORM_MAX_PATH];
    FormatEx(dl_path, sizeof(dl_path), "sound/%s", g_sPath[1]);
    AddFileToDownloadsTable(dl_path);
    PrecacheSound(g_sPath[1]);
    bUsed = false;
}

public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    if(bUsed)    return;
    EmitSomething(g_sPath);
    bUsed = true;
}

void EmitSomething(const char[] sPath)    // Не спрашивайте зачем
{
    EmitSoundToAll(sPath);
}
 
A

Altaj

Попробуй так:
PHP:
#pragma semicolon 1
#pragma newdecls required

#include <sdktools_stringtables>
#include <sdktools_sound>

char g_sPath[PLATFORM_MAX_PATH];
bool bUsed;

public void OnPluginStart()
{
    ConVar CVAR;
    CVAR = CreateConVar("music", "music/example.mp3", "Choose the path of the music");
    CVAR.GetString(g_sPath, sizeof(g_sPath));
    Format(g_sPath, sizeof(g_sPath), "*%s", g_sPath);
   
    AutoExecConfig(true, "mapstart_music");
    HookEvent("round_start", Event_RoundStart);
}

public void OnMapStart()
{
    char dl_path[PLATFORM_MAX_PATH];
    FormatEx(dl_path, sizeof(dl_path), "sound/%s", g_sPath[1]);
    AddFileToDownloadsTable(dl_path);
    PrecacheSound(g_sPath[1]);
    bUsed = false;
}

public void Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
    if(bUsed)    return;
    EmitSomething(g_sPath);
    bUsed = true;
}

void EmitSomething(const char[] sPath)    // Не спрашивайте зачем
{
    EmitSoundToAll(sPath);
}
Теперь звук скачивается, но не проигрывается.
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Пишет, что загрузка завершена и все нормально. Сам звук проигрывается при проверке на сервере (есть у меня плагин для этого), но когда начинается раунд - тишина.
Возможно событие срабатывает до того, как игрок заходит на сервер.
Лучше хукать заход игрока и проигрывать звук. Аля Welcome Sound.
 
Сверху Снизу