Помогите исправить код плагина

Shadow Broker

Участник
Сообщения
6
Реакции
0
Здравствуйте, помогите пожалуйста исправить плагин, так как мусора от него в логах ошибок дофига и больше
Текст ошибки:
[HIDE=""][SM] Displaying call stack trace for plugin "death_sound.smx":
[SM] [0] Line 34, E:\сервер\плагины\addons\sourcemod\scripting\death_sound.sp::Event_Death()
[SM] Native "IsFakeClient" reported: Client index 0 is invalid[/HIDE]
 

Вложения

  • death_sound.sp
    1.2 КБ · Просмотры: 10

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #2
Исправлена ошибка.
 

Вложения

  • death_sound.sp
    1.2 КБ · Просмотры: 10
  • death_sound.smx
    5.1 КБ · Просмотры: 7

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
C-подобный:
if (client && attacker && IsClientInGame(client) && IsClientInGame(attacker))
Не нужно там client проверять, да и все IsClientInGame стоило убрать - они бесполезны.
PHP:
#include <sourcemod>
#include <sdktools>


#define MAX_FILE_LEN 80
new Handle:g_CvarSoundName;
new String:g_soundName[MAX_FILE_LEN];

public Plugin:myinfo = 
{
	name = "Death Sound",
	author = "Marcus", // Thanks to R-Hehl for some source code.
	description = "Plays a sound when a player dies.",
	version = "0.0.1e",
	url = "http://www.sourcemod.net"
};
public OnPluginStart()
{
	g_CvarSoundName = CreateConVar("sm_death_sound", "death_sound/kill.mp3", "The sound emitted when a player dies.");
	HookEvent("player_death", Event_Death);
}
public OnAutoConfigsBuffered()
{
	GetConVarString(g_CvarSoundName, g_soundName, MAX_FILE_LEN);
	decl String:buffer[MAX_FILE_LEN + 6];
	PrecacheSound(g_soundName, true);
	FormatEx(buffer, sizeof(buffer), "sound/%s", g_soundName);
	AddFileToDownloadsTable(buffer);
}
public Event_Death(Handle:event, const String:name[], bool:dontBroadcast)
{
	decl attacker[1];
	if ((attacker[0] = GetClientOfUserId(GetEventInt(event, "attacker")))) // Thanks Mitch
	{
		EmitSound(attacker, 1, g_soundName);
	}
}
 

MaEStro71

Участник
Сообщения
163
Реакции
21
Плагин запрещает писать админам через !msay. Плагин рабочий, в текстовом файле можно указывать Steam ID админов, которым разрешено писать через !msay . Но он не создается. Помогите!
Sm 1.6.3

#include <sourcemod>

new String:SteaM[MAXPLAYERS+1][20];
new Handle:kv;

public OnPluginStart()
{
kv = CreateKeyValues("msay");
FileToKeyValues(kv, "cfg/msay.txt");
RegConsoleCmd("msay", block);
}

public Action:block(i, args)
{
GetClientAuthString(i, SteaM, 20);
if(KvJumpToKey(kv, SteaM))
{
return Plugin_Continue;
}
else
{
return Plugin_Handled;
}
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
В каком месте? Чистый самопис, он даже не компилится.
он не создается
И не должен, зачем? Плагин только считывает данные с файла, запрещая/разрешая команду, но о записи в файл речи и не могло быть.
 

MaEStro71

Участник
Сообщения
163
Реакции
21
В каком месте? Чистый самопис, он даже не компилится.И не должен, зачем? Плагин только считывает данные с файла, запрещая/разрешая команду, но о записи в файл речи и не могло быть.
Я в скриптах ноль. Но у меня компилится на 1.6.3, через !msay не получается писать по крайней мере. Проверено. Мне нужно сделать так, чтобы на стим айди указанные в файле, не распостранялось данное ограничение
 

MaEStro71

Участник
Сообщения
163
Реакции
21
PHP:
#include <sourcemod>

new Handle:kv;

public OnPluginStart()
{
    if (!FileToKeyValues((kv = CreateKeyValues("msay", "STEAM", "_")), "cfg/msay.txt")) KeyValuesToFile(kv, "cfg/msay.txt");
    AddCommandListener(block, "sm_msay");
}

public Action:block(i, String:command[], args)
{
    if (i)
    {
        decl String:buffer[30];
        GetClientAuthId(i, AuthId_Steam2, buffer, sizeof(buffer), false);
        KvRewind(kv);
        if (!KvJumpToKey(kv, buffer)) return Plugin_Handled;
    }
    return Plugin_Continue;
}
C-подобный:
"msay"
{
    "STEAM"        "_"
    "STEAM_0:0:12345678"    ""
    "STEAM_0:0:12345699"    ""
}

Вообще ни кого не блочит теперь
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
ни кого не блочит
Значит, не только у меня...
на стим айди указанные в файле, не распостранялось данное ограничение
PHP:
#include <sourcemod>

new Handle:kv;

public OnPluginStart()
{
    if (!FileToKeyValues((kv = CreateKeyValues("msay", "STEAM", "_")), "cfg/msay.txt")) KeyValuesToFile(kv, "cfg/msay.txt");
    RegConsoleCmd("msay", block);
}

public Action:block(i, args)
{
    if (i)
    {
        decl String:buffer[30];
        GetClientAuthId(i, AuthId_Steam2, buffer, sizeof(buffer), false);
        KvRewind(kv);
        if (!KvJumpToKey(kv, buffer)) return Plugin_Handled;
    }
    return Plugin_Continue;
}
C-подобный:
"msay"
{
    "STEAM"        "_"
    "STEAM_0:0:12345678"    ""
    "STEAM_0:0:12345699"    ""
}
 

MaEStro71

Участник
Сообщения
163
Реакции
21
Образец выше. Просто без вторых кавычек ломается структура KV, а так - без разницы. Лучше оставлять пустыми, чтобы мусор не грузить.
:ac: Увы. Но нет. Белый список не работает. Блочит всех. Ошибок не вижу. Пробовал и с нижним подчёркиванием и без.
 
Сверху Снизу