cangncan
Участник
- Сообщения
- 69
- Реакции
- 4
Knife Ownen(hlmod.ru)
Оригинал
- изначально плагин проигрывает один и тот же звук.
- Нужно чтобы проигрывалось несколько звуков (у меня их 6)
На сервере стоит QuakeSounds 1.8
В настройках QuakeSounds звук ножа отключил. ("config" "0")
Ребят помогите допилить плагин.
"ГореКодер" (Я), сделал вот так:
Итог - проигрывает только один звук ("misc/humiliation.mp3") остальные не хочет, и пишет в лог ошибки:
Добавлено через 3 часа 49 минут
Сделал так:
Теперь в логах ошибок нет, но качает и проигрывает только один звук ("misc/humiliation.mp3"). Все звуки и пути к ним в порядке, в cs воспроизводятся.
Подскажите куда копать????
Оригинал
- изначально плагин проигрывает один и тот же звук.
- Нужно чтобы проигрывалось несколько звуков (у меня их 6)
На сервере стоит QuakeSounds 1.8
В настройках QuakeSounds звук ножа отключил. ("config" "0")
Ребят помогите допилить плагин.
"ГореКодер" (Я), сделал вот так:
PHP:
/// Based upon Kinfe Mug by FlyingMongoose & sslice
// When a player is stabbed they get publicly humilated in chat and HAHA or other sound in game
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdktools_sound>
#define KO_VERSION "1.2"
#define MAX_FILE_LEN 80
new Handle:g_CvarSoundName = INVALID_HANDLE;
new Handle:g_CvarSoundName2 = INVALID_HANDLE;
new Handle:g_CvarSoundName3 = INVALID_HANDLE;
new Handle:g_CvarSoundName4 = INVALID_HANDLE;
new Handle:g_CvarSoundName5 = INVALID_HANDLE;
new Handle:g_CvarSoundName6 = INVALID_HANDLE;
new String:g_soundName[MAX_FILE_LEN];
new String:g_soundName2[MAX_FILE_LEN];
new String:g_soundName3[MAX_FILE_LEN];
new String:g_soundName4[MAX_FILE_LEN];
new String:g_soundName5[MAX_FILE_LEN];
new String:g_soundName6[MAX_FILE_LEN];
// Define author information
public Plugin:myinfo =
{
name = "Knife Owned",
author = "MoggieX",
description = "Ownd by Knife",
version = KO_VERSION,
url = "http://www.UKManDown.co.uk"
};
new Handle:cvarEnable;
new bool:g_isHooked;
public OnPluginStart()
{
CreateConVar("sm_knife_Owned_version", KO_VERSION, _, FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_REPLICATED|FCVAR_SPONLY);
cvarEnable = CreateConVar("sm_knife_enable","1","Plays sound and gives chat ntoification when a player is knifed",FCVAR_PLUGIN,true,0.0,true,1.0);
g_CvarSoundName = CreateConVar("sm_knife_sound", "misc/humiliation.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName2 = CreateConVar("sm_knife_sound2", "misc/humiliation2.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName3 = CreateConVar("sm_knife_sound3", "misc/humiliation3.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName4 = CreateConVar("sm_knife_sound4", "misc/humiliation4.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName5 = CreateConVar("sm_knife_sound5", "misc/humiliation5.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName6 = CreateConVar("sm_knife_sound6", "misc/humiliation6.mp3", "The random sound to play when a player is knifed");
CreateTimer(3.0, OnPluginStart_Delayed);
}
// For sounds and its caching
public OnConfigsExecuted()
{
GetConVarString(g_CvarSoundName, g_soundName, MAX_FILE_LEN);
decl String:buffer[MAX_FILE_LEN];
PrecacheSound(g_soundName, true);
Format(buffer, sizeof(buffer), "sound/%s", g_soundName);
AddFileToDownloadsTable(buffer);
GetConVarString(g_CvarSoundName2, g_soundName2, MAX_FILE_LEN);
decl String:buffer2[MAX_FILE_LEN];
PrecacheSound(g_soundName2, true);
Format(buffer, sizeof(buffer2), "sound/%s", g_soundName2);
AddFileToDownloadsTable(buffer2);
GetConVarString(g_CvarSoundName3, g_soundName3, MAX_FILE_LEN);
decl String:buffer3[MAX_FILE_LEN];
PrecacheSound(g_soundName3, true);
Format(buffer, sizeof(buffer3), "sound/%s", g_soundName3);
AddFileToDownloadsTable(buffer3);
GetConVarString(g_CvarSoundName4, g_soundName4, MAX_FILE_LEN);
decl String:buffer4[MAX_FILE_LEN];
PrecacheSound(g_soundName4, true);
Format(buffer, sizeof(buffer4), "sound/%s", g_soundName4);
AddFileToDownloadsTable(buffer4);
GetConVarString(g_CvarSoundName5, g_soundName5, MAX_FILE_LEN);
decl String:buffer5[MAX_FILE_LEN];
PrecacheSound(g_soundName5, true);
Format(buffer, sizeof(buffer5), "sound/%s", g_soundName5);
AddFileToDownloadsTable(buffer5);
GetConVarString(g_CvarSoundName6, g_soundName6, MAX_FILE_LEN);
decl String:buffer6[MAX_FILE_LEN];
PrecacheSound(g_soundName6, true);
Format(buffer, sizeof(buffer6), "sound/%s", g_soundName6);
AddFileToDownloadsTable(buffer6);
}
public Action:OnPluginStart_Delayed(Handle:timer){
if(GetConVarInt(cvarEnable) > 0)
{
g_isHooked = true;
HookEvent("player_death",ev_PlayerDeath);
HookConVarChange(cvarEnable,KnifeOwnedCvarChange);
LogMessage("[Knife Notification] - Loaded");
}
}
public KnifeOwnedCvarChange(Handle:convar, const String:oldValue[], const String:newValue[]){
if(GetConVarInt(cvarEnable) <= 0){
if(g_isHooked){
g_isHooked = false;
UnhookEvent("player_death",ev_PlayerDeath);
}
}else if(!g_isHooked){
g_isHooked = true;
HookEvent("player_death",ev_PlayerDeath);
}
}
public ev_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
// Check if enabled, if not bail out
if (GetConVarInt(cvarEnable) == 0)
{
return;
}
decl String:weaponName[100];
decl String:victimName[100];
decl String:killerName[100];
GetEventString(event,"weapon",weaponName,100);
// if the weapon used in death was a knife it continues
if(StrEqual(weaponName, "knife"))
{
new userid = GetEventInt(event, "userid");
new userid2 = GetEventInt(event, "attacker");
new victim = GetClientOfUserId(userid);
new killer = GetClientOfUserId(userid2);
if(victim != 0 && killer != 0)
{
new victimTeam = GetClientTeam(victim);
new killerTeam = GetClientTeam(killer);
if(killerTeam!=victimTeam)
{
GetClientName(victim,victimName,100);
GetClientName(killer,killerName,100);
new knife_sound = GetRandomInt(1, 6);
if (knife_sound != 1)
{
EmitSoundToAll(g_soundName);
}
if (knife_sound != 2)
{
EmitSoundToAll(g_soundName2);
}
if (knife_sound != 3)
{
EmitSoundToAll(g_soundName3);
}
if (knife_sound != 4)
{
EmitSoundToAll(g_soundName4);
}
if (knife_sound != 5)
{
EmitSoundToAll(g_soundName5);
}
if (knife_sound != 6)
{
EmitSoundToAll(g_soundName6);
}
}
}
}
}
Итог - проигрывает только один звук ("misc/humiliation.mp3") остальные не хочет, и пишет в лог ошибки:
[SM] Native "GetConVarString" reported: Invalid convar handle 0 (error 4)
[SM] Displaying call stack trace for plugin "KnifeOwned.smx":
[SM] [0] Line 78, KnifeOwned.sp::OnConfigsExecuted()
[SM] Displaying call stack trace for plugin "KnifeOwned.smx":
[SM] [0] Line 78, KnifeOwned.sp::OnConfigsExecuted()
Добавлено через 3 часа 49 минут
Сделал так:
PHP:
// Based upon Kinfe Mug by FlyingMongoose & sslice
// When a player is stabbed they get publicly humilated in chat and HAHA or other sound in game
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdktools_sound>
#define KO_VERSION "1.2"
#define MAX_FILE_LEN 80
new Handle:g_CvarSoundName = INVALID_HANDLE;
new Handle:g_CvarSoundName2 = INVALID_HANDLE;
new Handle:g_CvarSoundName3 = INVALID_HANDLE;
new Handle:g_CvarSoundName4 = INVALID_HANDLE;
new Handle:g_CvarSoundName5 = INVALID_HANDLE;
new Handle:g_CvarSoundName6 = INVALID_HANDLE;
new String:g_soundName[MAX_FILE_LEN];
new String:g_soundName2[MAX_FILE_LEN];
new String:g_soundName3[MAX_FILE_LEN];
new String:g_soundName4[MAX_FILE_LEN];
new String:g_soundName5[MAX_FILE_LEN];
new String:g_soundName6[MAX_FILE_LEN];
// Define author information
public Plugin:myinfo =
{
name = "Knife Owned",
author = "MoggieX",
description = "Ownd by Knife",
version = KO_VERSION,
url = "http://www.UKManDown.co.uk"
};
new Handle:cvarEnable;
new bool:g_isHooked;
public OnPluginStart()
{
CreateConVar("sm_knife_Owned_version", KO_VERSION, _, FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_REPLICATED|FCVAR_SPONLY);
cvarEnable = CreateConVar("sm_knife_enable","1","Plays sound and gives chat ntoification when a player is knifed",FCVAR_PLUGIN,true,0.0,true,1.0);
g_CvarSoundName = CreateConVar("sm_knife_sound", "misc/humiliation.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName2 = CreateConVar("sm_knife_sound2", "misc/humiliation2.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName3 = CreateConVar("sm_knife_sound3", "misc/humiliation3.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName4 = CreateConVar("sm_knife_sound4", "misc/humiliation4.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName5 = CreateConVar("sm_knife_sound5", "misc/humiliation5.mp3", "The random sound to play when a player is knifed");
g_CvarSoundName6 = CreateConVar("sm_knife_sound6", "misc/humiliation6.mp3", "The random sound to play when a player is knifed");
CreateTimer(3.0, OnPluginStart_Delayed);
}
// For sounds and its caching
public OnConfigsExecuted()
{
GetConVarString(g_CvarSoundName, g_soundName, MAX_FILE_LEN);
decl String:buffer[MAX_FILE_LEN];
PrecacheSound(g_soundName, true);
Format(buffer, sizeof(buffer), "sound/%s", g_soundName);
AddFileToDownloadsTable(buffer);
GetConVarString(g_CvarSoundName2, g_soundName2, MAX_FILE_LEN);
decl String:buffer2[MAX_FILE_LEN];
PrecacheSound(g_soundName2, true);
Format(buffer, sizeof(buffer2), "sound/%s", g_soundName2);
AddFileToDownloadsTable(buffer2);
GetConVarString(g_CvarSoundName3, g_soundName3, MAX_FILE_LEN);
decl String:buffer3[MAX_FILE_LEN];
PrecacheSound(g_soundName3, true);
Format(buffer, sizeof(buffer3), "sound/%s", g_soundName3);
AddFileToDownloadsTable(buffer3);
GetConVarString(g_CvarSoundName4, g_soundName4, MAX_FILE_LEN);
decl String:buffer4[MAX_FILE_LEN];
PrecacheSound(g_soundName4, true);
Format(buffer, sizeof(buffer4), "sound/%s", g_soundName4);
AddFileToDownloadsTable(buffer4);
GetConVarString(g_CvarSoundName5, g_soundName5, MAX_FILE_LEN);
decl String:buffer5[MAX_FILE_LEN];
PrecacheSound(g_soundName5, true);
Format(buffer, sizeof(buffer5), "sound/%s", g_soundName5);
AddFileToDownloadsTable(buffer5);
GetConVarString(g_CvarSoundName6, g_soundName6, MAX_FILE_LEN);
decl String:buffer6[MAX_FILE_LEN];
PrecacheSound(g_soundName6, true);
Format(buffer, sizeof(buffer6), "sound/%s", g_soundName6);
AddFileToDownloadsTable(buffer6);
}
public Action:OnPluginStart_Delayed(Handle:timer)
{
if(GetConVarInt(cvarEnable) > 0)
{
g_isHooked = true;
HookEvent("player_death",ev_PlayerDeath);
HookConVarChange(cvarEnable,KnifeOwnedCvarChange);
LogMessage("[Knife Notification] - Loaded");
}
}
public KnifeOwnedCvarChange(Handle:convar, const String:oldValue[], const String:newValue[])
{
if(GetConVarInt(cvarEnable) <= 0)
{
if(g_isHooked)
{
g_isHooked = false;
UnhookEvent("player_death",ev_PlayerDeath);
}
}
else if(!g_isHooked)
{
g_isHooked = true;
HookEvent("player_death",ev_PlayerDeath);
}
}
public ev_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
// Check if enabled, if not bail out
if (GetConVarInt(cvarEnable) == 0)
{
return;
}
decl String:weaponName[100];
decl String:victimName[100];
decl String:killerName[100];
GetEventString(event,"weapon",weaponName,100);
// if the weapon used in death was a knife it continues
if (StrEqual(weaponName, "knife"))
{
new userid = GetEventInt(event, "userid");
new userid2 = GetEventInt(event, "attacker");
new victim = GetClientOfUserId(userid);
new killer = GetClientOfUserId(userid2);
if(victim != 0 && killer != 0)
{
new victimTeam = GetClientTeam(victim);
new killerTeam = GetClientTeam(killer);
if(killerTeam!=victimTeam)
{
GetClientName(victim,victimName,100);
GetClientName(killer,killerName,100);
new knife_sound = GetRandomInt(1, 6);
if (knife_sound != 1)
{
EmitSoundToAll(g_soundName);
}
else
{
if (knife_sound != 2)
{
EmitSoundToAll(g_soundName2);
}
if (knife_sound != 3)
{
EmitSoundToAll(g_soundName3);
}
if (knife_sound != 4)
{
EmitSoundToAll(g_soundName4);
}
if (knife_sound != 5)
{
EmitSoundToAll(g_soundName5);
}
if (knife_sound != 6)
{
EmitSoundToAll(g_soundName6);
}
}
}
}
}
}
Теперь в логах ошибок нет, но качает и проигрывает только один звук ("misc/humiliation.mp3"). Все звуки и пути к ним в порядке, в cs воспроизводятся.
Подскажите куда копать????
Последнее редактирование: