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

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

  • Страница 1 из 1
  • 1
[Pirates, Vikings, Knights 2] Звуки убийств и падения
ORdli Дата: Суббота, 26.03.2022, 23:00:55 | Сообщение # 1
Сообщений: 11
Репутация: 0 [ +/- ]
кто сможет создать плагин, который бы случайным образом воспроизводил 3 звука, когда один игрок взрывает другого игрока бочкой разбойника, и три звуковых эффекта урона от падения, как я понимаю тут люди умеют делать плагины только под кс го, поэтому заранее извиняюсь, другого раздела я не нашёл.
 
Tokami2 Дата: Вторник, 29.03.2022, 23:20:29 | Сообщение # 2
Сообщений: 20
Репутация: 6 [ +/- ]
Там же используется тоже SourceMod верно?
 
ORdli Дата: Вторник, 29.03.2022, 23:59:45 | Сообщение # 3
Сообщений: 11
Репутация: 0 [ +/- ]
Да тоже Sourcemod
 
Tokami2 Дата: Четверг, 31.03.2022, 14:19:49 | Сообщение # 4
Сообщений: 20
Репутация: 6 [ +/- ]
ORdli, Tokami#1998, просто интересно что-то поделать для другой игры.

Добавлено (03.04.2022, 15:06:09)
---------------------------------------------
Вопрос решен.
Тип дамага действительно изменился в данной игре, к сожалению какой тип дамага стал так и неизвестно по этому просто отдебажил что выводилось.

Код

#include <sdktools>
#include <sdkhooks>

KeyValues kv;
ArrayList sounds;

public void OnPluginStart()
{
    for(int i = 1; i <= MaxClients; i++)
    {
  if(IsClientInGame(i))
   OnClientPostAdminCheck(i);
    }
}

public void OnConfigsExecuted()
{
    if(sounds != null)
    {
  delete sounds;
    }

    sounds = new ArrayList(ByteCountToCells(PLATFORM_MAX_PATH));

    if(kv != null)
  delete kv;

    kv = new KeyValues("sample");

    char soundfile[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, soundfile, sizeof(soundfile), "configs/falldamagesound.txt");

    if(!kv.ImportFromFile(soundfile))
    {
  SetFailState("Missing KeyValue file: \"configs/falldamagesound.txt\"");
    }
    
    kv.Rewind();

    if(!kv.GotoFirstSubKey(false))
    {
  SetFailState("could'nt enter in first subkey")
    }

    char buffer[PLATFORM_MAX_PATH];

    do
    {
  kv.GetString(NULL_STRING, buffer, sizeof(buffer));
  //PrintToServer("%s %i", buffer, sounds.Length);

  if(strlen(buffer) < 5)
   continue;

  sounds.PushString(buffer);

  PrecacheSound(buffer);

  Format(buffer, sizeof(buffer), "sound/%s", buffer);
  AddFileToDownloadsTable(buffer);
    }
    while(kv.GotoNextKey(false))
}

public void OnClientPostAdminCheck(int client)
{
    SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);
}

public void OnTakeDamagePost(int victim, int attacker, int inflictor, float damage, int damagetype)
{
    //PrintToChatAll("Отловил [%d]", damagetype);
    if(damagetype == -8257536)
    {
  //PrintToChatAll("Сыграл");
  int random = GetRandomInt(1, sounds.Length-1);

  if(sounds.Length <= 1)
  {
   random = 0;
  }

  char buffer[PLATFORM_MAX_PATH];
  sounds.GetString(random, buffer, sizeof(buffer));
  //PrintToServer("array random %i %s", random, buffer);
  EmitSoundToAll(buffer, victim);
    }
}


Код

#include <sdktools>

#pragma newdecls required

#define SOUND_LOAD    "sound/custom/headshotz.mp3"
#define SOUND_PLAY    "*/custom/headshotz.mp3"

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

public void OnMapStart()
{
    PrecacheSound(SOUND_PLAY, true);
    AddFileToDownloadsTable(SOUND_LOAD);
}

public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (GetEventBool(event, "headshot"))
    {
        // Get all required event info
        int attackerIndex = GetClientOfUserId(GetEventInt(event, "attacker"));
        // Emit sound
        //EmitSoundToClient(attackerIndex, SOUND_PLAY, SOUND_FROM_PLAYER, SNDCHAN_STATIC, SNDLEVEL_NORMAL);

  EmitSoundToAll(SOUND_PLAY, attackerIndex, _, SNDLEVEL_TRAIN);
    }
}


Сообщение отредактировал Tokami2 - Воскресенье, 03.04.2022, 15:07:39
 
  • Страница 1 из 1
  • 1
Поиск: