Astron4ik
Участник
- Сообщения
- 3
- Реакции
- 0
Для нужд на сервере дорабатываю плагин No Block Trigger.
Требуется: В сообщении, которое выводится в чат об активации No Block, добавить Имя игрока, который активирует его.
---
Пробовал использовать "client", выводит № игрока на сервере, что не подходит.
---
Изучив примеры получения Имени игрока, добавил функцию получения имени.
Плагин компилируется, но на сервере вываливается следующая ошибка
Из ошибки понял что не правильно читается ИД, почему то берется ИД сервере.
Прикладываю код плагина с изменения.
Прошу помощи в решение данной проблемы.
Спасибо.
Требуется: В сообщении, которое выводится в чат об активации No Block, добавить Имя игрока, который активирует его.
---
Пробовал использовать "client", выводит № игрока на сервере, что не подходит.
PHP:
*code*
PrintToChatAll("%s Noblock enabled for %f seconds [%d]", SM, Time, client);
*code*
Изучив примеры получения Имени игрока, добавил функцию получения имени.
Плагин компилируется, но на сервере вываливается следующая ошибка
C-подобный:
L 03/08/2017 - 13:27:59: [SM] Exception reported: Client index -1 is invalid
L 03/08/2017 - 13:27:59: [SM] Blaming: noblocktrigger.smx
L 03/08/2017 - 13:27:59: [SM] Call stack trace:
L 03/08/2017 - 13:27:59: [SM] [0] GetClientName
L 03/08/2017 - 13:27:59: [SM] [1] Line 40, D:\_srv\_server\csgo\addons\sourcemod\scripting\noblocktrigger.sp::Command_NoBlock
Из ошибки понял что не правильно читается ИД, почему то берется ИД сервере.
Прикладываю код плагина с изменения.
PHP:
public OnPluginStart()
{
LoadTranslations("common.phrases");
RegConsoleCmd("sm_noblock", Command_NoBlock);
g_CollisionOffset = FindSendPropInfo("CBaseEntity", "m_CollisionGroup");
sm_noblock_time = CreateConVar("sm_noblock_time", "10", "Sets the noblock timer value");
AutoExecConfig(true, "sm_noblock");
}
public Action:Command_NoBlock(client, args)
{
if (IsClientInGame(client) && IsPlayerAlive(client) && TimerActive == 0)
{
new Float:Time;
Time = GetConVarFloat(sm_noblock_time);
char name[128];
GetCmdArg(1, name, sizeof(name));
int targetplayer = FindTarget(client, name, true);
GetClientName(targetplayer, name, sizeof(name));
PrintToChatAll("%s Noblock enabled for %f seconds [%d]", SM, Time, name);
TimerActive = 1;
CreateTimer(Time, Timer_UnBlockPlayer, client);
// enable noblock on every client in the server
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && IsPlayerAlive(i))
{
EnableNoBlock(i);
}
}
}
else if (TimerActive == 1)
{
PrintToChat(client, "%s Command is already in use", SM);
}
else
{
PrintToChat(client, "%s You must be alive to use this command", SM);
}
return Plugin_Handled;
}
Прошу помощи в решение данной проблемы.
Спасибо.