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

rokfestr

Участник
Сообщения
340
Реакции
63
Может кто-то написать плагин Heart Beats
Когда мало hp то у игроков слышен звук сердцебиения
 

noBap

Участник
Сообщения
395
Реакции
169
Ребята подправьте пожалуйста плагин под PTaH. Сейчас он работает чрез Connect:
[ANY] Basic Reserved Slots using Connect (11.08.2016) - AlliedModders
PHP:
#include <sourcemod>

#pragma newdecls required
#pragma semicolon 1

#define PLUGIN_VERSION "1.00"

public Extension __ext_Connect =
{
    name = "Connect",
    file = "connect.ext",
    autoload = 1,
    required = 1,
}

ConVar g_hcvarKickType;
ConVar g_hcvarEnabled;
ConVar g_hcvarReason;
forward bool OnClientPreConnectEx(const char[] name, char password[255], const char[] ip, const char[] steamID, char rejectReason[255]);

public Plugin myinfo =
{
    name = "Basic Reserved Slots using Connect",
    author = "luki1412",
    description = "Simple plugin for reserved slots using Connect",
    version = PLUGIN_VERSION,
    url = "https://forums.alliedmods.net/member.php?u=43109"
}

public void OnPluginStart()
{
    ConVar g_hcvarVer = CreateConVar("sm_brsc_version", PLUGIN_VERSION, "Basic Reserved Slots using Connect - version cvar", FCVAR_NOTIFY|FCVAR_DONTRECORD);
    g_hcvarEnabled = CreateConVar("sm_brsc_enabled", "1", "Enables/disables this plugin", FCVAR_NONE, true, 0.0, true, 1.0);
    g_hcvarKickType = CreateConVar("sm_brsc_type", "1", "Who gets kicked out: 1 - Highest ping player, 2 - Longest connection time player, 3 - Random player", FCVAR_NONE, true, 1.0, true, 3.0);
    g_hcvarReason = CreateConVar("sm_brsc_reason", "Kicked to make room for an admin", "Reason used when kicking players", FCVAR_NONE);
   
    SetConVarString(g_hcvarVer, PLUGIN_VERSION);  
    AutoExecConfig(true, "Basic_Reserved_Slots_using_Connect");
}

public bool OnClientPreConnectEx(const char[] name, char password[255], const char[] ip, const char[] steamID, char rejectReason[255])
{
    if (!GetConVarInt(g_hcvarEnabled))
    {
        return true;
    }

    if (GetClientCount(false) < MaxClients)
    {
        return true;  
    }

    AdminId admin = FindAdminByIdentity(AUTHMETHOD_STEAM, steamID);
   
    if (admin == INVALID_ADMIN_ID)
    {
        return true;
    }
   
    if (GetAdminFlag(admin, Admin_Reservation))
    {
        int target = SelectKickClient();
                       
        if (target)
        {
            char rReason[255];
            GetConVarString(g_hcvarReason, rReason, sizeof(rReason));
            KickClientEx(target, "%s", rReason);
        }
    }
   
    return true;
}

int SelectKickClient()
{  
    float highestValue;
    int highestValueId;
   
    float highestSpecValue;
    int highestSpecValueId;
   
    bool specFound;
   
    float value;
   
    for (int i = 1; i <= MaxClients; i++)
    {  
        if (!IsClientConnected(i))
        {
            continue;
        }
   
        int flags = GetUserFlagBits(i);
       
        if (IsFakeClient(i) || flags & ADMFLAG_ROOT || flags & ADMFLAG_RESERVATION || CheckCommandAccess(i, "sm_reskick_immunity", ADMFLAG_RESERVATION, false))
        {
            continue;
        }
       
        value = 0.0;
           
        if (IsClientInGame(i))
        {
            switch(GetConVarInt(g_hcvarKickType))
            {
                case 1:
                {
                    value = GetClientAvgLatency(i, NetFlow_Outgoing);
                }
                case 2:
                {
                    value = GetClientTime(i);
                }
                default:
                {
                    value = GetRandomFloat(0.0, 100.0);
                }
            }

            if (IsClientObserver(i))
            {          
                specFound = true;
               
                if (value > highestSpecValue)
                {
                    highestSpecValue = value;
                    highestSpecValueId = i;
                }
            }
        }
       
        if (value >= highestValue)
        {
            highestValue = value;
            highestValueId = i;
        }
    }
   
    if (specFound)
    {
        return highestSpecValueId;
    }
   
    return highestValueId;
}
 

rokfestr

Участник
Сообщения
340
Реакции
63
Может кто-то написать плагин чтобы за определенную фразу игрок получал бан и за определенный клан тег (CSGO)
 

alexmy

Участник
Сообщения
284
Реакции
13
Всем привет, не стал попусто создавтаь новую тему. В чём проблема?

L 04/02/2018 - 09:59:36: [SM] Exception reported: Client 6 is not in game
L 04/02/2018 - 09:59:36: [SM] Blaming: disabled/l4d_lastboss_extend.smx
L 04/02/2018 - 09:59:36: [SM] Call stack trace:
L 04/02/2018 - 09:59:36: [SM] [0] GetClientAbsOrigin
L 04/02/2018 - 09:59:36: [SM] [1] Line 700, E:\left4dead\left4dead\addons\sourcemod\scripting\l4d_lastboss_extend.sp::Toxin_Timer
L 04/02/2018 - 09:59:41: [SM] Exception reported: Client 7 is not in game
L 04/02/2018 - 09:59:41: [SM] Blaming: disabled/l4d_lastboss_extend.smx


if(IsClientInGame(target) && GetClientTeam(target) != 2 && !IsPlayerAlive(target)) KillToxin(target);
{
GetClientAbsOrigin(target, pos); //700
GetClientEyeAngles(target, angs);
 

StormX

Участник
Сообщения
891
Реакции
302
Привет.
Кто сможет подправить плагин авто смены карт при маленьком онлайне.
Нужно, что бы он не учитывал ботов, а только активных игроков.
 

Вложения

  • switch map online.rar
    12.2 КБ · Просмотры: 9

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291

Вложения

  • switch map online.rar
    13.2 КБ · Просмотры: 16

Steammer

Участник
Сообщения
443
Реакции
187
Хелпуйте, пункт в админке "Смена карты" перенести на команду sm_choosemap.
 

Вложения

  • basecommands.sp
    11.1 КБ · Просмотры: 4
  • map.sp
    4.3 КБ · Просмотры: 6

makentosh

Участник
Сообщения
109
Реакции
6
Имя админа:
Причина:
Дата бана:
Время истекания бана:
и т.д.
Файл прикрепил!
 

Вложения

  • ban.zip
    19.8 КБ · Просмотры: 20

rokfestr

Участник
Сообщения
340
Реакции
63
Можете написать плагин телепорт на спаун, пишешь команду !teleport и тебя телепортирует на спаун. Заранее Спасибо.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Можете написать плагин телепорт на спаун, пишешь команду !teleport и тебя телепортирует на спаун. Заранее Спасибо.
PHP:
#include <sdktools_functions>

float g_fPos[MAXPLAYERS +1][3];

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    RegConsoleCmd("sm_teleport", TeleportCmd);
}

public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
    int iClient = GetClientOfUserId(event.GetInt("userid"));
    GetClientAbsOrigin(iClient, g_fPos[iClient]);
}

public Action TeleportCmd(int iClient, int iArgs)
{
    if(iClient && IsPlayerAlive(iClient)) TeleportEntity(iClient, g_fPos[iClient], NULL_VECTOR, NULL_VECTOR);
    return Plugin_Handled;
}
 

ARMiG0D

Участник
Сообщения
16
Реакции
0
Ребят привет всем, кто может написать плагин brush ?
 

rokfestr

Участник
Сообщения
340
Реакции
63
PHP:
#include <sdktools_functions>

float g_fPos[MAXPLAYERS +1][3];

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    RegConsoleCmd("sm_teleport", TeleportCmd);
}

public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
    int iClient = GetClientOfUserId(event.GetInt("userid"));
    GetClientAbsOrigin(iClient, g_fPos[iClient]);
}

public Action TeleportCmd(int iClient, int iArgs)
{
    if(iClient && IsPlayerAlive(iClient)) TeleportEntity(iClient, g_fPos[iClient], NULL_VECTOR, NULL_VECTOR);
    return Plugin_Handled;
}
Извини за наглость, можешь еще добавить ограничение использование команды !teleport
К примеру 3 раза максимум и чтобы телепортило через 3 сек. после того как написал команду, что-то на подобии как у !ztele
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Извини за наглость, можешь еще добавить ограничение использование команды !teleport
К примеру 3 раза максимум и чтобы телепортило через 3 сек. после того как написал команду, что-то на подобии как у !ztele
PHP:
#include <sdktools_functions>

#define TIMER 3.0 // Время через которое телепортирует игрока
#define LIMIT 3 // Лимит использования телепорта

float g_fPos[MAXPLAYERS +1][3];
Handle g_hTimer[MAXPLAYERS +1];
int g_iLimit[MAXPLAYERS +1];

public void OnPluginStart()
{
    HookEvent("player_spawn", PlayerSpawn);
    RegConsoleCmd("sm_teleport", TeleportCmd);
}

public void PlayerSpawn(Event event, const char[] name, bool dbc)
{
    int iClient = GetClientOfUserId(event.GetInt("userid"));
  
    g_iLimit[iClient] = LIMIT;
    GetClientAbsOrigin(iClient, g_fPos[iClient]);
}

public Action TeleportCmd(int iClient, int iArgs)
{
    if(iClient && IsPlayerAlive(iClient) && g_iLimit[iClient] > 0)
    {
        if(g_hTimer[iClient] == null) g_hTimer[iClient] = CreateTimer(TIMER, TimerTeleport, GetClientUserId(iClient));
    }
  
    return Plugin_Handled;
}

public Action TimerTeleport(Handle hTimer, any iUserId)
{
    int iClient = GetClientOfUserId(iUserId);
    if(IsClientInGame(iClient) && IsPlayerAlive(iClient))
    {
        TeleportEntity(iClient, g_fPos[iClient], NULL_VECTOR, NULL_VECTOR);
        g_iLimit[iClient]--;
    }
  
    g_hTimer[iClient] = null;
    return Plugin_Stop;
}

public void OnClientDisconnect(int iClient)
{
    if(g_hTimer[iClient] != null)
    {
        KillTimer(g_hTimer[iClient]);
        g_hTimer[iClient] = null;
    }
}
 

rokfestr

Участник
Сообщения
340
Реакции
63
Возможно ли сделать так чтобы перчатки от No Steam клиентов не работали на сервере? Не отключая их в rev.ini
Чтобы к примеру за команду Т не отображались перчатки пиратов, а то на некоторых скинах из за этого растягиваються руки
 
Сверху Снизу