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

SpeEdE BLR

Участник
Сообщения
30
Реакции
0
Добрый вечер всем, кто сможет помочь есть плагин Админ логи
не знаю старая версия или нет, есть исходник, но на SourceMod 1.11 компилится с ошибкой, кто сможет помочь, буду очень благодарен.
Версия игры CS:S v34
 

Вложения

  • admin_logging_custom.sp
    2 КБ · Просмотры: 4

Grey83

Ленивая и невнимательная жопа
Сообщения
4,240
Реакции
2,478

Вложения

  • admin_logging_custom.sp
    1.9 КБ · Просмотры: 5

lesha

Участник
Сообщения
36
Реакции
5
C-подобный:
#include <sourcemod>
#pragma semicolon 1

public OnMapStart() {
CreateTimer(4.0, t_timer, INVALID_HANDLE, TIMER_REPEAT);
}

public Action:t_timer(Handle:timer)
{
for (new client = 1; client <= MaxClients; client++) {
if (IsValidClient(client) && IsPlayerAlive(client)) {
if (GetEntityMoveType(client) == MOVETYPE_LADDER) {
SetEntProp(client, Prop_Data, "m_CollisionGroup", 2);
}
else{
SetEntProp(client, Prop_Data, "m_CollisionGroup", 0);
}
}
} return Plugin_Continue;
}

stock IsValidClient(client) {
if(IsClientConnected(client) && IsClientInGame(client) && !IsFakeClient(client))
return true;
return false;
}
этот плагин включает noblock на лестницах для ZR сервера, но иногда Люди и так же Зомби зависают друг в друге, помогите исправить.
 
Последнее редактирование модератором:

Туник

Участник
Сообщения
402
Реакции
48
Подскажите как поменять правильно кнопку вместо дропа на f2
PHP:
public OnPluginStart() AddCommandListener(OtherCommandListener, "drop");

public Action:OtherCommandListener(client, const String:name[], args)
{
    if (client) FakeClientCommand(client, "say !menu");
    return Plugin_Continue;
}
 

nulled

𝓃𝓊𝓁𝓁𝑒𝒹
Сообщения
377
Реакции
195
Подскажите как поменять правильно кнопку вместо дропа на f2
PHP:
public OnPluginStart() AddCommandListener(OtherCommandListener, "rebuy");

public Action:OtherCommandListener(client, const String:name[], args)
{
    if (client) FakeClientCommand(client, "say !menu");
    return Plugin_Continue;
}
 

Troyanskaya

Участник
Сообщения
362
Реакции
22
Не бесплатно. Нужен модуль для vip_ws. Желательно оставить только "осколочную гранату - напалмовую"
 

ironman

Участник
Сообщения
222
Реакции
122
Не бесплатно. Нужен модуль для vip_ws. Желательно оставить только "осколочную гранату - напалмовую"


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

public void OnEntityCreated(int entity, const char[] classname)
{
    if(!strcmp(classname, "hegrenade_projectile"))
    {
        SDKHook(entity, SDKHook_SpawnPost, OnSpawnPost);
    }
}

public void OnSpawnPost(int entity)
{
    if(VIP_GetFlags(GetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity") & VCF_VIP)
    {
        IgniteEntity(entity, 1.3);
    }
}
 

Felton

Участник
Сообщения
740
Реакции
56
Добавьте пожалуйста к этому плагину админские права ADMFLAG_BAN
C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION     "1.0"
#define PLUGIN_AUTHOR    "tuty & LegenD"

#define SOUND_FILE    "misc/medic.wav"

new Handle:gPluginEnabled = INVALID_HANDLE;
new Handle:gHealthAmount = INVALID_HANDLE;
new Handle:gMinHealth = INVALID_HANDLE;
new Handle:gMedicCost = INVALID_HANDLE;
new Handle:gShowInChat = INVALID_HANDLE;
new Handle:gMaxTimeUse = INVALID_HANDLE;

new gPlayerMoney;
new gUsedMedic[ 42 ];


public Plugin:myinfo =
{
    name = "CSS Medic",
    author = PLUGIN_AUTHOR,
    description = "You can call a medic.",
    version = PLUGIN_VERSION,
    url = "www.ligs.us"
};
public OnPluginStart()
{
    HookEvent( "player_spawn", Event_PlayerSpawn );
    RegConsoleCmd( "say", Command_Medic );
    RegConsoleCmd( "say_team", Command_Medic );

    CreateConVar( "cssmedic_version", PLUGIN_VERSION, "Версия Плагина Медик", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );

    gPluginEnabled = CreateConVar( "css_medic", "1", "Включение плагина" );
    gMinHealth = CreateConVar( "css_medic_minhealth", "70", "Минимальное хп, при котором будет лечение" );
    gHealthAmount = CreateConVar( "css_medic_healhealth", "100", "Сколько будет хп после лечения медика"  );
    gMedicCost = CreateConVar( "css_medic_cost", "1000", "Стоимость вызова Медика" );
    gShowInChat = CreateConVar( "css_medic_showcall", "1", "Показывать вызов Медика" );
    gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3", "Сколько раз можно использовать Медика за раунд" );

    AutoExecConfig(true, "Medic");
    
    gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );
    
}
public OnClientConnected( id )
{
    gUsedMedic[ id ] = 0;
}
public OnClientDisconnect( id )
{
    gUsedMedic[ id ] = 0;
}
public OnMapStart()
{
    decl String:MedicSound[ 100 ];
    FormatEx( MedicSound, sizeof( MedicSound ) - 1, "sound/%s", SOUND_FILE );
    
    if( FileExists( MedicSound )  )
    {
        AddFileToDownloadsTable( MedicSound );
        PrecacheSound( SOUND_FILE, true );
    }
}

public Action:Event_PlayerSpawn( Handle:event, const String:name[], bool:dontBroadcast )
{
    if( GetConVarInt( gPluginEnabled ) == 1 )
    {
        new id = GetClientOfUserId( GetEventInt( event, "userid" ) );

        gUsedMedic[ id ] = 0;
    }
}
public Action:Command_Medic( id, args )
{
    decl String:Said[ 128 ];

    GetCmdArgString( Said, sizeof( Said ) - 1 );
    StripQuotes( Said );
    TrimString( Said );
    
    if( StrEqual( Said, "!medic" ) || StrEqual( Said, "!doctor" ) || StrEqual( Said, "медик" ) || StrEqual( Said, "vtl" ) || StrEqual( Said, "мед" ) || StrEqual( Said, "VTL" ) || StrEqual( Said, "МЕД" ) )
    {
        if( GetConVarInt( gPluginEnabled ) == 0 )
        {
            PrintToChat( id, "\x03[Медик] \x01Извенни, ты не можешь вызвать \x04Медика\x01 !" );
            
            return Plugin_Continue;
        }
            
        if( !IsPlayerAlive( id ) )
        {
            PrintToChat( id, "\x03[Медик] \x01Ты не можешь вызвать \x04Медика \x01когда ты мертв!" );
        
            return Plugin_Continue;
        }
    
        new maxtime = GetConVarInt( gMaxTimeUse );

        if( gUsedMedic[ id ] >= maxtime )
        {
            PrintToChat( id, "\x03[Медик] \x01Ты не смог вызвать \x04Медика \x01,так как можно вызвать только \x03%d \x01раз(а)!", maxtime );
            
            return Plugin_Continue;
        }
        
        new money = GetClientMoney( id );
        new cost = GetConVarInt( gMedicCost );
        
        if( money < cost )
        {
            PrintToChat( id, "\x03[Медик] \x01У тебя нет денег на вызов \x04Медика\x01 ! Нужно %d$", cost );
            
            return Plugin_Continue;
        }
        
        if( GetClientHealth( id ) >= GetConVarInt( gMinHealth ) )
        
        {
            PrintToChat( id, "\x03[Медик] \x01Эй! У тебя много хп для вызова \x04Медика \x01!" );
            
            return Plugin_Continue;
        }
        
        gUsedMedic[ id ]++;

        SetEntProp( id, Prop_Data, "m_iHealth", GetConVarInt( gHealthAmount ) );
        SetClientMoney( id, money - cost );
        PrintToChat( id, "\x03[Медик] \x01 Тебя перевязал \x04Медик\x01 и дал немного таблеток! Теперь ты вылечен." );
    
        if( GetConVarInt( gShowInChat ) != 0 )
        {
            decl String:Name[ 32 ];
            GetClientName( id, Name, sizeof( Name ) - 1 );

            PrintToChatAll( "\x03%s \x01(ОРЕТ): \x04Медик!", Name );
        }
        
        new Float:fOrigin[ 3 ];
        GetClientAbsOrigin( id, Float:fOrigin );
        
        EmitAmbientSound( SOUND_FILE, fOrigin, id, SNDLEVEL_CONVO );
        AttachClientIcon( id );
    }
    
    return Plugin_Continue;
}   
stock SetClientMoney( index, money )
{
    if( gPlayerMoney != -1 )
    {
        SetEntData( index, gPlayerMoney, money );
    }
}
stock GetClientMoney( index )
{
    if( gPlayerMoney != -1 )
    {
        return GetEntData( index, gPlayerMoney );
    }
    
    return 0;
}
stock AttachClientIcon( index )
{
    TE_Start( "RadioIcon" );
    TE_WriteNum( "m_iAttachToClient", index );
    TE_SendToAll();
}
 

Патриот Анархии

Чиполлино
Сообщения
57
Реакции
20
Добавьте пожалуйста к этому плагину админские права ADMFLAG_BAN
C-подобный:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION     "1.0"
#define PLUGIN_AUTHOR    "tuty & LegenD"

#define SOUND_FILE    "misc/medic.wav"

new Handle:gPluginEnabled = INVALID_HANDLE;
new Handle:gHealthAmount = INVALID_HANDLE;
new Handle:gMinHealth = INVALID_HANDLE;
new Handle:gMedicCost = INVALID_HANDLE;
new Handle:gShowInChat = INVALID_HANDLE;
new Handle:gMaxTimeUse = INVALID_HANDLE;

new gPlayerMoney;
new gUsedMedic[ 42 ];


public Plugin:myinfo =
{
    name = "CSS Medic",
    author = PLUGIN_AUTHOR,
    description = "You can call a medic.",
    version = PLUGIN_VERSION,
    url = "www.ligs.us"
};
public OnPluginStart()
{
    HookEvent( "player_spawn", Event_PlayerSpawn );
    RegConsoleCmd( "say", Command_Medic );
    RegConsoleCmd( "say_team", Command_Medic );

    CreateConVar( "cssmedic_version", PLUGIN_VERSION, "Версия Плагина Медик", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );

    gPluginEnabled = CreateConVar( "css_medic", "1", "Включение плагина" );
    gMinHealth = CreateConVar( "css_medic_minhealth", "70", "Минимальное хп, при котором будет лечение" );
    gHealthAmount = CreateConVar( "css_medic_healhealth", "100", "Сколько будет хп после лечения медика"  );
    gMedicCost = CreateConVar( "css_medic_cost", "1000", "Стоимость вызова Медика" );
    gShowInChat = CreateConVar( "css_medic_showcall", "1", "Показывать вызов Медика" );
    gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3", "Сколько раз можно использовать Медика за раунд" );

    AutoExecConfig(true, "Medic");
   
    gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );
   
}
public OnClientConnected( id )
{
    gUsedMedic[ id ] = 0;
}
public OnClientDisconnect( id )
{
    gUsedMedic[ id ] = 0;
}
public OnMapStart()
{
    decl String:MedicSound[ 100 ];
    FormatEx( MedicSound, sizeof( MedicSound ) - 1, "sound/%s", SOUND_FILE );
   
    if( FileExists( MedicSound )  )
    {
        AddFileToDownloadsTable( MedicSound );
        PrecacheSound( SOUND_FILE, true );
    }
}

public Action:Event_PlayerSpawn( Handle:event, const String:name[], bool:dontBroadcast )
{
    if( GetConVarInt( gPluginEnabled ) == 1 )
    {
        new id = GetClientOfUserId( GetEventInt( event, "userid" ) );

        gUsedMedic[ id ] = 0;
    }
}
public Action:Command_Medic( id, args )
{
    decl String:Said[ 128 ];

    GetCmdArgString( Said, sizeof( Said ) - 1 );
    StripQuotes( Said );
    TrimString( Said );
   
    if( StrEqual( Said, "!medic" ) || StrEqual( Said, "!doctor" ) || StrEqual( Said, "медик" ) || StrEqual( Said, "vtl" ) || StrEqual( Said, "мед" ) || StrEqual( Said, "VTL" ) || StrEqual( Said, "МЕД" ) )
    {
        if( GetConVarInt( gPluginEnabled ) == 0 )
        {
            PrintToChat( id, "\x03[Медик] \x01Извенни, ты не можешь вызвать \x04Медика\x01 !" );
           
            return Plugin_Continue;
        }
           
        if( !IsPlayerAlive( id ) )
        {
            PrintToChat( id, "\x03[Медик] \x01Ты не можешь вызвать \x04Медика \x01когда ты мертв!" );
       
            return Plugin_Continue;
        }
   
        new maxtime = GetConVarInt( gMaxTimeUse );

        if( gUsedMedic[ id ] >= maxtime )
        {
            PrintToChat( id, "\x03[Медик] \x01Ты не смог вызвать \x04Медика \x01,так как можно вызвать только \x03%d \x01раз(а)!", maxtime );
           
            return Plugin_Continue;
        }
       
        new money = GetClientMoney( id );
        new cost = GetConVarInt( gMedicCost );
       
        if( money < cost )
        {
            PrintToChat( id, "\x03[Медик] \x01У тебя нет денег на вызов \x04Медика\x01 ! Нужно %d$", cost );
           
            return Plugin_Continue;
        }
       
        if( GetClientHealth( id ) >= GetConVarInt( gMinHealth ) )
       
        {
            PrintToChat( id, "\x03[Медик] \x01Эй! У тебя много хп для вызова \x04Медика \x01!" );
           
            return Plugin_Continue;
        }
       
        gUsedMedic[ id ]++;

        SetEntProp( id, Prop_Data, "m_iHealth", GetConVarInt( gHealthAmount ) );
        SetClientMoney( id, money - cost );
        PrintToChat( id, "\x03[Медик] \x01 Тебя перевязал \x04Медик\x01 и дал немного таблеток! Теперь ты вылечен." );
   
        if( GetConVarInt( gShowInChat ) != 0 )
        {
            decl String:Name[ 32 ];
            GetClientName( id, Name, sizeof( Name ) - 1 );

            PrintToChatAll( "\x03%s \x01(ОРЕТ): \x04Медик!", Name );
        }
       
        new Float:fOrigin[ 3 ];
        GetClientAbsOrigin( id, Float:fOrigin );
       
        EmitAmbientSound( SOUND_FILE, fOrigin, id, SNDLEVEL_CONVO );
        AttachClientIcon( id );
    }
   
    return Plugin_Continue;
}  
stock SetClientMoney( index, money )
{
    if( gPlayerMoney != -1 )
    {
        SetEntData( index, gPlayerMoney, money );
    }
}
stock GetClientMoney( index )
{
    if( gPlayerMoney != -1 )
    {
        return GetEntData( index, gPlayerMoney );
    }
   
    return 0;
}
stock AttachClientIcon( index )
{
    TE_Start( "RadioIcon" );
    TE_WriteNum( "m_iAttachToClient", index );
    TE_SendToAll();
}
Вот тебе...
Сделай...:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION     "1.0"
#define PLUGIN_AUTHOR    "tuty & LegenD"

#define SOUND_FILE    "misc/medic.wav"

new Handle:gPluginEnabled = INVALID_HANDLE;
new Handle:gHealthAmount = INVALID_HANDLE;
new Handle:gMinHealth = INVALID_HANDLE;
new Handle:gMedicCost = INVALID_HANDLE;
new Handle:gShowInChat = INVALID_HANDLE;
new Handle:gMaxTimeUse = INVALID_HANDLE;

new gPlayerMoney;
new gUsedMedic[ 42 ];


public Plugin:myinfo =
{
    name = "CSS Medic",
    author = PLUGIN_AUTHOR,
    description = "You can call a medic.",
    version = PLUGIN_VERSION,
    url = "www.ligs.us"
};
public OnPluginStart()
{
    HookEvent( "player_spawn", Event_PlayerSpawn );
    RegAdminCmd( "say", Command_Medic, ADMFLAG_BAN );
    RegAdminCmd( "say_team", Command_Medic, ADMFLAG_BAN );
    CreateConVar( "cssmedic_version", PLUGIN_VERSION, "Версия Плагина Медик", FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );

    gPluginEnabled = CreateConVar( "css_medic", "1", "Включение плагина" );
    gMinHealth = CreateConVar( "css_medic_minhealth", "70", "Минимальное хп, при котором будет лечение" );
    gHealthAmount = CreateConVar( "css_medic_healhealth", "100", "Сколько будет хп после лечения медика"  );
    gMedicCost = CreateConVar( "css_medic_cost", "1000", "Стоимость вызова Медика" );
    gShowInChat = CreateConVar( "css_medic_showcall", "1", "Показывать вызов Медика" );
    gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3", "Сколько раз можно использовать Медика за раунд" );

    AutoExecConfig(true, "Medic");
    
    gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );
    
}
// дальше продолжение кода...
 

Felton

Участник
Сообщения
740
Реакции
56
Патриот Анархии

так не правильно
RegAdminCmd( "say", Command_Medic, ADMFLAG_BAN );
RegAdminCmd( "say_team", Command_Medic, ADMFLAG_BAN );
Я уже так проверял rtv и много команд которые прописываются в чате не работают(не доступны простым игрокам)
 

nulled

𝓃𝓊𝓁𝓁𝑒𝒹
Сообщения
377
Реакции
195
Вот тебе...
Сделай...:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION     "1.0"
#define PLUGIN_AUTHOR    "tuty & LegenD"

#define SOUND_FILE    "misc/medic.wav"

new Handle:gPluginEnabled = INVALID_HANDLE;
new Handle:gHealthAmount = INVALID_HANDLE;
new Handle:gMinHealth = INVALID_HANDLE;
new Handle:gMedicCost = INVALID_HANDLE;
new Handle:gShowInChat = INVALID_HANDLE;
new Handle:gMaxTimeUse = INVALID_HANDLE;

new gPlayerMoney;
new gUsedMedic[ 42 ];


public Plugin:myinfo =
{
    name = "CSS Medic",
    author = PLUGIN_AUTHOR,
    description = "You can call a medic.",
    version = PLUGIN_VERSION,
    url = "www.ligs.us"
};
public OnPluginStart()
{
    HookEvent( "player_spawn", Event_PlayerSpawn );
    RegAdminCmd( "say", Command_Medic, ADMFLAG_BAN );
    RegAdminCmd( "say_team", Command_Medic, ADMFLAG_BAN );
    CreateConVar( "cssmedic_version", PLUGIN_VERSION, "Версия Плагина Медик", FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );

    gPluginEnabled = CreateConVar( "css_medic", "1", "Включение плагина" );
    gMinHealth = CreateConVar( "css_medic_minhealth", "70", "Минимальное хп, при котором будет лечение" );
    gHealthAmount = CreateConVar( "css_medic_healhealth", "100", "Сколько будет хп после лечения медика"  );
    gMedicCost = CreateConVar( "css_medic_cost", "1000", "Стоимость вызова Медика" );
    gShowInChat = CreateConVar( "css_medic_showcall", "1", "Показывать вызов Медика" );
    gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3", "Сколько раз можно использовать Медика за раунд" );

    AutoExecConfig(true, "Medic");
 
    gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );
 
}
// дальше продолжение кода...
Дак лол ты чё делаешь, по ссути взял и запретил всем обычным игрокам писать в чат...
Сообщения автоматически склеены:

Патриот Анархии

так не правильно
RegAdminCmd( "say", Command_Medic, ADMFLAG_BAN );
RegAdminCmd( "say_team", Command_Medic, ADMFLAG_BAN );
Я уже так проверял rtv и много команд которые прописываются в чате не работают(не даступны простым игрокам)
Попробуй мой вариант, не могу быть точно уверен ибо синтаксисы разные :D

Medic f a:
#include <sourcemod>
#include <sdktools>

#pragma semicolon 1

#define PLUGIN_VERSION     "1.0"
#define PLUGIN_AUTHOR    "tuty & LegenD"

#define SOUND_FILE    "misc/medic.wav"

new Handle:gPluginEnabled = INVALID_HANDLE;
new Handle:gHealthAmount = INVALID_HANDLE;
new Handle:gMinHealth = INVALID_HANDLE;
new Handle:gMedicCost = INVALID_HANDLE;
new Handle:gShowInChat = INVALID_HANDLE;
new Handle:gMaxTimeUse = INVALID_HANDLE;

new gPlayerMoney;
new gUsedMedic[ 42 ];

decl String:admin_flag[4] = "z"; // ФЛАГ ДОСТУПА К КОМАНДЕ


public Plugin:myinfo =
{
    name = "CSS Medic",
    author = PLUGIN_AUTHOR,
    description = "You can call a medic.",
    version = PLUGIN_VERSION,
    url = "www.ligs.us"
};
public OnPluginStart()
{
    HookEvent( "player_spawn", Event_PlayerSpawn );
    RegConsoleCmd( "say", Command_Medic );
    RegConsoleCmd( "say_team", Command_Medic );

    CreateConVar( "cssmedic_version", PLUGIN_VERSION, "Версия Плагина Медик", FCVAR_PLUGIN | FCVAR_SPONLY | FCVAR_REPLICATED | FCVAR_NOTIFY );

    gPluginEnabled = CreateConVar( "css_medic_flag", "1", "Включение плагина" );
    gPluginEnabled = CreateConVar( "css_medic", "1", "Включение плагина" );
    gMinHealth = CreateConVar( "css_medic_minhealth", "70", "Минимальное хп, при котором будет лечение" );
    gHealthAmount = CreateConVar( "css_medic_healhealth", "100", "Сколько будет хп после лечения медика"  );
    gMedicCost = CreateConVar( "css_medic_cost", "1000", "Стоимость вызова Медика" );
    gShowInChat = CreateConVar( "css_medic_showcall", "1", "Показывать вызов Медика" );
    gMaxTimeUse = CreateConVar( "css_medic_maxuse", "3", "Сколько раз можно использовать Медика за раунд" );

    AutoExecConfig(true, "Medic");

    gPlayerMoney = FindSendPropOffs( "CCSPlayer", "m_iAccount" );

}
public OnClientConnected( id )
{
    gUsedMedic[ id ] = 0;
}
public OnClientDisconnect( id )
{
    gUsedMedic[ id ] = 0;
}
public OnMapStart()
{
    decl String:MedicSound[ 100 ];
    FormatEx( MedicSound, sizeof( MedicSound ) - 1, "sound/%s", SOUND_FILE );

    if( FileExists( MedicSound )  )
    {
        AddFileToDownloadsTable( MedicSound );
        PrecacheSound( SOUND_FILE, true );
    }
}

public Action:Event_PlayerSpawn( Handle:event, const String:name[], bool:dontBroadcast )
{
    if( GetConVarInt( gPluginEnabled ) == 1 )
    {
        new id = GetClientOfUserId( GetEventInt( event, "userid" ) );

        gUsedMedic[ id ] = 0;
    }
}
public Action:Command_Medic( id, args )
{
        decl String:Said[ 128 ];

        GetCmdArgString( Said, sizeof( Said ) - 1 );
        StripQuotes( Said );
        TrimString( Said );
    
        if( StrEqual( Said, "!medic" ) || StrEqual( Said, "!doctor" ) || StrEqual( Said, "медик" ) || StrEqual( Said, "vtl" ) || StrEqual( Said, "мед" ) || StrEqual( Said, "VTL" ) || StrEqual( Said, "МЕД" ) )
        {
            if(!CheckFlag(i, admin_flag)
            {
                if( GetConVarInt( gPluginEnabled ) == 0 )
                {
                    PrintToChat( id, "\x03[Медик] \x01Извенни, ты не можешь вызвать \x04Медика\x01 !" );
                
                    return Plugin_Continue;
                }
                
                if( !IsPlayerAlive( id ) )
                {
                    PrintToChat( id, "\x03[Медик] \x01Ты не можешь вызвать \x04Медика \x01когда ты мертв!" );
            
                    return Plugin_Continue;
                }
        
                new maxtime = GetConVarInt( gMaxTimeUse );

                if( gUsedMedic[ id ] >= maxtime )
                {
                    PrintToChat( id, "\x03[Медик] \x01Ты не смог вызвать \x04Медика \x01,так как можно вызвать только \x03%d \x01раз(а)!", maxtime );
                
                    return Plugin_Continue;
                }
            
                new money = GetClientMoney( id );
                new cost = GetConVarInt( gMedicCost );
            
                if( money < cost )
                {
                    PrintToChat( id, "\x03[Медик] \x01У тебя нет денег на вызов \x04Медика\x01 ! Нужно %d$", cost );
                
                    return Plugin_Continue;
                }
            
                if( GetClientHealth( id ) >= GetConVarInt( gMinHealth ) )
            
                {
                    PrintToChat( id, "\x03[Медик] \x01Эй! У тебя много хп для вызова \x04Медика \x01!" );
                
                    return Plugin_Continue;
                }
            
                gUsedMedic[ id ]++;

                SetEntProp( id, Prop_Data, "m_iHealth", GetConVarInt( gHealthAmount ) );
                SetClientMoney( id, money - cost );
                PrintToChat( id, "\x03[Медик] \x01 Тебя перевязал \x04Медик\x01 и дал немного таблеток! Теперь ты вылечен." );
        
                if( GetConVarInt( gShowInChat ) != 0 )
                {
                    decl String:Name[ 32 ];
                    GetClientName( id, Name, sizeof( Name ) - 1 );

                    PrintToChatAll( "\x03%s \x01(ОРЕТ): \x04Медик!", Name );
                }
            
                new Float:fOrigin[ 3 ];
                GetClientAbsOrigin( id, Float:fOrigin );
            
                EmitAmbientSound( SOUND_FILE, fOrigin, id, SNDLEVEL_CONVO );
                AttachClientIcon( id );
            }
            else
            {
                PrintToChat( id, "\x03[Медик] \x01 Нет доступа к команде" );
            }
        }
    return Plugin_Continue;
}
stock SetClientMoney( index, money )
{
    if( gPlayerMoney != -1 )
    {
        SetEntData( index, gPlayerMoney, money );
    }
}
stock GetClientMoney( index )
{
    if( gPlayerMoney != -1 )
    {
        return GetEntData( index, gPlayerMoney );
    }

    return 0;
}
stock AttachClientIcon( index )
{
    TE_Start( "RadioIcon" );
    TE_WriteNum( "m_iAttachToClient", index );
    TE_SendToAll();
}
bool CheckFlag(iClient, const String:CHARFLAG[])
{
    new INTOFLAG = GetUserFlagBits(iClient);
    if(INTOFLAG & ReadFlagString("z") || INTOFLAG & ReadFlagString(CHARFLAG)) return false;
    return true;
}
 
Последнее редактирование:

Патриот Анархии

Чиполлино
Сообщения
57
Реакции
20
Дак лол ты чё делаешь, по ссути взял и запретил всем обычным игрокам писать в чат...
Сообщения автоматически склеены:
Да, в этом то и всё дело, что как по мне это не практично и слегка глупо (моё мнение) делать через say и проверять текст сообщения. Да, можно было сделать через CheckFlag, но я хотел позже прикрепить вариант с GetAdminFlag. Оффтоп
 

nulled

𝓃𝓊𝓁𝓁𝑒𝒹
Сообщения
377
Реакции
195
Да, в этом то и всё дело, что как по мне это не практично и слегка глупо (моё мнение) делать через say и проверять текст сообщения. Да, можно было сделать через CheckFlag, но я хотел позже прикрепить вариант с GetAdminFlag. Оффтоп
Окей :D, я как бы уверен в своей проверке, но на новом синтаксисе, вроде постарался перевести на этот, и то хз)
 

Felton

Участник
Сообщения
740
Реакции
56
nulled
мне надо на старом синтаксе
/ Medic.sp
Medic.sp(21) : error 010: invalid function or declaration
Medic.sp(92) : error 017: undefined symbol "CheckFlag"
Medic.sp(160) : warning 217: loose indentation
Medic.sp(184) : error 010: invalid function or declaration
Medic.sp(187) : error 010: invalid function or declaration
Medic.sp(188) : error 010: invalid function or declaration
Medic.sp(186) : warning 203: symbol is never used: "INTOFLAG"
Игра Counter-Strike Source v.34
 

babka68

Участник
Сообщения
897
Реакции
282
nulled
мне надо на старом синтаксе
/ Medic.sp
Medic.sp(21) : error 010: invalid function or declaration
Medic.sp(92) : error 017: undefined symbol "CheckFlag"
Medic.sp(160) : warning 217: loose indentation
Medic.sp(184) : error 010: invalid function or declaration
Medic.sp(187) : error 010: invalid function or declaration
Medic.sp(188) : error 010: invalid function or declaration
Medic.sp(186) : warning 203: symbol is never used: "INTOFLAG"
Игра Counter-Strike Source v.34
Этот чем не устроил?
 

Felton

Участник
Сообщения
740
Реакции
56
babka68
1) Выдается по STEAM ID
2) Позволяет лечить союзников (Выстрелите в союзника чтобы начать восстановление здоровья)
3) Игра Counter-Strike Source v.34 DeathMatch Старыйсинтаксис.
Мне это не надо.
Не ужели это так сложно к тому коду что скинул просто добавить админский флаг?Или все дело с самом плагине?
 
Сверху