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

J.O.K.E.R

INF
Сообщения
382
Реакции
76
Если найду отпишусь тебе и если ты найдешь тоже отпишись хорошо?
--- Добавлено позже ---
хорошо
kdlp-gameevents тут показывает когда игрок подк. страну стим , мне это не надо . Мне нужна когда при выборе команды только было
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@vovan22, ну так убери часть, которая отвечает за подключение/отключение и оставь только сообщения при смене команды
 

BosscoSport

Участник
Сообщения
199
Реакции
24
kdlp-gameevents тут показывает когда игрок подк. страну стим , мне это не надо . Мне нужна когда при выборе команды только было
как знаешь, я буду себе сам делать
либо закажи тогда и отдай рублей 200-300 и будет тебе счастье)
 

Wise Hand

Участник
Сообщения
121
Реакции
34
@vovan22, для какой игры? Если для ксс:
PHP:
public Plugin:myinfo =
{
    name = "[KDLP] Game Events - Team",
    author = "KorDen & AlmazON",
    description = "Замена сообщений смены команд",
    version = "1.0.1",
    url = "http://hlmod.ru/"
}

public OnPluginStart() HookEvent("player_team",    PT, EventHookMode_Pre);

public Action:PT(Handle:E, String:N[], bool:B)
{
    if(B==false) if(GetEventBool(E,"disconnect")==false) if(GetEventBool(E,"silent")==false)
    {
        new c=GetClientOfUserId(GetEventInt(E,"userid")), i=MaxClients;
        switch(GetEventInt(E,"team"))
        {
            case 1:do if(IsClientInGame(i)) PrintToChat(i, "\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04решил \x01отдохнуть", c);
            while(--i);
            case 2:do if(IsClientInGame(i)) PrintToChat(i, "\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04зашел за \x07FF4040Теров", c);
            while(--i);
            case 3:do if(IsClientInGame(i)) PrintToChat(i, "\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04зашел за \x0799CCFFКонтров", c);
            while(--i);
        }SetEventBroadcast(E, true);
        return Plugin_Changed;
    }return Plugin_Continue;
}
 
Последнее редактирование:

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@Wise Hand, так будет немного получше, кмк:
PHP:
static const String:msg[][] =
{
    "решил \x01отдохнуть",
    "зашел за \x07FF4040Теров",
    "зашел за \x0799CCFFКонтров"
};

public OnPluginStart()
{
    HookEvent("player_team", Event_Team, EventHookMode_Pre);
}

public Action:Event_Team(Handle:event, String:name[], bool:dontBroadcast)
{
    static client, team;
    if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent")
    || !(client = GetClientOfUserId(GetEventInt(event,"userid"))) || (team = GetEventInt(event,"team") - 1) < 0)
        return Plugin_Continue;

    PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
    SetEventBroadcast(event, true);

    return Plugin_Changed;
}
 

Вложения

  • team_change_notify.sp
    749 байт · Просмотры: 7
  • team_change_notify.smx
    3.3 КБ · Просмотры: 5

J.O.K.E.R

INF
Сообщения
382
Реакции
76
PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
В этой строчки цвет менять? а то эти цвета на ксго не работают
 

suremiur

♂ overlay master ♂
Сообщения
537
Реакции
585
PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
В этой строчки цвет менять? а то эти цвета на ксго не работают
Для ксго нужно будет подключить библиотеку цветов. И вместо HEX кодов указывать тэги цветов. Подробнее можешь прочесть в моей теме (Инструкция: Как покрасить любой плагин?), если реально хочешь научиться правильно красить и без напряга.
 

J.O.K.E.R

INF
Сообщения
382
Реакции
76
Для ксго нужно будет подключить библиотеку цветов. И вместо HEX кодов указывать тэги цветов. Подробнее можешь прочесть в моей теме (Инструкция: Как покрасить любой плагин?), если реально хочешь научиться правильно красить и без напряга.
правильно я сделал?
 

Вложения

  • team_change_notify.sp
    774 байт · Просмотры: 8

skywalker

Участник
Сообщения
1,153
Реакции
263
@Wise Hand, так будет немного получше, кмк:
PHP:
static const String:msg[][] =
{
    "решил \x01отдохнуть",
    "зашел за \x07FF4040Теров",
    "зашел за \x0799CCFFКонтров"
};

public OnPluginStart()
{
    HookEvent("player_team", Event_Team, EventHookMode_Pre);
}

public Action:Event_Team(Handle:event, String:name[], bool:dontBroadcast)
{
    static client, team;
    if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent")
    || !(client = GetClientOfUserId(GetEventInt(event,"userid"))) || (team = GetEventInt(event,"team") - 1) < 0)
        return Plugin_Continue;

    PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
    SetEventBroadcast(event, true);

    return Plugin_Changed;
}
А не сможешь сделать, чтоб блокировались стандартные подключения и отключения игрока,
Игрок уганда вступает в игру
Спасибо большое если смогешь:ab:
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
@skolobes, вот так:
PHP:
public OnPluginStart()
{
    HookEvent("player_disconnect", Event_Connect, EventHookMode_Pre);
    HookEvent("player_connect", Event_Connect, EventHookMode_Pre);
}

public Action:Event_Connect(Handle:event, String:name[], bool:dontBroadcast)
{
    SetEventBroadcast(event, false);
    return Plugin_Changed;
}
 

Вложения

  • block_connect_msg.sp
    307 байт · Просмотры: 5
  • block_connect_msg.smx
    2.6 КБ · Просмотры: 4

skywalker

Участник
Сообщения
1,153
Реакции
263
@skolobes, вот так:
PHP:
public OnPluginStart()
{
    HookEvent("player_disconnect", Event_Connect, EventHookMode_Pre);
    HookEvent("player_connect", Event_Connect, EventHookMode_Pre);
}

public Action:Event_Connect(Handle:event, String:name[], bool:dontBroadcast)
{
    SetEventBroadcast(event, false);
    return Plugin_Changed;
}
Спасибо большое. Это можно добавить к team_change_notify или обязательно как отдельный плагин?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@skolobes,
PHP:
static const String:msg[][] =
{
    "решил \x01отдохнуть",
    "зашел за \x07FF4040Теров",
    "зашел за \x0799CCFFКонтров"
};

public OnPluginStart()
{
    HookEvent("player_team", Event_Team, EventHookMode_Pre);
}

public Action:Event_Team(Handle:event, String:name[], bool:dontBroadcast)
{
    static client, team;
    if(dontBroadcast || GetEventBool(event,"disconnect") || GetEventBool(event,"silent")
    || !(client = GetClientOfUserId(GetEventInt(event,"userid"))) || (team = GetEventInt(event,"team") - 1) < 0)
        return Plugin_Continue;

    PrintToChatAll("\x04Игрок \x07FFFFFF>>>\x078b00ff%N\x07FFFFFF<<< \x04%s", client, msg[team]);
    SetEventBroadcast(event, false);

    return Plugin_Changed;
}
 

skywalker

Участник
Сообщения
1,153
Реакции
263
@skolobes, вот так:
PHP:
public OnPluginStart()
{
    HookEvent("player_disconnect", Event_Connect, EventHookMode_Pre);
    HookEvent("player_connect", Event_Connect, EventHookMode_Pre);
}

public Action:Event_Connect(Handle:event, String:name[], bool:dontBroadcast)
{
    SetEventBroadcast(event, false);
    return Plugin_Changed;
}
Не блокирует
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@skolobes, тогда попробуйте Plugin_Changed в моем варианте заменить на Plugin_Handled.
 

Wise Hand

Участник
Сообщения
121
Реакции
34
Есть такая часть кода:
PHP:
public Action PlayerTeam(Event E, const char[] N, bool B)
{
    if(E.GetBool("disconnect")==false) if(E.GetBool("silent")==false) if(E.GetInt("team")==1)
    {
        char t[PLATFORM_MAX_PATH];
        FormatEx(t,sizeof(t), "\x01 \03%N \x01> \x05spectate", GetClientOfUserId(E.GetInt("userid")));
        STA(t);
    }return Plugin_Handled;
}
Сообщение о переходе в наблюдение выводится в чат, стандартные сообщения о заходе за т/кт блокируются. Как сделать, чтобы сообщение о заходе за т/кт тоже выводились:
Имя_игрока > Terrorist
Имя_игрока > Counter-Terrorist
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@Wise Hand, код не полный. Функция STA например, так и не ясно, что делает.
Но "вслепую" могу предложить такое:
PHP:
public Action PlayerTeam(Event E, const char[] N, bool B)
{
    if(E.GetBool("disconnect")==false) if(E.GetBool("silent")==false)
    {
        char t[PLATFORM_MAX_PATH];
        int iTeam = E.GetInt("team");
        FormatEx(t,sizeof(t), "\x01 \03%N \x01> \x05%s", GetClientOfUserId(E.GetInt("userid")), (iTeam == 1 ? "spectate" : (iTeam == 2 ? "terrorist " : "counter-terrorist")));
        STA(t);
    }return Plugin_Handled;
}
 

Wise Hand

Участник
Сообщения
121
Реакции
34
@Kr1kuzya, вроде работает, спасибо.
Функция STA например, так и не ясно, что делает.
PHP:
void STA(const char[] t)
{
    int i, p;
    int[] c=new int[i=iMC];
    do if(IsClientInGame(i)) c[p++] = i;
    while(--i);
    if(p)
    {
        Handle m;
        PbSetInt(m=StartMessage("SayText2", c,p, USERMSG_RELIABLE|USERMSG_BLOCKHOOKS), "ent_idx",c[0]);
        PbSetBool(m, "chat",true);
        PbSetString(m, "msg_name",t);
        do PbAddString(m, "params","");
        while(++i<4);
        EndMessage();
    }
}
 
Сверху Снизу