Написание плагинов

Rezder

Участник
Сообщения
153
Реакции
8

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
нужно где-то хранить этот список команд (в строковом массиве кода самого плагина, текстовом файле конфига)а где второй параметр хука события?
Кроме того ты не хукаешь изменение значения квара и потому твой теперешний код никогда не заработает (не будет отлавливаться событие спавна).

Я планировал что информация о конваре будет храниться в map-cfg файлах, а если от карты не поступило никак изменений, то плагин выставляет его на 0 по дефолту и отключает тем самым часть кода.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Можете подсказать что не так в данном коде?

Screenshot_1.png

PHP:
#include <sourcemod>
#include <sdktools>
#include <cstrike>
#pragma semicolon 1

ConVar cv_test;
new g_test;

public void OnPluginStart()
{
    cv_test = CreateConVar("sm_command", "0");
    g_test = GetConVarString(cv_test);
    HookConVarChange(cv_test, OnConVarChanged);
    HookEvent("player_death", Event_PlayerDeath);
}

public void OnConVarChanged(ConVar convar, const char[] oldVal, const char[] newVal)
{
    g_test = GetConVarString(cv_test);
}

public void Event_PlayerDeath(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
    //g_test = GetConVarString(cv_test);
    PrintToChatAll(g_test);
}
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,076
@Loco, ни одна из функций никогда не возвращает строковое значение. Для приличия: Google GetConvarString.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Loco,
PHP:
char g_test[PLATFORM_MAX_PATH];

public void OnPluginStart()
{
	ConVar cvar;
	(cvar = CreateConVar("sm_command", "0", _, FCVAR_PRINTABLEONLY)).AddChangeHook(CVarChanged);
	cvar.GetString(g_test, sizeof(g_test));

	HookEvent("player_death", Event_PlayerDeath, EventHookMode_PostNoCopy);
}

public void CVarChanged(ConVar cvar, const char[] oldVal, const char[] newVal)
{
	cvar.GetString(g_test, sizeof(g_test));
}

public void Event_PlayerDeath(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
	PrintToChatAll(g_test);
}
 

Oki45

Участник
Сообщения
1
Реакции
0
@The End Is Near..., 1)Реферальная система.
2)Плагин для WCS сервера.При достижении 500 уровня(можно изменять) выдавалось человеку,который пригласил 100 уровней(можно изменять).Так же выводилось какой человек пригласил игрока.
Для связи с мной Egor Dvorianski .
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Можете в плагин добавить cookie, то-есть возможность выключать отображение через меню !settings/
 

Вложения

  • shop_skins.sp
    12.9 КБ · Просмотры: 21

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
Может кто-то написать лайт плагин который полностью убирает показ убийств в правом верхнем углу?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,805
Реакции
5,254
@Сергей68, можно: [ANY] Block Kill Feed - AlliedModders
--- Добавлено позже ---
Ну или можно вот такую версию:
sm_killfeed_ctrl_mode - 0 - полная блокировка сообщений, 1 - блокировка отключена, 2 - блокировка сообщений о смерти террористов, 3 - блокировка сообщений о смерти спецов, 4 - блокировка сообщений о чужих убийствах и смертях
Файл создаёт файл конфига с именем killfeed_ctrl
 

Вложения

  • sm_killfeed_ctrl.sp
    1.7 КБ · Просмотры: 29
Последнее редактирование:

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
@Сергей68, можно: [ANY] Block Kill Feed - AlliedModders
--- Добавлено позже ---
Ну или можно вот такую версию:
sm_killfeed_ctrl_mode - 0 - полная блокировка сообщений, 1 - блокировка отключена, 2 - блокировка сообщений о смерти террористов, 3 - блокировка сообщений о смерти спецов, 4 - блокировка сообщений о чужих убийствах и смертях
Файл создаёт файл конфига с именем killfeed_ctrl
а разве при подобном не будет утечки памяти?
PHP:
public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
    if (cv_Enabled.BoolValue)
    {
        event.BroadcastDisabled = true;
    }

    return Plugin_Continue;
}
 

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Пофиксите компиляцию этого плагина под последнюю sm (1.10).
Screenshot_1.png
--- Добавлено позже ---
Помогите, нужно что бы плагин из конвара мог читать {userid} который этот евент вызвал,
к примеру есть в конваре загружена команда sm_give {userid} negev;sm_hp {userid} +10
Нужно сделать так, что бы {userid} - это был steam-id (или его ид) и команда выполнялась именно на него
PHP:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <cstrike>

new Handle:c_hurttime = INVALID_HANDLE;
char g_hurtcomm[PLATFORM_MAX_PATH];

public void OnPluginStart()
{
  ConVar cvar;

  c_hurttime = CreateConVar("ec_hurttime", "0.0");
  (cvar = CreateConVar("ec_hurtcomm", "", _, FCVAR_PRINTABLEONLY)).AddChangeHook(CVarChanged);
  cvar.GetString(g_hurtcomm, sizeof(g_hurtcomm));
  HookEvent("player_hurt", Event_hurt, EventHookMode_PostNoCopy);
}

public void CVarChanged(ConVar cvar, const char[] oldVal, const char[] newVal)
{
  cvar.GetString(g_hurtcomm,     sizeof(g_hurtcomm));
}

public void Event_hurt(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
  CreateTimer(GetConVarFloat(c_hurttime), Timer_hurt);
}

public Action:Timer_hurt(Handle htimer)
{
  ServerCommand(g_hurtcomm);
}
 
Последнее редактирование:

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Помогите разобраться как включать радар, есть как отключать, а как включать принудительно не нашёл
Выключает - SetEntProp(client, Prop_Send, "m_iHideHUD" | 1«12)
 

Truyn

King of clowns
Сообщения
1,591
Реакции
750
Был бы рад плагину включаещему подсветку сквозь стены на игрока.
К примеру игрок пишет !b и на нем включается подсветка сквозь стену (видно через всю карту)
 
Сверху Снизу