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

SenatoR

Участник
Сообщения
773
Реакции
344
  • Автор ресурса
  • #1
Bot Replacer
Текущая версия: 1.1

Описание:
Плагин дает возможность сыграть вместо бота.

Требования:
SourceMod

Поддерживаются игры:
  • CS: Source

Установка:
  1. Положить файл .sp в addons/sourcemod/scripting
  2. Положить файл .smx в addons/sourcemod/plugins

Переменные:
C-подобный:
// Сколько раз за раунд игрок может сыграть вместо бота?
// -
// Default: "1"
sm_bot_replacer_amount "1"

// Сколько стоит сыграть за бота?
// -
// Default: "2000"
sm_bot_replacer_price "2000"

// Показывать сообщение, что можно играть за бота?
// -
// Default: "1"
sm_bot_replacer_showhud "1"

// 0 - кикнуть бота, 1 - удалить бота
// -
// Default: "0"
sm_bot_replacer_typekick "0"
 
Последнее редактирование модератором:

Webman

Nevermind
Сообщения
803
Реакции
330
Если игрок будет играть за бота, он будет считаться FakeClient?
 

hook007

Участник
Сообщения
137
Реакции
5
За бота играешь, потом в следующем раунде уже его нету вовсе...

Добавлено через 3 минуты
Более подробней:
Ботов к примеру 4 на 4
Меня убили, я с играл за бота.
В следующем раунде уже 4 на 3 и так если играть за ботов в итоге 1 на 1 останешься: Ты и сам бот противоположной команды
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #5
После кика бота обратно не добавляется
 

SenatoR

Участник
Сообщения
773
Реакции
344
  • Автор ресурса
  • #6
Обновил. Сделал возможность настроить кик бота, будет он удаляться или нет.
 

hook007

Участник
Сообщения
137
Реакции
5
Не знаю, но вот по какой-то причине иногда не можешь играть за бота. Деньги есть, бот свободный своей команда тоже есть и пишет, что нажмите Е для игры ботом, но при нажатии на Е - ничего не происходит
 

Феофан

Участник
Сообщения
100
Реакции
9
Не знаю, но вот по какой-то причине иногда не можешь играть за бота. Деньги есть, бот свободный своей команда тоже есть и пишет, что нажмите Е для игры ботом, но при нажатии на Е - ничего не происходит
Такая же хрень, не могу .......... деньги есть, а второй раз не даёт, ну я думаю про третий и смысла нету говорить......:(

Добавлено через 13 минут
Хотя сейчас вот так конфиг настроил:
// This file was auto-generated by SourceMod (v1.6.3)
// ConVars for plugin "bot_replacer.smx"


// Сколько раз за раунд игрок может сыграть вместо бота?
// -
// Default: "1"
sm_bot_replacer_amount "1000"

// Сколько стоит сыграть за бота?
// -
// Default: "2000"
sm_bot_replacer_price "500"

// Показывать сообщение, что можно играть за бота?
// -
// Default: "1"
sm_bot_replacer_showhud "1"

// 0 - кикнуть бота, 1 - удалить бота
// -
// Default: "0"
sm_bot_replacer_typekick "0"
Вроде работает, то опять не работает - какой-то плагин странный....
 
Последнее редактирование:

'FK' KoTT

Участник
Сообщения
2
Реакции
0
У меня почему-то вылетает сервер, когда я к нему подключился.
Когда нету этого плагина всё норм, что делать?
 

Monomizer

Держу JDW в бане.
Сообщения
1,947
  • Команда форума
  • #10
У меня почему-то вылетает сервер, когда я к нему подключился.
Когда нету этого плагина всё норм, что делать?
Не использовать плагин/сказать версию сервера/предоставить логи ошибок, если есть
 

babka68

Участник
Сообщения
2,124
Реакции
956
- Новый синтаксис
- Исправлена проблема, когда вы живой и вам пишет, что вы можете сыграть за бота.
- Исправлена проблема, когда вы можете сыграть N кол-во раз, за карту, а не за раунд

C-подобный:
#include <cstrike>
#include <sdktools>

#pragma semicolon 1
#pragma newdecls required

public Plugin myinfo = 
{
    name = "Bot Replacer",
    author = "SenatoR, babka68",
    description = "Игрок может сыграть вместо бота",
    version = "1.2",
    url = "https://vk.com/zakazserver68, hlmod.ru"
}

Handle CheckSpecTimer[MAXPLAYERS + 1];
int BotAmount[MAXPLAYERS + 1], g_iAmountBot, g_iPriceBot;
bool g_bShow_Message_Hud, g_bType_Kick;

public void OnPluginStart()
{
    HookEvent("round_start", EventRoundStart);
    ConVar cvar;
    cvar = CreateConVar("sm_bot_replacer_amount", "1", "Сколько раз за раунд игрок может сыграть вместо бота?", _, true, 0.0, true, 20.0);
    cvar.AddChangeHook(CVarChanged_Amount_Bot);
    g_iAmountBot = cvar.IntValue;
    
    cvar = CreateConVar("sm_bot_replacer_price", "2000", "Сколько стоит сыграть за бота?", _, true, 0.0, true, 16000.0);
    cvar.AddChangeHook(CVarChanged_Price_Bot);
    g_iPriceBot = cvar.IntValue;
    
    cvar = CreateConVar("sm_bot_replacer_showhud", "1", "Показывать сообщение, что можно играть за бота?", _, true, 0.0, true, 1.0);
    cvar.AddChangeHook(CVarChanged_Show_Message_Hud);
    g_bShow_Message_Hud = cvar.BoolValue;
    
    cvar = CreateConVar("sm_bot_replacer_typekick", "0", "0 - Кикнуть бота, 1 - Удалить бота", _, true, 0.0, true, 1.0);
    cvar.AddChangeHook(CVarChanged_Type_Kick);
    g_bType_Kick = cvar.BoolValue;
    
    AutoExecConfig(true, "sm_bot_replacer");
}

public void CVarChanged_Amount_Bot(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    g_iAmountBot = cvar.IntValue;
}

public void CVarChanged_Price_Bot(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    g_iPriceBot = cvar.IntValue;
}

public void CVarChanged_Show_Message_Hud(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    g_bShow_Message_Hud = cvar.BoolValue;
}

public void CVarChanged_Type_Kick(ConVar cvar, const char[] oldValue, const char[] newValue)
{
    g_bType_Kick = cvar.BoolValue;
}

public void OnClientPostAdminCheck(int client)
{
    if (!IsFakeClient(client) && g_bShow_Message_Hud)
        CheckSpecTimer[client] = CreateTimer(1.0, Spec_Timer, client, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE);
}

public Action Spec_Timer(Handle timer, any client)
{
    int i = 0;
    i = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
    if (i > 0 && IsFakeClient(i) && GetClientTeam(client) == GetClientTeam(i) && IsPlayerAlive(i))
    {
        PrintHintText(client, "Нажмите E, чтобы играть за бота %N", i);
    }
}

public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
{
    if (buttons & IN_USE && !IsPlayerAlive(client))
    {
        int i = 0;
        i = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
        int price = g_iPriceBot;
        int cash = GetEntProp(client, Prop_Send, "m_iAccount");
        
        if (i > 0 && IsFakeClient(i) && GetClientTeam(client) == GetClientTeam(i) && BotAmount[client] < g_iAmountBot && price <= cash)
        {
            SetEntProp(client, Prop_Send, "m_iAccount", cash - price);
            
            int health = GetClientHealth(i);
            int armor = GetClientArmor(i);
            float pos[3];
            GetClientAbsOrigin(i, pos);
            
            if (g_bType_Kick)
                ServerCommand("bot_kick %N", i);
            else
                KickClient(i);
                
            CS_RespawnPlayer(client);
            SetEntityHealth(client, health);
            SetEntProp(client, Prop_Data, "m_ArmorValue", armor);
            TeleportEntity(client, pos, NULL_VECTOR, NULL_VECTOR);
            BotAmount[client]++;
        }
    }
}

public void EventRoundStart(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(event.GetInt("userid"));
    BotAmount[client] = 0;
}

public void OnClientDisconnect(int client)
{
    if (CheckSpecTimer[client] != null)
    {
        KillTimer(CheckSpecTimer[client]);
        CheckSpecTimer[client] = null;
    }
}
 
Последнее редактирование:

Calgonik

Участник
Сообщения
1
Реакции
0
Всем добрый вечер! Я так понимаю причину того,что за бота можно зайти только раз никто не фиксил?
Не знаю, но вот по какой-то причине иногда не можешь играть за бота. Деньги есть, бот свободный своей команда тоже есть и пишет, что нажмите Е для игры ботом, но при нажатии на Е - ничего не происходит
 

MrEvgen

Участник
Сообщения
117
Реакции
38
Всем добрый вечер! Я так понимаю причину того,что за бота можно зайти только раз никто не фиксил?
в cfg поменяй
Cvar:
// Сколько раз за раунд игрок может сыграть вместо бота?
// -
// Default: "1"
sm_bot_replacer_amount "1"
 

crashbow

Участник
Сообщения
89
Реакции
7
Как сделать, чтобы боты не удалялись, когда заходишь за ботов? Т.е. играют боты 3х3, я перехватываю бота, умираю, перехватываю еще одного - предыдущий удаляется и получается 3х2, перехватываю последнего бота - получается 3х1.
Нужно чтобы после того, как я перехватил бота - тот удалялся и на его место подключался новый бот, но уже мертвый. Чтобы количество "игроков" не уменьшалось
Сообщения автоматически склеены:

Иногда еще после перерождения за бота ники у ботов одинаковые становятся.. точнее 2 одинаковых ника
 
Последнее редактирование:

crashbow

Участник
Сообщения
89
Реакции
7
Еще столкнулся с проблемой, на сервере играю 8 ботов, 4х4, иногда при заходе человека - он принимает ник одного из ботов.
 

Samagon142

Участник
Сообщения
13
Реакции
2
cfg/sourcemod/sm_bot_replacer.cfg
друг может уже не актуально! смотри установил 2 раза можно играть за бота но за одну карту ! тобиш не каждый раунд а за всю карту до ее смены только! как сделать чтоб можно было 1 раз за раунд использовать
 

PuxRK

Участник
Сообщения
225
Реакции
2
Стоит данный плагин, когда я живой, то постоянно выходит табличка снизу - вы можете сыграть за бота, так то не мешает, но этот звук уведомления, о том что я якобы живой и могу сыграть за бота. можно как не будь устранить это?
 
Сверху Снизу