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

kilroy

:clown:
Сообщения
1,065
Реакции
606
Спасибо за помощь! Вот selfmute я находил обычный, этот вроде переделанный. Там одна команда всего !vm, надо где-то ещё поискать
Я думаю на том сервере всё тот же SelfMute, всего лишь изменена команда и переведены фразы. Можете ещё попробовать - Написание плагинов
 

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83, Я убрал то что ты посоветовал с плагина и столкнулся с такой проблемой, теперь то одна команда слышит при убийстве противника и идет звук, но если сменить карту, то теперь другая слышит и идет звук, а предыдущие нет)))
Что я может не правильно сделал проверь пожалуйста или дописать что нужно???
PHP:
#pragma semicolon 1
#include <emitsoundany>
#include <csgo_colors>

#pragma newdecls required // let's go new syntax!

public Plugin myinfo =
{
    name = "[CS:GO] NoScope sound Reload",
    author = "Hejter & Murenich",
    version = "0.4",
    url = "HLmod.ru"
};

public void OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
}

public void OnMapStart()
{
    AddFileToDownloadsTable("sound/misc/kruto.mp3");
    PrecacheSoundAny("misc/kruto.mp3");
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    int attacker = GetClientOfUserId(event.GetInt("attacker"));
 
    if (client && IsClientInGame(client))
    {
        if (attacker != 0 && IsClientInGame(attacker))
        {
            if (attacker != client)
            {
                char weapon[32];
                GetEventString(event, "weapon", weapon, sizeof(weapon));
                if ((strcmp(weapon, "knife", false) == 0))
                {
                    CGOPrintToChatAll("{RED}[Arbigon] {GREEN}%N {DEFAULT}убил с ножа {LIME}%N", attacker, client);
                    EmitSoundToClientAny(attacker, "misc/kruto.mp3"); // Проигрывает звук убившему.
                    EmitSoundToClientAny(client, "misc/kruto.mp3"); // Проигрывает звук убившему.
                }
            }
        }
    }
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@arbigon, в принципе всё правильно и оба игрока должны слышать звук
Можно чуть почистить код, но ничего в работе особо не изменится
PHP:
#pragma semicolon 1

#include <emitsoundany>
#include <csgo_colors>

#pragma newdecls required // let's go new syntax!

static const char SND[] = "misc/kruto.mp3";

public void OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
}

public void OnMapStart()
{
    char path[PLATFORM_MAX_PATH];
    FormatEx(path, sizeof(path), "sound/%s", SND);
    AddFileToDownloadsTable(path);
    PrecacheSoundAny(SND);
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    static int client, attacker;
    if(!(client = GetClientOfUserId(event.GetInt("userid"))) || !(attacker = GetClientOfUserId(event.GetInt("attacker")))
    || attacker == client)
        return;

    static char weapon[32];
    event.GetString("weapon", weapon, sizeof(weapon));
    if(StrContains(weapon, "knife", false) == -1)
        return;

    CGOPrintToChatAll("{RED}[Arbigon] {GREEN}%N {DEFAULT}убил с ножа {LIME}%N", attacker, client);
    EmitSoundToClientAny(attacker, SND);
    EmitSoundToClientAny(client, SND);
}
 

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83, таже проблема за кт звука нет, за теров есть,сменю карту звук меняет стороны))) Кстати еще момент не менял карту тупо сменили сторону я убиваю как админ звук есть, убивают меня звука нет))
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@arbigon, попробуй так:
PHP:
#pragma semicolon 1

#include <emitsoundany>
#include <csgo_colors>

#pragma newdecls required // let's go new syntax!

static const char SND[] = "misc/kruto.mp3";

public void OnPluginStart()
{
	HookEvent("player_death", Event_PlayerDeath);
}

public void OnMapStart()
{
	char path[PLATFORM_MAX_PATH];
	FormatEx(path, sizeof(path), "sound/%s", SND);
	AddFileToDownloadsTable(path);
	PrecacheSoundAny(SND);
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
	static int clients[2];
	if(!(clients[0] = GetClientOfUserId(event.GetInt("userid"))) || !(clients[1] = GetClientOfUserId(event.GetInt("attacker")))
	|| clients[0] == clients[1])
		return;

	static char weapon[32];
	event.GetString("weapon", weapon, sizeof(weapon));
	if(StrContains(weapon, "knife", false) == -1)
		return;

	CGOPrintToChatAll("{RED}[Arbigon] {GREEN}%N {DEFAULT}убил с ножа {LIME}%N", clients[1], clients[0]);
	EmitSoundAny(clients, 2, SND, _, SNDCHAN_BODY);	// или SNDCHAN_WEAPON
}
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
@Grey83, не придираюсь, хочу понять... Основной вопрос:

Зачем использовать static? Я конечно понимаю если бы информация в малый промежуток времени обновлялась (фрейм допустим), тогда бы был бы в этом смысл.
Если так подумать, то все переменные можно делать глобальными и использовать как тебе душе угодно, удобнее, вопрос только в том хватит ли памяти...

Как же ножик bayonet? И разве %0 < 1 бывает в PlayerDeath?
 

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83, Всё заработало, но при смене карты звук опять пропадает у одной команды, ещё 1 момент как сделать чтобы можно было добавить больше звуков и работали бы они рандомно???
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@Drumanid, ну так время на создание переменной (у нас 2 массива) экономится
Как же ножик bayonet?
Хз, я сначала добавил, а потом убрал: ну может arbigon лучше знает как там сейчас в КСГО.
И разве %0 < 1 бывает в PlayerDeath?
Кмк, не должно так быть, но мало ли.

@arbigon, вот так:
PHP:
#pragma semicolon 1

#include <emitsoundany>
#include <csgo_colors>

#pragma newdecls required // let's go new syntax!

static const char SND[] =    // в этот массив добавляем звуки
{
    "misc/kruto.mp3",
    "misc/kruto2.mp3",
    "misc/kruto3.mp3"
};

int iSndsNum = sizeof(SND)-1;

public void OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
}

public void OnMapStart()
{
    char path[PLATFORM_MAX_PATH];
    for(int i; i <= iSndsNum; i++)
    {
        FormatEx(path, sizeof(path), "sound/%s", SND[i]);
        AddFileToDownloadsTable(path);
        PrecacheSoundAny(SND[i]);
    }
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    static int clients[2], i, j;
    clients[0] = GetClientOfUserId(event.GetInt("userid"));
    if(!(clients[1] = GetClientOfUserId(event.GetInt("attacker"))) || clients[0] == clients[1])
        return;

    static char weapon[32];
    event.GetString("weapon", weapon, sizeof(weapon));
    if(StrContains(weapon, "knife", false) == -1 && StrContains(weapon, "bayonet", false) == -1)
        return;

    while(i == j) i = GetRandomInt(0, iSndsNum);    // на же не нужно чтобы звуки воспроизводились 2 раза подряд?
    j = i;

    CGOPrintToChatAll("{RED}[Arbigon] {GREEN}%N {DEFAULT}убил с ножа {LIME}%N", clients[1], clients[0]);
    EmitSoundAny(clients, 2, SND[i], _, SNDCHAN_BODY);    // или SNDCHAN_WEAPON
}
--- Добавлено позже ---
при смене карты звук опять пропадает у одной команды
хз в чём тут дело
Я по заказу в аналогичном плагине делал вообще так: EmitSound(clients[0], 1, path, clients[0], SNDCHAN_BODY, SNDLEVEL_TRAIN, _, iOption[client][Opt_Vol]*0.01);
Правда я для себя использовал канал SNDCHAN_WEAPON (для того чтобы перебивались звуки выстрела перед убийством) и это используется только для одного игрока (так что проблем со вторым игроком не возникало).
 
Последнее редактирование:

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83, прогружается музыка постоянно в логах пусто но в консоле пишет это [Sound] S_StartSound(): Failed to load sound '*mp3'. File is missing from disk/repository.
И звуки не проигрывает
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@arbigon, а пути правильно все указал? И откуда звезда в названии файла взялась?
 

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83,
PHP:
#pragma semicolon 1

#include <emitsoundany>
#include <csgo_colors>

#pragma newdecls required // let's go new syntax!

static const char SND[] =    // в этот массив добавляем звуки
{
    "misc/1.mp3",
    "misc/2.mp3",
    "misc/3.mp3"
};

int iSndsNum = sizeof(SND)-1;

public void OnPluginStart()
{
    HookEvent("player_death", Event_PlayerDeath);
}

public void OnMapStart()
{
    char path[PLATFORM_MAX_PATH];
    for(int i; i <= iSndsNum; i++)
    {
        FormatEx(path, sizeof(path), "sound/%s", SND[i]);
        AddFileToDownloadsTable(path);
        PrecacheSoundAny(SND[i]);
    }
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    static int clients[2], i, j;
    clients[0] = GetClientOfUserId(event.GetInt("userid"));
    if(!(clients[1] = GetClientOfUserId(event.GetInt("attacker"))) || clients[0] == clients[1])
        return;

    static char weapon[32];
    event.GetString("weapon", weapon, sizeof(weapon));
    if(StrContains(weapon, "knife", false) == -1 && StrContains(weapon, "bayonet", false) == -1)
        return;

    while(i == j) i = GetRandomInt(0, iSndsNum);    // на же не нужно чтобы звуки воспроизводились 2 раза подряд?
    j = i;

    CGOPrintToChatAll("{RED}[Arbigon] {GREEN}%N {DEFAULT}убил с ножа {LIME}%N", clients[1], clients[0]);
    EmitSoundAny(clients, 2, SND[i], _, SNDCHAN_BODY);    // или SNDCHAN_WEAPON
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@arbigon, и звуки при этом лежат в sound/misc/?
--- Добавлено позже ---
И фалы доступны для скачивания?
 

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83, да, FTP обновил сервер на арене, должно работать но не пашет, главное что текст теперь пишет 2 командам что убит игрок с ножа!
Звуки прогнал через конвертор на всякий случай, эффект тот же в логах ошибок нет,в консоль пишет что выше написал!
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    6.5 КБ · Просмотры: 13

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
скачивание звуков идёт с самого сервера или с FastDL?
И путь sv_downloadurl в конфиге сервера правильно указан?
 

Туник

Участник
Сообщения
1,281
Реакции
263
@Grey83, на арене FTP адрес указываю в конфиге и всё, все модельки итд грузит с FastDL только от туда!
 

over_trax

Участник
Сообщения
1,451
Реакции
488
добрый вечер, нужен простой плагин, который будет выдавать всем weapon_bumpmine в начале раунда
 

Rezder

Участник
Сообщения
153
Реакции
8
L 05/05/2019 - 13:19:00: [SM] Exception reported: Client index 0 is not valid
L 05/05/2019 - 13:19:00: [SM] Blaming: SpecialTeamBalancer_v0.5.0.smx
L 05/05/2019 - 13:19:00: [SM] Call stack trace:
L 05/05/2019 - 13:19:00: [SM] [0] CS_SwitchTeam

Помогите пофиксить позязя:3
 

Вложения

  • SpecialTeamBalancer_v0.5.0.sp
    2.7 КБ · Просмотры: 3

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,981
@Rezder, там ещё пара строк ниже должна была писаться
 
Сверху Снизу