Иконка ресурса

Smert413

Участник
Сообщения
10
Реакции
14
  • Автор ресурса
  • #1
Плагин для отображения рекламы справа на экране.

d1211831aedf93fd7d75eae8d94e340b.png


sm_hud_adverts_reload - перезагрузка настроек (нужен флаг "i").

Все настройки в файле "...\addons\sourcemod\configs\hud_adverts.ini".

CVAR'ы ("...\cfg\sourcemod\hud_adverts.cfg"):

"sm_hud_adverts_interval_update" - каждые n секунд отображать сообщение.
"sm_hud_adverts_interval_next" - каждые n секунд переключаться на следующее сообщение.

{q} - заменяется на двойные кавычки (").
{n} - переход на новую строку.

Максимальная длинна сообщения: 255.
 
Последнее редактирование модератором:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
Smert413, Много памяти использует. Сделай по принципу advertisements. Каждый раз переходи на нужны ключ и выводи сообщение. Нет смысла хранить все сообщения в памяти.

Сам подумай new String:g_sMessages[256][256];

Здесь:
PHP:
g_hTimerUpdateHud = CreateTimer(g_fIntervalUpdateHud, TimerUpdateHud, _,TIMER_REPEAT);

И здесь
PHP:
g_hTimerNextMessage = CreateTimer(g_fIntervalNextMessage, TimerNextMessage, _,TIMER_REPEAT);
Ты не передаешь никаких данных "_".

А в обратных вызовах у тебя берется клиент. Откуда?
PHP:
public Action:TimerUpdateHud(Handle:timer, any:client)
public Action:TimerNextMessage(Handle:timer, any:client)

Должно быть так:
PHP:
public Action:TimerUpdateHud(Handle:timer)
public Action:TimerNextMessage(Handle:timer)


А здесь выполняется двойная работа:
PHP:
ReplaceSpecials(String:sBuffer[])
{
	if (StrContains(sBuffer, "{n}") != -1)
	{
		ReplaceString(sBuffer, 255, "{n}", "\n");
	}
	if (StrContains(sBuffer, "{q}") != -1)
	{
		ReplaceString(sBuffer, 255, "{q}", "\"");
	}
}

Зачем сначала искать, а затем снова искать и заменять?
Сразу делай так:
PHP:
ReplaceSpecials(String:sBuffer[])
{
	ReplaceString(sBuffer, 255, "{n}", "\n");
	ReplaceString(sBuffer, 255, "{q}", "\"");
}
Точно так же ищет и заменяет. Не нужно делать предварительный поиск.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
Smert413, первое замечание не учел.
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
Зачем при каждом обновлении заново открывать файл? Один раз сделать при запуске FileToKeyValues и все, дальше с одним KV работаешь, и можно даже позицию не запоминать. + добавить команду перезагрузки файла.
KeyHintText пропадают через ~6 секунд, лучше поставить интервал обновления скажем 4 секунды.
Настройки постоянно считывать тоже не нужно.
Путь можно прописать константой
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
KorDen, Я об этом и говорил.
Smert413, Много памяти использует. Сделай по принципу advertisements. Каждый раз переходи на нужны ключ и выводи сообщение. Нет смысла хранить все сообщения в памяти.

Сам подумай new String:g_sMessages[256][256];
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424
R1KO, он уже обновил, там теперь только текущее сообщение хранится уже распарсенное, но все еще недочеты есть.
 
  • Мне нравится
Реакции: R1KO

Smert413

Участник
Сообщения
10
Реакции
14
  • Автор ресурса
  • #9
Последнее редактирование модератором:

Партизан

Участник
Сообщения
113
Реакции
40
Помогите профиксить для CSGO
L 05/20/2014 - 16:49:34: SourceMod error session started
L 05/20/2014 - 16:49:34: Info (map "surf_machine4_go_snf") (file "errors_20140520.log")
L 05/20/2014 - 16:49:34: [SM] Plugin encountered error 21: Native is not bound
L 05/20/2014 - 16:49:34: [SM] Native "BfWriteByte" reported:
L 05/20/2014 - 16:49:34: [SM] Displaying call stack trace for plugin "hud_adverts.smx":
L 05/20/2014 - 16:49:34: [SM] [0] Line 126, E:\steampipe_server\css\cstrike\_addons\sourcemod\scripting\hud_adverts.sp::TimerUpdateHud()
 

SenatoR

Участник
Сообщения
773
Реакции
344
В ксго нету KeyHintText'a, соответственно плагин в ксго работать не будет. Или альтернатива: сделать через Hud
 

zaigrovas

Участник
Сообщения
51
Реакции
1
L 05/30/2015 - 23:35:45: [SM] Native "StartMessage" reported: Invalid message name: "KeyHintText"
L 05/30/2015 - 23:35:45: [SM] Displaying call stack trace for plugin "hud_adverts.smx":
L 05/30/2015 - 23:35:45: [SM] [0] Line 201, C:\Users\Санек\Desktop\scripting\include\usermessages.inc::StartMessageOne()
L 05/30/2015 - 23:35:45: [SM] [1] Line 125, C:\Users\Санек\Desktop\scripting\hud_adverts.sp::TimerUpdateHud()

Как я понимаю версия соурцмода не катит!? Стоит 1.4.2 сервер V34
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
Последнее редактирование модератором:

-=AWP=-

Участник
Сообщения
41
Реакции
26
Вот лучше так сделать, в этом плагине совмещены несколько, конструкт, и худинфо.
Он переделан, в данный момент, появляется бегущая строка, + цвет + переливание.
текст поменяйте на свой... можно установить рекламу, в любой угол или же куда захотите, через конструкт, просто поменяйте кординаты, кто плохо шарит в плагинах.
Пользуйтесь на здоровье!

PHP:
#pragma semicolon 1
#include <sourcemod>
#include <clientprefs>
#include <easy_hudmessage>

new bool:hit_info[MAXPLAYERS+1];

public Plugin:myinfo =
{
    name = "HIT SERVER INFO",
    author = "css-rus.ru",
    description = "",
    version = "1.2",
    url = "http://css-rus.ru/"
}

public OnPluginStart()
{   
    RegConsoleCmd("sm_infо", Command_Info, "Единственный сервер в своем роде!");
}

public OnMapStart()
{   
    CreateTimer(1.0, UpdateHud, INVALID_HANDLE, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);
}

public Action:Command_Info(client, args)
{   
    if (client > 0)
    {
        if (hit_info[client]) hit_info[client] = false;
        else hit_info[client] = true;
    }
    return Plugin_Handled;
}

public OnClientPostAdminCheck(client)
{
    hit_info[client] = true;
}

public Action:UpdateHud(Handle:timer)
{   
    for (new i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i) && hit_info)
        {
            //Client_PrintKeyHintText(i, buf);
            //SendHudMessage(i, 3, -0.431998, -1.043999, 0xFF0000FF, 0x33FFFFFF, 2, 1.0, 1.0, 1.5, 1.0, buf);
            SendHudMessage(i, 2, -0.239998, 0.980002, 0x990000FF, 0x33FF00FF, 2, 0.1, 0.5, 1.0, 0.1, "████|:R:E:S:I:D:E:N:T:██:E:V:I:L:|████ 46.174.54.179:27015 Продается за 20.000 руб.");
            //SendHudMessage(i, 3, -0.431998, -1.043999, 0x00C1FFFF, 0xFFFFFFFF, 2, 1.0, 1.0, 1,5 5.0, buf);

        }
    }
}
 
Последнее редактирование модератором:

Похожие темы

Сверху Снизу