Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Рандомные звуки при убийстве класса
ORdli Дата: Среда, 26.06.2024, 04:12:01 | Сообщение # 1
Сообщений: 9
Репутация: 0 [ +/- ]
Нужен плагин который будет проигрывать случайные звуки когда один класс убивает другой, например berserk убивает archer проигрывается рандомный звук из списка, очень надо!

Названия игры Pirates, Vikings, & Knights 2

Названия классов игрока для примера [Archer, berserk, captain, heavyknight, bondi]

Как то давно мне написал плагин W_S для игры CSGO но он подошел к Pirates vikings knights 2 и работал там! по этому кто в курсе как это сделать прошу помочь! хотя бы какой код использовать для того что бы заставить звуки воспроизводится!
 
_wS_ Дата: Среда, 26.06.2024, 13:01:51 | Сообщение # 2
Thanks
Код
#include <sdktools>

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

public void OnMapStart()
{
    AddFileToDownloadsTable("sound/MySound_1-1.mp3");
    AddFileToDownloadsTable("sound/MySound_1-2.mp3");
    AddFileToDownloadsTable("sound/MySound_2-1.mp3");

    PrecacheSound("MySound_1-1.mp3");
    PrecacheSound("MySound_1-2.mp3");
    PrecacheSound("MySound_2-1.mp3");
}

static void Event_player_death(Event event, const char[] name, bool dontBroadcast)
{
    int killer = GetClientOfUserId(event.GetInt("attacker"));
    int victim = GetClientOfUserId(event.GetInt("userid"));

    if (killer && victim && killer != victim) {
        switch (GetEntProp(killer, Prop_Send, "m_iClass")) {
            case 1: {
                switch (GetEntProp(victim, Prop_Send, "m_iClass")) {
                    case 1: { // Убийца с классом 1 убил жертву с классом 1.
                        EmitSoundToClient(killer, "MySound_1-1.mp3");
                    }
                    case 2: { // Убийца с классом 1 убил жертву с классом 2.
                        EmitSoundToClient(killer, "MySound_1-2.mp3");
                    }
                }
            }
            case 2: {
                switch (GetEntProp(victim, Prop_Send, "m_iClass")) {
                    case 1: { // Убийца с классом 2 убил жертву с классом 1.
                        EmitSoundToClient(killer, "MySound_2-1.mp3");
                    }
                }
            }
        }
    }
}
 
ORdli Дата: Среда, 26.06.2024, 19:18:52 | Сообщение # 3
Сообщений: 9
Репутация: 0 [ +/- ]
Плагин компилируется и работает, звуки качаются, но звуки при убийствах не воспроизводятся, а если цифры заменить на названия классов плагин вообще отказывается компилироваться, типо возле case 1 и case 2 это нумерация по классам? или там должно быть названия класса? и можно ли как то сделать чтоб звуки воспроизводились когда один класс убивает все другие? не зависимо каким оружием и кого.

Досих пор ломаю голову куда название классов то писать? просто как игра определит то какой класс? pipec

Ошибки при компиляции

/groups/sourcemod/upload_tmp/textb3qx7V.sp(26) : error 017: undefined symbol "class_archer"
/groups/sourcemod/upload_tmp/textb3qx7V.sp(28) : error 017: undefined symbol "class_archer"
/groups/sourcemod/upload_tmp/textb3qx7V.sp(31) : error 017: undefined symbol "class_berserker"
/groups/sourcemod/upload_tmp/textb3qx7V.sp(36) : error 017: undefined symbol "class_berserker"
/groups/sourcemod/upload_tmp/textb3qx7V.sp(38) : error 017: undefined symbol "class_archer"

5 Errors.

Короче мне нужно что бы один класс убивая все другие классы воспроизводил звуки из списка, не зависимо каким оружием был убит другой класс, плачу 500 руб тому кто сможет это реализовать!


Сообщение отредактировал ORdli - Среда, 26.06.2024, 20:15:16
 
_wS_ Дата: Среда, 26.06.2024, 20:28:32 | Сообщение # 4
Thanks
Цитата ORdli ()
чтоб звуки воспроизводились когда один класс убивает все другие


Код
if (killer && victim && killer != victim) {
    switch (GetEntProp(killer, Prop_Send, "m_iClass")) {
        case 1: {
            // killer имеет класс 1 и убил victim'а в любом классе.
        }
    }
}


Цитата ORdli ()
case 1 и case 2 это нумерация по классам?

Да. Установи это:

Код
public void OnPluginStart()
{
    HookEvent("player_spawn", Event_player_spawn);
}

static void Event_player_spawn(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    if (client) {
        PrintToChat(client, "Your class number = %d", GetEntProp(client, Prop_Send, "m_iClass"));
    }
}

Выбирай разные классы и после рождения напишет их номера.

Цитата ORdli ()
но звуки при убийствах не воспроизводятся

Замени PrecacheSound на PrecacheSound_ и добавь функцию:

Код
static void PrecacheSound_(const char[] name)
{
    static int soundprecache_index = INVALID_STRING_TABLE;

    if (    soundprecache_index == INVALID_STRING_TABLE
        && (soundprecache_index = FindStringTable("soundprecache")) == INVALID_STRING_TABLE
    ) {
        SetFailState("soundprecache");
    }

    char corrected_name[100];
    FormatEx(corrected_name, sizeof(corrected_name), "*%s", name);

    AddToStringTable(soundprecache_index, corrected_name);
}
 
ORdli Дата: Среда, 26.06.2024, 22:47:29 | Сообщение # 5
Сообщений: 9
Репутация: 0 [ +/- ]
Я плагины писать не умею, отредактировал как смог.

#include <sdktools>

public void OnPluginStart()
{
HookEvent("player_spawn", Event_player_spawn);
}

static void Event_player_spawn(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
if (client) {
PrintToChat(client, "1", GetEntProp(client, Prop_Send, "m_iClass"));
}
}
{
AddFileToDownloadsTable("sound/MySound_1-1.mp3");
AddFileToDownloadsTable("sound/MySound_1-2.mp3");
AddFileToDownloadsTable("sound/MySound_2-1.mp3");

PrecacheSound("MySound_1-1.mp3");
PrecacheSound("MySound_1-2.mp3");
PrecacheSound("MySound_2-1.mp3");
}
static void PrecacheSound_(const char[] name)
{
static int soundprecache_index = INVALID_STRING_TABLE;

if ( soundprecache_index == INVALID_STRING_TABLE
&& (soundprecache_index = FindStringTable("soundprecache")) == INVALID_STRING_TABLE
) {
SetFailState("soundprecache");
}

char corrected_name[100];
FormatEx(corrected_name, sizeof(corrected_name), "*%s", name);

AddToStringTable(soundprecache_index, corrected_name);
}

static void Event_player_death(Event event, const char[] name, bool dontBroadcast)
{
int killer = GetClientOfUserId(event.GetInt("attacker"));
int victim = GetClientOfUserId(event.GetInt("userid"));

if (killer && victim && killer != victim) {
switch (GetEntProp(killer, Prop_Send, "m_iClass")) {
case 1: {
// killer имеет класс 1 и убил victim'а в любом классе.
}
}
}
}
}
}
}
}
}

ПЛАГИН НЕ КОМПИЛИРУЕТСЯ !

Попробывал так

#include <sdktools>

public void OnPluginStart()
{
HookEvent("player_spawn", Event_player_spawn);
}

static void Event_player_spawn(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
if (client) {
PrintToChat(client, "Your class number = %d", GetEntProp(client, Prop_Send, "m_iClass"));
}

public void OnMapStart()
{
AddFileToDownloadsTable("sound/MySound_1-1.mp3");
AddFileToDownloadsTable("sound/MySound_1-2.mp3");
AddFileToDownloadsTable("sound/MySound_2-1.mp3");

PrecacheSound("MySound_1-1.mp3");
PrecacheSound("MySound_1-2.mp3");
PrecacheSound("MySound_2-1.mp3");
}

static void Event_player_death(Event event, const char[] name, bool dontBroadcast)
{
int killer = GetClientOfUserId(event.GetInt("attacker"));
int victim = GetClientOfUserId(event.GetInt("userid"));

if (killer && victim && killer != victim) {
switch (GetEntProp(killer, Prop_Send, "m_iClass")) {
case 1: {
// killer имеет класс 1 и убил victim'а в любом классе.
EmitSoundToClient(killer, "MySound_1-1.mp3");
}
case 2: { // Убийца с классом 1 убил жертву с классом 2.
EmitSoundToClient(killer, "MySound_1-2.mp3");
}
}
}
case 2: {
switch (GetEntProp(victim, Prop_Send, "m_iClass")) {
case 1: { // Убийца с классом 2 убил жертву с классом 1.
EmitSoundToClient(killer, "MySound_2-1.mp3");
}
}
}
}
}
}

Тоже не компилится!


Сообщение отредактировал ORdli - Среда, 26.06.2024, 22:58:22
 
  • Страница 1 из 1
  • 1
Поиск: