The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Я прекрасно понимаю, что часто названия плагинов можно очень просто забыть. Однако это становится причиной постоянного создания тем рода "помогите найти плагин X".

Так вот, чтобы содержать форум в порядке и чистоте, поступим следующим образом:
  1. В дальнейшем создаваемые темы с "помогите найти плагин" будут удаляться, а авторам — выдаваться предупреждения
  2. Если Вы захотите найти плагин, то сначала воспользуйтесь поиском

Если всё же не удалось найти плагин, заполните следующую форму и ответьте в этой теме:

  • Функции плагина
  • Мод/Игра, которая использует этот плагин

Прежде чем отвечать в теме, воспользуйтесь поиском гугла, который почти всегда находит нужное.

Старые темы будут перемещены в корзину.
 
Последнее редактирование модератором:

Kraujze

Участник
Сообщения
11
Реакции
1
@Kraujze
PHP:
public void OnPluginStart()
{
    RegConsoleCmd("autobuy", f1);
}

public Action f1(client, args)
{
    FakeClientCommand(client, "sm_wcs")
}
На F1 откроет wcs. Можно еще на f2 или любую другу кнопку, которая имеет действие в игре, только уже другим принципом. Атака/Прицел/Шифт/Осмотреть оружие и т.п.
Что с этим нужно делать?) В написании плагинов нисколько не шарю.
 

GuSenoK

Участник
Сообщения
253
Реакции
8
Можете пожалуйста по этому плагину сделать побольше примеров в исходнике, я не знаю как добавлять своё. И как сделать, чтобы команда писалась не в консоли как sm_wcsmenu, а в чате? Например для зомбимода нету команды на телепорт sm_ztele, есть только команда в чате !ztele. И как сделать на другие кнопки, а не на f1,f2,f3... Заменил на z, скомпилировался плагин с ошибкой. Спасибо большое!
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
586
@GuSenoK
Первый плагин - отлавливает нажатие кнопки игроком и выполняет команду. Минусы - мало кнопок можно задействовать, ибо все нужны.
PHP:
public Action OnPlayerRunCmd(int iClient, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    static iPrevButtons[MAXPLAYERS+1];
    if(!IsFakeClient(iClient) && (buttons & IN_USE) && !(iPrevButtons[iClient] & IN_USE))  //Тут меняем оба IN_USE на любую нужную кнопку из списка, который я дал. К сожалению полезных мало.
    {
        FakeClientCommand(iClient, "say !ztele"); //Здесь меняем команду на нужную. Чтобы писать в чат - say !ztele. Можно и обычные команды sm_vip
    }
    iPrevButtons[iClient] = buttons;
    return Plugin_Continue;
}

// These defines are for client button presses.
#define IN_ATTACK (1 << 0)
#define IN_JUMP (1 << 1)
#define IN_DUCK (1 << 2)
#define IN_FORWARD (1 << 3)
#define IN_BACK (1 << 4)
#define IN_USE (1 << 5)
#define IN_CANCEL (1 << 6)
#define IN_LEFT (1 << 7)
#define IN_RIGHT (1 << 8)
#define IN_MOVELEFT (1 << 9)
#define IN_MOVERIGHT (1 << 10)
#define IN_ATTACK2 (1 << 11)
#define IN_RUN (1 << 12)
#define IN_RELOAD (1 << 13)
#define IN_ALT1 (1 << 14)
#define IN_ALT2 (1 << 15)
#define IN_SCORE (1 << 16) // Used by client.dll for when scoreboard is held down
#define IN_SPEED (1 << 17) // Player is holding the speed key
#define IN_WALK (1 << 18) // Player holding walk key
#define IN_ZOOM (1 << 19) // Zoom key for HUD zoom
#define IN_WEAPON1 (1 << 20) // weapon defines these bits
#define IN_WEAPON2 (1 << 21) // weapon defines these bits
#define IN_BULLRUSH (1 << 22)
#define IN_GRENADE1 (1 << 23) // grenade 1
#define IN_GRENADE2 (1 << 24) // grenade 2

Второй плагин - отслеживает бинд игрока.
PHP:
public void OnPluginStart()
{
    RegConsoleCmd("drop", button); //вместо drop (выкинуть оружие) можно использовать другие стандартные бинды, тоже кинул список.
}

public Action button(iClient, args)
{
    FakeClientCommand(iClient, "sm_osmotr") //тут пишем уже свою команду, также можно и писать в чат say !ztele
}

bind "ESCAPE" "cancelselect"
bind "`" "toggleconsole"

bind "TAB" "+showscores"
bind "SPACE" "+jump"
bind "," "buyammo1"
bind "." "buyammo2"
bind "0" "slot10"
bind "1" "slot1"
bind "2" "slot2"
bind "3" "slot3"
bind "4" "slot4"
bind "5" "slot5"
bind "6" "slot6"
bind "7" "slot7"
bind "8" "slot8"
bind "9" "slot9"
bind "a" "+moveleft"
bind "b" "buymenu"
bind "c" "radio3"
bind "d" "+moveright"
bind "e" "+use"
bind "f" "impulse 100"
bind "g" "drop"
bind "h" "commandmenu"
bind "i" "showbriefing"
bind "j" "cheer"
bind "k" "+voicerecord"
bind "m" "chooseteam"
bind "n" "nightvision"
bind "o" "buyequip"
bind "q" "lastinv"
bind "r" "+reload"
bind "s" "+back"
bind "t" "impulse 201"
bind "u" "messagemode2"
bind "w" "+forward"
bind "x" "radio2"
bind "y" "messagemode"
bind "z" "radio1"
bind "CTRL" "+duck"
bind "SHIFT" "+speed"
bind "F1" "autobuy"
bind "F2" "rebuy"
bind "F4" "bug"
bind "F5" "jpeg"
bind "F6" "save quick"
bind "F7" "load quick"
bind "F10" "quit prompt"
bind "MWHEELDOWN" "invnext"
bind "MWHEELUP" "invprev"
bind "MOUSE1" "+attack"
bind "MOUSE2" "+attack2"
bind "PAUSE" "pause"
Понятное дело что работают тут от силы несколько процентов, экспеременитуйте, также можете поискать список посвежее/лучше. Ибо кинул какой нашел.
Конечно же вы должны понимать что кнопка например выкинуть оружие (по стд "G") у другого игрока может быть переназначена на X. И сообщение вроде - "Открыть меню сервера на G" не всегда будет правильным. Правильней будет "Открыть меню на кнопку выброса оружия", что звучит очень странно. :)
В общем - направление дал, старайтесь сами.
 

wayLANder

Где AlmazON?
Сообщения
1,742
Реакции
577
//// pubg_tp.sp
//
// D:\upd\battlecore\csgo\addons\sourcemod\scripting\pubg_tp.sp(3) : error 017:
undefined symbol "RegConsoleCmd"
// D:\upd\battlecore\csgo\addons\sourcemod\scripting\pubg_tp.sp(6) : error 139:
could not find type "Action"
// D:\upd\battlecore\csgo\addons\sourcemod\scripting\pubg_tp.sp(8) : error 017:
undefined symbol "FakeClientCommand"
//
// 3 Errors.
//

C-подобный:
public void OnPluginStart()
{
    RegConsoleCmd("rebuy", f2);
}

public Action f1(client, args)
{
    FakeClientCommand(client, "sm_tp")
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
Минусы - мало кнопок можно задействовать, ибо все нужны.
А если использовать комбинции кнопок?
Я у себя так в одном плагине делал:
PHP:
    if(buttons & (1<<30) && !(old_buttons[client] & (1<<30)))

    {
        if(buttons & (1<<29) && !(old_buttons[client] & (1<<29))) BuildMenu(client).Display(client, MENU_TIME_FOREVER);
        if(buttons & (1<<28) && !(old_buttons[client] & (1<<28))) ToggleHintPanel(client);
    }
    old_buttons[client] = buttons;
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
586
С комбинациями просто отлично! Я просто не особо понимал как это реализовать в коде, спасибо! :)

@wayLANder, названия функций разное, я выше скинул пример, но теперь меньше людей запутаются.
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
586
@wayLANder
PHP:
public void OnPluginStart()
{
    RegConsoleCmd("rebuy", button);  // rebuy - f2 , autobuy - f1, нужно менять только то, что в кавычках, а именно "rebuy", названия функций не трогать. :)
}

public Action button(iClient, args)
{
    FakeClientCommand(iClient, "sm_tp")
}
 

skywalker

Участник
Сообщения
1,153
Реакции
263
Добрый вечер, есть ли плагин запрещающий или который будет обрезать длинный ник игрока?
ЯЕнотикПолоскунПолоскаюСвойПисюн
 

Nova

Simple Project
Сообщения
262
Реакции
28
Как сделать так, чтобы открывалось такое окно в меню игры, после подключения к серверу?
post-7444-0-25691200-1517825791.png
 

BaFeR

Добрый человек
Сообщения
721
Реакции
216
Как сделать так, чтобы открывалось такое окно в меню игры, после подключения к серверу?
post-7444-0-25691200-1517825791.png
motd.txt в папке с сервером

HTML:
<html>
<head>
<title>MOTD</title>
</head>
<body>
<p>Если вам понравился наш сервер добавьте его в избранное ;)</p>
</body>
</html>
 

Nova

Simple Project
Сообщения
262
Реакции
28
motd.txt в папке с сервером

HTML:
<html>
<head>
<title>MOTD</title>
</head>
<body>
<p>Если вам понравился наш сервер добавьте его в избранное ;)</p>
</body>
</html>
Прикреплённое изображение это не motd-окно. Оно появляется в ГЛАВНОМ МЕНЮ ИГРЫ, после входа на сервер.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@Nova,
PHP:
#include <sourcemod>

#pragma newdecls  required
#pragma semicolon 1

public Plugin myinfo = {
  description = "",
  version     = "1.0",
  author      = "CrazyHackGUT aka Kruzya",
  name        = "In-Game Dialog Example",
  url         = "https://hlmod.ru/posts/351094"
};

public void OnClientPutInServer(int iClient) {
  CreateTimer(5.0, OnShouldDisplayDialog, GetClientUserId(iClient));
}

public Action OnShouldDisplayDialog(Handle hTimer, int iClient) {
  if ((iClient = GetClientOfUserId(iClient)) == 0)
    return;

  UTIL_CreateTextDialog(iClient, "Приветствие", "Добро пожаловать на наш сервер, %N!\nДобавь его в избранное, если он тебе понравился :)", iClient);
}

void UTIL_CreateTextDialog(int iClient, const char[] szTitle, const char[] szFormatRules, any ...) {
  if (!iClient || !IsClientInGame(iClient))
    return;

  char szText[1024];
  VFormat(szText, sizeof(szText), szFormatRules, 4);

  KeyValues hDialog = new KeyValues("text");
  hDialog.SetNum("time", 2048);
  hDialog.SetString("title", szTitle);
  hDialog.SetNum("level", 0);
  hDialog.SetString("msg", szText);

  CreateDialog(iClient, hDialog, DialogType_Text);

  delete hDialog;
}
 

Nova

Simple Project
Сообщения
262
Реакции
28
@Nova,
PHP:
#include <sourcemod>

#pragma newdecls  required
#pragma semicolon 1

public Plugin myinfo = {
  description = "",
  version     = "1.0",
  author      = "CrazyHackGUT aka Kruzya",
  name        = "In-Game Dialog Example",
  url         = "https://hlmod.ru/posts/351094"
};

public void OnClientPutInServer(int iClient) {
  CreateTimer(5.0, OnShouldDisplayDialog, GetClientUserId(iClient));
}

public Action OnShouldDisplayDialog(Handle hTimer, int iClient) {
  if ((iClient = GetClientOfUserId(iClient)) == 0)
    return;

  UTIL_CreateTextDialog(iClient, "Приветствие", "Добро пожаловать на наш сервер, %N!\nДобавь его в избранное, если он тебе понравился :)", iClient);
}

void UTIL_CreateTextDialog(int iClient, const char[] szTitle, const char[] szFormatRules, any ...) {
  if (!iClient || !IsClientInGame(iClient))
    return;

  char szText[1024];
  VFormat(szText, sizeof(szText), szFormatRules, 4);

  KeyValues hDialog = new KeyValues("text");
  hDialog.SetNum("time", 2048);
  hDialog.SetString("title", szTitle);
  hDialog.SetNum("level", 0);
  hDialog.SetString("msg", szText);

  CreateDialog(iClient, hDialog, DialogType_Text);

  delete hDialog;
}
Спасибо. Какой SM нужен?
 

Felton

Участник
Сообщения
799
Реакции
59
@Kr1kuzya,
Ошибка
L 03/17/2018 - 12:43:39: SourceMod error session started
L 03/17/2018 - 12:43:39: Info (map "de_dust2") (file "errors_20180317.log")
L 03/17/2018 - 12:43:39: [SM] Unable to load plugin "motd.smx": Native "KeyValues.KeyValues" was not found
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@Felton,
  1. Этот плагин - не для MOTD.
  2. Нужен SM 1.7.3 и выше.
PHP:
#include <sourcemod>

#pragma semicolon 1

public Plugin:myinfo = {
  description = "",
  version     = "1.0",
  author      = "CrazyHackGUT aka Kruzya",
  name        = "In-Game Dialog Example",
  url         = "https://hlmod.ru/posts/351094"
};

public OnClientPutInServer(iClient) {
  CreateTimer(5.0, OnShouldDisplayDialog, GetClientUserId(iClient));
}

public Action:OnShouldDisplayDialog(Handle:hTimer, any:iClient) {
  if ((iClient = GetClientOfUserId(iClient)) == 0)
    return;

  UTIL_CreateTextDialog(iClient, "Приветствие", "Добро пожаловать на наш сервер, %N!\nДобавь его в избранное, если он тебе понравился :)", iClient);
}

UTIL_CreateTextDialog(iClient, const String:szTitle[], const String:szFormatRules[], any:...) {
  if (!iClient || !IsClientInGame(iClient))
    return;

  decl String:szText[1024];
  VFormat(szText, sizeof(szText), szFormatRules, 4);

  new Handle:hDialog = CreateKeyValues("text");
  KvSetNum(hDialog, "time", 2048);
  KvSetString(hDialog, "title", szTitle);
  KvSetNum(hDialog, "level", 0);
  KvSetString(hDialog, "msg", szText);

  CreateDialog(iClient, hDialog, DialogType_Text);

  CloseHandle(hDialog);
}

Вроде подогнал под 1.6 и ниже.
 
Последнее редактирование:
Сверху Снизу