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 |
|
| |