Добавление рандомных звуков к готовому плагину
| |
ORdli
|
Дата: Вторник, 25.01.2022, 21:26:51 | Сообщение # 1 |
|
Сообщений: 11
Репутация: 0 [ +/- ]
|
|
Имеется готовый рабочий плагин который проигрывает звук при убийстве с ножа, но я бы хотел сделать так что бы звуков было несколько а не 1, что мне нужно для этого добавить и с какой строки? помогите кто чем может.
Вот плагин.
#include <sourcemod> #include <sdktools>
public Plugin:myinfo = { name = "Knife Kill Sound", version = "1.0", }
public OnPluginStart() { HookEvent("player_death", Death); }
public OnMapStart() { AddFileToDownloadsTable("sound/your_sound.mp3"); AddToStringTable(FindStringTable("soundprecache"), "*your_sound.mp3"); }
public Death(Handle:event, const String:name[], bool:dontBroadcast) { decl String:str[32]; GetEventString(event, "weapon", str, sizeof(str)); if(strcmp(str, "knife", true) == 0) { decl clients[MaxClients]; new total = 0;
for (new i=1; i<=MaxClients; i++) { if (IsClientInGame(i)) { clients[total++] = i; } } EmitSound(clients, total, "*your_sound.mp3"); } }
Сообщение отредактировал ORdli - Вторник, 25.01.2022, 21:27:39 |
|
| |
_wS_
|
Дата: Среда, 26.01.2022, 02:22:38 | Сообщение # 2 |
|
Код #pragma semicolon 1 #pragma newdecls required
#include <sdktools_sound> #include <sdktools_stringtables>
public Plugin myinfo = { name = "Knife Kill Sound", version = "1.0" };
#define SOUND_LENGTH 128
ArrayList g_hAr; int g_iCount = 0; int g_iCurrent = -1;
int g_soundprecache; bool g_bCSGO;
public void OnPluginStart() { if((g_soundprecache = FindStringTable("soundprecache")) == INVALID_STRING_TABLE) { SetFailState("!soundprecache"); } g_bCSGO = GetEngineVersion() == Engine_CSGO; g_hAr = new ArrayList(ByteCountToCells(SOUND_LENGTH)); ///// // Звуки без "sound/" и без *: AddSound("folder/sound1.mp3"); AddSound("folder/sound2.mp3"); ///// if (g_iCount < 1) { SetFailState("!g_iCount"); } HookEvent("player_death", Event_player_death, EventHookMode_Post); }
static void AddSound(const char[] sound) { if (g_bCSGO) { char s[SOUND_LENGTH]; FormatEx(s, sizeof(s), "*%s", sound); g_hAr.PushString(s); } else{ g_hAr.PushString(sound); } g_iCount++; }
public void OnMapStart() { int index = g_bCSGO ? 1 : 0; char sound[SOUND_LENGTH]; char path [SOUND_LENGTH + 8]; for (int i = 0; i < g_iCount; i++) { g_hAr.GetString(i, sound, sizeof(sound)); AddToStringTable(g_soundprecache, sound); FormatEx(path, sizeof(path), "sound/%s", sound[index]); AddFileToDownloadsTable(path); } }
void Event_player_death(Event event, const char[] name, bool dontBroadcast) { char w[32]; event.GetString("weapon", w, sizeof(w)); if (w[0] && (strcmp(w, "bayonet") == 0 || StrContains(w, "knife") != -1)) { if (++g_iCurrent >= g_iCount) { g_iCurrent = 0; } char sound[SOUND_LENGTH]; g_hAr.GetString(g_iCurrent, sound, sizeof(sound)); EmitSoundToAll(sound); } } AddSound
|
|
| |
ORdli
|
Дата: Среда, 26.01.2022, 06:10:24 | Сообщение # 3 |
|
Сообщений: 11
Репутация: 0 [ +/- ]
|
|
Хотел прояснить что я в создании плагинов вообще не шарю, всегда просто редактировал лишь пути и названия файлов, так что заранее пардон. такой вот вопрос еще а можно на другую игру этот плагин перенести, раньше кто-то делал из друзей давно, но сейчас игра обновилась и ничего не работает, может как то по другому надо делать, просто не понимаю в этом, игра Zombie Panic Source, нужно сделать также звук на убийство оружием, любым, всего один звук, раньше использовал на старых версиях игры плагин из кс го, который кинул выше и всё работало, сейчас плагин этот тоже работает, звуки скачиваются, в Plugins list тоже всё ок, но прикол в том что после убийства ничего не происходит, звук просто не проигрывается, не каких ошибок в консоли нет, лишь надпись события по типу Player1 killed The Player2 with crowbar. сами разработчики не занимаются Sourcemod'ом по их же словам, и направляют на форумы соурсмода за помощью.
Сообщение отредактировал ORdli - Среда, 26.01.2022, 06:17:50 |
|
| |
_wS_
|
Дата: Среда, 26.01.2022, 07:06:57 | Сообщение # 4 |
|
Ничего не знаю про Zombie Panic Source. Судя по символу * перед именем звука, я подумал это для csgo.
Если раньше работали "*такие_звуки.mp3", то попробуй вместо этого:
Код g_bCSGO = GetEngineVersion() == Engine_CSGO;
Сделать это:
Попробуй после:
Код event.GetString("weapon", w, sizeof(w));
Добавить для теста:
Код PrintToChatAll("weapon = '%s'", w);
Может там не "knife", а что-то другое (в чат будет всем писать имя оружия после каждой смерти).
Ещё можешь попробовать удалить всё, что связано с g_soundprecache, и это:
Код AddToStringTable(g_soundprecache, sound);
Заменить на это:
|
|
| |
ORdli
|
Дата: Среда, 26.01.2022, 07:30:55 | Сообщение # 5 |
|
Сообщений: 11
Репутация: 0 [ +/- ]
|
|
Да это не поможет, мне вообще хотелось бы это для Zombie Panic source сделать, изначально тему просто не так создал, а тот плагин просто который я выше кинул подходит абсолютно для всех игр, он универсальный, в Half-life 2 deathmatch проверял работает, и в большинстве модов на движке Source, (Проверено) просто вместо knife меняю названия оружия например на rpg или crowbar, и пишу названия звукового файла, этот плагин и сейчас работает для Half-life 2 Deathmatch Хотя сделан якобы под кс го, но вот в zombie panic проблема полная, там еще говорят плагины теперь на AngelScript, может мне у кого то спросить кто в AngelScript Разбирается? возможно вообще создать звук убийства на AngelScript, по типу того что я скинул? просто играл на серверах и там были рабочие плагины на AngelScript, ладно буду дальше искать, спасибо что хотя бы ответили.
|
|
| |
|