Kill Message - ошибка.

murk

Участник
Сообщения
78
Реакции
2
L 10/03/2014 - 00:11:23: [SM] Native "ClientCommand" reported: Client 14 is not connected
L 10/03/2014 - 00:11:23: [SM] Displaying call stack trace for plugin "sm_killmessage_framework.smx":
L 10/03/2014 - 00:11:23: [SM] [0] Line 62, D:\steampipe_css\cstrike\addons\sourcemod\scripting\sm_killmessage_framework.sp::ClearScreen()
L 10/03/2014 - 00:11:23: [SM] [1] Line 69, D:\steampipe_css\cstrike\addons\sourcemod\scripting\sm_killmessage_framework.sp::CleanTimer()


Мб кто в курсе как поправить? и что за ошибка вообще?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
IsClientInGame(client)
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
Перед
поставить if (IsClientConnected(client)) или if (IsClientInGame(client)) (обычно последнее).
Где client - поставить то же самое, что внутри ClientCommand (после скобки, но до запятой).
Оффтоп
 
  • Мне нравится
Реакции: murk

murk

Участник
Сообщения
78
Реакции
2
(IsClientConnected(client)) ставил вроде, не помогло, сейчас попробую if (IsClientInGame(client)) спс.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Вроде - тут не катит)
Скидывай, как исправлял.
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Может, быть весь исходник скинешь? в логах еще же есть ошибки
 

murk

Участник
Сообщения
78
Реакции
2
Верно. В

также сделай.

public ClearScreen(client)
{
if(client > 0 && IsClientConnected(client))
{
ClientCommand(IsClientConnected(client), "r_screenoverlay \"\"");
}
}

public CleanTimer(client)
{
if(client > 0 && IsClientConnected(client))
{
ClientCommand(IsClientConnected(client), "r_screenoverlay \"\"");
}
}


Так?)

Добавлено через 2 минуты
или

public Action:CleanTimer(Handle:Timer, any:client)
{
_atCleanTimer[client] = INVALID_HANDLE;
ClearScreen(IsClientConnected(client));
}
 
Последнее редактирование:

murk

Участник
Сообщения
78
Реакции
2
Тьфу... Выделенное жирным то не надо.
PHP:
ClearScreen(client)
{
	if (client && IsClientConnected(client)) ClientCommand(client, "r_screenoverlay \"\"");
}

Если плагин сам писал, то давай полностью.

Нет, не сам, короче вот. Скинь плз., готовый, а то чет я запутался уже.

#include <sourcemod>
#include <sdktools>

#define PLUGIN_VERSION "2.3"

new Handle:_atCleanTimer[MAXPLAYERS+1] = INVALID_HANDLE
new Handle:_hTimerLength;
new Float:_dTimerLength;

public Plugin:myinfo =
{
name = "Kill Message Overlays Framework",
author = "Siang Chun & Black Haze & Xeon",
description = "Framework for Kill Message Overlays",
version = PLUGIN_VERSION,
url = "bslw.co.uk & beernweed.com & csgo-astra.ru"
}

public OnPluginStart()
{
_hTimerLength = CreateConVar("sm_killmessage_overlays_length", "3.0", "Length of time an overlay is showed", FCVAR_PLUGIN|FCVAR_REPLICATED, true, 1.0);
_dTimerLength = GetConVarFloat(_hTimerLength);

RegServerCmd("sm_killmessage_show", ShowKillMessage);
RegServerCmd("sm_killmessage_prepare", PrepareOverlay);
}

public Action:ShowKillMessage(args)
{
if (args < 2)
{
return Plugin_Handled;
}

decl String: client_id[192];
GetCmdArg(1, client_id, sizeof(client_id));
new client = GetClientOfUserId(StringToInt(client_id));

if(client>0)
{
decl String: sOverLay[192];
GetCmdArg(2, sOverLay, sizeof(sOverLay));

if(_atCleanTimer[client] !=INVALID_HANDLE)
{
KillTimer(_atCleanTimer[client]);
_atCleanTimer[client] =INVALID_HANDLE;
}

_atCleanTimer[client] = CreateTimer(_dTimerLength,CleanTimer,client);

ClearScreen(client);
ClientCommand(client, "r_screenoverlay \"ray_killmessages/%s.vtf\"",sOverLay);
}
return Plugin_Handled;
}

public ClearScreen(client)
{
if(client > 0 && IsClientConnected(client))
{
ClientCommand(IsClientConnected(client), "r_screenoverlay \"\"");
}
}

public Action:CleanTimer(Handle:Timer, any:client)
{
_atCleanTimer[client] = INVALID_HANDLE;
ClearScreen(client);
}

public Action:PrepareOverlay(args)
{
if (args < 1)
{
return Plugin_Handled;
}

decl String: sOverLay[192];
GetCmdArg(1, sOverLay, sizeof(sOverLay));

new String:overlays_file[64];
new String:overlays_dltable[64];

Format(overlays_file,sizeof(overlays_file),"ray_killmessages/%s.vtf",sOverLay);
PrecacheDecal(overlays_file,true);
Format(overlays_dltable,sizeof(overlays_dltable),"materials/ray_killmessages/%s.vtf",sOverLay);
AddFileToDownloadsTable(overlays_dltable);
Format(overlays_file,sizeof(overlays_file),"ray_killmessages/%s.vmt",sOverLay);
PrecacheDecal(overlays_file,true);
Format(overlays_dltable,sizeof(overlays_dltable),"materials/ray_killmessages/%s.vmt",sOverLay);
AddFileToDownloadsTable(overlays_dltable);

return Plugin_Handled;
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
PHP:
 #include <sourcemod>
 #include <sdktools>

 #define PLUGIN_VERSION "2.3"

 new Handle:_atCleanTimer[MAXPLAYERS+1] = INVALID_HANDLE
 new Handle:_hTimerLength;
 new Float:_dTimerLength;

 public Plugin:myinfo = 
 {
 name = "Kill Message Overlays Framework",
 author = "Siang Chun & Black Haze & Xeon",
 description = "Framework for Kill Message Overlays",
 version = PLUGIN_VERSION,
 url = "bslw.co.uk & beernweed.com & csgo-astra.ru"
 }

 public OnPluginStart()
 { 
 _hTimerLength = CreateConVar("sm_killmessage_overlays_length", "3.0", "Length of time an overlay is showed", FCVAR_PLUGIN|FCVAR_REPLICATED, true, 1.0);
 _dTimerLength = GetConVarFloat(_hTimerLength);

 RegServerCmd("sm_killmessage_show", ShowKillMessage);
 RegServerCmd("sm_killmessage_prepare", PrepareOverlay);
 }

 public Action:ShowKillMessage(args)
 {
 if (args < 2)
 {
 return Plugin_Handled;
 }

 decl String: client_id[192];
 GetCmdArg(1, client_id, sizeof(client_id));
 new client = GetClientOfUserId(StringToInt(client_id));

 if(client>0)
 {
 decl String: sOverLay[192];
 GetCmdArg(2, sOverLay, sizeof(sOverLay));

 if(_atCleanTimer[client] !=INVALID_HANDLE)
 {
 KillTimer(_atCleanTimer[client]);
 _atCleanTimer[client] =INVALID_HANDLE;
 }

 _atCleanTimer[client] = CreateTimer(_dTimerLength,CleanTimer,client);

 ClearScreen(client);
 ClientCommand(client, "r_screenoverlay \"ray_killmessages/%s.vtf\"",sOverLay);
 }
 return Plugin_Handled;
 }

 public ClearScreen(client)
 {
 if(client && IsClientConnected(client)) ClientCommand(client, "r_screenoverlay \"\"");
 }

 public Action:CleanTimer(Handle:Timer, any:client)
 {
 _atCleanTimer[client] = INVALID_HANDLE;
 ClearScreen(client);
 }

 public ActionrepareOverlay(args)
 {
 if (args < 1)
 {
 return Plugin_Handled;
 }

 decl String: sOverLay[192];
 GetCmdArg(1, sOverLay, sizeof(sOverLay));

 new String:overlays_file[64];
 new String:overlays_dltable[64];

 Format(overlays_file,sizeof(overlays_file),"ray_ki llmessages/%s.vtf",sOverLay);
 PrecacheDecal(overlays_file,true);
 Format(overlays_dltable,sizeof(overlays_dltable)," materials/ray_killmessages/%s.vtf",sOverLay);
 AddFileToDownloadsTable(overlays_dltable);
 Format(overlays_file,sizeof(overlays_file),"ray_ki llmessages/%s.vmt",sOverLay);
 PrecacheDecal(overlays_file,true);
 Format(overlays_dltable,sizeof(overlays_dltable)," materials/ray_killmessages/%s.vmt",sOverLay);
 AddFileToDownloadsTable(overlays_dltable);

 return Plugin_Handled;
 }
Скидывать надо нормально. А так могут быть ошибки из-за плохих отступов.
 
  • Мне нравится
Реакции: murk

murk

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

 #define PLUGIN_VERSION "2.3"

 new Handle:_atCleanTimer[MAXPLAYERS+1] = INVALID_HANDLE
 new Handle:_hTimerLength;
 new Float:_dTimerLength;

 public Plugin:myinfo = 
 {
 name = "Kill Message Overlays Framework",
 author = "Siang Chun & Black Haze & Xeon",
 description = "Framework for Kill Message Overlays",
 version = PLUGIN_VERSION,
 url = "bslw.co.uk & beernweed.com & csgo-astra.ru"
 }

 public OnPluginStart()
 { 
 _hTimerLength = CreateConVar("sm_killmessage_overlays_length", "3.0", "Length of time an overlay is showed", FCVAR_PLUGIN|FCVAR_REPLICATED, true, 1.0);
 _dTimerLength = GetConVarFloat(_hTimerLength);

 RegServerCmd("sm_killmessage_show", ShowKillMessage);
 RegServerCmd("sm_killmessage_prepare", PrepareOverlay);
 }

 public Action:ShowKillMessage(args)
 {
 if (args < 2)
 {
 return Plugin_Handled;
 }

 decl String: client_id[192];
 GetCmdArg(1, client_id, sizeof(client_id));
 new client = GetClientOfUserId(StringToInt(client_id));

 if(client>0)
 {
 decl String: sOverLay[192];
 GetCmdArg(2, sOverLay, sizeof(sOverLay));

 if(_atCleanTimer[client] !=INVALID_HANDLE)
 {
 KillTimer(_atCleanTimer[client]);
 _atCleanTimer[client] =INVALID_HANDLE;
 }

 _atCleanTimer[client] = CreateTimer(_dTimerLength,CleanTimer,client);

 ClearScreen(client);
 ClientCommand(client, "r_screenoverlay \"ray_killmessages/%s.vtf\"",sOverLay);
 }
 return Plugin_Handled;
 }

 public ClearScreen(client)
 {
 if(client && IsClientConnected(client)) ClientCommand(client, "r_screenoverlay \"\"");
 }

 public Action:CleanTimer(Handle:Timer, any:client)
 {
 _atCleanTimer[client] = INVALID_HANDLE;
 ClearScreen(client);
 }

 public ActionrepareOverlay(args)
 {
 if (args < 1)
 {
 return Plugin_Handled;
 }

 decl String: sOverLay[192];
 GetCmdArg(1, sOverLay, sizeof(sOverLay));

 new String:overlays_file[64];
 new String:overlays_dltable[64];

 Format(overlays_file,sizeof(overlays_file),"ray_ki llmessages/%s.vtf",sOverLay);
 PrecacheDecal(overlays_file,true);
 Format(overlays_dltable,sizeof(overlays_dltable)," materials/ray_killmessages/%s.vtf",sOverLay);
 AddFileToDownloadsTable(overlays_dltable);
 Format(overlays_file,sizeof(overlays_file),"ray_ki llmessages/%s.vmt",sOverLay);
 PrecacheDecal(overlays_file,true);
 Format(overlays_dltable,sizeof(overlays_dltable)," materials/ray_killmessages/%s.vmt",sOverLay);
 AddFileToDownloadsTable(overlays_dltable);

 return Plugin_Handled;
 }
Скидывать надо нормально. А так могут быть ошибки из-за плохих отступов.

Не помогло ((, щя попробую (IsClientInGame(client)).

Но с отступами все нормуль, я только это поменял сам в ручную, ты же ток это поменял?

public ClearScreen(client)
{
if(client && IsClientConnected(client)) ClientCommand(client, "r_screenoverlay \"\"");
}
 

murk

Участник
Сообщения
78
Реакции
2
В каком смысле? Что пишет? Скомпилировалось с ошибками или что?

Ну те же ошибки что и в начале темы, я сервак правда не перезагрузил, просто карту сменил (народу много), этого хватает обычно.
 

murk

Участник
Сообщения
78
Реакции
2
sp файл компилировал? smx файл удалил старый, а новый закинул в папку плагинов?
Для уверенности дай плагину новое имя, переименовав smx - логи должны измениться.

Что такое "компилировал"?), smx не удалял, ок попробую удалить и залить переименованный, как сделаю отпишусь.
Еще 1 момент, ты сказал что в 2х местах нужно прописать IsClientConnected(client), а в том скрипте что ты скинул ток в 1 месте исправлено, так что мне в 2х прописать или что?
Так?

public ClearScreen(client)
{
if(client && IsClientConnected(client)) ClientCommand(IsClientConnected(client), "r_screenoverlay \"\"");
}
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
murk, http://hlmod.ru/forum/plaginy-dlya-sourcemod/30-ustanovka-i-kompilyatsiya-plaginov.html изучи. Без этого ты никак не сможешь поправить работу плагина. Все твои изменения - просто текст.
мне в 2х прописать или что
Нет, в одном - у тебя просто вызывается эта функция из других мест, вот и кажется, что ошибки две.
 
  • Мне нравится
Реакции: murk

WeSTMan

А вот тут текст!
Сообщения
834
Реакции
521
Это тема поднималась, нужно просто было пошарить в поисковике.
 

murk

Участник
Сообщения
78
Реакции
2
murk, http://hlmod.ru/forum/plaginy-dlya-sourcemod/30-ustanovka-i-kompilyatsiya-plaginov.html изучи. Без этого ты никак не сможешь поправить работу плагина. Все твои изменения - просто текст.

Нет, в одном - у тебя просто вызывается эта функция из других мест, вот и кажется, что ошибки две.

Все, спасибо огромное, теперь многое стало понятно))) и не только с этой проблемой, я тупо .sp правил всегда, думал это файл настроек плагина). Компилировал тут www.sourcemod.net/compiler.php

Добавлено через 1 минуту
Это тема поднималась, нужно просто было пошарить в поисковике.

Да, я гуглил, пробовал, не знал просто что плагин нужно компилировать.
 
Последнее редактирование:

Alraune

Участник
Сообщения
216
Реакции
52
Если это не нарушение правил форума, скиньте пожалуйста ссылку на рабочий и не спамящий ошибками Kill Messages. Не могу избавиться от ошибок, описанных автором топа. Перепробовала все оверлеи, но после обновления см они работают не корректно...Игроки не могут зайти на сервер после смены мапы .Нужно откл и снова зайти..
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #19
Скажу вот что - плагин написан убого.
Писал похожий на заказ (интегрировал во что-то) проще было с 0 написать новый плагин.

Лень листать тему. Скиньте исходники и ошибки сюда. Попробую пофиксить.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
скиньте пожалуйста ссылку на рабочий и не спамящий ошибками Kill Messages
А это разве не то же самое?
Вижу, скачивали - проблема есть? Если компилируете на SM 1.7.0 и выше, то не факт, как будет работать.
 
Сверху Снизу