Помогите с плагином

Cyxou96

Участник
Сообщения
80
Реакции
40
Такая ситуация , увидел статью с декабря месяца 2015 года , и меня заинтересовал плагин о прожатие кнопки за террористов , все ладно , парень оставил код , но минус его в чем он каждый раз пишет о том что прожал кнопку , помогите дописать плагин и что он один раз сообщение оставил что прожал кнопку под одним игроком , под другими тоже самое только чтобы писало один раз , если что вот код и на скачке файл .sp
C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION "-2.4.6"

public Plugin:myinfo =
{
    name = "Button print",
    author = "Chanz",
    description = "Button print.",
    version = PLUGIN_VERSION,
    url = "http://forums.alliedmods.net/showthread.php?p=1242396 OR http://www.mannisfunhouse.eu/"
}

public OnPluginStart()
{
    HookEntityOutput("func_button", "OnIn", EntityOutput:FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", EntityOutput:FuncButtonOutput);
}


public EntityOutput:FuncButtonOutput(const String:output[], entity, client, Float:delay)
{
    PrintToChatAll("%N нажал кнопку", client);
}
 

Вложения

  • buttonpush.sp
    791 байт · Просмотры: 6

d4Ck

Урегулированный
Сообщения
730
Реакции
562
Такая ситуация , увидел статью с декабря месяца 2015 года , и меня заинтересовал плагин о прожатие кнопки за террористов , все ладно , парень оставил код , но минус его в чем он каждый раз пишет о том что прожал кнопку , помогите дописать плагин и что он один раз сообщение оставил что прожал кнопку под одним игроком , под другими тоже самое только чтобы писало один раз , если что вот код и на скачке файл .sp
C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION "-2.4.6"

public Plugin:myinfo =
{
    name = "Button print",
    author = "Chanz",
    description = "Button print.",
    version = PLUGIN_VERSION,
    url = "http://forums.alliedmods.net/showthread.php?p=1242396 OR http://www.mannisfunhouse.eu/"
}

public OnPluginStart()
{
    HookEntityOutput("func_button", "OnIn", EntityOutput:FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", EntityOutput:FuncButtonOutput);
}


public EntityOutput:FuncButtonOutput(const String:output[], entity, client, Float:delay)
{
    PrintToChatAll("%N нажал кнопку", client);
}
Плагин пишет в чат о нажатии на кнопку, нельзя сделать так, чтобы он определял, под каким игроком прожата кнопка.
 

Cyxou96

Участник
Сообщения
80
Реакции
40
Плагин пишет в чат о нажатии на кнопку, нельзя сделать так, чтобы он определял, под каким игроком прожата кнопка.
не правильно выразился , смотри у меня есть строка который человек прожимает кнопку
"%N нажал кнопку" , вот то есть его ник и прожал кнопку , но проблема такова, что это сообщение пишет каждый раз когда нажимаешь на кнопку , мне надо чтобы она один раз нажал на кнопку и это сообщение появилось , а когда он другие кнопки прожимает то чтобы сообщение не появлялась
--- Добавлено позже ---
Плагин пишет в чат о нажатии на кнопку, нельзя сделать так, чтобы он определял, под каким игроком прожата кнопка.
вот даже скриншот 15 года , надо сделать типо этого и чтобы она появилась один раз
511b5a0e6a58.jpg
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
мне надо чтобы она один раз нажал на кнопку и это сообщение появилось , а когда он другие кнопки прожимает то чтобы сообщение не появлялась
тогда тебе нужно хук вешать именно на ту кнопку, от которой тебе нужно получать сообщения
 

d4Ck

Урегулированный
Сообщения
730
Реакции
562
не правильно выразился , смотри у меня есть строка который человек прожимает кнопку
"%N нажал кнопку" , вот то есть его ник и прожал кнопку , но проблема такова, что это сообщение пишет каждый раз когда нажимаешь на кнопку , мне надо чтобы она один раз нажал на кнопку и это сообщение появилось , а когда он другие кнопки прожимает то чтобы сообщение не появлялась
--- Добавлено позже ---

вот даже скриншот 15 года , надо сделать типо этого и чтобы она появилась один раз
511b5a0e6a58.jpg
1 раз нажал, и больше не пишется или чтобы на каждой писалось по 1 разу?
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
Такая ситуация , увидел статью с декабря месяца 2015 года , и меня заинтересовал плагин о прожатие кнопки за террористов , все ладно , парень оставил код , но минус его в чем он каждый раз пишет о том что прожал кнопку , помогите дописать плагин и что он один раз сообщение оставил что прожал кнопку под одним игроком , под другими тоже самое только чтобы писало один раз , если что вот код и на скачке файл .sp
C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION "-2.4.6"

public Plugin:myinfo =
{
    name = "Button print",
    author = "Chanz",
    description = "Button print.",
    version = PLUGIN_VERSION,
    url = "http://forums.alliedmods.net/showthread.php?p=1242396 OR http://www.mannisfunhouse.eu/"
}

public OnPluginStart()
{
    HookEntityOutput("func_button", "OnIn", EntityOutput:FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", EntityOutput:FuncButtonOutput);
}


public EntityOutput:FuncButtonOutput(const String:output[], entity, client, Float:delay)
{
    PrintToChatAll("%N нажал кнопку", client);
}
PHP:
#include <sdktools_entoutput>

#pragma semicolon 1
#pragma newdecls required

bool gB_Player[MAXPLAYERS+1];

public Plugin myinfo =
{
    name = "Button",
    author = "asdf",
    description = "",
    version = "1.0",
    url = "http://hlmod.ru"
}

public void OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    for (int i; ++i < MaxClients;) gB_Player[i] = false;
}

public Action FuncButtonOutput(const char[] output,int entity,int client, float delay)
{
    if(!gB_Player[entity])
    {
        gB_Player[entity] = true;
        PrintToChatAll("Прожал кнопку");
        PrintToChatAll("\x02 \x0C%С террористом \x04нельзя играть в рулетку\x0C", client);
    }
}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,521
Реакции
4,980
@Samoletik1337, можно проще сделать:
PHP:
#include <sdktools_entoutput>


public OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
}

public void FuncButtonOutput(const char[] output, int caller, int activator, float delay)
{
    UnhookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    UnhookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
    PrintToChatAll("%N нажал кнопку", activator);
}
 

Boeing 767

заскамили мамонта ни за что, ни про что
Сообщения
524
Реакции
913
@Samoletik1337, можно проще сделать:
PHP:
#include <sdktools_entoutput>


public OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
}

public void FuncButtonOutput(const char[] output, int caller, int activator, float delay)
{
    UnhookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    UnhookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
    PrintToChatAll("%N нажал кнопку", activator);
}
Да, так будет действительно гораздо короче. :)
 

Cyxou96

Участник
Сообщения
80
Реакции
40
@Samoletik1337, можно проще сделать:
PHP:
#include <sdktools_entoutput>


public OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
}

public void FuncButtonOutput(const char[] output, int caller, int activator, float delay)
{
    UnhookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    UnhookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
    PrintToChatAll("%N нажал кнопку", activator);
}
Большое спасибо все работает . Также всем спасибо кто откликнулся о помощи. Удачи вам
 

Cyxou96

Участник
Сообщения
80
Реакции
40
@Samoletik1337, можно проще сделать:
PHP:
#include <sdktools_entoutput>


public OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
}

public void FuncButtonOutput(const char[] output, int caller, int activator, float delay)
{
    UnhookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    UnhookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
    PrintToChatAll("%N нажал кнопку", activator);
}
а как можно сделать чтобы он был только для теров?
 

d4Ck

Урегулированный
Сообщения
730
Реакции
562
а как можно сделать чтобы он был только для теров?
Как-то так
PHP:
#include <sdktools_entoutput>


public OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
}

public void FuncButtonOutput(const char[] output, int caller, int activator, float delay)
{
    if (GetClientTeam(activator) == 2) {
        UnhookEntityOutput("func_button", "OnIn", FuncButtonOutput);
        UnhookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
        PrintToChatAll("%N нажал кнопку", activator);
    }
}
 

Napas

Участник
Сообщения
832
Реакции
667
PHP:
#include <sdktools_entoutput>


public OnPluginStart()
{
    HookEvent("round_start", OnRoundStart);
}

public Action OnRoundStart(Event event, char[] name, bool dontBroadcast)
{
    HookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    HookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
}

public void FuncButtonOutput(const char[] output, int caller, int activator, float delay)
{
    new client = GetClientOfUserId(GetEventInt(event, "userid"))
    if(!client||client>64||!IsClientInGame(client))
        return;
    if(GetClientTeam(client)!=2)
        return;
    UnhookEntityOutput("func_button", "OnIn", FuncButtonOutput);
    UnhookEntityOutput("func_rot_button", "OnIn", FuncButtonOutput);
    PrintToChatAll("%N нажал кнопку", activator);
}
 
Сверху Снизу